【发布时间】:2014-08-16 16:23:39
【问题描述】:
我正在查看 EMGU 和 BrutheForceMatcher 的 API。如果您创建 BruteForceMatcher(T)(DistanceType) 构造函数,它不会进行交叉检查。但是,我不知道什么是交叉检查,API中似乎也没有提到。就这个 EMGU 和计算机视觉而言,什么是交叉检查?
【问题讨论】:
标签: c# computer-vision emgucv
我正在查看 EMGU 和 BrutheForceMatcher 的 API。如果您创建 BruteForceMatcher(T)(DistanceType) 构造函数,它不会进行交叉检查。但是,我不知道什么是交叉检查,API中似乎也没有提到。就这个 EMGU 和计算机视觉而言,什么是交叉检查?
【问题讨论】:
标签: c# computer-vision emgucv
crossCheck – 如果为 false,当它为每个查询描述符找到 k 个最近邻居时,这将是默认的 BFMatcher 行为。如果 crossCheck==true,则 k=1 的 knnMatch() 方法将只返回对 (i,j),这样对于第 i 个查询描述符,匹配器集合中的第 j 个描述符是最近的,反之亦然,即BFMatcher 只会返回一致的对。当有足够的匹配时,这种技术通常会以最少数量的异常值产生最佳结果。这是 D. Lowe 在 SIFT 论文中使用的比率测试的替代方法。
编辑:
据我了解,我很确定您可以这样总结以上内容,如果您找到与功能 A 最接近的匹配 B,则元组 (A,B) 仅被视为 Consistent Pair 和因此,如果 A 也是与您的功能 B 最接近的匹配项,则返回。
一维示例:
-----A--------B---C
在这种情况下,即使 B 是 A 的最佳匹配,反之亦然。相反,(B,C) 将成为您的 Consistent Pair
-----A--B-----C
另一方面,显然(A,B) 是更好的匹配,它将被返回。
(文档中提到的 Loewe 的另一种方法也已经在 SO over here 上讨论过)
【讨论】: