Come scoprire WhitePixelValue quando la persona sorride?
-
29-10-2019 - |
Domanda
Usando CVRECT Sono in grado di rilevare la coordinata Faces
detectFace(IplImage * pImg, CvHaarClassifierCascade * pCascade, CvMemStorage * pStorage)
Ma il mio problema è come scoprire WhitePixelValue quando la persona sorride?
E quale sorriso è appropriato? 150 valore è accurato?
Sorridi Haarcascade non funzionerà affatto. Hai bisogno di fare qualcosa con la logica solo con pixel bianchi
Per favore aiuto!!!
AGGIORNAMENTO: Penso che la mia generosità sarà sprecata .. non ho avuto una risposta di esperti su questo thread. Stavo cercando l'algoritmo :(
Soluzione
Per quanto ho capito, vuoi rilevare il sorriso in base alla differenza di colore tra denti e pelle, giusto? Probabilmente questo ha senso poiché l'intensità dei pixel labbra differisce notevolmente dai pixel dei denti. Se è così, suggerirei due approcci.
Il primo è calcolare la trasformata laplaciana della regione del viso. Le coordinate con i valori massimi di Laplacian corrisponderanno alla maggiore differenza tra le intensità dei pixel vicini. Penso che Smile contenga i pixel più contrastanti. Dovresti scegliere nuovamente la soglia, tuttavia in questo caso è indipendente dalle condizioni di luce dell'immagine.
La seconda idea è simile alla prima con l'eccezione che è necessario confrontare i pixel con il valore medio di tutti i pixel facciali. Qui i pixel i cui valori sono relativamente troppo alti per quanto riguarda la media sono considerati pixel di denti. A proposito, qualcosa di simile cvAdaptiveThreshold
potrebbe aiutare.
Altri suggerimenti
Hey hai controllato questo progetto https://github.com/beetlebugorg/pictureme
Questo è davvero un grande progetto, dai un'occhiata. Penso che troverai ciò di cui hai bisogno.