Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Your approach should work fine. So, in your set-up sth must be wrong. And yes, this is definitely possible with OpenCV. If you'd like to get the maximum performance build your index with the original-flann from http://www.cs.ubc.ca/~mariusm/index.php/FLANN/ with OpenMP-support and use OpenCV's GPU::SURF module (http://docs.opencv.org/modules/nonfree/doc/feature_detection.html#gpu-surf-gpu).

However note that depending on the number of SURF descriptors (which depend of course on the SURF-settings and the size of the images and their content) you'll have to do many comparisons and a lot of memory to build your flann-index. So, I suggest to go a different way and compute a single descriptor for your images either by a global image descriptor (see e.g. http://answers.opencv.org/question/9271/global-image-feature-implementation/) or by the usage of a bag-of-words-descriptor (see http://answers.opencv.org/question/8677/image-comparison-with-a-database). The drawback of the bag-of-words-descriptor is that you need to build a vocabulary first which will also take quite a while for such a database. However the results should be definitely better with less false positives and the cool thing with a global image descriptor is that you can use it for classification tasks.