Какую систему управления исходным кодом Вы используете?
Почти у всех них есть некоторая форма идентификационного тега $ $, который расширен, когда в файле регистрируются.
я обычно использую некоторую форму хакерства для отображения этого как номера версии.
другая альтернатива является использованием для использования даты в качестве номера сборки: 080803-1448
Интересная проблема, кстати:)
Медленное решение - отличный шанс на успех
Используйте масштабно-инвариантный детектор признаков, чтобы найти соответствующие особенности на обоих изображениях. Если функции совпадают с высоким баллом в аналогичных местах, то у вас есть совпадение.
Я бы порекомендовал SIFT , который генерирует 128-целочисленный дескриптор, инвариантный к масштабированию и повороту для функции, обнаруженной на изображении. SURF (доступный в OpenCV) - еще один (более быстрый) детектор точек характеристик.
Вы можете сопоставить характеристики двух изображений с помощью грубой силы (сравнить каждый дескриптор с дескриптором на другом изображении), который равен O (n ^ 2), но довольно быстро (особенно в реализации VL SIFT). Но если вам нужно сравнить функции одного изображения с несколькими изображениями (что, возможно, придется), вы должны построить дерево функций, чтобы запросить его с функциями другого изображения. Деревья KD полезны, и OpenCV имеет хорошую реализацию.
Быстрое решение - может работать
Понизьте разрешение изображения с высоким разрешением до размеров с низким разрешением и используйте меру подобия, например SAD (где сумма различий между блоками, скажем, размером 3x3 пикселя вокруг пикселя в обоих изображениях является оценкой) для определения совпадения.
I'd recommend scripting a solution off of ImageMagick. The following (from the documentation on comparing images with IM) would output a comparative value that you can use.
convert image1 image2 \
-compose difference -composite -colorspace gray miff:- |\
identify -verbose - |\
sed -n '/^.*Mean: */{s//scale=2;/;s/(.*)//;s/$/*100\/32768/;p;q;}' | bc
Вычислите нормализованную цветную гистограмму обоих изображений и сравните их, используя какой-либо метод (например, пересечение гистограмм - см. Ссылку выше). Обратите внимание, что нормализованная гистограмма необходима, потому что изображения имеют разное разрешение. Если изображения настолько непохожи, это не одно и то же изображение. Но если они похожи, у вас есть один из этих двух случаев: (i) это одно и то же изображение или (ii) это разные изображения, но с одинаковым глобальным распределением цвета.
Для случая (ii) разделите изображения и прямоугольные фрагменты и повторите процесс, сравнивая соответствующие фрагменты. Вы пытаетесь учесть локальные свойства изображения. Оцените результаты и выберите лучшее совпадение.