首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV python FlannBasedMatcher添加多个描述符

OpenCV python FlannBasedMatcher添加多个描述符
EN

Stack Overflow用户
提问于 2018-12-15 15:38:22
回答 1查看 3.8K关注 0票数 4

我正在尝试使用本教程中的SURF (matcher.html)检测图像

我现在的目标是向FlannBasedMatcher中添加多个图像,然后保存它,以便以后能够加载它。当从示例中更改代码并尝试调用add()train()之前,在调用knnMatch(queryDescriptors=des1,k=2)之前(而不是matches = flann.knnMatch(des1,des2,k=2) ),我会得到其他结果,如教程中的示例所示。

代码语言:javascript
复制
surf = cv2.xfeatures2d.SURF_create(800)
...
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50)   # or pass empty dictionary
...
flann = cv2.FlannBasedMatcher(index_params,search_params)
flann.add(des1)
flann.train()
flann.knnMatch(queryDescriptors=des2, k=2)

问题1:为什么我得到的结果与本教程不同?

当为ex在knnMatch()中更改k的值时。6,将返回最近的6匹配。使用knn=2,为了找到好的匹配,我检查返回的匹配的距离不大于m1.distance < 0.8 * m2.distance

问题2:在knn=6中,我应该使用哪一个6的匹配来比较距离不大于0.8*的距离?

EN

回答 1

Stack Overflow用户

发布于 2018-12-19 01:42:51

问题1:

我认为结果将与教程不同,因为搜索范围是不同的。本教程查找item1 of des1在des2中的匹配。然而,您正在寻找item1 of des1在des1和des2的结合中。

问题2:

比率测试由Low(SIFT作者)设计,以测量匹配点的唯一性。如果最佳匹配和第二最佳匹配之间的距离(分数/相似度)很大,这意味着最佳匹配是唯一的,并且图像中没有其他特征与其相似。然而,如果第二次最佳匹配接近最佳匹配,则意味着该特征不是唯一的,而且该特征可能是一个重复的模式,我们应该从匹配过程中抛弃它。

因此,通过使用k=6,您正在寻找最好的6个匹配,这无助于确定特性的唯一性,因为只有最好的和第二个最好的点重要。

也许您正在尝试从描述符的结合中聚集类似的点。那么比率测试在这种情况下是无用的,因为不再有唯一的匹配。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53794676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档