記事

BFMatcherとFlannBasedMatcherの違い

BFMatcher

bf = cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)

そもそもBFとは「Brute Force」の略。つまり総当りでマッチを見つける。

FlannBasedMatcher

flann = cv2.FlannBasedMatcher(dict(algorithm = 0, trees = 5), dict(checks = 50))
matches = bf.knnMatch(des1, des2, k=2)

通称「FLANN」。てっきりFLANNって人名かと思ってたらFast Library for Approximate Nearest Neighborsの略だった(ソース)

Approximate Nearest Neighbors=近似最近傍探索であり、つまり最近傍探索することで効率が上がるよね、ってやつ

速度は上がるっぽいけどパラメータは自分で調節しなきゃいけない