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:
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.
FREAK removes points if it can not generate a descriptor for it, many times this occurs in the border of the image as it cannot generate a descriptor if it falls out of the boundary image. I avoid this issue by applying a ROI before extraction.
I also use FAST combined with FREAK and I get the best results, but I still have the problem of reducing extractor time, which is too high for me.