RECONOCIMIENTO DEL LENGUAJE DE GESTOS MANUALES ALFABÉTICOS MEDIANTE VISIÓN ARTIFICIAL Beatriz Nathalia Serrato Panqueba, E. Ingenieria en Control [email protected] Frank Nixon Giraldo Ramos, Ingeniero en Control [email protected] UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS, BOGOTA 2009 RESUMEN: La forma de comunicación más comúnmente empleada por los seres humanos es la expresión oral, que se efectúa mediante la transmisión y recepción de mensajes en forma hablada. En su forma básica, este método de comunicación es acústico, por esta razón, cuando se carece de este medio, se hace necesario buscar alternativas que permitan interactuar con otras personas a través de sistemas o códigos de comunicación opcionales. Con el fin de brindar una solución a este problema, se diseñó e implementó un sistema con la capacidad de interpretar los signos alfabéticos manuales haciendo uso de herramientas como visión artificial y redes neuronales artificiales. PALABRAS CLAVE: Digital image processing, ART neural networks, Image classification, Image shape analysis 1 INTRODUCCIÓN Esta propuesta incluye las descripciones completas del controlador PID digital a utilizar en el DSP, es una guía que se refuerza con la respectiva teoría en controladores PID, como también describirá detalladamente las características de nuestra planta y la forma como identificamos e implementamos un controlador mediante la herramienta de matlab. 2 OBJETIVOS. 3 DESARROLLO REALIZADO. 3.1 DIPOSITIVOS DE CAPTURA DE IMÁGENES. Para el desarrollo de este proyecto se empleó una cámara digital tipo Web-Cam con una resolución de 640 por 480 pixeles, lo suficiente para tener imágenes digitales con una calidad representativa de la escena original, baja carga computacional en el procesamiento y con una velocidad de captura de 30 fps (frames por segundo). El objetivo de trabajar con una Web-Cam fue brindar versatilidad al sistema desarrollado, permitiendo que él mismo, opere con computadores de escritorio, además de los bajos costos en la adquisición de este tipo de cámaras y la fácil disponibilidad de las mismas para los usuarios. 3.2 ADQUISICION DE IMÁGENES PATRONES Las imágenes patrones se adquirieron en condiciones de ambiente controlado específicas, se realizaron capturas de las gesturas ejecutadas por la mano contrastándola contra un fondo de tono el alto grado oscuro. También se empleó un guante blanco sobre la mano con el fin de minimizar el ruido y obtener imágenes patrones estándar con pocas variaciones de color y brillo entre fotografías. Las imágenes poseen la misma resolución de la red neuronal de 640 X 480. Inicialmente se captura la imagen a color, posteriormente fue necesario transformarlas a escala de grises y luego realizar la segmentación para extraer la información necesaria para el funcionamiento de la red. Una forma de comunicación, que no requiere el empleo del lenguaje hablado, se puede efectuar usando las manos. Con las cuales se puede simbolizar el alfabeto completo ejecutando símbolos y movimientos estándar de comunicación no audible a partir de gesturas visuales. Con el fin de reconocer estas mismas, mediante la incorporación de técnicas de programación basadas en inteligencia y visión artificial, se implementó un sistema que capta el símbolo que está representando la mano, para ser clasificado como una letra del alfabeto ante el usuario que desconoce el código de gesturas. Fig 1. Escala de grises y delimitación de bordes de la letra G 3.3 CAPTURA IMÁGENES Y ALMACENAMIENTO DE El tratamiento de las imágenes se realizó en Visual Basic®, almacenándolas como archivos en formato de mapa de bits BMP, empleando el control OCX ezVidCap y se visualizaron en un cuadro Picture del mismo programa. Posteriormente se inician los procesos de lectura de imagen pixel a pixel; cada uno de estos está conformado por tres componentes RGB (red, green, blue). Este no es el único modelo de la conformación del color, ya que existen otros como son el modelo YIQ y el modelo HIS. En el modelo RGB existen tres bandas espectrales mientras que en el contenido del color, que se está representando en las matrices I, Q o H, S respectivamente, la diferencia radica en que las matrices I de ambos modelos, en YIQ contiene información de color y en HSI es la imagen de intensidad, por lo que hay que tener precaución de no confundirlas[1]. Para realizar el procesamiento anteriormente descrito se llevaron a cabo tres procedimientos: Operación banda a banda y obtención del resultado conjunto de las tres bandas de color como una nueva imagen también de color; transformar la imagen RGB a uno de los modelos YIQ o HIS, realizar las operaciones sobre la imagen de intensidad Y o I y realizar, posteriormente la transformación YIQ o HIS a RGB utilizando la nueva imagen de intensidad resultante de la operación realizada y las componentes IQ o HS de la imagen original para obtener el resultado final. En este caso la imagen final es una imagen de color también; y por ultimo transformar la imagen RGB al modelo YIQ o HIS, realizar las operaciones sobre la imagen de intensidad Y o I, respectivamente sin volver al color. El resultado final es una imagen de grises, es decir, con una sola banda. Como primera medida, utilizando los procedimientos anteriormente descritos, en el procesamiento de la imagen se redujo la información contenida en las tres componentes RGB a un valor único entre 0 a 255. La ecuación matemática que permite transformar una imagen a color a una imagen en escala de grises es: (70 * cmpR + 150 *cmpG + 29 * cmpB)/255 Donde cmpR, cmpG y cmpB representan los valores de un pixel en sus componentes de color rojo, verde y azul en orden respectivo. El resultado de aplicar esta ecuación sobre el valor de un pixel a color genera como resultado un nuevo valor para el pixel en el rango de 0 a 255. Fig 2. Transformación de imagen patrón a escala de grises. 3.4 IMPLEMENTACION DE ALGORITMOS PARA REALIZAR EXTRACCION DE BORDES Se implementaron 4 algoritmos para llevar a cabo este procedimiento que fueron [3]: • • • • Operador de Prewitt Operador de Roberts Operador Frei-Chen Operador de Sobel Y los resultados obtenidos fueron los siguientes: Fig 3. Imagen patron a b c d Fig 4. Resultados de la implementacion de los algoritmos para realizar extraccion de bordes. a)Prewitt, b) Roberts, c) Frei-Chen, d) Sobel A partir de la implementación de cada operador y observando la respuesta de los mismos, se determino cual de los cuatro operadores, representan del modo más claro los bordes correspondientes a la imagen original. Como conclusión se obtuvo que el operador de Sobel es el que mejor funciona pues el resultado de la aplicación permite la extracción de bordes de forma clara y con mejor calidad en la imagen comparado con el resto de operadores. 3.5 IMPLEMENTACION DE RED NEURONAL La red arquitectura de red neuronal elegida para realizar el procedimiento de reconocimiento de imágenes fue la ART (Adaptive Resonance Theory). Una vez realizado el procesamiento previo de imágenes (transformaciones a escala de grises, eliminación de ruido y extracción de contornos) se hizo elección de tres imágenes fácilmente diferenciables para realizar el proceso de entrenamiento y procesamiento de la red neuronal [2]. a b c Fig 5. Imágenes utilizadas para entRenar la red neuronal, a) letra B, b) letra L, c) letra M El primer paso consistió en determinar el número de neuronas y capas para la configuración de la red neuronal. De este modo se trabajo con tres neuronas de salida, cada una para el reconocimiento de las imágenes patrones, y una capa de entrada de 307200 neuronas. Como las imágenes a trabajar tienen una resolución de 640 X 480 pixeles es necesario dedicar una neurona para cada uno de ellos. La función de la red neuronal es realizar la sumatoria de productos entre cada neurona con su respectivo peso para cada una de las neuronas de salida. El resultado de este cálculo determina cual de las neuronas es la ganadora, es decir la de mayor valor. Fig 6. Software en ejecucion Las condiciones de operación del software exigen que la gestura deba realizarse del modo más parecido a las imágenes patrones de la red, es por esto, que antes de operar el software se debe tener un conocimiento previo de la representación de cada letra y también que la gestura se debe realizar lo más centrado posible. Teniendo en cuenta estas recomendaciones la operación es óptima. 3.6 ENTRENAMIENTO DE LA RED NEURONAL El entrenamiento de la red neuronal se realizó en el programa MATLAB 7.0; se implementó un algoritmo para realizar el cálculo de los valores de los pesos para las conexiones de las neuronas. Una vez calculados dichos valores se generó un archivo plano en EXCEL de los mismos para que el algoritmo de la red neuronal los pueda leer en cualquier momento con tan solo especificar la ubicación de este archivo. En el proceso de entrenamiento de la red neuronal se tuvo en cuenta tres imágenes diferenciables claramente entre sí, estas se tomaron como patrón para el cálculo de los pesos de w de la red. Como el número de filas de la matriz es 307200, en EXCEL se emplearon tres columnas de 102400 filas por cada vector para represnetar una sola, es decir, el vector de pesos de la Letra B esta comprendido entre las columnas de EXCEL “A”,”B” y “C”, los pesos de la Letra L estan entre las columnas “D”,”E” y “F” y los pesos de la Letra M estan entre “G”, “H” e “I”, para cada caso, las tres columnas en realidad son una sola para el algoritmo de la red neuronal. 4 CONCLUSIONES: . Durante la elaboración del sistema de reconocimiento del lenguaje de gestos manuales alfabéticos mediante visión artificial, se desarrollaron diferentes etapas que permitieron lograr el objetivo final del sistema (reconocimiento de signos alfabéticos); cada una de las etapas, exigió una documentación y estudio previó para realizar implementaciones óptimas que cumplieran con las exigencias propuestas. En esencia el desarrollo se separo en tres partes: a) captura y acondicionamiento de imágenes, en donde se implementaron algoritmos para hacer captura desde una Web-Cam y un posterior procesamiento de las imágenes adquiridas, dando como resultado una imagen óptima para ser entregada a la red neuronal. b) Procesamiento de imágenes mediante una red neuronal. Para esta etapa se hizo selección del tipo de arquitectura de red neuronal a ser implementada, con base en la aplicación deseada y en aplicaciones similares, se tomo la decisión de trabajar con la arquitectura de redes neuronales tipo ART (Adaptive Resonance Theory). c) Por último se realizó el entrenamiento de la red neuronal, proceso en el cual se desarrollo un algoritmo en MATLAB designado a realizar esta labor. Se escogieron tres imágenes (correspondientes a los signos manuales para las letras B, L y M) claramente diferenciables entre si, y se genero la matriz de pesos para la operación de la red. En el procesamiento previo de la imagen antes de ser entregada a la red neuronal para realizar el reconocimiento, se evidencia la importancia de aplicar operadores y transformaciones básicas para entregar una imagen con la información más relevante en óptimas condiciones, es decir, realizar la eliminación de ruido y elementos ajenos a la imagen. El termino información relevante hace referencia a los contornos de la imagen extraídos. Existen diversos tipos de operadores (filtros) que permiten realizar la labor de procesamiento previo, sin embargo, es necesario hacer elección de los mismos de acuerdo al tipo de imágenes manipuladas así como las condiciones en que se encuentre la misma. Para realizar una elección oportuna de transformaciones a realizar, se implemento en software cada una de las descritas a lo largo de este documento y mediante las pruebas se definió cual era la más apropiada. Al igual que en la elección de transformaciones aplicadas a las imágenes en el procesamiento previo, al realizar la elección de topología de red neuronal a implementar, fue necesario investigar en aplicaciones similares (a través de la web) cuales eran las de mayor aplicación y por tanto las que mejor se ajustaran al desarrollo elaborado. ART fue una respuesta oportuna, pues incorpora además de las redes convencionales un factor adicional llamado flexibilidad, definido como la capacidad de adquirir nuevos patrones (aprender nuevas cosas), sin que sean modificados u olvidados conocimientos anteriores. La implementación de algoritmos para la red neuronal ART es de fácil programación y un tiempo de ejecución reducido. Los resultados fueron buenos pruebas introduciendo ruido a las imágenes, sin embargo el algoritmo fue capaz de discernir y dar una respuesta acertada. Por otra parte, el entrenamiento de la red juega un papel de vital importancia, pues es en esta etapa donde la red adquiere el conocimiento necesario para realizar el reconocimiento eficaz de las imágenes. Se hace necesario trabajar con imágenes en óptimas condiciones para calcular matrices de pesos limpias para ser manipuladas por la red neuronal. Una vez realizado el sistema, se puede correr la aplicación para la cual fue propuesta, sin embargo, lo interesante del desarrollo no es la aplicación como tal, sino la red y procesamiento que corre debajo, de este modo, la aplicación puede diferir para el mismo algoritmo, se puede realizar reconocimiento de rostros, reconocimiento de formas, huellas dactilares y demás aplicaciones similares con pequeñas modificaciones en los algoritmos y con un nuevo proceso de entrenamiento. Los sistemas de visión artificial brindan alternativas para la solución práctica de problemas comunes, su uso es cada vez más frecuente y las aplicaciones son innumerables. Es importante migrar a aplicaciones de este tipo para trabajar con sistemas modernos y de gran utilidad en diversos campos, que van desde la ingeniería hasta la economía y las finanzas. 6 REFERENCIAS [1]. Royman López Beltrán, Edgar Sotter Solano, “Operación automática de control de calidad utilizando un sistema de visión” [2]. Bonifacio Martin del Brio, Alfredo Sanz Molina, “Redes neuronales y sistemas difusos”, Alfaomega, 2002¨. [3]. Mo Dai, Pierre Baylou, “An efficient algorithm for computation of shape moments from chain codes” , Univerisité de Bordeaux-France