1. Нормализация изображений 1
1.1 Если размеры разные — взять меньшую сторону каждого из изображений=a1 и a2, и меньшее по размеру изображение
отмасштабировать (допустим билинейно) до большего
1.2.Если после этого пропорции сторон изображений разные, у меньшего добавить прямоугольник, чтобы размеры сторон были одинаковы.
Прямоугольник заполнить целиком цветом = среднеарифметическим 8/16/32 (зависит от размеров исходного) крайних прилегающих пикселов
существующего изобажения.
1.3. Выровнить хотя бы яркости изображений (хотя бы среднеарифметически) и насыщенности (переведя предварительно RGB->HS(X) и затем обратно)
Уже тут выбор методов для каждой подзадачи

1.4. Выровнять контрастность изображений
1.5. Выровнять тональности изображений
2. Позиционирование
Можно делать в 2 этапа.
2.1 Центрирование (вдруг пиксели одного из них сдвинуты относительно пикселов другого). Для обоих изображений:
2.1.1 берем квадрат в центре кажого изображения (я бы начал со стороной кратной степени 2 и не менее 1/8 наименьшей стороны) считываем хеш
2.1.2 Если хеши этих тайлов «не равны», то начинаем для одного изображения квадрат смещать от центра +- попиксельно в пределах +-1/16 минимальной стороны изображения и опять сравнивать хеши. Если хеши совпали — то смещаем пиксели одного изображения относительно другого + обрезаем по общей части и т.п.
P.S. Лучше делать масштабирование с позиционированием (вдруг в одном изображении только часть фрагмента второго):
Как в 2.1, но помимо «шастания из центра по сторонам» образцового квадрата-тайла для одного из изображений уменьшаем-увеличиваем размер тайла. И начинаем сравнивать по хешам тайлы разных размеров (для этого придется доработать хеш тайла, чтобы он позволял сравнивать тайлы разных размеров).
3.Нормализация 2.
3.1 После позиционирований — обратно обрезаем и масшабируем изображения (основываясь на соотношении сторон контрольных тайлов сравнений и их смещениям).
3.2 Мы должны получить в итоге картинки одинакового размера, одинакового масштаба. У которых выравнены относительно друг друга: яркость, тональность, насыщенность.
4. Собственно сравнение.
4.1 Сделаем ч-белые копии изображений.
4.2.Пробегаемся по всем тайлам (их количество одинаковое) и попарно сравниваем их. Если они различны — заносим их в отдельный список.
4.3.Далее по вынесенным в отдельный список тайлам:
4.3.1 Увеличиваем постепенно из их центра размер тайлов (итерационно пусть на 25%) — когда тайлы станут равными, откатываемся на предыдущий щаг и записываем их.
4.3.2.Далее балансируем между 2мя шагами:
4.3.2.1 Если размер сравниваемых тайлов мал — на шаг 5.1.
4.3.2.2.Если размер сравниваемых тайлов велик — разбиваем тайлы на 4/8/16 частей и по ним выясняем инфу (к шагу 4.2) если повторно после 4.2 размеры тайлов не изменились — то на шаг 5.1
Показ результатов
5.1. Можем просто показать квадратики — в них инфа различна и все!
5.2. Если размер тайла большой — лучше в ДКТ преобразовании увеличивать долю участия ВЧ (расположенных далее от левого верхнего угла матрицы) коэффициентов. Бить тайл на составляющие и сравнивать
по новым «более чувствительным» хешам

. Грубо говоря нашли квадрат с различием, и уже возимся внутри него — что же изменилось: разбиваем тайл на мелкие тайлы и уже выводим как различный не большой изначальный тайл, а конкретные тайлики.
P.S. Можно усложнить 4.1 и цветные картинки перевести в пространство HSL/HSV и смотреть сравнивать аналогично 4.1 для каждой координаты. Также сравнить банально в RGB покоординатно. Таким образом мы сможем найти в полностью одинаковых изображениях например следующее:
В одном у человека бледное лицо, а в другом — красное.
В одном кошка (занимающая небольшую часть изображения) гладкошерстная — а в другом — короткошерстная
Не сможешь отличить Чб телевизор от цветного