Перейти к содержимому

Фотография

Анализ видео файла


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 23 марта 2011 - 09:50

Есть некий видеоредактор, в котором на timeline (видеодорожка) добавляется некий контент (аудио, видео, заголовки, еффекты). Далее это все экспортируется в некий формат, в результате чего получаем видео файл. Нужно проверить, что результирующее видео соответствует ожиданиям, тобишь что содержимое видеофайла соответствует тому контенту, который был добавлен на timeline.

Есть вариант предварительно заготовить видео файл (с ожидаемым контентом), потом в результате теста получить еще один видео файл, с помощью DirectShow получить фреймы обоих видео файлов и сравнивать их пофреймово. Но не совсем понятно как получить доступ к DirectShow через TestComplete. И не совсем понятно как сравнивать фреймы, так как попиксельное сравнение может выдать, что картинки разные, при том, что визуально они будут идентичны.

Собственнно готов выслушать предложения по предложенной реализации или же какой другой способ.
  • 0

#2 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 23 марта 2011 - 10:39

попиксельное сравнение может выдать, что картинки разные

Почему?

Я бы, честно говоря, не заморачивался с попиксельным сравнением. Может быть стоит просто сравнивать хеши файлов? По-идее, если файлы созданы в одном и том же редакторе, то и хеши будут совпадать.
  • 0

#3 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 23 марта 2011 - 11:35


попиксельное сравнение может выдать, что картинки разные

Почему?

Я бы, честно говоря, не заморачивался с попиксельным сравнением. Может быть стоит просто сравнивать хеши файлов? По-идее, если файлы созданы в одном и том же редакторе, то и хеши будут совпадать.

я не уверен, что хэши всегда будут одинаковые. Тут на миллисекунду скрипт задержался, там на полпикселя надпись сдвинул - и при кодировании видео и при получении хэша можем получить несколько другой результат.

я думаю, стоит все же брать кадры и делать нечеткое сравнение изображений. Описания алгоритмов в интернете встречаются, например - http://stackoverflow...-fast-algorithm
  • 0

#4 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 23 марта 2011 - 12:25

Тут на миллисекунду скрипт задержался

И? Как это отразится на содержимом видеофайла?

там на полпикселя надпись сдвинул

Во-первых, почему скрипт должен что-то сдвинуть?
Во-вторых, как попиксельное сравнение позволит вам обойти эту проблему?
  • 0

#5 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 23 марта 2011 - 14:11


Тут на миллисекунду скрипт задержался

И? Как это отразится на содержимом видеофайла?

Надпись на другом кадре - содержимое другое

Во-вторых, как попиксельное сравнение позволит вам обойти эту проблему?

я как раз не говорил про попиксельное. есть и другие способы сравнения изображений
  • 0

#6 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 23 марта 2011 - 15:06



Тут на миллисекунду скрипт задержался

И? Как это отразится на содержимом видеофайла?

Надпись на другом кадре - содержимое другое

Во-вторых, как попиксельное сравнение позволит вам обойти эту проблему?

я как раз не говорил про попиксельное. есть и другие способы сравнения изображений

Хорошо, может я чего-то не понимаю... Но давайте порассуждаем.
Автор написал:"Есть некий видеоредактор, в котором на timeline (видеодорожка) добавляется некий контент (аудио, видео, заголовки, еффекты)"
Что это значит? Это значит, что мы редактируем видео, а не записываем. Если я правильно понял слово "timeline", то это значит, что в нашем редакторе есть элементы по которым, во время редактирования, мы можем четко определять текущий кадр. При чем здесь задержка в выполнении скрипта? Разве что вы туда впишите функции типа "тяни ползунок таймлайна влево 2,578 сек"...

Теперь о нечетком сравнении изображений... Ну давайте посмотрим алгоритмы по вашей ссылке.
1. Сравнение по "реперным" пикселям.
Итак, давайте представим, что мы добавили в кадр зеленый прямоугольник. Задались, например, такими координатами:
- верхняя левая точка (x,y)
- высота h
- ширина w
При сравнении, например, проверяем следующие пиксели:
- x+w/2,y
- x+w/2,y+h
- x,y+h/2
- x+w,y+h/2
Допустим, при выполнении теста прямоугольник сдвинулся на 1 пиксель влево по координате x, т.е. в точке x+w,y+h/2 зеленого пикселя уже нет, зато в 3х остальных точках он есть. Это хорошо/плохо, pass/fail?
2. Сравнение по гистограмме.
Хотели нарисовать в тесте зеленый прямоугольник, но получился зеленый квадрат с такой же площадью. Гистограмма вроде бы та же (или незначительно отличается). Pass/fail?
3. SIFT
Вы правда думаете, что эта задача требует реализации вот этого алгоритма? И опять же он неточен. Что считать успешным прохождением теста, а что нет?

З.Ы. Возможно, я что-то упускаю, но из старт поста совсем непонятно, почему кадры, а следовательно и конечный файл (и его хеш) могут отличаться.
  • 0

#7 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 04 апреля 2011 - 11:23

Собственно обсуждение немного ушло в сторону. Скажу сразу, что фреймы на разных отрезках времени на разных тачках таки отличаются. Может это связано с быстротой обработки видео. Попиксельное сравнение иногда выдает, что файлы разные, но величина различия 0.

Было принято решение, с помощь тестируемой программы получать снапшоты видео файла и сравнивать их с заранее заготовленными снапшотами, проводя попиксельное сравнение, а потом векторное сравнение. Работает более менее адекватно.

Хотя опять же повторюсь, если кто-то знает еще какой-то метод сравнения - пишите, ибо тема весьма интересная.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных