我想知道openCV中的BFMatcher和FlannBasedMatcher在匹配精度或质量方面有什么不同。我知道当应用于大型数据库时,FlannBasedMatcher可能会更快,但无论执行时间如何,两个匹配器最终会找到相同的匹配吗?
发布于 2013-04-22 14:55:07
BFMatcher将尝试所有的可能性(这就是"Brute Force“的含义,因此它将找到最佳匹配。
FLANN,意思是“近似最近邻居的快速库”,速度会快得多,但会找到近似最近邻居。它会找到一个很好的匹配,但不一定是最好的。你可以使用FLANN的参数来提高精度(即匹配的“质量”),但这将以减慢算法为代价。
换句话说: FLANN比BFMatcher快得多,但它只找到一个近似的最近邻居,这是一个很好的匹配,但不一定是最好的。您可以使用FLANN的参数来提高其速度或精度。
发布于 2015-06-03 01:31:52
为了补充上面的答案,FLANN构建了一个有效的数据结构(KD-树),该结构将用于搜索近似邻居,而cv::BFMatcher则进行详尽的搜索,并确保找到最佳邻居。FLANN的真正好处体现在大型数据集上。在我的经验中,我看到一个合理的好处是描述符的数量大于1K。
https://stackoverflow.com/questions/10610966
复制相似问题