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.