deteccion de una sonrrisa usando matlab

6
IMPLEMENTACI ´ ON Y REALIZACI ´ ON DE UN SOFTWARE QUE ANALIZA LA SONRISA Y LA REPRESENTA EN UN V ´ UMETRO #1 Miguel Jumbo, #1 Dario Ochoa, #1 Juan Sanmart´ ın. #2 Manuel Qui˜ nones. #1 Profesionales en formaci´ on de la EET ,Universidad T´ ecnica Particular de Loja. #2 Docente de la Escuela de Electr´ onica y Telecomunicaciones, Universidad T´ ecnica Particular de Loja Loja, Ecuador 2012 1 [email protected], 1 [email protected], 1 [email protected], 2 [email protected] Resumen: El presente trabajo consta de la detecci´on de la sonrisa de una persona usando un software dise˜ nado en Matlab, lo que nos servir´a para la representaci´on de la sonrisa en un umetro. Palabras claves: Procesamiento de im´agenes, MATLAB, v´ umetro, visi´on por computadora. I. INTRODUCCI ´ ON MATLAB[1] o laboratorio de matrices, es un software matem´ atico, que entre sus principales aplicabilidades est´ an dadas hacia la ingenier´ ıa, debido a los toolbox integrados o que pueden ser agregados, es uno de programas de mayor uso en las universidades y centros de investigaci´ on. Se entiende por procesamiento de im´ agenes[2] al conjunto de t´ ecnicas que se aplican a las im´ agenes digitales con el objetivo de mejorar la calidad o facilitar la b´ usqueda de informaci´ on. El prop´ osito de la visi´ on artificial[3] es pro- gramar un computador para que ”entienda” una escena o las caracter´ ısticas de una imagen. Los objetivos t´ ıpicos de la visi´ on artificial est´ an: la detecci´ on, segmentaci´ on, localizaci´ on y reconoci- miento de ciertos objetos en im´ agenes. La comunicaci´ on serial es un protocolo muy com´ un para comunicaci´ on entre dispositivos que se incluye de manera est´ andar pr´ acticamente en cualquier computadora, tambi´ en la comunicaci´ on serial puede ser utilizada para adquisici´ on de datos si se usa en conjunto con un dispositivo remoto de muestreo. Un umetro se incluye a menudo en equipos de audio para mostrar un nivel de se˜ nal en unidades de volumen, el dispositivo es a veces tambi´ en llamado indicador de volumen, pero en nuestro caso se lo ha utilizado como un indicador de nivel de la sonrrisa. II. METODOLOG ´ IA DE TRABAJO. Como primer paso, se realiz´ o una amplia inves- tigaci´ on y recolecci´ on de informaci´ on disponible en la red, con la cual pudimos guiarnos y tener una base de conocimientos para poder iniciar el proceso de desarrollo del algoritmo. El software que estamos usando es MATLAB de matworks.inc[4], en la versi´ on R2012a con el cual estamos realizando el algoritmo de recono- cimiento de la sonrisa usando principalmente el toolbox de sistema de visi´ on por computadora y procesamiento de im´ agenes, entre otros que MATLAB contiene. Una vez que obtuvimos el programa MATLAB, procedimos a elaborar c´ odigos tales como el uso de la c´ amara, aplicaci´ on de filtros a las im´ agenes que seran capturadas para lograr visualizar re- sultados obtenidos, en la versi´ on de MATLAB R2012 trae una funci´ on espec´ ıfica con la que se detecta el rostro de la imagen tomada. Entre los filtros que hemos utlizado est´ an: filtro entropyfilt, filtro mat2gray. Siguiendo con la planificaci´ on creamos un blog el cual sirvi´ o para la publicaci´ on de c´ odigos y 1

Transcript of deteccion de una sonrrisa usando matlab

Page 1: deteccion de una sonrrisa usando matlab

IMPLEMENTACION Y REALIZACION DE UN SOFTWARE

QUE ANALIZA LA SONRISA Y LA REPRESENTA EN

