Подтвердить что ты не робот

Для чего используется хеширование изображений?

Я иногда слышу этот термин и задаюсь вопросом, для чего он используется?

4b9b3361

Ответ 1

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

Одно из приложений - поиск. TinEye.com позволяет загружать изображение и находить множество его вхождений в Интернете. например google, у него есть искатель веб-страниц, который сканирует веб-страницы и ищет изображения. Затем он хэширует эти изображения и сохраняет хэш и url в базе данных. Когда вы загружаете изображение, он просто вычисляет хэш и извлекает все URL-адреса, связанные с этим хешем в базе данных. Примеры использования TinEye включают поиск версий изображений с высоким разрешением или поиск кого-то публичного facebook/myspace/etc. профиль из их изображения (при условии, что эти профили используют одну и ту же фотографию.

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

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

Ответ 2

Хеширование - это функция, которая применяется к произвольным данным и создает данные фиксированного размера (в основном, очень небольшого размера). Существует много разных типов хешей, но если мы говорим о хешировании изображений, оно используется либо для:

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

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

  • изменение размера
  • вращение
  • немного отличающаяся цветовая гамма
  • другой формат
  • некоторые незначительные шумы, водяные знаки и артефакты

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

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

Наиболее известными алгоритмами являются:

  • a-hash. Среднее хеширование - это самый простой алгоритм, который использует только несколько преобразований. Масштабируйте изображение, преобразуйте его в оттенки серого, вычислите среднее значение и выровняйте серию оттенков серого на основе среднего значения. Теперь преобразуем двоичное изображение в целое число. Алгоритм настолько прост, что вы можете реализовать его через час.
  • p-hash. Перцептивный хеш использует подобный подход, но вместо усреднения полагается дискретное косинусное преобразование (популярное преобразование в обработке сигналов).
  • d-hash. Хэш хеширования использует тот же подход, что и хэш, но вместо использования информации о средних значениях он использует градиенты (разница между соседними пикселями).
  • w-hash. Очень похоже на p-hash, но вместо DCT он использует вейвлет-преобразование.

Кстати, если вы используете python, все эти хэши уже реализованы в этой библиотеке.

Ответ 3

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

Они иногда предназначены для обеспечения удобного способа идентификации файла без вмешательства человека, особенно в присутствии нескольких параллельных авторов, на которые нельзя полагаться, чтобы увеличить некоторый главный счетчик (JPG001 JPG002) без перекрытия.

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

Ответ 4

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

Ответ 5

Umm.... Чтобы сравнить изображения (в широком смысле, картинки или любые другие бинарные файлы) быстро, не сравнивая весь файл?