2012-07-06 12 views
10

Ho provato il riconoscimento del volto utilizzando OpenCV utilizzando la documentazione fornita sul proprio wiki. Funziona bene e può rilevare più facce. Tuttavia non ci sono dati forniti sul sito per quanto riguarda il rilevamento di oggetti 3D o il tracciamento della testa. I collegamenti al codice e il wiki sono forniti di seguito:Rilevazione oggetti 3D-Opencv

Face recognition

Cascade Classifier

Mentre il wiki non fornire informazioni sufficienti su rilevamento di volti, come si potrebbe aver trovato, i metodi di riconoscimento dei volti in 3D non sono forniti .

Volevo conoscere i progetti relativi al riconoscimento e al tracciamento dei volti 3D in modo da poter vedere il codice sorgente e provare a fare un progetto facendo lo stesso.

+0

io sono in una posizione simile a te, io sono attualmente alla ricerca di un modo per riconoscere e tracciare oggetti 3D. Se mi imbatto in qualcosa che potrebbe aiutarti, lo posterò qui. – casper

+0

Grazie mille. :) Hai qualche idea su eventuali algoritmi che possono essere utilizzati? –

+1

Temo di essere ancora un principiante in questo campo, ma posso consigliare di consultare l'algoritmo [SURF] (http://opencv.willowgarage.com/documentation/c/feature_detection.html), oppure a [questa clip] (http://www.youtube.com/watch?feature=endscreen&NR=1&v=G5GLIKIkd6E). Forse puoi usare una forma di aggiornamento continuo dei modelli come ha fatto lui. [Un altro tutorial] (http://www.morethantechnical.com/2010/03/19/quick-and-easy-head-pose-estimation-with-opencv-w-code/) che ho trovato interessante. In bocca al lupo! – casper

risposta

6

Questo potrebbe arrivare tardi, ma il garage di salice ha un altro progetto in esecuzione chiamato Point Cloud Library (PCL) interamente incentrato su attività di elaborazione dati 3D. Il riconoscimento facciale è uno dei casi d'uso che usano per pubblicizzare il progetto. Naturalmente tutto questo è gratuito ...

http://pointclouds.org

1

Ci sono molti metodi. Posso solo indicarti la giusta direzione. Gli esempi di riconoscimento facciale di solito forniscono il sotto-rilevamento degli occhi. Quindi in realtà conosci la posizione del viso e degli occhi. In simili o in altri modi puoi anche rilevare le labbra. Ora quando si hanno almeno tre punti di oggetto (faccia questa volta), è possibile calcolare la sua posizione 3D nella stanza usando la triangolazione. Questa parte dell'esempio esiste in find_obj.cpp che viene fornito come esempio con OpenCV. Proprio questo esempio utilizza i punti x da SURF e disegna il rettangolo in base a queste informazioni. Scopri anche qualcos'altro con CvFindHomography.

1

Dal OpenCV 2.4.2, c'è stato un file di intestazione per il rilevamento dei volti e monitoraggio: opencv2/contrib/detection_based_tracker.hpp

Il file di intestazione definisce una classe chiamata DetectionBasedTracker. Il meccanismo di tracciamento che definisce utilizza haar cascate in background per rilevare oggetti. Il tracciamento è molto più veloce rispetto all'implementazione di OpenCV Haar (tuttavia, alcuni lo hanno trovato meno preciso). Personalmente ho trovato che funziona molto bene su un dispositivo Android. Alcuni esempi di codice che attua il rilevamento dei volti e l'inseguitore si trova qui: http://bytesandlogics.wordpress.com/2012/08/23/detectionbasedtracker-opencv-implementation/

1

si dovrebbe avere uno sguardo a Active shapes models e Active Appearance Models che sono per l'attività che si sta descrivendo. OpenCV fornisce solo metodi di rilevamento 2D, mentre i metodi di riferimento (ora molto popolari nel campo) tracciano una serie di punti 3D distribuiti su una faccia più una trama per descriverne l'aspetto.

Le pagine di Wikipedia forniscono alcuni collegamenti alle implementazioni dei metodi descritti.

Se si desidera conoscere i parametri 3D della testa nelle coordinate del mondo (ad esempio per il rilevamento dello sguardo), è necessario utilizzare Google per le parole chiave "Tracciamento testa 3D" e "stima posa testa".