Как использовать SIFT для сравнения изображений

Недавно я наткнулся на реализацию SIFT для C#. Я подумал, что было бы очень весело поиграть с ним, что я и сделал.

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

Мне нужно одно "значение сходства". Можно ли это сгенерировать из двух наборов точек интереса двух изображений?


person Boris    schedule 06.08.2012    source источник


Ответы (2)


Вам нужно запустить SIFT на обоих изображениях, чтобы получить точки интереса (назовем их ключевыми точками) на обоих изображениях.

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

Значение сходства можно вычислить по количеству совпадений. Вы можете считать, что если вы получаете более 4 точек, изображения одинаковы, и вы также можете рассчитать относительное вращение между ними.

person Jav_Rock    schedule 21.08.2012
comment
Имейте в виду, что количество признаков/совпадений также зависит от нерелевантных качеств исходных изображений. Вместо того, чтобы просто подсчитывать количество совпадений, лучше подсчитать процент совпавших объектов. - person rinogo; 09.07.2020
comment
(Очевидно, ymmv — это во многом зависит от того, как выглядит ваш набор данных!) - person rinogo; 09.07.2020

Вы можете использовать количество совпадений в качестве показателя сходства.

person mrgloom    schedule 23.08.2012