Как сравнить два изображения на полную идентичность?

Добрый день.
1. Есть набор изображений-оригиналов (1000х500px допустим)
2. Есть набор уменьшенных (500х250) изображений из п.1.
Мне необходимо каждому оригиналу найти его уменьшенную копию.
Подскажите, в каком направлении копать
1. Уменьшать изображения из п.1 до размера 500х250 и сравнивать с набором из п.2?
2. Каким образом происходит это сравнение? Необходимо перевести изображения в бинарный код и сравнивать бинарные коды?
3. Повторюсь, изображения одинаковые , просто в одной папке оригиналы, а в другой уменьшенных их версии.

Спасибо.
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
Решение этой задачи существует.
Только слова "полную идентичность" надо выкинуть из условия. Они тут не имеют смысла и делают задачу нерешаемой. Когда уменьшали изображения, то сначала работал какой-то алгоритм интерполяции, а таких алгоритмов с десяток, может больше, каждый даст немножко другую картинку на выходе. Потом работал алгоритм сжатия с неизвестными параметрами. Т.е. варьируя параметры, можно из одного оригинала сделать тысячи (и даже миллионы) чуточку разных миниатюр. Они между собой не полностью идентичны (хотя многие на глаз не отличимы). Вам потребуется куча удачи (это не считая кучи сил и кучи времени), чтобы получилось подобрать все параметры. Поэтому забываем про "полную идентичность", будем строгими математическими методами искать самые похожие картинки. Если "похожесть" не превысила какой-то порог (условно, 97.1% или 99.5%), то говорим, что похожих не нашли вовсе.

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

Итак, само сравнение (конечно, в цикле по всем картинкам). Попиксельно вычитаем одну картинку из другой. В случае "полной идентичности" разность должна выглядеть как полностью чёрный фон. Такого у нас не будет. Но нам надо искать "самую чёрную" разность картинок (на самом деле "модуль разности", я лишь для простоты объяснения говорю "разность"). Чем меньше светлых пикселей в разности, тем сильнее похожи картинки. В математике этим занимается раздел "методы оптимизации" (загуглить, взять в библиотеке учебник и т.д.). Критерий "черноты" надо ещё правильно выбрать. Но это уже дело техники. Задача не тривиальная, но решаемая.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы