
Задался я как то раз вопросом: Как Яндекс сравнивает изображения и фотографии.
Долго ломал голову как же все таки сравнить картинки в JPG формате даже если они маштабированны, зеркалированны, подверглись серьезной уникализации.
Вот самый оптимальный метода, который я нашел это сравнение RGB каналов.
Берем два изображения в JPG или другом формате преобразовываем в DIB, приводим их в ширину в единой ширине, пропорционально.
Далее раскладываем по RGB каналам, т.е. определяем каждой точке ее RGB значение. После создаем 3 массива R,G,B их длинна 256 ячеек в каждую ячейку прибавляем по еденице если находим цвет,т.е номер ячейки - это номер (R или G или B) цвета, У нас получается массив из 256 ячее и в каждой ячейки количество раз встречаемого оттенка.
Далее как мы создали шесть массивов(т.е. 3 RGB массива для одного изображения и 3 для другого) с количеством оттенков. Потом сравниваем ячейки в этих массивов один к одному. результат сравнения Вы мажете сопоставлять сами, я это делаю в процентном соотношении, т.е. если суммирую проценты разности 3 RGB ячеек, делю на 3 и получаю единый процент, далее суммирую все такие проценты (их будет 255) и делю на 255 - это и получится единый процент разности изображений.
Сделал программу по этой технологии и так же добавил в нее более точный метод - сравнение RGB коэффициентами (метод не раскрываю по этическим и коммерческим соображениям).
Программу назвал SyCMPi - более детально ее можно посмотреть, скачать и купить на моем сайте