Remark. This implementation is considered legacy code and is superseded by VLFeat.
SIFT++ is a lightweight C++ implementation of SIFT detector and descriptor (it is derived directly from the MATLAB/C implementation).
The binary distribution contains a single executable
sift for each architecture (for instance,
glx/sift for GNU/Linux). Due to linkage issues with the
C++ ABI the provided binary could not work; in this case it is
recommended to compile your own version of the program.
This code does not provide any tool for visualizing or matching keypoint. For these, you can look here. See also the FAQ therein for useful informations and warnings.
data/ contains a PGM
img3.pgm that we use to test
sift executable. The command
> ./sift data/img3.pgm
produces an ASCII file
data/img3.key with a list of
keypoints and their descriptors. Each row has four floating point
numbers representing x and y coordinates of the keypoint, its
scale and its orientation (in radians) respectively. A list of 128
integers representing the SIFT descriptor follows.
The command line tool supports a few options. For example
> ./sift --levels 4 --octaves 3 --first-octave 1 data/img3.pgm
uses a Gaussian scale space of 3 octaves, 4 levels per octave and starting with octave 1 (that is, the image is downsampled by one before applying the algorithm). The command
> ./sift --save-gss data/img3.pgm
saves the Gaussian scale space as a sequence of PGM images. Use
--verbose to see the progress of the
--help for a list of all options.
This software program is Copyright © 2006 The Regents of the University of California and can be freely used for research purposes (see the included license file for details). Although this implementation is original (in particular, it is not derived from Lowe's implementation), the SIFT algorithm has been issued a patent. Thus you should note that:
This software embodies a method for which the following patent has been issued: "Method and apparatus for identifying scale invariant features in an image and use of same for locating an object in an image," David G. Lowe, US Patent 6,711,293 (March 23, 2004). Provisional application filed March 8, 1999. Asignee: The University of British Columbia.