Стратегии сравнения файлов - PullRequest
1 голос
/ 26 марта 2010

Я ищу стратегии, которые можно использовать для программного поиска файлов, которые могут быть дубликатами друг друга. Именно в этом случае видео.

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

Стратегии, которые я имею до сих пор:

  • хеширование
  • Сравнение размера файла
  • Сравнение длины видео
  • Сравнение имен файлов
  • Постоянно хранит результаты, чтобы «запомнить» предыдущие дубликаты
  • Стратегии смешивания и сопоставления выше

Существуют ли какие-либо стратегии или усовершенствования стратегий, перечисленных выше, о которых вы знаете?

Кто-нибудь знает о каких-либо хэш-функциях, которые создают диапазоны хеширования, чтобы указать, что общее содержимое «близко».

Ответы [ 2 ]

3 голосов
/ 26 марта 2010

Для эффективного n-стороннего сравнения вам нужно уменьшить видео до небольшого пространства параметров («отпечатка пальца»), которое имеет показатель сходства, который хорошо коррелирует с сходством видео. Например, хеширование не является хорошим пространством параметров, потому что небольшие различия во входных видео приводят к большим различиям в хэшах. На противоположной стороне спектра длина видео не является хорошим параметром, потому что разные видео могут иметь одинаковую длину.

Хорошее пространство параметров зависит от того, какие различия вы хотите игнорировать и какие усиливать. Один из возможных вариантов - разделить видео на 10-секундные интервалы во временных измерениях и на 16 прямоугольников в пространственном измерении. Затем возьмите средний цвет каждого прямоугольника за 10-секундный интервал. Затем используйте евклидово расстояние между векторами параметров в качестве метрики подобия. (то есть для каждого временного интервала, для каждого квадрата, для каждого цветового канала вычтите две интенсивности, возьмите квадрат и сложите все вместе). Если вам нужно обнаружить клипы, которые могут быть небольшими частями других клипов, это становится немного сложнее, но общий принцип вычисления векторов признаков должен работать. Например, обнаружение изменения сцены должно помочь в создании инвариантных параметров длины видео.

0 голосов
/ 26 марта 2010

Это будет почти невозможно для компьютера, чтобы сказать. Малейшая разница в видеопотоках, например, ширина на один пиксель меньше, приведет к полностью другому потоку данных. Чтобы сделать сколько-нибудь значимое сравнение, вам придется перекодировать видео в известный формат и разрешение с очень низкой частотой кадров. Затем вы можете начать смотреть на каждый кадр, чтобы увидеть, похожи ли они друг на друга. Это очень интенсивная работа, как в вычислительном, так и в алгоритмическом отношении.

...