SURF
|
|
This article's use of external links may not follow Wikipedia's policies or guidelines. Please improve this article by removing excessive or inappropriate external links, and converting useful links where appropriate into footnote references. (November 2011) |
| Feature detection |
|---|
Output of a typical corner detection algorithm
|
| Edge detection |
| Interest point detection |
| Corner detection |
| Blob detection |
| Ridge detection |
| Hough transform |
| Structure tensor |
| Affine invariant feature detection |
| Feature description |
| Scale-space |
SURF (Speeded Up Robust Feature) is a robust image detector & descriptor, first presented by Herbert Bay et al. in 2006, that can be used in computer vision tasks like object recognition or 3D reconstruction. It is partly inspired by the SIFT descriptor. The standard version of SURF is several times faster than SIFT and claimed by its authors to be more robust against different image transformations than SIFT. SURF is based on sums of 2D Haar wavelet responses and makes an efficient use of integral images.
It uses an integer approximation to the determinant of Hessian blob detector, which can be computed extremely quickly with an integral image (3 integer operations). For features, it uses the sum of the Haar wavelet response around the point of interest. Again, these can be computed with the aid of the integral image.
An application of the algorithm is patented in the US.[1]
Contents |
[edit] Implementations
| Name | Language | Open Source |
Description |
|---|---|---|---|
| Original | C++ | No | Original implementation |
| OpenSURF | C++, C# | Yes | Implementation with detailed documentation and reference paper. |
| OpenSurfCL | C++ | Yes | Free implementation of OpenSURF on OpenCL. Wrappers for C# and Java. |
| OpenCV SURF | C++ | Yes | Implementation of SURF feature extraction (OpenCV 2.0) |
| SURFmex | Matlab | Matlab Interface (MEX) to OpenCV's SURF code. | |
| OpenSURF Matlab | Matlab | Yes | Interface to OpenSURF for Matlab |
| libmv SURF | C++ | Yes | Implementation of extraction and matching. |
| Python mahotas | Python | Yes | computer vision package which includes an implementation of SURF. |
| Dlib C++ Library | C++ | Yes | Implementation of SURF feature extraction. |
| Pan-o-matic | C++ | Yes | Software which includes an implementation of the SURF algorithm. |
| Parallel SURF | C++ | Yes | Multi-threaded implementation based on Pan-o-matic. |
| ProcessorSURF | C# | Yes | C# SURF plugin for Multi-Agent Serving System |
| JavaSurf | Java | Yes | Java implementation of SURF |
| JOpenSURF | Java | Yes | Java translation of OpenSURF |
| ImageJ SURF | Java | Yes | SURF implementation as ImageJ plugin with a convenient GUI and output of statistics |
| BoofCV | Java | Yes | Java computer vision library which includes SURF. |
| Speeded Up SURF | Yes | GPU Implementation | |
| CUDA SURF | C++ CUDA | Yes | GPU implementation using CUDA |
| Mathematica | Mathematica | No | Mathematic implementation |
| GPU SURF | No | GPU Implementation | |
| FPGA SURF | Yes | FPGA Implementation | |
| clsurf | C++ | High performance cross platform OpenCL implementation of SURF with nearest neighbors matching | |
| IPOL | C++ | Yes | An implementation of SURF based on the original article with detailed explanations |
[edit] Comparative Studies of Implementations
- David Gossow, Peter Decker and Dietrich Paulus, "An Evaluation of Open Source SURF Implementations", Lecture Notes in Computer Science, 2011, Volume 6556/2011, 169-179
- Libraries: dlib, OpenCV, OpenSURF (two versions), and Pan-o-Matic
- Peter Abeles, A comparison of several C/C++ and Java implementations for speed and stability. Nov. 2011
- Libraries: OpenSURF, OpenCV, Pan-o-Matic, Original, BoofCV, JavaSURF, and JOpenSURF.
[edit] See also
- Scale-invariant feature transform (SIFT)
- Gradient Location and Orientation Histogram
- LESH - Local Energy based Shape Histogram
- Blob detection
- Feature detection (computer vision)
[edit] References
- ^ US 2009238460, Ryuji Funayama, Hiromichi Yanagihara, Luc Van Gool, Tinne Tuytelaars, Herbert Bay, "ROBUST INTEREST POINT DETECTOR AND DESCRIPTOR", published 2009-09-24
- Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool "SURF: Speeded Up Robust Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346--359, 2008
- Christopher Evans "Notes on the OpenSURF Library", MSc Computer Science, University of Bristol
[edit] External links
- Website of SURF: Speeded Up Robust Features
- First publication of Speeded Up Robust Features (2006)
- Revised publication of SURF (2008)
| This computing article is a stub. You can help Wikipedia by expanding it. |