【问题标题】:Threshold for matches in OpenCV's DescriptorMatchersOpenCV DescriptorMatcher 中匹配的阈值
【发布时间】:2013-04-12 18:19:42
【问题描述】:

有没有办法为 OpenCV 的 features2d 中的 DescriptorMatcher 计算的潜在匹配的图像描述符对设置阈值?

详细地说,我有一个 Bruteforce-Matcher,我想用它计算两个图像的描述符对,并且只有最小距离为 threshold 的对才应该进入匹配项。

BFMatcher matcher(NORM_L2, true);
vector<DMatch> matches;
matcher.match(descriptors1, descriptors2, matches);

感谢您的帮助!

【问题讨论】:

    标签: opencv


    【解决方案1】:

    好的,所以我做了更多的阅读,发现了一些有趣的帖子,比如How to use flann based matcher, or generally flann in opencv?,并找到了我自己的方法;-)

    首先我使用 FlannBasedMatcher 来匹配计算的描述符。之后,我对匹配项进行了排序(默认情况下,它们按距离升序排序)。创建了第二个 DMatch 向量,并添加了距离低于我选择的距离阈值的匹配项。而已。这样我也可以选择前 N 个匹配它的阈值被选择为坏的。

    可能不是最好/最干净的方法,但它是一种快速解决方案,适合原型情况。

    【讨论】:

      【解决方案2】:

      使用 radiusMatch 而不是 ma​​tch

      matcher.radiusMatch(descriptors1, descriptors2, matches, your-threshold);
      

      【讨论】:

      • 错了。文档说:“对于每个查询描述符,找到不超过指定距离的训练描述符。”,而 OP 要求 仅对具有最小阈值距离的对
      • 我运行了代码。请不要仅根据文档来回答。
      • 源码中明确写着maxDistancegithub.com/Itseez/opencv/blob/…
      • “不超过指定距离的描述符”和“具有最小阈值距离的对”之间究竟有什么区别?
      • 虽然我同意@aledalgrande,但似乎这个解决方案会超出匹配的目的,所以我认为 jstr 实际上意味着最大值,在这种情况下,Moe 的解决方案应该可以工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2017-09-11
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多