BFMatcher和FlannBasedMatcher的区别

28

我想知道在OpenCV中,BFMatcherFlannBasedMatcher匹配器在匹配精度或质量方面的区别。我知道当应用于大型数据库时,FlannBasedMatcher可能会更快,但是无论执行时间如何,这两个匹配器最终是否会找到相同的匹配项?

2个回答

36

BFMatcher会尝试所有可能性(这是“Brute Force”的意思),因此它将找到最佳匹配。

FLANN代表“Fast Library for Approximate Nearest Neighbors”,速度更快,但只能找到近似的最近邻居。它会找到一个好的匹配,但不一定是最好的。您可以调整FLANN的参数以增加精度(即匹配的“质量”),但这会减慢算法速度。

换句话说:FLANN比BFMatcher快得多,但它只能找到近似的最近邻居,这是一个很好的匹配,但不一定是最佳匹配。您可以调整FLANN的参数以增加其速度或精度。


6
为使BFMatcher变慢,数据库需要有多大?如果你有一个包含1000个描述符的列表,是更多还是更少? - Metalzero2

15
为了补充上面的答案,FLANN 构建了一个高效的数据结构(KD-Tree),用于搜索近似邻居,而 cv::BFMatcher 则进行穷举搜索,并保证找到最佳邻居。FLANN 的真正好处在于大型数据集中的使用。根据我的经验,在描述符数量超过 1K 时,会看到一个合理的好处。

请问能否更新一下 FLANN 的链接?好像已经失效了。谢谢! - Milan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接