BFMatcher和FlannBasedMatcher之间的区别

时间:2012-05-16 01:45:04

标签: opencv

我想知道openCV中BFMatcherFlannBasedMatcher之间的匹配精度或质量有何不同。我知道FlannBasedMatcher在应用于大型数据库时可能会更快,但无论执行时间如何,两个匹配器都会在最后找到相同的匹配项吗?

2 个答案:

答案 0 :(得分:20)

BFMatcher将尝试所有可能性(这是“暴力”的含义,因此它会找到最佳匹配。

FLANN,意思是“近似最近邻居的快速库”,会更快,但会找到近似的最近邻居。它会找到一个很好的匹配,但不一定是最好的匹配。您可以使用FLANN的参数来提高精度(即匹配的“质量”),但这会以降低算法速度为代价。

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

答案 1 :(得分:8)

为了添加上述答案,FLANN构建了一个有效的数据结构(KD-Tree),用于搜索近似邻居,而cv::BFMatcher进行详尽的搜索,并保证找到最好的邻居。使用大型数据集可以看到FLANN的真正好处。根据我的经验,我已经看到合理的好处是描述符的数量大于1K。