UN VUMETRO

#1Miguel Jumbo, #1 Dario Ochoa,#1 Juan Sanmartın. #2Manuel Quinones.#1Profesionales en formacion de la EET ,Universidad Tecnica Particular de Loja.

#2Docente de la Escuela de Electronica y Telecomunicaciones, Universidad Tecnica Particular de Loja

Loja, Ecuador [email protected], [email protected], [email protected], [email protected]

Resumen: El presente trabajo consta de ladeteccion de la sonrisa de una persona usandoun software disenado en Matlab, lo que nosservira para la representacion de la sonrisa en unvumetro.Palabras claves: Procesamiento de imagenes,MATLAB, vumetro, vision por computadora.

I. INTRODUCCION

MATLAB[1] o laboratorio de matrices, es unsoftware matematico, que entre sus principalesaplicabilidades estan dadas hacia la ingenierıa,debido a los toolbox integrados o que puedenser agregados, es uno de programas de mayoruso en las universidades y centros de investigacion.

Se entiende por procesamiento de imagenes[2] alconjunto de tecnicas que se aplican a las imagenesdigitales con el objetivo de mejorar la calidad ofacilitar la busqueda de informacion.

El proposito de la vision artificial[3] es pro-gramar un computador para que ”entienda” unaescena o las caracterısticas de una imagen. Losobjetivos tıpicos de la vision artificial estan: ladeteccion, segmentacion, localizacion y reconoci-miento de ciertos objetos en imagenes.

La comunicacion serial es un protocolo muycomun para comunicacion entre dispositivos quese incluye de manera estandar practicamente encualquier computadora, tambien la comunicacionserial puede ser utilizada para adquisicion dedatos si se usa en conjunto con un dispositivoremoto de muestreo.

Un vumetro se incluye a menudo en equiposde audio para mostrar un nivel de senal enunidades de volumen, el dispositivo es a vecestambien llamado indicador de volumen, pero ennuestro caso se lo ha utilizado como un indicadorde nivel de la sonrrisa.

II. METODOLOGIA DE TRABAJO.

Como primer paso, se realizo una amplia inves-tigacion y recoleccion de informacion disponibleen la red, con la cual pudimos guiarnos y teneruna base de conocimientos para poder iniciar elproceso de desarrollo del algoritmo.

El software que estamos usando es MATLABde matworks.inc[4], en la version R2012a con elcual estamos realizando el algoritmo de recono-cimiento de la sonrisa usando principalmente eltoolbox de sistema de vision por computadoray procesamiento de imagenes, entre otros queMATLAB contiene.

Una vez que obtuvimos el programa MATLAB,procedimos a elaborar codigos tales como el usode la camara, aplicacion de filtros a las imagenesque seran capturadas para lograr visualizar re-sultados obtenidos, en la version de MATLABR2012 trae una funcion especıfica con la que sedetecta el rostro de la imagen tomada.

Entre los filtros que hemos utlizado estan:filtro entropyfilt, filtro mat2gray.Siguiendo con la planificacion creamos un blogel cual sirvio para la publicacion de codigos y

1

Page 2: deteccion de una sonrrisa usando matlab

Universidad Tecnica Particular de Loja EET IEEE

avances del proyecto y la revision por parte deltutor.

III. CAPTURA DE LA IMAGEN

El presente trabajo tiene como finalidad re-presentar en una GUI el reconocimiento de lasonrisa la cual sera encerrada en un recuadrotodo esto con la ayuda del software MATLAB,nuestro proyecto esta directamente involucradocon el procesamiento de imagenes, y vision porcomputadora.MATLAB es una herramienta muy util paranuestro proposito debido al toolbox ’ComputerVision System’ y el demo que este trae integra-do que nos sirvio para lograr orientar parte denuestros objetivos .

