Known implementations of SIFT

From LadypackWiki

Jump to: navigation, search

So the first implementation to mention is David Lowe's binary that he distributes off his website.

http://www.cs.ubc.ca/~lowe/keypoints/

This is fine, but not very flexible. David also confirmed that he is unable to share the source code for his implementation, although someone in RVSN seems to have gotten their hands on a copy and passed it on to me.

Andrea Vedaldi has a C (mex) matlab implemenation here:

http://vision.ucla.edu/~vedaldi/code/sift/sift.html

Next, are the shared libraries.

Rob Hess distributes a C implementation of SIFT that uses OpenCV.

http://web.engr.oregonstate.edu/~hess/work/index.html

I've taken a look at Rob Hess's code, and it allows for pretty detailed parameter tweaking (e.g. histogram size, DoG thresholds, etc.) If you need flexibility, this is pretty good.

Roman Stanchak distributes C++ wrappers around OpenCV, along with a SIFT implementation.

http://www.cs.wustl.edu/~rstancha/oss.php

There is also libsift, a C# implementation that's used in autopanosift for generating panoramas.

http://www.cs.tu-berlin.de/~nowozin/libsift/


David Moore and a few others are also working on a C shared library of SIFT that is optimized for recent processors. Ask him (dcm@mit.edu) for details.


Finally, if you're hard core and want super fast SIFT, Sudipta Sinha et al have implemented SIFT on a GPU. If you're not familiar with this, the idea is to offload computation onto your swank graphics card.

http://cs.unc.edu/~ssinha/pubs/SinhaEDGE06.pdf

source code available at http://cs.unc.edu/~ccwu/siftgpu/

"Sudipta N Sinha, Jan-Michael Frahm, Marc Pollefeys and Yakup Genc", GPU-Based Video Feature Tracking and Matching", EDGE 2006, workshop on Edge Computing Using New Commodity Architectures, Chapel Hill, May 2006.

Personal tools