My fork of zerofrog's fast SIFT C++ reimplementation of Bill Lowe's original smash-hit image-analysis algorithm.
C++ Python Objective-C Other
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
.gitignore
AUTHORS
CMakeLists.txt
FindBoost.cmake
FindOctave.cmake
INSTALL.md
LICENSE
README
cmake_uninstall.cmake.in
install_manifest.txt
libsiftfast.cpp
makerelease.sh
profiler.cpp
profiler.h
runcmake.bat
siftfast.cpp
siftfast.h
siftfast.m
siftfastpy.cpp
siftmex.cpp

README

libsiftfast: author zerofrog(@gmail.com)
----------------------------------------
Various utilities to compute the SIFT features of a greyscale image. Packages offered:

*libsiftfast.so - main library that contains the sift code

*siftfast - really fast SIFT implementation using SSE and OpenMP (also fixes some bugs from lowe's code, so outputs are similar, but not exact). The usage is very similar to David Lowe's sift program. To input a greyscale image test.pgm and get the SIFT keys test.key use

> siftfast < test.pgm > test.key

The format of test.key is pretty self explanatory:

#keys #key_dimension
(for #keys) [x y scale orientation (for #key_dimension)[value] ]


*siftfast.m - matlab/octave mex file that uses sift_fast, just do [frames,descr]=sift_mex(grayscale_image);
           frames is a 4xN matrix of [X,Y,scale,orientation],
           descr is a 128xN matrix of normalized descriptors
           To use the mex files, libsift_fast.so, Octave/Matlab need to be able to load it. A way to do it is to add its path to your LD_LIBRARY_PATH in your ~/.bashrc file, or in matlab with:
           setenv('LD_LIBRARY_PATH',[getenv('LD_LIBRARY_PATH') ':' libsift_directory]);
           

SIFT is based on
David G. Lowe, "Distinctive image features from scale-invariant keypoints,
"International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.

Using the Octave/Matlab mex files
---------------------------------

the octave and matlab mex files are installed in $prefix/share/siftfast/octave and $prefix/share/siftfast/matlab where $prefix is the installation directory you've provided (via CMAKE_INSTALL_PREFIX). The default value for $prefix is /usr/local

Add the path via addpath('$prefix/share/siftfast/matlab'), and then in octave/matlab type:

> help siftfast

this should give a help file on how to use it.

Comparisons with other SIFT Code
--------------------------------

The default setting of siftfast produce the same output as Lowe's free sift program. On a quad-core Core2Duo machine with OpenMP, siftfast goes about 6x faster than lowe's sift program for 640x480 images.