A GPU implementation of David Lowe's Scale Invariant Feature Transform

Changchang wu

http://cs.unc.edu/~ccwu

University of North Carolina at Chapel Hill




1. SIFT 

	SIFTGPU is an implementation of SIFT for GPU. SiftGPU uses GPU to process pixels and features 
	parallely in Gaussian pyramid construction, DoG keypoint detection and descriptor generation 
	for SIFT. Compact feature list is efficiently build through a GPU/CPU mixed reduction.  

	SIFTGPU is inspired by Andrea Vedaldi's sift++ and Sudipta N Sinha et al's GPU-SIFT. Many 
	parameters of sift++ ( for example, number of octaves,number of DOG levels, edge threshold,
	etc) are available in SiftGPU. 
	

	SIFTGPU also includes a GPU exhaustive/guided sift matcher SiftMatchGPU. It basically multiplies 
	the descriptor matrix on GPU and find closest feature matches on GPU.  GLSL/CUDA/CG implementations
	are all provided. 
    
    NEW: The latest SIFTGPU also enables you to use Multi-GPUs and GPUS on different computers.
	Check doc/manual.pdf for more information. You can modify some marcros definition in 
	SimpleSIFT.cpp and speed.cpp to enable the testing of the new functions. 
    

2. Requirements

	The default implemntation uses GLSL, and it requires a GPU that has large memory and supports
	dynamic branching. For nVidia graphic cards, you can optionally use CG(require fp40) or 
	CUDA implementation. You can try different implementations and to find out the fastest one 
        for different image sizes and parameters. 

        The GLSL version may not work on ATI now. They did compile sucessfully with ATI Catalyst 8.9, 
        but not any more with 9.x versions. 
	
        SiftGPU uses DevIl Image library, GLEW and GLUT. You'll need to make sure your system has
	all the dependening libraries. SiftGPU should be able to run on any operation system that supports 
	the above libraries

	For windows system visual studio solution are provided as msvc/SiftGPU.dsw, msvc/SiftGPU.sln and
        msvc/SiftGPU_CUDA_Enabled.sln. Linux/Mac makefile is in folder Linux of the package. 


3. Helps 

	Use -help to get parameter information. Check /doc/manual.pdf for samples and explanations. 
	In the vc workspace, there is a project called SimpleSIF that gives an example of simple 
	SiftGPU usage. There are more examples of different ways of using SiftGPU in manual.pdf 


	Check /doc/manual.pdf for help on the viewer. 

