1 | initial version |
How much is each of those algorithms better than the ones before? Might be interesting to know. Anyway, the big problem is the matching. It's ineffective. VERY!
First off, use KNN-matching with two nearest neighbours. Then do the ratiotest, proposed by Lowe, to eliminate possible bad matches. Then use the symmetrytest / crosscheck to further remove bad matches. Lastly, use the epipolargeometry to find the best possible matches. For code, see the OpenCV-cookbook, the class with the code of the tests I wrote about in there is called RobustMatcher.
Simply finding the best match for each keypoint without regarding the geometric relation of the two images and the matches might work if you have VERY distinct keypoints and therefore descriptors, but if you add noise and other changes, it gets hard. And then a simple "find the best match for each keypoint" is not enough.