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
* Last update on 2/7/2012 (Bugfix: update maximum texture dimension for CUDA-based SiftMatchGPU).
* 4/30/2012, Mac OSX patch to ProgramGLSL.cpp provided by Roy Shilkrot: ProgramGLSL.cpp.patch
| 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. |
||
| Requirements | ||
|
SiftGPU requires a decent GPU that has a large graphic memory and supports dynamic branching. GLSL is used by default, and CUDA is provided as an alternative for nVidia graphic cards. SiftGPU uses GLEW 1.51, DevIL1.77 (can be disabled), GLUT(only by the viewer), and CUDA(optional). You'll need to make sure that your system has all the depending libraries of corresponding versions. To update the libraries, you'll need to replace the header files in SiftGPU\Include\, and the corresponding binaries. NOTE FOR
CUDA
: 1. The thread block setting is currently tuned
on nVidia GTX 8800. It may not be optimized for
other GPUs. 2. The CUDA version is not compiled
by default. You need to define CUDA_SIFTGPU_ENABLED
to the compiler and recompile the package. For VS2010
users, you can just use SiftGPU_CUDA_Enabled solution.
|
||
| Download | ||
|
SiftGPU-V382
(5.0MB; Including code, manual
, windows binary and some test images)
Want to cite SiftGPU?
|
||
|
|
||
| Evaluation | ||
|
Below is the
evaluation of the speed of
V340 on different image sizes. "-fo -1" means
using upsampled image. "-glsl" uses GLSL and "-cuda"
uses CUDA (The experiment images are all resized
from this image) .
Below is the comparision with Lowe's SIFT on box.pgm using the comparison code from Vedaldi's SIFT .
|
||
| References | ||
|
[1]
D. G. Lowe.
Distinctive image features from scale-invariant
keypoints . International Journal of Computer
Vision, November 2004. |