2012-06-10 16 views
10

Estoy desarrollando una aplicación para iOS que necesita detectar cuando el usuario bosteza?¿Cómo puedo detectar bostezar usando Abrir CV

Lo que hice fue incluir Abrir CV y ​​encontrar caras usando una cascada de haar, y luego encontrar la boca dentro de las caras (también usando una cámara de haras).

El problema que tengo es que creí que sería tan fácil detectar un bostezo como hacer algo como (boca.y - boca.y) < algo = bostezar.

Pero el problema que tengo es que las rectas para la cara y la boca son "inestables", quiero decir cada vez que el lazo ejecuta los valores X e Y para las rectas de cara y boca (obviamente) no son lo mismo.

¿Hay alguna cascada de "abrir la boca" que pueda usar, o cómo puedo saber cuándo el usuario abre la boca?

+0

Se puede notar como un ejemplo de reconocimiento de expresiones faciales, que en su mayoría se realiza mediante SVM. Por lo tanto, buscar en Google en esa ruta puede proporcionarle algunos buenos resultados. –

+1

¿Qué pasa si el usuario se tapa la boca mientras bostezan? – Hassan

+2

@Hassan envíales un electroshock para eso también! :) – kenny

Respuesta

11

Como general, máquinas de vectores soporte (SVM) se utiliza para el reconocimiento de expresiones faciales como la ira, la sonrisa, sorpresa, etc., donde sigue activa el desarrollo se lleva a cabo. Google le da muchos artículos sobre este tema (incluso uno de mis compañeros de clase hizo esto como su proyecto de último año). Para eso, al principio necesitas entrenar el SVM y para hacerlo, necesitas imágenes de muestra de rostros normales y bostezos.

Bostezar es casi similar a la sorpresa, cuando la boca se abre en ambos casos. Te recomiendo que echa un vistazo a la página 3 del documento a continuación: Real Time Facial Expression Recognition in Video using Support Vector Machines (Si no puede acceder al enlace, Google por el nombre de papel)

El papel (incluso mi compañero de clase) utiliza vector de desplazamiento de los rasgos faciales. Para esto, encontrará algunos puntos de función en la cara. Por ejemplo, en el documento, han usado ojo pupila, puntos extremos de las tapas, punta de la nariz, puntos extremos de la región de la boca (labios) etc. Luego siguen continuamente la ubicación de las características y encuentran distancia euclidiana entre ellas. Se usan para entrenar el SVM.

Feature Points Extraction from Faces

Fully Automatic Facial Feature Point Detection Using Gabor Feature Based Boosted Classifiers

imagen Mire por debajo de lo que quiero decir con puntos de función en la cara::

comprobar a continuación dos documentos

enter image description here

En su caso , creo que eres impl ementándolo en iPhone en tiempo real. Por lo tanto, puede evitar puntos característicos en los ojos (aunque no es una buena idea, ya que cuando bosteza, los ojos se vuelven pequeños). Pero comparado con esto, los puntos característicos en los labios muestran más variaciones y son predominantes. Por lo tanto, implementar solo en labios puede ahorrar tiempo. (Bueno, todo depende de ti).

Lip Segmentación: Ya se discute en el SOF y echa un vistazo a esta pregunta: OpenCV Lip Segmentation

Y, por último, estoy seguro de que puedes encontrar un montón de detalles en google, ya que es un área de desarrollo activo, y muchos papeles están por ahí.

Otra opción:

Otra opción en esta región, la cual he oído varias veces, es Active Appearance Model. Pero no sé nada al respecto. Google usted mismo.

+0

Esos conceptos están muy lejos de mí :) Pero lo he resuelto de esta manera con las cascadas de haar: primero busco caras, dentro de las caras busco en la boca. La boca se encuentra cuando los labios no están abiertos. Entonces, si he encontrado una boca y luego ya no puedo encontrar la boca, supongo que el usuario ha bostezado. NO es perfecto, ni siquiera es agradable, pero resolvió lo que necesitaba para desarrollar mi aplicación. – FreelanceAr

+0

El método que dije no está tan lejos. Esto fue hecho por mi amigo en Matlab cuando somos estudiantes. Y también todas las funciones se implementan en OpenCV. No hay problema, la tuya es elección. Solo señalé este método. buena suerte –

+0

Thnanks @Abid el problema es que no tengo ni idea sobre SVM y sobre Open CV, solo lo básico: D pero es realmente interesante, así que después de este proyecto investigaré un poco más para hacer un "buen "implementación de esto. Y también este conocimiento tiene múltiples usos, por ejemplo, la realidad aumentada, y se puede implementar en casi todos lados con Open CV (Android, iOS, escritorio, etc.). Entonces en el futuro investigaré más sobre los métodos que me dijiste. ¡Gracias de nuevo! – FreelanceAr

0

OpenCV también tiene capacidades de reconocimiento/detección de rostros (vea los ejemplos que vienen con el SDK de openCV). Creo que este sería un mejor lugar para buscar, ya que Haar Cascade realmente no analiza las expresiones faciales de la forma en que lo necesita. Intente ejecutar los ejemplos y compruébelo usted mismo; obtendrá datos en tiempo real sobre los ojos/la boca detectados y demás.

Buena suerte

Cuestiones relacionadas