opencvcomputer-visionfeature-detectionfeature-extractionorb

Are there any detectors which implemented on GPU and are scale/rotate-invariant?


As known in OpenCV 2.4.9.0 are these feature-detectors: SIFT, SURF, BRISK, FREAK, STAR, FAST, ORB.

All of these have implementation on CPU, but only FAST and ORB on GPU. http://docs.opencv.org/genindex.html

And as known, some are scale/rotate-invariant, but some aren't: Are there any fast alternatives to SURF and SIFT for scale-invariant feature extraction?

These are scale-invariant and rotate-invariant:

But these are not scale-invariant and not rotate-invariant:

Are there any detectors which implemented on GPU and are scale/rotate-invariant?

Or will be added in OpenCV 3.0 on GPU or OpenCL?


Solution

  • Actually, SURF is the only scale/rotate-invariant feature detector with GPU support in OpenCV.

    In OpenCV 3.0 FAST and ORBhave got OCL support and moreover, these two (FAST and ORB) have already got CUDA support.

    The OCL/CUDA support of SURF has been already mentioned in the comments of your question, but it is only a contribution to OpenCV and this is how OpenCV's developers about opencv_contrib:

    New modules quite often do not have stable API, and they are not well-tested. Thus, they shouldn't be released as a part of official OpenCV distribution, since the library maintains binary compatibility, and tries to provide decent performance and stability.

    Based on my previous experiences OpenCV’s implementation of SURF features were much weaker than OpenSURF. It would be reasonable to try it, or find some other open source implementations.

    p.s.: to my knowledge still there is no GPU accelerated version of KAZE/AKAZE.