Обнаружение равенства изображения в различных разрешениях

Какую систему управления исходным кодом Вы используете?

Почти у всех них есть некоторая форма идентификационного тега $ $, который расширен, когда в файле регистрируются.

я обычно использую некоторую форму хакерства для отображения этого как номера версии.

другая альтернатива является использованием для использования даты в качестве номера сборки: 080803-1448

10
задан Jacob 17 February 2011 в 16:17
поделиться

3 ответа

Интересная проблема, кстати:)

Медленное решение - отличный шанс на успех

Используйте масштабно-инвариантный детектор признаков, чтобы найти соответствующие особенности на обоих изображениях. Если функции совпадают с высоким баллом в аналогичных местах, то у вас есть совпадение.

Я бы порекомендовал SIFT , который генерирует 128-целочисленный дескриптор, инвариантный к масштабированию и повороту для функции, обнаруженной на изображении. SURF (доступный в OpenCV) - еще один (более быстрый) детектор точек характеристик.

Вы можете сопоставить характеристики двух изображений с помощью грубой силы (сравнить каждый дескриптор с дескриптором на другом изображении), который равен O (n ^ 2), но довольно быстро (особенно в реализации VL SIFT). Но если вам нужно сравнить функции одного изображения с несколькими изображениями (что, возможно, придется), вы должны построить дерево функций, чтобы запросить его с функциями другого изображения. Деревья KD полезны, и OpenCV имеет хорошую реализацию.

Быстрое решение - может работать

Понизьте разрешение изображения с высоким разрешением до размеров с низким разрешением и используйте меру подобия, например SAD (где сумма различий между блоками, скажем, размером 3x3 пикселя вокруг пикселя в обоих изображениях является оценкой) для определения совпадения.

7
ответ дан 3 December 2019 в 23:50
поделиться

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
3
ответ дан 3 December 2019 в 23:50
поделиться

Вычислите нормализованную цветную гистограмму обоих изображений и сравните их, используя какой-либо метод (например, пересечение гистограмм - см. Ссылку выше). Обратите внимание, что нормализованная гистограмма необходима, потому что изображения имеют разное разрешение. Если изображения настолько непохожи, это не одно и то же изображение. Но если они похожи, у вас есть один из этих двух случаев: (i) это одно и то же изображение или (ii) это разные изображения, но с одинаковым глобальным распределением цвета.

Для случая (ii) разделите изображения и прямоугольные фрагменты и повторите процесс, сравнивая соответствующие фрагменты. Вы пытаетесь учесть локальные свойства изображения. Оцените результаты и выберите лучшее совпадение.

3
ответ дан 3 December 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: