Come allineare le immagini del volto di c++ matlab

Sto sviluppando un’applicazione C++ per il viso che per l’autenticazione. In primo luogo, devo rilevare la faccia e la pre-elaborazione dell’immagine.

  1. Per il rilevamento del viso ho usato il HaarCascadeClassifier. Il problema è che questo strumento o questo algoritmo dà una regione facciale rilevato da un po ‘ grande rettangolo che ingloba i capelli e alcuni di sfondo. C’è una soluzione per cambiare la dimensione del rettangolo? Ho usato “frontalfacecascaadclassifier.xml”.
  2. Per il viso pre-elaborazione voglio fare l’allineamento di faccia esattamente come questa tecnica. Come posso fare per realizzare questo?
  • Perché non è possibile orientamento di rilevamento mediante PCA, come mostrato qui essere applicato per le facce?
  • Ho trovato dlib sembra molto potente libreria, è veloce, gratuito e open source.
InformationsquelleAutor OntoBLW | 2012-04-13

 

9 Replies
  1. 8

    Non si può quindi utilizzare un altro Haar di classificazione per trovare ogni occhio (gli occhi sono molto facili da trovare) quindi supporre che la persona abbia due occhi e si definisce un “livello” faccia a dire che gli occhi sono orizzontali.

    Misura semplicemente la anlge tra i due occhi e ruotare l’immagine di quell’angolo.

    angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )
    • grazie per la tua risposta, soprattutto la vostra risposta rapida.sì,sono d’accordo con te sul rilevamento di prima con gli occhi.ma non ho capito come “definire un” livello “faccia a dire che gli occhi sono orizzontali”.È che grazie ti angolo è definito.Come posso avere un viso in base alla posizione degli occhi
    • hai detto che hai già trovato il volto da un Haar, è solo bisogno di ruotare?
    • voglio avere una immagine come questa bytefish.de/_media/blog/… ma ho trovato un’immagine come questa bytefish.de/_media/blog/arnie_30_30_200_200.jpg e il rettangolo di haar rilevamento del volto è di grandi dimensioni.e dopo io ruotarlo per allinearlo.please help me e grazie in anticipo per le vostre risposte.
    • Sì, è quello che lo script Python bytefish.de/blog/aligning_face_images fa. Penso che la questione è trovare la posizione degli occhi, il che non è banale risposta.
    • per Python, bisaccia,mentre sto sviluppando un’applicazione c++, è possibile rilevare la posizione degli occhi quindi a calcolare l’angolo=ang= atan ( eye1.Y – eye2.Y ) / (eye1.X – eye2.X ) e poi fare un affin di trasformazione con questa angolazione per avere risultati come quello che si è ottenuto in python script e esattamente per avere un’immagine come questa bytefish.de/_media/blog/arnie_20_20_200_200.jpg ? grazie per l’aiuto
    • per angoli estremi, si potrebbe voler considerare l’utilizzo di atan2 invece di atan..

  2. 18

    Trovare la posizione esatta degli occhi in una data immagine è tutt’altro che banale. Il Haar-cascate di occhi in OpenCV produrre troppi falsi positivi, per essere utile, inoltre, questo approccio non essere robusto per la rotazione dell’immagine (si può compensare la leggera rotazione, però, non so la formazione di immagini). Se fossi in te, mi piacerebbe iniziare una ricerca breadth-first on http://scholar.google.com per le carte di questa area di ricerca.

    Avrete bisogno di una robusta testa di posa stima per l’allineamento di immagini del volto. Ho fatto qualche ricerca di me stesso e penso che la condivisione di algoritmi e il codice è utile qui. Più interessanti approcci che ho visto sono:

  3. 6

    Ho provato le seguenti faccia allineamento codice Etichettato Faces in the Wild pagina del progetto. Funziona molto bene e non necessita di rilevamento del viso funzione di punti. Il codice C++ può essere scaricato da: http://vis-www.cs.umass.edu/faceAlignment/

    Se si vuole ancora di trovare volto punti chiave, trovo che il Viola-Jones rivelatore non è molto robusto e preciso. Io personalmente raccomando di usare la Flandmark faccia keypoint rivelatore: http://cmp.felk.cvut.cz/~uricamic/flandmark/ che è molto, molto più robusto e preciso. C codice può essere scaricato dal sito web sopra riportato.

    • Usando il loro people.train dati di alcune immagini di esempio, non ha funzionato come speravo. È ruotato di alcuni dei miei le immagini di controllo e non ruotare il mio test di immagini di quanto avrei voluto. Ti dispiacerebbe condividere un campione del set di test e il risultato che ha dato, che ha dato la fiducia necessaria per fare questa raccomandazione?
    • Non ho familiarità con le persone.modello del treno che si citano. Ho usato il congelando codice per addestrare il mio modello, che io chiamo facce.il treno per le facce, con circa 1000 volti. Quindi è stato utilizzato il incanalando il codice da utilizzare per allineare le facce. In primo luogo, l’originale disallineamento nella tua formazione e le immagini di prova non può essere troppo “lontano” off. Se non sono allineati, per > 40 gradi o se la scala è troppo diverso, non funziona. Leggere la carta. Non basta trattarlo come una scatola nera.
    • Uno dei set di test ho provato con questo. Nota che come si ritaglia i volti e i parametri, in particolare l’interno e l’esterno dimensione della finestra è molto importante. Volete una finestra interna che coglie solo dal sopracciglia giù per le labbra o mento.
    • Inoltre, non aspettatevi di fare miracoli sui volti che troviamo di fronte lateralmente. Si può provare a eseguire l’auto dataset hanno dato insieme con quel codice. Che darà un senso alla dimensione di “windows” è necessario impostare.
    • Oh btw controllare il popolo.modello del treno/file è addestrato per allineare il tipo di oggetti che si stanno allineando e vedere le loro immagini di prova per il “campo di applicazione” della coltura, cioè, ciò che deve essere l’immagine. E. g., se un file di modello in questo caso è addestrato sui volti che include il sopracciglio e un po ‘ di fronte, si dovrebbero gettare le facce con le sopracciglia e circa la stessa quantità di spazio sopra di esso per il fronte. Il motivo è a causa di come funziona l’algoritmo.
    • (cont) È, fondamentalmente, cerca di allineare gli oggetti (in generale, non solo le facce) mediante impilamento loro immagini e la ricerca (attraverso una non ottimale avidi metodo) la trasformazione (scala, traslazione e planare rotazione) dell’oggetto in modo che le parti comuni sono nella stessa posizione, cioè, se il filo attraverso la pila di immagini nello stesso luogo, la stessa parte del viso. Quindi, se è stato addestrato con il volto con le sopracciglia, si avrebbe bisogno di volti che per aiutare ad allineare la faccia. Inoltre, è necessario ard 500 di formazione decente immagini per allenarsi bene. Ricordate, garbage in garbage out.
    • Grazie per l’elaborazione. I velocità di lettura della carta, portando molta vergogna per la mia famiglia.
    • Lol. Il tuo commento ha reso il mio giorno. Sentitevi liberi di usare la chat se hai bisogno di ulteriori chiarimenti. L’ho fatto circa un anno fa in modo che il codice e la roba non è facilmente recuperabile. Inoltre, come è stato per lavoro, non è conveniente per me per rilasciare i dati e codice, ma sarò felice di fornire i puntatori se avete bisogno di loro.

  4. 4

    Il state-of-the-art approccio per affrontare l’allineamento deve essere questo:

    Supervisione tecnica di Discesa e la sua Applicazione alla Faccia di Allineamento
    X. Xiong e F. De la Torre
    in CVPR 2013

    È estremamente veloce ed efficace. È possibile controllare il loro sito web del progetto Intrafaccia.

    Forniscono un facile da usare il software. Tuttavia, la parte principale codice.e supervisione tecnica di discesa (SDM) è non rilasciato, esso è solo la regressione lineare semplice che può essere facilmente implementato.

    Una demo per dimostrare che è in grado di gestire inclinato viso è qui (per un problema di privacy, aggiungere la sfocatura e prestare attenzione all’asse nell’angolo in alto a sinistra):
    https://drive.google.com/file/d/0BztytuqPViMoTG9QaEpZWi1NMGc/edit?usp=sharing

    • Anche se questo è un link utile, vorrei più in dettaglio, per esempio, la prova che rileva inclinato facce e/o il grado di inclinazione, prima di dare la grazia.
    • Un frammento di codice in particolare, sarebbe bello.
    • Una demo è mostrato nell’immagine sopra. Per il codice, ciò che l’autore ha fornito una matlab .p file, che possono essere utilizzati nella vostra applicazione, ma l’origine è sconosciuta. Tuttavia, vi consigliamo caldamente di controllare la carta, l’algoritmo base è molto semplice.
    • Si noti che il programma è in realtà super-facile da compilare ed eseguire. Tuttavia, il programma demo solo i brani caratteristiche per una singola faccia.
    • il link per la demo è solo un’immagine…È apposta o c’è un link demo posso checkout?
    • È possibile controllare la carta pagina del progetto. Intrafaccia
    • il link di download per il progetto sembra essere mancante (o forse è la parte che si dice non è uscito?)
    • Ho trovato un vero stato-of-the-art di metodo che è anche FOSS e libero da brevetti dlib.

  5. 1

    Rilevare disallineati volti a rendere il riconoscimento del volto difficile. A volte si desidera correggere l’allineamento, a volte è sufficiente per escludere quelli che non sono allineati correttamente (per esempio, se siete rilevamento di volti in un flusso video). Ho preso l’approccio di quest’ultimo e formati speciali Haar Cascata di rilevare correttamente allineato e ben illuminate i volti. Dettagli qui: http://rwoodley.org/?p=417.

    Se si utilizza il mio cascade fammi sapere come funziona per voi. Sono curioso di sapere quali sono i risultati che gli altri vorresti ottenere. Non ha soddisfatto le mie esigenze.

  6. 0

    Guardare CSIRO analisi SDK (sito web e demo, il codice sorgente) software, non faccia l’allineamento, l’inseguimento con 66 punti fiduciali. È veloce e molto preciso.

    • Io la sto usando per la mia tesi. Posso dire che è uno dei migliori volto di allineamento software che ho visto. Le tracce 66 punti di riferimento in tempo reale. Date un’occhiata a questa carta per maggiori dettagli “Deformabile montaggio del modello da regolarizzata media – turni”.
    • Questo programma non lavorare sulle immagini con un viso inclinato.
    • Utilizza la libreria OpenCV face detector per rilevare i volti. Puoi provare a inizializzare CSIRO tracker con qualche altro volto del rivelatore che funziona con facce inclinate. Tuttavia, di solito per i problemi di autenticazione, sarà necessario restringere il set di variabili al minimo, rendendo tutti i formati di immagini per essere più simile al test di quelli possibili.
  7. 0

    Per affrontare l’autenticazione, è possibile utilizzare dlib o face_recognition per fare questo, che è molto conveniente e più preciso di opencv ora.

    Per dlib, faccia di allineamento può essere trovato qui (codice C++) http://dlib.net/face_alignment.py.html

    o qui(codice python)https://www.pyimagesearch.com/2017/05/22/face-alignment-with-opencv-and-python/.

    L’algoritmo di carta di nome L’Allineamento di faccia a 3000 FPS via Regredendo Binario Locale Dispone di è realizzato da dlib.

Lascia un commento