25

我想知道openCVBFMatcherFlannBasedMatcheropenCV之间的匹配精度或质量有什么区别。我知道FlannBasedMatcher应用于大型数据库时可能会更快,但是无论执行时间如何,两个匹配器最终都会找到相同的匹配项吗?

4

2 回答 2

31

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

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

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

于 2013-04-22T06:55:07.160 回答
13

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

于 2015-06-02T17:31:51.830 回答