La adquisicion de la imagen se la realizapor medio de la webcam y se la obtiene mediantela ejcecucion del codigo, para ello usamos lafuncion ’videoinput’ y ’getsnapshot’ que es deltoolbox de adquisicion de imagenes, ajustamos laresolucion de la camara[5] y la configuramos paraque la imagen sea tomada y almacenada en coloresRGB y en formato JPG, el almacenamiento de laimagen lo logramos realizar mediante el imwrite.

Cabe recalcar que para equipos con SistemaOperativo Winwdos se utilizo ’winvideo’ y paraequipos con Sistema Operativo Lion se uti-lizo ’macvideo’, que en nuestro caso trabajamoscon un equipo ’Mac’, debido algunas ventajas encuanto a la resolucion de la webcam.

Figura 1: Codigo de la Imagen Capturada

IV. RECORTE DE LA IMAGEN

Una vez que se captura la imagen la im-portamos a MATLAB para iniciar el tra-bajo sobre ella mediante el comando ’im-read’, seguidamente utilizamos las funciones

Figura 2: Imagen Capturada

’vision.CascadeObjectDetector’ y ’Vi-sion.ShapeInserter’que son propia del toolboxVision SystemComputer[6] ,mediante estas fun-ciones logramos reconocer los rotros presentes enla imagen[7].

Gracias a la ayuda de dichas funciones men-cionadas anteriormente, que nos entregan valoresimportantes del rostro de la persona tales como:posicion (x,y), dimension del rostro(largo,ancho),podemos proceder a recortar el rostro de laimagen original, pues en este caso trabajaremoscon una imagen mas pequena ya que solo sera elrostro de la persona, seguidamente usando lavariable ’bbox’ que es donde se almacenan estosvalores importantes obtuvimos nuevas variablespara lograr recortar la imagen de la sonrrisa, paraello multiplicamos coeficientes con la variable’bbox’ y de esta manera lograremos obtenersiempre una imagen recortada cerca de la sonrisa.

Figura 3: Funcion vision.CascadeObjectDetector

V. APLICACION DE FILTROS

Para la obtencion de area de la sonrrisa nosbasamos en los filtros entropyfilt y mat2gray, peroa mas de esto se utilizo algunas funciones entrelas principales estan im2bw, bwareaopen, imclose,bwlabel.

2

Page 3: deteccion de una sonrrisa usando matlab

Universidad Tecnica Particular de Loja EET IEEE

Figura 4: Aplicacion del ’imcrop’

Como primer filtro usamos la funcion ’en-tropyfilt’ ,sirve para dar el valor de entropıa decada uno de los pixeles encontrados en la imagen,ya que la imagen es tomada como una matriz,usamos la funcion ’mat2gray’ para convertirlaen una imagen en escala de grises[8].

Figura 5: Filtro Entropyfilt

La funcion usada para la binarizacion de laimagen es el comando ’im2bw’, el cual sera degran ayuda en la ultima imagen recortada esdecir la imagen donde esta la sonrisa, debido aque convierte a la imagen RGB en una imagenbinaria que nos servira como base para proseguircon el desarrollo de nuestro objetivo.

Figura 6: Aplicaciones de Filtros

Ya que, la binarizacion no toma solo el areade los dientes como blancos, si no tambien quedanpequenos pixeles en blanco estos son removidoscon el uso de ’bwareaopen’. Y tambien quedanpequenos puntos negros que se encuentran en elborde de cada diente para hacer toda el area de

la dentadura blanca usamos la funcion ’imclose’y ’bwlabel’, el primero usa una operacionmorfologica de dilatacion y posterior erosion yla segunda funcion es usada para conectar loscomponentes de dicha imagen, formando de mejormanera la region de la boca.

VI. CALCULO DEL AREA DE LASONRISA

Una vez que se tiene identificada la sonrisa seusa ’regionprops’ que es una funcion utilizadacon el fin de tener parametros como es Area,Centroide y BoundingBox los cuales utili-zaremos a futuro. Ahora calcularemos el areamas grande con el comando ’max’ lo que sera lasonrisa, seguidamente utilizamos la funcion ’is-member’ que nos da como resultado verdadero(1) o cero (0) dependiendo si los elementosbuscados son encontrados[9].

