This implementation of GPU-Surf is open-source (license MIT) and should be cross-platform (currently tested on Windows only). It is based on Ogre3D to get DirectX/OpenGL abstraction.
This is a partial implementation of Surf algorithm (feature detector implemented but feature descriptor missing).

This implementation is based on the paper: N. Cornelis, L. Van Gool: Fast Scale Invariant Feature Detection and Matching on Programmable Graphics Hardware.

Original image Corner detection
Result using my implementation

Development status :

There are 3 versions of GPUSurf on the svn:

  • GPUSurfDemo3: only working with DX9 (obsolete).
  • GPUSurfDemo: using Ogre::Cuda and Ogre::Compositor for GPGPU (will become obsolete).
  • GPUSurfFeatureDetector: using Ogre::Cuda and Ogre::GPGPU.

Currently there are no version working properly with OpenGL because the function “cudaGraphicsSubResourceGetMappedArray” return an error when I try to access a mipmap level higher than 0. I think that there is an issue with the way Ogre3D create OpenGL texture with mipmap, but I have to investigate a bit more… Moreover I have translated all pixel shader from HLSL to GLSL but GLSL shaders need to be optimized.

Links :

Binary Demo :
Source Code : svn on
Documentation : GPUSurf.pdf
License : MIT


Leave a Reply