ResearchBlog‎ > ‎

[Tool] SiftGPU: A GPU Implementation of Scale Invariant Feature Transform (SIFT)

posted Oct 19, 2012, 9:33 AM by Teng-Yok Lee
Author: Changchang Wu @ UNC

From the official site:

SiftGPU: A GPU Implementation of Scale Invariant Feature Transform (SIFT)

Changchang Wu

University of North Carolina at Chapel Hill

* VisualSFM with integration of SiftGPU and Multicore Bundle Adjustment
* Multicore Bundle Adjustment for GPU and CPU is now available
* SiftGPU-V400 now works on Intel GPU (requires Mesa9 for Intel GPU on Linux) (10/04/2012)

SIFT Implementation

SiftGPU is an implementation of SIFT [1] for GPU. SiftGPU processes pixels parallely to build Gaussian pyramids and detect DoG Keypoints. Based on GPU list generation[3], SiftGPU then uses a GPU/CPU mixed method to efficiently build compact keypoint lists. Finally keypoints are processed parallely to get their orientations and descriptors.

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. The shader programs are dynamically generated according to the parameters that user specified. SiftGPU also includes a GPU exhaustive/guided sift matcher SiftMatchGPU. It basically multiplies the descriptor matrix on GPU and finds the closest feature matches on GPU. Both GLSL and CUDA implementations are provided.