使用OpenCV从SIFT生成相似度百分比得分

21

我一直在尝试使用Python(2.7.x)和OpenCV(2.4.9)中的SIFT算法比较两幅图像,并生成相似度得分(以%表示)。但我只找到了画出匹配线的示例。请问该如何继续进行?


准确地说,我正在寻找VL_UBCMATCH函数的Python实现。 - user93
你找到了吗? - edyvedy13
1
不好意思,我找不到它。提供一个示例代码会非常有帮助。 - user93
1
这个 https://stackoverflow.com/a/51728654/1021819 有帮助吗? - jtlz2
1个回答

6
这是一篇关于IT技术的文章。以下是需要翻译的内容:

在Matlab中,vl_ubcmatch函数有一个对应的opencv等效函数。

以下是摘自opencv文档的节选。

# 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函数。

希望这对您有所帮助。


我需要的是分数。除了匹配之外,VL_UBCMATCH还返回分数。 - user93
2
根据VLFEAT文档,VL_UBCMATCH返回到分数变量的平方欧氏距离。实际上,当我尝试SIFT教程时,分数变量具有两个SIFT描述符之间距离值。 scores(:, 1)为21647,而sum((int64(da(:, 9)) - int64(db(:, 618))) .^2)是相同的值,其中da (:, 9)是ImageA中的第9个SIFT描述符,db (:, 618)是ImageB中的第618个SIFT描述符。这不是您想要的输出吗? - satojkovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接