1 | initial version |
My suggestion is to use BRISK and FREAK. I use this for Objectdetection an it works fine. In the OpenCV FREAK Example the use the Surfdetector but this doesn´t give me good Matches. But you should try it with the binary images. Hope this helps.
std::vector<keypoint> keypointsA, keypointsB;
Mat descriptorsA, descriptorsB;
std::vector<dmatch> matches;
BRISK detector(30,9,1.0F);
FREAK extractor;
BFMatcher matcher(NORM_HAMMING,false);
detector.detect( imgA, keypointsA );
extractor.compute( imgA, keypointsA, descriptorsA );
detector.detect( imgB, keypointsB );
extractor.compute( imgB, keypointsB, descriptorsB );
matcher.knnMatch(descriptorsA, descriptorsB, matches, 2);
drawMatches(imgAs, keypointsA, imgB, keypointsB, good_matches, imgMatch);