Why KeyPoint "detector" and "extractor" are different operation?
opencv, sift, surf
Solution
There is a difference between detecting the keypoints in an image and computing the descriptors for those keypoints. For example you can extract SURF keypoints and compute SIFT features. Note that in DescriptorExtractor::compute method, filters on keypoints are applied:
KeyPointsFilter::runByImageBorder()
KeyPointsFilter::runByKeypointSize();
Problem
Bascially you have first to do a: ``` SurfFeatureDetector surf(400); surf.detect(image1, keypoints1); ``` And then a: ``` surfDesc.compute(image1, keypoints1, descriptors1); ``` Why detect and comput are 2 different operation? Doing the computing after the detect doesn't make redundance loops? I found myself that `.compute` is the most expensive in my application. ``` .detect ``` is done in 0.2secs ``` .compute ``` Takes ~1sec. Is there any way to speed up `.compute` ?