Difference between BFMatcher and FlannBasedMatcher

后端 未结 2 760
面向向阳花
面向向阳花 2021-02-18 13:47

I would like to know what is the difference in term of precision or quality of the matches between the BFMatcher and FlannBasedMatcher in openCV. I kno

相关标签:
2条回答
  • 2021-02-18 14:34

    BFMatcher is going to try all the possibilities (which is the meaning of "Brute Force" and hence it will find the best matches.

    FLANN, meaning "Fast Library for Approximate Nearest Neighbors", will be much faster but will find an approximate nearest neighbors. It will find a good matching, but not necessarily the best possible one. You can play with FLANN's parameters in order to increase the precision (i.e. the "quality" of the matchings), but it will be at the cost of slowing the algorithm.

    In other words: FLANN is much faster than BFMatcher but it only finds an approximate nearest neighbor, which is a good matching but not necessarily the best. You can play with the parameters of FLANN in order to increase its speed or its precision.

    0 讨论(0)
  • 2021-02-18 14:34

    To add to the above answer, FLANN builds an efficient data structure (KD-Tree) that will be used to search for an approximate neighbour, while cv::BFMatcher does an exhaustive search and is guaranteed to find the best neighbour. The real benefit of FLANN is seen with large data sets. In my experience, I've seen a justifiable benefit is the number of descriptors is larger than 1K.

    0 讨论(0)
提交回复
热议问题