Обычные алгоритмы хеширования или вычисления CRC плохо работают с данными изображения. Размерный характер информации должен быть принят во внимание.
Если вам нужна чрезвычайно надежная дактилоскопия, позволяющая учесть аффинные преобразования (масштабирование, вращение, перемещение, перелистывание), вы можете использовать Радоновое преобразование на источнике изображения для создания нормативного отображения Данные изображения - сохраните их для каждого изображения, а затем сравните только отпечатки пальцев. Это сложный алгоритм, а не для слабонервных.
возможны несколько простых решений:
- Создание гистограммы яркости для изображения в виде отпечатка пальца
- Создание уменьшенных версий каждого изображения в виде отпечатка пальца
- Объединение методов (1) и (2) в гибридный подход для улучшения качества сравнения
Гистограмма яркости (особенно та, которая разделена на компоненты RGB) является разумным отпечатком для изображения - и может быть реализована довольно эффективно. Вычитание одной гистограммы из другой создаст новую историограмму, которую вы можете обработать, чтобы решить, насколько похожи два изображения. Гистограммы, потому что единственная оценка распределения и появления информации яркости / цвета достаточно хорошо справляются с аффинными преобразованиями. Если вы квантоваете информацию о яркости каждого компонента цвета до 8-битного значения, 768 байт памяти будет достаточно для отпечатка пальца изображения практически любого разумного размера. Гистограммы яркости дают ложные негативы, когда манипулируют информацией о цвете в изображении. Если вы применяете такие преобразования, как контрастность / яркость, постеризация, смещение цвета, изменение информации о яркости. Ложные срабатывания также возможны с определенными типами изображений ... например, пейзажами и изображениями, где один цвет доминирует над другими.
Использование масштабированных изображений - это еще один способ снизить информационную плотность изображения до уровня, который легче сравнивать. Уменьшение размера менее 10% от исходного размера изображения обычно приводит к потере слишком большого количества информации, которая может быть использована, поэтому изображение с разрешением 800x800 пикселей можно уменьшить до 80x80 и при этом предоставить достаточно информации для проведения достойной дактилоскопии. В отличие от данных гистограммы, вы должны выполнять анизотропное масштабирование данных изображения, когда исходные разрешения имеют различные пропорции. Другими словами, уменьшение изображения размером 300x800 в миниатюру размером 80x80 вызывает деформацию изображения, так что при сравнении с изображением 300x500 (это очень похоже) получаются ложные негативы. Отпечатки пальцев на миниатюрах также часто дают ложные негативы, когда происходят аффинные преобразования. Если вы перевернете или поверните изображение, его эскиз будет сильно отличаться от оригинала и может привести к ложному срабатыванию.
Сочетание обеих техник - это разумный способ хеджировать ваши ставки и уменьшить вероятность появления как ложных, так и ложных срабатываний.