2016-05-12 13 views
18

Ich habe versucht, eine Möglichkeit zu finden, Ähnlichkeitswert (in%) nach dem Vergleich zweier Bilder mit SIFT in Python (2.7.x) opencv (2.4.9) zu generieren. Ich konnte nur Beispiele finden, die Linien zwischen den Spielen zeichnen. Wie gehe ich damit fort?Generieren Ähnlichkeit Ähnlichkeit in Prozent von SIFT mit opencv

+0

um genau zu sein Ich suche nach Python-Implementierung von VL_UBCMATCH Funktion – user93

+0

Haben Sie es gefunden? – edyvedy13

+1

Nein, ich konnte es nicht finden. Ein Beispiel Code wäre wirklich hilfreich – user93

Antwort

6

Es gibt ein opencv-Äquivalent der vl_ubcmatch-Funktion in Matlab.

Hier ist der Auszug aus opencv documentation.

# create BFMatcher object 
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) 

# Match descriptors. 
matches = bf.match(des1,des2) 

matches = bf. match (des1, des2) entspricht die zwei Sätze von Deskriptoren und gibt eine Liste von DMatch Objekte. Dieses DMatch-Objekt hat vier Attribute: distance, trainIdx, queryIdx, imgIdx. Diese Rückgabewerte entsprechen der Funktion vl_ubcmatch.

Ich hoffe, Sie finden es hilfreich.

+0

Was ich brauche, ist ein Ergebnis. VL_UBCMATCH zusätzlich zu Übereinstimmungen gibt Punktzahl zurück – user93

+1

Laut [VLFEAT-Dokumentation] (http://www.vlfeat.org/matlab/vl_ubcmatch.html) gibt VL_UBCMATCH den quadrierten euklidischen Abstand zur Bewertungsvariablen zurück. In der Tat, wenn ich [SIFT Tutorial] (http://www.vlfeat.org/overview/sift.html) versuche, hat die Score-Variable Distanzwerte zwischen den beiden SIFT-Deskriptoren. scores (:, 1) ist 21647 und 'sum ((int64 (da (:, 9)) - int64 (db (:, 618))).^2)' ist der gleiche Wert, wobei da (:, 9) ist der 9. SIFT-Deskriptor in ImageA, db (: 618) ist der 618. SIFT-Deskriptor in ImageB. Ist das nicht Ihre gewünschte Ausgabe? – satojkovic

Verwandte Themen