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
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 transform
    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....

     (SIFT)
  • Gradient Location and Orientation Histogram
    GLOH
    GLOH 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 Histogram
    LESH
    LESH 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 detection
    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...

  • Feature detection (computer vision)

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK