2016-05-13 22 views
2

Ich habe ein Bild I (Graustufen). Ich erkannte und extrahierte SURF-Merkmale von diesem Bild:matchFeatures stimmt nicht mit allen Funktionen überein, wenn dasselbe Bild verglichen wird. Warum?

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

373 Funktionen wurden gefunden. Wenn ich jedoch die Anzahl der mit ihnen übereinstimmenden Features zähle, stimmen nicht alle Features überein:

Indexpaare gibt nur 365 Übereinstimmungen zurück. Warum ??? Beachten Sie, dass ich dieses Ergebnis nur für ein Bild von drei gefunden habe. Bei den anderen beiden Bildern gibt matchFeatures die gleiche Anzahl an Features wie extractFeatures zurück. Vielen Dank !

Antwort

1

Die Funktion matchFeatures Schwellenanpassungs hat Parameter MatchThreshold und MaxRation, die durch zum Beispiel möglicherweise falsch oder mehrdeutig Streichhölzer ablehnen besagen, dass das besten gefunden Spiel besser sein muss als die zweitbeste Übereinstimmung mit einem bestimmten Faktor.

Auch wenn die Bilder identisch sind, kann diese Situation auftreten.

+0

Danke! Beeinflusst dies jedoch die Berechnung der Ähnlichkeit zwischen zwei Bildern basierend auf der Anzahl der übereinstimmenden Merkmale? Derzeit berechne ich es so: nbmatch = Größe (indexPairs, 1); Minensize = Min (Größe (Merkmale, 1)); Ähnlichkeit = nbmatch/minsize. Dies führt zu einem Ähnlichkeitsmaß für ein Bild mit sich selbst, das kleiner als 1 ist. – Julien

+0

@Julien sicher, denn Ähnlichkeit in dieser Formulierung ist ein Prozentsatz der übereinstimmenden Merkmale. Und einige Übereinstimmungen, sogar von identischen Merkmalen, könnten immer noch vom passenden Algorithmus zurückgewiesen werden. – Maurits

+0

Ich dachte, dies wäre die Ähnlichkeitsmessung, die Lowe in seinem Vortrag über SIFT vorschlägt, aber ich sollte dieses Papier sicherlich noch einmal lesen ... Danke! – Julien