2016-05-12 92 views
18

我一直在試圖找到一種方法來比較使用Python(2.7.x)opencv(2.4.9)中的SIFT兩個圖像後的相似性得分(%)。我只能找到在比賽之間畫線的例子。我該如何繼續。使用opencv生成相似度得分百分比從SIFT

+0

準確地說,我正在尋找VL_UBCMATCH函數的python實現 – user93

+0

您是否找到它? – edyvedy13

+1

不,我找不到它。示例代碼將非常有用 – user93

回答

6

在Matlab中有一個與vl_ubcmatch函數相當的opencv。

以下是摘自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)匹配兩組描述符並返回一個DMatch對象列表。這個DMatch對象有四個屬性:distance,trainIdx,queryIdx,imgIdx。這些返回值相當於vl_ubcmatch函數。

我希望你會發現它有幫助。

+0

我需要的是分數。 VL_UBCMATCH除了匹配返回得分 – user93

+1

根據[VLFEAT文檔](http://www.vlfeat.org/matlab/vl_ubcmatch.html),VL_UBCMATCH將平方歐幾里德距離返回給得分變量。事實上,當我嘗試[SIFT教程](http://www.vlfeat.org/overview/sift.html)時,得分變量具有兩個SIFT描述符之間的距離值。 score(:, 1)是21647,sum((int64(da(:, 9)) - int64(db(:, 618)))。^ 2)'是相同的值,其中da(:, 9)是ImageA中的第9個SIFT描述符,db(:, 618)是ImageB中的第618個SIFT描述符。這不是你想要的輸出嗎? – satojkovic