SURF
Encyclopedia
SURF 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.
Computer vision
Computer vision is a field that includes methods for acquiring, processing, analysing, and understanding images and, in general, high-dimensional data from the real world in order to produce numerical or symbolic information, e.g., in the forms of decisions...
tasks like object recognition
Object recognition
Object recognition in computer vision is the task of finding a given object in an image or video sequence. Humans recognize a multitude of objects in images with little effort, despite the fact that the image of the objects may vary somewhat in different view points, in many different sizes / scale...
or 3D reconstruction
3D reconstruction
See Iterative reconstruction for 3D reconstruction in Medical imaging.In computer vision and computer graphics, 3D reconstruction is the process of capturing the shape and appearance of real objects....
. It is partly inspired by the SIFT
Scale-invariant feature transform
Scale-invariant feature transform is an algorithm in computer vision to detect and describe local features in images. The algorithm was published by David Lowe in 1999....
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
Haar-like features
Haar-like features are digital image features used in object recognition. They owe their name to their intuitive similarity with Haar wavelets and were used in the first real-time face detector....
responses and makes an efficient use of integral images.
It uses an integer approximation to the determinant of Hessian blob detector
Blob detection
In the area of computer vision, blob detection refers to visual modules that are aimed at detecting points and/or regions in the image that differ in properties like brightness or color compared to the surrounding...
, 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.
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 MATLAB MATLAB is a numerical computing environment and fourth-generation programming language. Developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages,... 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 | 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 Graphics processing unit A graphics processing unit or GPU is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display... Implementation |
|
CUDA SURF | C++ CUDA | Yes | GPU Graphics processing unit A graphics processing unit or GPU is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display... implementation using CUDA CUDA CUDA or Compute Unified Device Architecture is a parallel computing architecture developed by Nvidia. CUDA is the computing engine in Nvidia graphics processing units that is accessible to software developers through variants of industry standard programming languages... |
Mathematica | Mathematica | No | Mathematic implementation |
GPU SURF | No | GPU Graphics processing unit A graphics processing unit or GPU is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display... Implementation |
|
FPGA SURF | Yes | FPGA Implementation | |
clsurf | C++ | High performance cross platform OpenCL implementation of SURF with nearest neighbors matching |
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, 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.
See also
- Scale-invariant feature transformScale-invariant feature transformScale-invariant feature transform is an algorithm in computer vision to detect and describe local features in images. The algorithm was published by David Lowe in 1999....
(SIFT) - Gradient Location and Orientation HistogramGLOHGLOH is a robust image descriptor that can be used in computer vision tasks. It is a SIFT-like descriptor that considers more spatial regions for the histograms...
- LESH - Local Energy based Shape HistogramLESHLESH is a recently proposed image descriptor in computer vision. It can be used to get a description of the underlying shape. The LESH feature descriptor is built on local energy model of feature perception, see e.g. phase congruency for more details...
- Blob detectionBlob detectionIn the area of computer vision, blob detection refers to visual modules that are aimed at detecting points and/or regions in the image that differ in properties like brightness or color compared to the surrounding...
- Feature detection (computer vision)