在 openCV 中查找 SURF 的精确匹配
Posted
技术标签:
【中文标题】在 openCV 中查找 SURF 的精确匹配【英文标题】:Find Exact Matches of SURF in openCV 【发布时间】:2010-07-06 15:36:55 【问题描述】:我正在使用 openCV Surf 跟踪器来查找两个图像中的精确点。 如您所知,Surf 在两幅图像中都返回了许多特征点。我想要做的是使用这些特征参数来找出哪些匹配是完全正确的(真正的正匹配)。在我的应用程序中,我只需要真正的肯定匹配。
这些参数存在:Hessian, Laplacian, Distance, Size, Dir.
我不知道如何使用这些参数? 精确匹配的距离更小还是粗麻布更远?拉普拉斯能帮忙吗? size 或 dir 有帮助吗?
我怎样才能找到完全匹配(真阳性)??
【问题讨论】:
【参考方案1】:通过采用以下策略,您可以在查询和图像中的描述符之间找到非常合适的匹配 -
使用 2 NN 搜索图像描述符中的查询描述符,以及以下条件-
如果距离(第一次匹配)
过滤掉误报。
【讨论】:
这个叫做比率测试,似乎比普通的<= 3*min_dist
好。【参考方案2】:
很明显,您无法 100% 确定哪些点真正匹配。您可以通过调整 SURF 参数(参见一些链接 here)来增加(性能成本)正数。根据您的实际任务,您可以使用稳健的算法来消除异常值,即如果您执行某种模型拟合,则使用 RANSAC。另外,正如 Erfan 所说,您可以使用空间信息(查看“Elastic Bunch Graph Matching”和Spatial BoW)。
【讨论】:
查看“Elastic Bunch Graph Matching”和Spatial BoW。【参考方案3】:我即将发布的答案只是我的猜测,因为我尚未对其进行测试以查看它是否完全按预期工作。
通过比较opencv
返回的3个随机候选特征点之间的相对极距,并与模板中的对应点进行比较(有一定误差),不仅可以计算出真阳性的概率,还可以计算出角度和匹配模式的规模。
干杯!
【讨论】:
以上是关于在 openCV 中查找 SURF 的精确匹配的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB
opencv中SURF特征提取的最佳hessian阈值+最小描述符匹配