SURF

From Wikipedia, the free encyclopedia
Jump to: navigation, search

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

[edit] References

  1. ^ US 2009238460, Ryuji Funayama, Hiromichi Yanagihara, Luc Van Gool, Tinne Tuytelaars, Herbert Bay, "ROBUST INTEREST POINT DETECTOR AND DESCRIPTOR", published 2009-09-24 

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages