31

SURF è brevettato, così come SIFT. ORB e BRIEF non sono brevettati, ma le loro caratteristiche non sono invarianti in scala, limitando seriamente la loro utilità in scenari complessi.Esistono alternative veloci a SURF e SIFT per l'estrazione di feature invarianti di scala?

Esistono estrattori di funzionalità in grado di estrarre funzionalità di invarianti di scala veloci come SURF e non sono così strettamente brevettati come SURF e SIFT?

+0

Chiesto su [dsp] (http://dsp.stackexchange.com/questions/1288/what-are-some-free-alternatives-to-sift-surf-that-can-be-used-in-commercial -app) pure. – Maurits

risposta

29

Sebbene tu abbia già scelto BRISK, potresti trovare interessante FREAK. L'autore afferma di avere risultati migliori di BRISK e ORB. Devo anche aggiungere che l'ORB è invariato dalla scala ma presenta alcuni problemi in quell'area. Quindi lo consiglierei ancora a qualcuno per provarlo.

Il FREAK source code è compatibile con OpenCV (quanto è facile unirli non lo so) e l'autore sta lavorando per inviarlo al progetto OpenCV.

EDIT:

FREAK is now part of opencv feature detectors/descriptors.

È can read here more sulle differenze tra diverse funzionalità rivelatori/estrattori, and also a series of benchmarks che comprende freak e altri quelli popolari.

+0

+1 Il rilevatore di impulsi combinato con il descrittore Freak è ciò che dà i migliori risultati per me. –

+1

https://github.com/kikohs/freak/blob/master/demo/freak_demo.cpp link non funzionante al campione anomalo –

6

Si potrebbe provare multi-scale histogram of oriented gradients. Non sarà completamente invariante, ma se i tuoi dati sono vincolati da un ragionevole insieme di limiti di scala (spesso nella pratica), allora questo probabilmente può funzionare per te.

Un altro approccio, che dipende totalmente dall'applicazione desiderata, consiste nel fare leva su poselets, anche se sono costruiti sopra un descrittore non scalare-invariante come un semplice istogramma di gradiente orientato o modelli di aspetto. Se le annotazioni nei dati di addestramento includono esempi di elementi diversi per il rilevamento tutti su scale diverse, la distanza in stile Procrustes utilizzata in Poselet per l'allenamento dovrebbe occuparsi di molta invarianza di scala. Questo potrebbe non essere soddisfacente anche se la tua applicazione principale non è il rilevamento localizzato di parti.

Per inciso, penso che sia piuttosto spiacevole che SIFT e SURF fossero in grado di essere brevettati in questo modo, dato che erano (almeno in parte) finanziati con i dollari dei contribuenti attraverso sovvenzioni.

+0

Hai un link non privato per informazioni su HoG multi-scala, per quelli di noi senza abbonamenti IEEE? – fish2000

8

Ho finito per utilizzare Brisk, che è un rilevatore di funzionalità con prestazioni paragonabili a SURF ma con la licenza BSD. Inoltre, ha un'implementazione C++ open source molto bella che si collega facilmente al framework FeatureDetector di OpenCV, quindi è come se 2 linee scegliessero di utilizzare Brisk su SURF nel codice.

+0

Perfetto. Ho visto il documento, ma non ho trovato l'implementazione. Grazie per la risposta. – KobeJohn

3

FREAK è ora incluso in OpenCV 2.4.2, è possibile utilizzarlo facilmente :-)

11

FREAK si suppone essere il più veloce scala e la rotazione descrittore invariante estrattore, è open source e si può usarlo facilmente come è implementato in OpenCV. Hai bisogno di un matcher binario che usi la distanza di Hamming, come il BruteForceMatcher.

Qui avete un example su come usarlo, facilmente sostituibile dal descrittore SIFT.

+1

Sembra che il collegamento all'esempio sia interrotto :( –

3

Puoi provare KAZE, dovrebbe essere più veloce e più preciso (i video sembrano fantasiosi, ma non ho ancora potuto provarlo da solo).È disponibile anche una versione accelerata.

Pablo F. Alcantarilla, Adrien Bartoli e Andrew J. Davison, "KAZE Features", nella Conferenza europea sulla visione artificiale (ECCV). Fiorenze *, Italia. Ottobre 2012.

Pablo F. Alcantarilla, Jesús Nuevo e Adrien Bartoli, "Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces", nella British Machine Vision Conference (BMVC). Bristol, Regno Unito. Settembre 2013

I codici sorgente, i video e altro sono disponibili allo author's website.

* Firenze

+0

Ho confrontato AKAZE, SURF e SIFT in una domanda e posso confermare che nei miei test, è almeno altrettanto buono e che i descrittori sono molto più veloci da confrontare rispetto a entrambi (anche se sono binari e tutti). Inoltre non sono soggetti a brevetti quindi consiglio AKAZE come prima scelta: – oarfish

0

rilevamento dei punti di riferimento e trovare le caratteristiche del maiale (non è brevettata) per la formazione di macchie intorno punti di riferimento.

+1

Ciao, benvenuto in SO, e grazie per aver cercato di contribuire, ma non ha molto senso aggiungere un oneliner senza dettagli come risposta, se la domanda ha già un upvoted, dettagliato e risposta accettata come fa qui. –

Problemi correlati