Обнаружение сходства в двух видеофайлах - PullRequest
1 голос
/ 27 марта 2012

Я работаю над обнаружением сходства между двумя видео в Java.Пользователь предложит два видео, и программное обеспечение должно определить, схожи ли они, проверив содержимое файла.Я читал, что можно сравнить каждый кадр из 2 видео.Кто-нибудь может поделиться какими-нибудь подходящими алгоритмами (или кодом или методами), которые могут быть реализованы на Java?

1 Ответ

8 голосов
/ 27 марта 2012

Существует огромное разнообразие алгоритмов определения сходства изображений. Поиск по image similarity algorithm и video similarity algorithm в Google Scholar приведет к большому количеству связанных статей - здесь также есть несколько вопросов (например, эта ) здесь, в StackOverflow.

Несколько важных аспектов, на которые следует обратить внимание:

  • Универсального определения подобия не существует - вам нужно определить его с учетом вашей конкретной цели. Например, изображение с красным квадратом и изображение с синим квадратом можно считать схожим, поскольку оба имеют квадраты или полностью различаются в зависимости от цветового различия.

  • Сходство обычно не определяется в абсолютных терминах, то есть как то, что либо существует, либо нет. Большинство алгоритмов подобия производят относительный показатель, который должен коррелироваться с базовой линией для получения значимых результатов. Например, если у вас есть набор изображений, изображающих квадраты разных цветов, вы можете получить высокие значения сходства в абсолютном выражении, но именно на мелкие различия, вызванные изменениями цвета, следует обратить внимание.

Отказ от ответственности: перед использованием любого алгоритма, найденного через поисковую систему, вы должны выяснить его правовой статус. Сходство видео является довольно горячей областью исследований, и довольно много алгоритмов, вероятно, обременены патентами и тому подобным. Использование их для академических исследований может быть приемлемым, но обо всем, что вам следует спросить у адвоката о ...

EDIT:

Я не уверен, что вам нужно, но могу предложить несколько общих советов:

  • Узнайте, могут ли быть полезны метаданные видео, такие как длина и разрешение. Например, имеет ли смысл сравнивать содержимое 30-секундного клипа с 3-часовым фильмом?

  • Подумайте, можете ли вы избежать использования основанного на изображении сходства для случайной выборки соответствующих кадров из одинаковых временных отметок в каждом файле. Детальное изучение каждого кадра, вероятно, будет пустой тратой времени и циклов ЦП в большинстве случаев.

  • Подумайте об использовании многоуровневой архитектуры измерения сходства, где более простые и менее дорогие методы используются для устранения очевидных случаев до того, как вступят в действие реальные ЦП. Например, вычисление среднего цвета и другие простые метрики для кадр, вероятно, намного проще, чем распознавание контуров или распознавание лиц.

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

...