I am using OpenCV 2.4.3 c++ interface to find matching points between two images. The first attempt was using SURF. The only problem is the consuming time, so I tried the new FREAK extractor. Using SURF for detection and FREAK for description, I realized that FREAK reduces the number of keypoints to almost half the detected, and the resulting matches were not enough. That is the reason, I tried FAST to obtain more keypoints. The results:
- SURF detector, SURF extractor, BFMatcher crosscheck true, RANSAC: 70keypoints first image, 50 keypoints second image, 200ms. 250ms. 15ms. 15ms.
- SURF detector, FREAK extractor, BFMatcher crosscheck true, RANSAC: 39 keypoints first image, 30 keypoints second image (after FREAK), 200ms., 50 ms. , 0ms., 0ms. It results that there too few good matchings.
- FAST detector, FREAK extractor, BFMatcher crosscheck true, RANSAC: 120 keypoints, 90 keypoints, (69 and 48 keypoints after FREAK), 10ms., 450 ms., 15 ms., 10 ms.
After that, I used ORBFeatureDetector, and it is obtaining the same number of keypoints than FAST, but after FREAK extractor, the resulting keypoints are 0 for each image. Am I doing something wrong? Are ORB keypoints different from those obtained from FAST? Maybe I could open another question for this, but I have last one. What could it be the best combination of detector/extractor to obtain the same results than my first experiments using SURF, but reducing the processing time? Because as I obtain more keypoints the extractor part is also more time consuming, although I use FREAK.