University of North Carolina at Chapel Hill
| SIFT Implementation | ||
SiftGPU is an implementation of SIFT [1] for GPU. Basically, GPU shaders are used in Gaussian pyramid construction, DoG keypoint detection and descriptor generation. Not only does SiftGPU process pixels and features paralelly with GPU, this implementation also builds compact feature list by using GPU reduction [3], which changes the per-pixel processing to per-feature processing and reduces readback time. SiftGPU is inspired by Andrea Vedaldi's sift++[2] and Sudipta N Sinha et al's GPU-SIFT[4] . Many parameters of sift++ ( for example, number of octaves, number of DOG levels, edge threshold, etc) are also available in SiftGPU. SiftGPU uses CG shaders to program GPUs. The shader programs are dynamically generated according to the parameters user specified. A working GLSL version is also available in the package. A cg-based sift matcher, SiftMatchGPU, is included in this code package. It multiplies the descriptor matrix on GPU and find the closest feature matches. The guided matching using homoraphy/fundamental matrix is also supported.
| ||
| Requirements | ||
The entire functionality works fully only on hardware that supports cg profile fp40/vp40 or higher, for example, nvidia 7900, 8800. If your GPU does not support fp40/vp40, orientation computation of SIFT will be simplified, edge elimination will be ignored, and descriptor will be ignored.
Linux makefile is in folder Linux of the package and Xcode project is in folder Mac of the package NOTE: To update the depending libaries, you'll need to update the header files in SiftGPU\Include\, and the windows libraries in SiftGPU\SiftGPU\Lib and SiftGPU\TestWin\Lib.
| ||
| Download | ||
The whole package SiftGPU-V320.zip
(5.9MB; Including code, manual, windows binary
and some test images)
| ||
|
You might also be interest in SiftGPU in Matlab ported by Adam Chapman
| ||
| Evaluation | ||
Below is the comparision with Lowe's SIFT on box.pgm using the comparision code from Vedaldi's SIFT .
Below are some of our speed experiment results on V311. More complete experiment results can be found here. (The experiment images of different sizes are all resized from this image)
The experiment below is the comparision of the new version and the old version.
| ||
| References | ||
[1] D. G. Lowe. Distinctive image features from
scale-invariant keypoints . International Journal of Computer Vision, November 2004. |