2016-05-13 4 views
2

У меня есть изображение I (оттенки серого). Я обнаружил и извлек функции SURF с этого изображения:matchFeatures не соответствует всем функциям при сравнении одного и того же изображения. Зачем?

poi = detectSURFFeatures(I); 
[features,validPoi] = extractFeatures(I,poi,'SURFSize',128); 

373 функции были найдены. Однако, когда я подсчитываю количество подходящих для себя функций, не все функции соответствуют:

indexPairs = matchFeatures(features,features); 

индексные пары возвращают только 365 матчей. Зачем ??? Обратите внимание, что я нашел эти результаты только для одного изображения из трех. Для двух других изображений matchFeatures возвращает одинаковое количество функций, таких как extractFeatures. Благодаря !

ответ

1

matchFeatures Функция имеет соответствие порогового значения параметров MatchThreshold и MaxRation, которые отвергают потенциально ложные или неоднозначные матчи от, например, предусматривающие, что лучший найдено совпадение должно быть лучше, чем второй лучший матч на определенный коэффициент.

Даже если изображения идентичны, такая ситуация может возникнуть.

+0

Спасибо! Но влияет ли это на подсчет сходства между двумя изображениями на основе количества совпадающих функций? В настоящее время я вычисляю это следующим образом: nbmatch = size (indexPairs, 1); minsize = min (размер (функции, 1)); сходство = nbmatch/minsize. Это приводит к измерению подобия для изображения с самим собой, которое ниже 1. – Julien

+0

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

+0

Я думал, что это была схожесть, предложенная Лоу в его статье, представляющей SIFT, но я обязательно должен перечитать эту статью ... Спасибо! – Julien