# Speeded Up Robust Feature

In informatica un algoritmo Speeded Up Robust Feature o in sigla SURF è un rilevatore robusto di caratteristiche locali di una immagine presentato da Herbert Bay nel 2006 che può essere usato nell'ambito del riconoscimento di oggetti e ricostruzione 3D in Computer vision. È parzialmente ispirato al descrittore scale-invariant feature transform (SIFT). La versione standard di SURF è diverse volte più veloce di SIFT e come dichiarano i suoi autori più robusta tra diverse trasformazioni di immagini rispetto a SIFT. SURF si basa sulle risposte della wavelet di Haar 2D e fa un uso efficiente di immagini integrali. Per rilevare punti di interesse, SURF usa un'approssimazione intera del determinante del rilevatore blob di Hessian, che può essere calcolato con 3 operazioni intere usando un'immagine integrale precalcolata. Il suo descrittore di caratteristiche è basato sulla somma della risposta della wavelet Haar intorno al punto di interesse; il quale anch'esso può essere calcolato con l'aiuto di un'immagine integrale. I descrittori SURF possono essere usati per localizzare e riconoscere oggetti, persone o facce, per creare scene 3D, per tracciare oggetti e per estrarre punti di interesse. Un'applicazione dell'algoritmo è brevettata negli Stati Uniti d'America.

## Implementazioni

| Nome | Linguaggio | Open Source | Descrizione |
| Original | C++ | No | Implementazione originale |
| OpenSURF | C++, C# | Yes | Implementation with detailed documentation and reference paper. |
| OpenSurfCL | C++ | Yes | Implementazione libera di OpenSURF su OpenCL. Wrapper per C# e Java. |
| OpenCV SURF | C++ | Yes | Implementazione dell'estrazione di caratteristiche SURF (OpenCV 2.0) |
| SURFmex | MATLAB | | MATLAB Interface (MEX) per OpenCV's SURF code. |
| OpenSURF MATLAB | MATLAB | Yes | Interface to OpenSURF for MATLAB |
| libmv SURF | C++ | Yes | Implementazione di estrazione e confronto. |
| Python mahotas | Python | Yes | package computer vision che include una implementazione di SURF. |
| Dlib C++ Library | C++ | Yes | Implementazione dell'estrazione di caratteristiche SURF. |
| 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 | Implementazione Java di SURF |
| JOpenSURF | Java | Yes | Traduzione in Java di OpenSURF |
| ImageJ SURF | Java | Yes | Implementazione di SURF come plugin ImageJ con GUI e statistiche in uscita |
| BoofCV | Java | Yes | Libreria Java di omputer vision che include SURF. |
| Speeded Up SURF | | Yes | Implementazione GPU |
| CUDA SURF | C++ CUDA | Yes | GPU implementazione usando CUDA |
| Mathematica | Mathematica | No | Implementazione Mathematica |
| GPU SURF Archiviato il 25 febbraio 2011 in Internet Archive. | C++, Cg, CUDA | No | GPU Implementation |
| FPGA SURF Archiviato il 1º ottobre 2011 in Internet Archive. | | 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 |
| OpenSurf AS3 | AS3 | ? | AS3 implementation, sources on github |