OpenCV的DescriptorMatchers中匹配的阈值

时间:2012-05-01 22:36:05

标签: opencv

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

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

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

可能不是最好/最干净的方式,但它是一个快速的解决方案,可以适用于原型情况。

答案 1 :(得分:1)

使用 radiusMatch 代替匹配

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