VII. ENCERRAR LA SONRISA

Ya que se tiene identificada la sonrisa, como elarea mas grande, para encerrarla nos ayudamosde los parametros obtenidos anteriomente conel regionprops, especificamente utilizamos el’BoundingBox’, pues que en BoundingBoxestan almacenadas las coordenadas y la dimen-sion del area mayor, que en sı sera la sonrisa.Ahora con la funcion ’DrawRect’ encerramosen un recuadro la sonrisa y ha esta la montamosen la imagen donde esta el rostro, al poderutilizar DrawRect enviamos las coordenadas y lasdimensiones del recuadro que deseamos dibujar,esto lo logramos gracias a BoundingBox[10].

Figura 7: Sonrisa Encerrada

3

Page 4: deteccion de una sonrrisa usando matlab

Universidad Tecnica Particular de Loja EET IEEE

VIII. GUI

Una vez obtenida, la sonrisa en un recua-dro, para poder representar mejor el proyectoproseguimos a realizar una ’gui’, que es lainterfaz grafica del usuario de Matlab, para estorecurrimos a realizar una extensa busqueda deinformacion en la web, donde se encontro unagran variedad sobre este tema, de la cual nosguiamos como base para poder crear una ’gui’,en la siguiente imagen podemos observar la GUIcreada, nuestra presentacion consta de 2 GUI, endonde GUI 1 indica los integrantes y el tutor quelevaron a cabo la realizacion de este proyecto,ademas la GUI 1 tiene la funcion de llamar ala GUI 2. En la GUI 2 es en donde veremos elfuncionamiento de nuestro proyecto.

Figura 8: Presentacion Gui

Figura 9: Aplicacion Gui

IX. COMUNICACION SERIAL yVUMETRO

La comunicacion serial es un protocolo muycomun para comunicacion entre dispositivos.Los datos recibidos y enviados estan en formatoASCII. El puerto serial envıa y recibe bytes deinformacion un bit a la vez. Para realizar lacomunicacion se utilizan 3 lıneas de transmision:1 tierra, 2 transmitir, 3 recibir. Para la comu-nicacion serial utilizamos un cable de USB aSERIAL (DB9) que a su vez esta conectada ala configuracion del MAX232 que permitira co-municar con un microcontrolador AVR Atmega32.

Basados en la ayuda de Mathworks procedemosabrir el puerto serial con ’fopen’, seguidamentese envia un dato con ’fprintf’, acontinuacionprocedemos a cerrar el puerto con ’fclose’ cabesenalar que el dato que se envio sera interpretadopor el microcontrolador y este sera representadoen el vumetro.

Figura 10: Configuracion MAX232

Un vumetro en nuestro caso se lo ha utiliza-do como un indicador de nivel de la sonrrisa, lafuncion que realiza el vumetro es, representarlos datos del microcontrolador, una vez que eldato es interpretado por el microcontrolador, seencenderan los leds del vumetro, a mayor sonrisamayor sera el numero de leds encendidos, eldiseno del vumetro es de forma escalonada, y fueelaborado en acrılico.

X. ANALISIS DE LOS RESULTADOS

Es muy importante la deteccion del rostro y elrecorte del mismo ya que nos ayuda a trabajarcon una imagen mas pequena y ha enfocarnosen la sonrisa La aplicacion de filtros a la imagenrecortada es muy importante ya que la intensidadde luz afecta el resultado, mediante la aplicacionde filtros se logra obtener mas resaltados elborde de los labios y en si obtener la sonrisa quefinalmente sera la parte mas importante.

El codigo esta disenado para solo una perso-na ya que al detectar mas de un rostro se obtieneun error, debido a que las condiciones del vectorestan dadas solo para un rostro, se recomiendaestar de frente a la camara evitando que seobscurezca el rostro (con gorras o sombreros) ycon un fondo sin personas.

El proyecto y los codigos fueron probados yvarıan dependiendo de las condiciones de ca-da equipo, pero finalmente la presentacion se

