2016-05-12 9 views
18

Ho cercato di trovare un modo per generare un punteggio di somiglianza (in%) dopo aver confrontato due immagini utilizzando SIFT in python (2.7.x) opencv (2.4.9). Sono stato in grado di trovare solo esempi che disegnano linee tra le partite. Come posso procedere con questo.Generare il punteggio di somiglianza in percentuale da SIFT utilizzando opencv

+0

per essere precisi sto cercando l'implementazione python della funzione VL_UBCMATCH – user93

+0

L'hai trovato? – edyvedy13

+1

No, non sono riuscito a trovarlo. Un codice di esempio sarebbe davvero utile – user93

risposta

6

Esiste un equivalente opencv della funzione vl_ubcmatch in Matlab.

Ecco l'estratto da 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) partite le due serie di descrittori e restituisce un elenco di oggetti DMatch. Questo oggetto DMatch ha quattro attributi: distance, trainIdx, queryIdx, imgIdx. Questi valori di ritorno sono equivalenti alla funzione vl_ubcmatch.

Spero che lo troverai utile.

+0

Quello che mi serve è il punteggio. VL_UBCMATCH oltre alle corrispondenze restituisce il punteggio – user93

+1

In base alla [documentazione VLFEAT] (http://www.vlfeat.org/matlab/vl_ubcmatch.html), VL_UBCMATCH restituisce la distanza Euclidea quadrata rispetto alla variabile punteggio. Infatti, quando provo [SIFT Tutorial] (http://www.vlfeat.org/overview/sift.html), la variabile punteggio ha valori di distanza tra i due descrittori SIFT. score (:, 1) è 21647, e 'sum ((int64 (da (:, 9)) - int64 (db (:, 618))).^2)' è lo stesso valore, dove da (:, 9) è il nono descrittore SIFT in ImageA, db (:, 618) è il 618 ° descrittore SIFT in ImageB. Non è questa la tua uscita desiderata? – satojkovic

Problemi correlati