BFMatcher和FlannBasedMatcher之间的区别

Tul*_*kas 16 opencv

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

Jon*_*rin 25

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

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

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

  • 数据库应该有多大才能使BFMather变慢?如果你有一个1000个描述符的列表?更多,更少? (4认同)

小智 8

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