4

Page 5: deteccion de una sonrrisa usando matlab

REFERENCIAS Universidad Tecnica Particular de Loja EET IEEE

realizo en un ordenador Mac de Apple, debidoa la mejor calidad de imagen y resolucion dela webcam, ya que varıan las coordenadas derecorte del vector y en si errores en la deteccionde la sonrisa dependiendo de equipo. Al aplicarnuestro codigo en tiempo real la maquina sevuelve lenta,debido a los filtros que utilizamos,por lo que decidimos trabajar con una GUI endonde representaremos la sonrrisa de una solapersona.

Figura 11: Vumetro

XI. CONCLUSIONES

Para la realizacion de este proyecto, es decirpara lograr medir la sonrisa de una personanos hemos basado en el area de la misma, espor ello la utilizacion de los filtros, pues me-diante el uso adecuado de estos nos facilitano nos ayudan a determinar datos que seranmuy esenciales para lograr nuestro objetivo,por lo cual mediante el area obtenida logra-remos representar la sonrisa de la persona.

Se concluyo que la velocidad de transmi-sion (baudios) de la comunicacion serial en-tre Matlab y el Microcontrolador deben serlas mismas y asıncrona para que pueda exis-tir la comunicacion sin errores

El uso de la version MATLAB R2012a fue in-dispensable para el desarrollo del proyecto,ya que en esta version encontramos demos deayuda para lograr entender como se puedetrabajar con reconocimiento facial, tambiense logro entender el uso de algunas funcionesdisponibles en el programa.

En base a varias pruebas con nuestros equi-pos, nos hemos dado cuenta de aspectos im-portantes que son necesarios para que nuestro

proyecto se realice correctamente los cualesson la posicion correcta de la persona, el en-torno y su iluminacion y la resolucion de lacamara con la que se trabaja.

XII. BIBLIOGRAFIA

Referencias

[1] MATLAB, [6 de abril del2012] [en lınea]< http ://es.wikipedia.org/wiki/Matlab >,Wikipedia.

[2] Procesamiento Digital de imagenes, [6de abril del 2012].[en lınea] < http ://es.wikipedia.org/wiki/Matlab >,Wikipedia.

[3] Vision artificial,[6 de abrildel 2012].[en lınea] < http ://es.wikipedia.org/wiki/Matlab >,Wikipedia.

[4] Busqueda de resultados, [19 deabril del 2012].[en lınea]< http ://www.mathworks.com/searchresults/?c%5B %5D = entiresite&q >,Mathworks.

[5] Diego Barragan CONECTAR WEBCAM ENMATLAB, [19 de abril del 2012].[en lınea],< http : //www.youtube.com/watch?v =JOxbgsKDtcg >,Youtube .

[6] Reconocimiento de caras,[20 deabril del 2012].[en lınea] < http ://isa.umh.es/asignaturas/iarp/practicas/P 8/PRACTICA8.pdf >,isa.uhm.es.

[7] Seguimiento de patrones faciales por des-criptores de forma, [19 de abril del 2012].[enlınea] < http : //adf.ly/480941/int/http ://pdffinder.net/SEGUIMIENTO-DEPATRONESFACIALES-PORDESCRIPTORESDE-FORMA.html >,adf.ly.

[8] Busqueda de resultados,[20 deabril del 2012].[en lınea] < http ://www.mathworks.com/matlabcentral/newsreader/view thread/283963 >,Mathworks.

[9] Matlab smile detection,[20 de abrildel 2012].[en lınea], < http ://www.sourcecodeonline.com/list?q =matlab smile detection >,Sourcecodeonline.

5

Page 6: deteccion de una sonrrisa usando matlab

REFERENCIAS Universidad Tecnica Particular de Loja EET IEEE

[10] facedetection and smile detection,[20de abril del 2012].[en lınea] < http ://www.csie.ntu.edu.tw/ fuh/personal/FaceDetectionandSmileDetection.pdf >,csie.

6