UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INGENIERÍA INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TRABAJO FIN DE GRADO Atención Visual Activa Para Interacción Humano Robot Fco.Javier Page Alcalde Julio de 2012 UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INGENIERÍA INFORMÁTICA Departamento de Sistemas Informáticos TRABAJO FIN DE GRADO Atención Visual Activa Para Interacción Humano Robot Autor: Fco.Javier Page Alcalde Directores: Ismael Garcı́a Varea Jesús Martı́nez Gómez Julio de 2012 Resumen Gracias a la evolución en los campos de la informática y la electrónica, los robots han llegado a ser sistemas multimodales capaces de realizar varias tareas y de adaptarse rápidamente a nuevas tareas, mediante los distintos tipos de comunicación humana. Hoy en dı́a, esta necesidad de comunicación, es la principal causa de la aparición de sistemas que interactúan con un humano, como si se tratara de una interacción humano-humano. Para que el robot presente un comportamiento adecuado, es necesaria una interpretación y representación del entorno similar a la realizada por un humano. Para cumplir este objetivo, es necesario dotar al robot de técnicas que permitan extraer la mayor cantidad de información del entorno. La extracción de información, se realizará a partir de los sensores de los que el robot está equipado, destacando las técnicas de reconocimiento del habla y la visión artificial. Gracias a estas técnicas, podemos reconocer las órdenes proporcionadas por un usuario, ası́ como detectar su pose, su expresión facial o incluso detectar objetos del entorno con los que desea interactuar. En este proyecto, se intenta mejorar la interacción humano-robot por medio de la visión artificial, donde el sistema es capaz de detectar cuando un usuario requiere la atención de éste para interactuar con algún objeto, el cuál, ha sido detectado por el sistema dentro de una región de interés marcada por el usuario. Las bases de este proyecto, han sido incluidas en un artı́culo que será expuesto en el congreso Workshop of physical agents que se celebrará en Septiembre de 2012 en Santiago de Compostela. i Índice general Resumen I Índice de figuras V Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Índice de tablas vii VII Lista de Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Introducción y Objetivos 1 1 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Estado del Arte 5 2.1. Interacción Humano Robot . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Atención Visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3. Procesamiento de Imágenes visuales . . . . . . . . . . . . . . . . . . . . 12 2.4. Procesamiento de Imágenes de Profundidad . . . . . . . . . . . . . . . 33 3. Metodologı́a 39 3.1. Entorno de trabajo y Herramientas . . . . . . . . . . . . . . . . . . . . 39 3.2. Procesamiento de la Imagen de Profundidad . . . . . . . . . . . . . . . 44 3.3. Procesamiento de la Imagen Visual . . . . . . . . . . . . . . . . . . . . 48 4. Resultados 63 4.1. Descripción de los datos del mapa de profundidad . . . . . . . . . . . . 63 4.2. Detección de objetos según la forma básica . . . . . . . . . . . . . . . . 65 4.3. Detección del color de los objetos . . . . . . . . . . . . . . . . . . . . . 67 4.4. Detección de objetos especı́ficos . . . . . . . . . . . . . . . . . . . . . . 71 5. Conclusiones y Trabajo Futuro 75 5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 iii Índice de figuras 2.1. Ejemplo de sistema teleoperado . . . . . . . . . . . . . . . . . . . . . . 6 2.2. Sistema que funciona con detección de gestos . . . . . . . . . . . . . . . 10 2.3. Componentes básicos de una búsqueda guiada (Frintrop et˜al. [2010]) . 12 2.4. Modelo unidimensional y continuo de un borde ideal . . . . . . . . . . . 13 2.5. HF (i, j) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6. HC (i, j) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.7. H(i, j) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.8. Bordes detectados por Canny . . . . . . . . . . . . . . . . . . . . . . . 17 2.9. Segmentación por color . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.10. Paso del plano imagen al plano de parámetros . . . . . . . . . . . . . . 20 2.11. Rectas detectadas por hough . . . . . . . . . . . . . . . . . . . . . . . . 21 2.12. Histograma dividido por el umbral T . . . . . . . . . . . . . . . . . . . 21 2.13. Ejemplo de división y fusión de regiones . . . . . . . . . . . . . . . . . 24 2.14. Resultado de aplicar el suavizado de la media simple . . . . . . . . . . 26 2.15. Filtro gaussiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.16. Resultado de aplicar el suavizado promediado . . . . . . . . . . . . . . 28 2.17. Resultado de aplicar el filtro de la mediana . . . . . . . . . . . . . . . . 29 2.18. Resultado de aplicar la erosión sobre una imagen . . . . . . . . . . . . 29 2.19. Resultado de aplicar la dilatación sobre una imagen . . . . . . . . . . . 30 2.20. Resultado de aplicar la apertura, con diferentes EE . . . . . . . . . . . 30 2.21. Resultado de aplicar el cierre sobre una misma imagen con EE distintos 31 2.22. Ejemplo de dilatación en escala de grises . . . . . . . . . . . . . . . . . 31 2.23. Ejemplo de erosión en escala de grises . . . . . . . . . . . . . . . . . . . 32 2.24. Ejemplo de gradiente en escala de grises . . . . . . . . . . . . . . . . . 32 2.25. Puntos SIFT de una imagen . . . . . . . . . . . . . . . . . . . . . . . . 33 2.26. Mapa de profundiad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.27. Formación del mapa de profundidad utilizando kinect . . . . . . . . . . 35 2.28. Detección de poses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.1. Estructura de OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 v vi ÍNDICE DE FIGURAS 3.2. Vista en capas de la adquisición y procesamiento de datos en kinect . . 42 3.3. Interfaz gráfica de Weka . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4. Diagrama de funcionamiento del sistema . . . . . . . . . . . . . . . . . 44 3.5. Mapa de profundidad realzado . . . . . . . . . . . . . . . . . . . . . . . 46 3.6. Mapa de profundidad sin realzar . . . . . . . . . . . . . . . . . . . . . . 46 3.7. Pose PSI que reconoce Kinect para reconocer al individuo además de calibrar las articulaciones de este . . . . . . . . . . . . . . . . . . . . . 47 3.8. Calculo de la bisectriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.9. Cono que forma la zona de interés . . . . . . . . . . . . . . . . . . . . . 50 3.10. Canal R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.11. Canal G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.12. Canal B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.13. Detección de bordes en el plano de color R . . . . . . . . . . . . . . . . 52 3.14. Detección de bordes en el plano de color G . . . . . . . . . . . . . . . . 52 3.15. Detección de bordes en el plano de color B . . . . . . . . . . . . . . . . 52 3.16. Ejemplo de funcionamiento de la función cvApproxPoly . . . . . . . . . 54 3.17. Objetos que se han detectado dentro de la ROI . . . . . . . . . . . . . 55 3.18. Diferencia obtenida entre la imagen RGB y la copia donde se han dibujado los contornos detectados . . . . . . . . . . . . . . . . . . . . . . . 56 3.19. Suavizado sobre los contornos obtenidos . . . . . . . . . . . . . . . . . 57 3.20. Operación morfológica gradiente sobre los contornos detectados . . . . 57 3.21. Ruido que aparece al dibujar los contornos sobre una imagen inicializada a cero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.22. Máscara obtenida a partir de un contorno . . . . . . . . . . . . . . . . 58 3.23. Resultado obtenido de segmentar y calcular el color medio de un objeto 59 3.24. Resultado final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.25. Obtención del centro de masas por medio de los momentos . . . . . . . 60 3.26. Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.27. Inserción de un objeto en la escena . . . . . . . . . . . . . . . . . . . . 61 3.28. Diferencia del background y la nueva frame . . . . . . . . . . . . . . . . 62 3.29. Objeto identificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.1. Objetos paralelos a la cámara . . . . . . . . . . . . . . . . . . . . . . . 66 4.2. Detección cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.3. Detección de color por medio de la ecuación 3.8 . . . . . . . . . . . . . 68 4.4. 0 como peso para el componente Y . . . . . . . . . . . . . . . . . . . . 69 4.5. 0.5 para el componente Y y 2 para los componentes Cr y Cb . . . . . . 69 4.6. Detección de color utilizando un J48 . . . . . . . . . . . . . . . . . . . 71 4.7. Objetos detectados en una escena . . . . . . . . . . . . . . . . . . . . . 74 Índice de tablas 4.1. Comparativa de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2. Comparativa de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.3. Datos obtenidos con un factor de confianza de 0.25 . . . . . . . . . . . 65 4.4. Datos obtenidos con un factor de confianza de 0.35 . . . . . . . . . . . 65 4.5. Tasa de acierto en la detección de formas . . . . . . . . . . . . . . . . . 66 4.6. Tasa de acierto en la detección de formas en un plano paralelo a la cámara 67 4.7. Rango de los componentes Cr y Cb en los colores de referencia . . . . . 70 4.8. Tasa de acierto por color . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.9. tasa de acierto de los clasificadores en la detección de objetos especı́ficos 72 4.10. Tasa de acierto de los clasificadores en la detección de objetos especı́ficos con un valor más de clase . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.11. Tasa de acierto en la detección de objetos especı́ficos . . . . . . . . . . 73 4.12. Tasa de acierto y error relativo absoluto de eliminar los atributos que forman los momentos centrales y normalizados . . . . . . . . . . . . . . 73 4.13. Tasa de acierto en la detección de objetos especı́ficos utilizando únicamente los momentos Hu . . . . . . . . . . . . . . . . . . . . . . . . . . vii 74 Capı́tulo 1 Introducción y Objetivos 1.1. Introducción En la antigua Grecia, ya se pensaba en la construcción de máquinas automáticas que trabajarán para el humano favoreciendo la calidad de vida, pero no fue hasta 1963 cuando apareció el primer robot industrial creado por Unimation, el cuál, era una mano mecánica controlada por ordenador. Pero cuando realmente se generalizó el uso de robots en la industria, fue en la década de los setenta. Estos robots industriales, fueron creados para sustituir a los trabajadores en tareas repetitivas y monótonas para ganar eficiencia. Estos robots eran programados para realizar tareas donde no se requerı́a ningún tipo de comunicación con el trabajador, pero gracias a los avances en la electrónica y en la informática, se han creado máquinas más complejas. Estos avances han permitido crear robots teleoperados, cuyos movimientos son producidos por un trabajador por medio de un control remoto o por medio de otro robot denominado esclavo. Gracias a la evolución de los robots, se ha podido llegar a crear sistemas multimodales, los cuáles, utilizan numerosos canales (voz, profundidad, tacto, color, . . . ) para recolectar del entorno donde se encuentra la mayor información posible para la realización de tareas de la forma más eficiente. Esta evolución ha hecho que los robots puedan realizar más tareas y adaptarse fácilmente a otras funciones, además de aumentar la necesidad de comunicación entre humano y robot. Esta necesidad de comunicación ha originado la aparición de robots sociales, quienes han sido creados para ayudar al humano en sus tareas diarias. Estos robots pueden ser utilizados en multitud de sitios como hospitales, museos, laboratorios, . . . El principal problema al que nos enfrentamos en la interacción humano-robot, se debe a que la información obtenida del mundo y la forma de comunicarse del robot, difiere de como la realiza el humano. La comunicación entre robot y humano tiene que ser lo más parecido posible a la comunicación que se produce entre humanos, por lo que 1 2 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS el robot tiene que ser capaz de reconocer el habla y obtener información del entorno por medio del sentido visual. La comunicación que más información suministra a un robot es la visual, ya que gracias a este tipo de comunicación, un robot puede mejorar en la realización de tareas al obtener información del entorno. El sentido de la vista de un robot es suministrado por cámaras, las cuáles, permiten reconocer personas, gestos, objetos, . . . . Las cámaras pueden suministrar imágenes en color o en mapas de profundidad, que permiten al robot obtener cualquier tipo de información del entorno en el que se encuentra. La reducción en el coste de los sensores de profundidad, como el Microsoft Kinect, ha popularizado su uso enormemente y abre nuevas posibilidades en la interacción humano-robot. 1.2. Objetivos El objetivo del proyecto, es el de dotar a un robot con iniciativa para iniciar una conversación con el humano, enriqueciendo la naturalidad de la interacción humanorobot. Para ello, el robot será capaz de detectar cuándo un usuario requiere atención, y ası́ poder iniciar un proceso de interacción con él. En esta interacción podrán participar, además del robot y el humano, diferentes objetos del entorno que deberán ser reconocidos mediante técnicas de extracción de información. Se pretende dotar al robot de la capacidad de reconocer objetos por su forma y color en cualquier entorno de trabajo; posteriormente para la manipulación del objeto se le podrı́a indicar al robot a través de la comunicación oral. 1.2.1. Sub-objetivos Para poder alcanzar el objetivo global que se ha comentado anteriormente, es necesario alcanzar otros sub-objetivos. Dichos sub-objetivos son los siguientes: Estudiar las técnicas de procesamiento de imágenes de profundidad para el reconocimiento de poses. Explorar las diferentes técnicas de procesamiento de imágenes visuales que se complementan entre sı́, para poder realizar la extracción de caracterı́sticas a bajo nivel. Observar el comportamiento obtenido al utilizar los distintos modelos de color, y ası́, poder predecir el color de los diferentes objetos detectados en el entorno de la manera más eficiente posible. 1.2. OBJETIVOS 3 Profundizar en la utilización de diferentes descriptores de forma, con la finalidad de reconocer objetos especı́ficos. Capı́tulo 2 Estado del Arte En este capı́tulo, se introducirá al lector en las técnicas de extracción de información que se utilizan en visión artificial, ası́ como en los tipos de interacción que hay entre robot y humano. 2.1. Interacción Humano Robot La interacción humano-robot (HRI) se dedica al entendimiento, diseño y evaluación de sistemas robóticos para usarlos por o con humanos (Goodrich & Schultz [2007]). La HRI está influenciada por la proximidad a la que se encuentren, pudiendo clasificarla en: Interacción próxima Interacción remota La interacción próxima, se centra sobre los denominados robots asistentes o sociales, donde se incluyen aspectos de interacción social, emotiva y cognitiva (Goodrich & Schultz [2007]). Los tipos de comunicación que existen en esta interacción se pueden englobar en: oral, visual y gestual. Aunque la comunicación visual es la que más información puede suministrar a un robot. La interacción remota, se produce cuando el humano y el robot se encuentran separados temporal y espacialmente. Este tipo de interacción se centra en la teleoperación, supervisión de control y en la telemanipulación. 2.1.1. Interacción Mediante Órdenes La teleoperación se compone de un robot maestro manejado por un humano y un robot esclavo que interacciona con el entorno. El movimiento del esclavo debe ser predecible a partir de los movimientos del humano sobre el maestro. Entre el maestro 5 6 CAPÍTULO 2. ESTADO DEL ARTE y el esclavo se establece un algoritmo de control que permite al humano realizar las tareas con tanta destreza como si estuviera en el entorno (Aliaga [2000]). A la hora de desarrollar sistemas teleoperados, siempre hay que intentar mejorar la estabilidad y la transparencia. La estabilidad impide que el robot se comporte de forma descontrolada. Los principales problemas son el ruido eléctrico y los retrasos en la comunicación. El ruido eléctrico es un problema inherente, pero los retrasos se deben a la distancia que haya entre esclavo y maestro (Aliaga [2000]). La transparencia se fija fundamentalmente en las fuerzas que aparecen en el esclavo, que además, dichas fuerzas se reflejan en el maestro. Por este motivo surge la necesidad de una transparencia infinita, que consiste en que el humano sienta las fuerzas tal y como si estuviera en el entorno. Lo ideal es construir un sistema capaz de garantizar la estabilidad en la interacción con el entorno, a la vez de proporcionar una transparencia infinita y seguimiento perfecto. Pero esto en la realidad no se da, debido a que una mejora en la transparencia perjudica la estabilidad. En la figura 2.1 se puede ver un robot teleoperado. Figura 2.1: Ejemplo de sistema teleoperado Los trabajos Ruiz [2007], Sarasola [2007] y no˜Ortega & nez Villaluenga [2004] están relacionados con la teleoperación. 2.1.2. Interacción Mediante Voz Para que un robot sea capaz de interactuar con un usuario por medio del habla se tienen que dar tres etapas: Reconocimiento del habla: Etapa en la que se reconocen palabras y oraciones complejas. Descifrado de la orden: En esta etapa se utiliza un algoritmo que mapea la orden con una serie de instrucciones para el robot. 2.1. INTERACCIÓN HUMANO ROBOT 7 Ejecución de las instrucciones: Etapa donde el robot realiza las instrucciones descifradas en el paso anterior. Antes de que un sistema sea capaz de reconocer el habla, se tiene que producir un procesamiento de voz, el cual, se divide en: Identificación del locutor. Reconocimiento del habla. Sı́ntesis de voz. La identificación del locutor, se logra por medio de la información de las ondas que emite el sonido. Esta identificación se realiza por medio de dos módulos. El primer módulo se encarga de extraer las caracterı́sticas relevantes para identificar al hablante. El segundo módulo compara las caracterı́sticas anteriores para identificar a las personas conocidas por el sistema. Para identificar al locutor se utiliza el procesamiento espectral de corto tiempo, donde los fragmentos de poca duración se utilizan como muestras de caracterización. Los Mel-Frequency Cepstrum Coefficients (MFCC), se utilizan para llevar a cabo la caracterización utilizando filtros diferenciados de forma lineal en frecuencias bajas y diferenciados de forma algorı́tmica en frecuencias altas (López [2009]). MFCC imitan al procesamiento del oı́do humano. Hoy en dı́a se puede encontrar dos tipos de reconocimiento: Direct voice input (DVI) y Large vocabulary continuous speech recognition (LVCSR). DVI se utiliza para vocabularios relativamente pequeños, y como objetivo tiene que reconocer palabras o frases que son entregadas a otras aplicaciones. En cambio, LVCSR se utiliza para crear documentos a partir de frases extensas. Las técnicas más utilizadas para el reconocimiento del habla, son: la comparación de patrones y la identificación de fonemas. En la comparación de patrones, el problema que hay es la cantidad de muestras necesarias para tener un vocabulario amplio, ya que se hace un análisis espectral de muestras de voz para cada palabra del vocabulario. Mientras que el reconocer fonemas, simplifica mucho el reconocimiento del habla. Para medir la calidad de los sistemas que emplean esta interacción, se tiene en cuenta la precisión y la velocidad. Para la precisión se mide la tasa de error en las palabras identificadas, mientras que la velocidad depende de si se quiere un sistema en tiempo real o no López [2009]. Por último, la sı́ntesis de voz obtiene voz a partir de un texto o de una representación lingüı́stica de un texto. La sı́ntesis de voz, está formada por la traducción del texto a una representación lingüı́stica fonética y por la conversión de sonidos de la representación obtenida en el primer paso. La traducción de un texto a una representación fonética se divide en: 8 CAPÍTULO 2. ESTADO DEL ARTE Normalización del texto que consiste en cambiar partes problemáticas como números y abreviaturas por palabras equivalentes. Traducción de cada palabra del texto normalizado a su equivalente fonético. Creación de unidades prosónicas, como por ejemplo, oraciones. La complejidad en la sı́ntesis, se debe a sintetizar factores como la relación entre ortografı́a y la fonética. Mientras que la calidad es evaluada a partir de la inteligibilidad, que evalúa la comprensión de la voz sintetizada y de la naturalidad, que se refiere a la medida en que la voz sintetizada se parece a la voz humana. Los tipos de sı́ntesis que más se utilizan hoy en dı́a son: Sı́ntesis por concatenación: Utiliza segmentos de voz grabada para producir la voz deseada. Sı́ntesis de formantes: Utiliza un modelo acústico donde variables como la frecuencia fundamental de la onda, son modificados para crear el conjunto de sonidos de un lenguaje. Algunos de los trabajos realizados sobre esta forma de interactuar son los siguientes: F.Alonso & M.A.Salichs [2011], M.J.L.Boada et˜al. [2004], R.LópezCózar et˜al. [2004] y Cuesta et˜al. [2008]. 2.1.3. Interacción Mediante Gestos Otra forma de interacción que también ofrece una gran cantidad de información, es la que está basada en gestos. Antes de empezar a ver que técnicas se suelen utilizar, hay que hacer una definición de lo que es un gesto. “Un gesto es el movimiento de alguna parte del cuerpo, con la intención de transmitir información de forma consciente o inconscientemente, o también de querer interactuar con el entorno” (Henrı́quez [2007]). Los gestos que un humano puede realizar, se suelen utilizar para: Manipular objetos. Obtener y transmitir información por medio del tacto. Comunicación no verbal. Para poder realizar una comunicación más fiable, se deben realizar un seguimiento del movimiento del usuario, que como humano, puede realizar una gran cantidad de gestos con el cuerpo, e interpretarlos para detectar el gesto realizado. Como un humano puede realizar muchos gestos, éstos se deben restringir basándose únicamente en la 2.1. INTERACCIÓN HUMANO ROBOT 9 utilización de las expresiones faciales y de los gestos con las manos, obteniendo ası́ una gran cantidad de datos. La técnica más utilizada para realizar una comunicación más natural, a la hora de detectar gestos, es la visión por computador. Por otro lado, también se pueden utilizar dispositivos fı́sicos que detectan la posición y la orientación de las manos.Los inconvenientes de utilizar dispositivos fı́sicos son:(Henrı́quez [2007]) Alto coste. Procesos de calibración. Uso muy limitado (en laboratorio). La técnica más común para la localización de las manos (la mayorı́a de sistemas utilizan este tipo de interacción), es la segmentación por el color de la piel, ya que tarda menos tiempo en procesarla; pero también tiene el inconveniente de que puede confundir la mano con cualquier objeto que tenga un color similar. La forma más sencilla para relajar este problema, se da poniendo la mano como el único objeto con ese color, o bien, realizando una substracción del background siempre y cuando el fondo sea estático. Otra forma para detectar los gestos de la mano, se realiza mediante cámaras infrarrojas, calibradas a la temperatura del cuerpo; pero tiene dos grandes problemas: Alto coste económico. Produce los mismos errores que la técnica explicada anteriormente. Otro método, aunque no es demasiado fiable (procesamiento de un gran número de imágenes para obtener buenos resultados), serı́a aplicar las técnicas utilizadas para la detección de objetos, ya que se da una identificación en tiempo real. Una vez explicadas las técnicas que se pueden utilizar para la detección de gestos, principalmente los de la mano, el siguiente paso es reconocer el gesto realizado. En la actualidad los gestos se dividen en: Dinámicos: Se utiliza una variable temporal, es decir, una variable de movimiento. Estáticos: Posición de la mano sin asumir movimiento, pero si se produce movimiento, no se utiliza ninguna variable temporal. Para la detección de gestos estáticos, teniendo en cuenta la sencillez y las restricciones temporales (para que funcionen en tiempo real), se suele hacer uso de histogramas de orientación o histogramas de contorno de puntos. 10 CAPÍTULO 2. ESTADO DEL ARTE En los histogramas de orientación, se calculan los bordes de la mano para obtener la orientación de cada punto, para luego comparar el histograma obtenido con el diccionario de gestos por medio de la distancia euclı́dea. El que menor distancia obtenga será el gesto identificado. El problema que presenta esta técnica, es que clasifica con la misma clase elementos diferentes. El uso de otros histogramas como los de contorno, mejoran a éste, pero siguen apareciendo errores en la clasificación. Los histogramas de contorno se calculan considerando cada par de puntos de los bordes del contorno. El ángulo que se da entre los bordes, y la distancia entre dichos puntos se calcula para cada par de puntos. El ángulo que se obtiene, define qué fila del histograma modifica su valor en relación a la distancia máxima y mı́nima calculada previamente. Otra técnica consiste en muestrear la silueta de la mano, para pasar los puntos obtenidos al espacio de frecuencia por medio de las transformadas de Fourier (Garcı́a [2008]). Los descriptores (puntos pasados al espacio de frecuencia), son casi invariantes a las translaciones, escalados y rotaciones. El problema es el coste computacional y que los gestos puede ser que no queden lo suficientemente definidos por su contorno. Para los gestos dinámicos se utilizan las mismas técnicas que para los estáticos, ya que un gesto dinámico es un gesto estático que cambia durante el tiempo. La diferencia, es que utilizan algoritmos que contienen una variable que representa al tiempo. En la figura 2.2 se puede ver un ejemplo de esta interacción. Figura 2.2: Sistema que funciona con detección de gestos Algunos de los trabajos más reconocidos sobre la detección de gestos, son los realizados por Waldherr et˜al. [2000], Pavlovic et˜al. [1997] y Henrı́quez [2007], en los que se incluyen algunas de las técnicas mencionadas con anterioridad. 2.2. Atención Visual En la actualidad, la atención se divide en atención local y global (en inglés covert and overt attention), donde la local selecciona objetos de interés que se encuentran en la ROI (región de interés) y la global selecciona objetos más allá de la ROI. 2.2. ATENCIÓN VISUAL 11 En la mayorı́a de los trabajos, el foco de atención se dirige a la atención basada en el espacio, pero muchas otras investigaciones apuntan a que el foco de atención también está basado en los objetos. La atención basada en el espacio, mantiene que la atención está asignada a una región del espacio, que procesa todo lo que se encuentra en el punto de mira. Sin embargo, la atención basada en los objetos, está dirigida a un objeto o grupo de objetos para procesar cualquier propiedad de los objetos que se hayan seleccionado en vez de regiones del espacio (Sun & Fisher [2002]). La principal diferencia entre ellos, es que utilizan métodos diferentes para construir mapas de caracterı́sticas a bajo nivel y para modelar mecanismos de control para los movimientos de atención. Koch e Itti (Itti & Koch [2001]), crearon un modelo más sofisticado denominado atención espacial basada en la prioridad. El mapa de prioridad, se utiliza para codificar y combinar información sobre cada saliente o punto visible en una imagen o escena, para evaluar cómo de diferente es un lugar determinado de su entorno. Normalmente una escena suele estar sobrecargada, los objetos pueden estar solapados o compartir alguna propiedad común; por lo que es necesario trabajar sobre varias regiones espaciales discontinuas al mismo tiempo. En este caso, la mejor opción es implementar un sistema que mezcle la atención basada en objetos y la basada en espacio. La basada en objetos tiene unas ventajas que la espacial no tiene: Búsqueda visual más eficiente en velocidad y acierto. Selección jerárquica natural. Menor posibilidad de elegir zonas vacı́as o sin sentido. En la actualidad existen dos técnicas para capturar información para la atención visual, estas son: Bottom-up: Se basa en incluir información de caracterı́sticas básicas tales como color, orientación, movimiento, profundidad e incluso conjunciones de caracterı́sticas como objetos en el espacio 2D y 3D. Las caracterı́sticas salientes visualmente en su mayorı́a se utilizan para llamar la atención. Top-Down: Cuando la atención se focaliza o apunta a indicaciones avanzadas, es necesario saber cómo se controla la atención de la información relevante a los conocimientos visuales actuales. Se suelen implementar ambas técnicas en sistemas de atención visual. La figura 2.3 muestra un esquema de como un sistema captura información con ambas técnicas. 12 CAPÍTULO 2. ESTADO DEL ARTE Figura 2.3: Componentes básicos de una búsqueda guiada (Frintrop et˜al. [2010]) 2.3. Procesamiento de Imágenes visuales Una imagen se puede definir como: “La proyección de una escena 3D sobre una superficie 2D, donde la superficie 2D, representa el color del punto 3D que se proyecta sobre cada punto” (Baumela & J.M.Buenaposada [2006]). El procesamiento de una imagen tiene como objetivo obtener otra imagen de mayor claridad para facilitar y simplificar etapas posteriores. El objetivo no es extraer información de la imagen, sino actuar sobre los niveles de gris para eliminar efectos espurios y ruido, además de compensar los defectos de iluminación. 2.3.1. Detección de Bordes Un borde en una imagen se puede definir, como una transición entre dos regiones de niveles de gris significativamente distintas. Los bordes obtienen información sobre las fronteras de los objetos que se utiliza para segmentación, reconocimiento de objetos, . . . (Jiménez [1999]). La figura 2.4 representa a lo que se conoce como borde ideal, donde se aprecia una variación significativa en los niveles de gris. 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 13 Figura 2.4: Modelo unidimensional y continuo de un borde ideal De la figura 2.4 se puede averiguar: La variación de intensidad H = B − A. El ángulo de inclinación de la rampa α. La coordenada horizontal X0 . Es el punto central de la rampa. Pero en la realidad no se obtendrá este modelo debido a que la imágenes utilizadas: Son discretas. Contienen ruido diverso. Los bordes tienen un origen muy diverso (bordes de oclusión, distinta textura, distintas propiedades reflectantes, efectos de iluminación,. . . ). A la hora de detectar bordes suelen aparecer los errores siguientes: Error en la detección: Un operador es un buen detector, si la probabilidad de detectar un borde es alta cuando este existe y baja cuando no existe. Error en la localización: Un operador localiza bien un borde, cuando la posición que proporciona coincide con la posición real del borde en la imagen. Respuesta múltiple: Varios pı́xeles son detectados en un único borde. Hoy en dı́a, los operadores más utilizados son los que están basados en la primera derivada (Gradiente)(Jiménez [1999]), en la segunda derivada (Laplaciana)(Jiménez [1999]) y en Canny (Rebaza [2007]). Gradiente Para las funciones bidimensionales f (x, y), la derivada es un vector que apunta en la dirección de máxima variación de f (x, y) y cuyo módulo es proporcional a dicha variación. A esto se le denomina gradiente. Por tanto, el gradiente indica la dirección donde un punto del espacio cambiará más rápidamente. Al ser un vector normal, implica 14 CAPÍTULO 2. ESTADO DEL ARTE que será perpendicular a la curva en el punto que se esté estudiando, dicho de otra manera, es perpendicular al contorno. Las ecuaciones 2.1, 2.2 y 2.3 hacen referencia al gradiente, al módulo y a la dirección respectivamente de un pı́xel. Para señales continuas f (x), la localización exacta de un borde viene dada por el punto de inflexión de f (x), es decir, por el punto X0 que es el máximo de la función f ′ (x). ∇f (x, y) = " ∂f (x,y) ∂x ∂f (x,y) ∂y # = " fx (x, y) fy (x, y) # (2.1) q ∇f (x, y) = (fx (x, y))2 + (fy (x, y))2 α(x, y) = arctan fy (x, y) fx (x, y) (2.2) ! (2.3) fx (x, y) y fy (x, y) representan al gradiente de fila y de columna respectivamente. Para reducir el coste computacional se suele utilizar: fx (x, y) ≈ GF (i, j) = F (i, j) ⊗ HF (i, j) (2.4) fy (x, y) ≈ GC (i, j) = F (i, j) ⊗ HC (i, j) (2.5) Donde HF (i, j) y HC (i, j), son las respuestas impulsionales del gradiente de la fila y columna respectivamente. Se emplean matrices 3x3, pero, dependiendo de si el operador utilizado es el de Roberts, Prewitt, Sobel o Frei-Chen (Jiménez [1999]), tendrán una estructura u otra. La más utilizada es la de Sobel, debido a que los valores de los coeficientes hacen que las operaciones aritméticas se puedan implementar fácilmente en el hardware. El tamaño del operador es determinante para la localización y detección de los bordes, como regla general un operador pequeño es más sensible al ruido, por lo que detectará bordes que en realidad no existen, pero la localización es más precisa. En cambio, si se utiliza un tamaño grande, la localización es menos precisa pero la sensibilidad al ruido disminuye, por lo que mejora la detección. Los problemas de utilizar máscaras grandes, son que el suavizado de la imagen implica la atenuación y enturbiamiento de los bordes, lo que implica una peor localización y el alto coste computacional de O(N 2 ), frente al O(N) de los operadores pequeños. Las máscaras que se muestran a continuación, son las utilizadas por Sobel. 1 0 -1 1 4 2 0 -2 1 0 -1 Figura 2.5: HF (i, j) -1 -2 -1 1 4 0 0 0 1 2 1 Figura 2.6: HC (i, j) 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 15 El pı́xel evaluado es el que se encuentra en el centro de la máscara y para realizar la evaluación se tienen en cuenta a los pı́xeles que lo rodean. Reduciendo el coste computacional de la ecuación 2.2 se obtiene: ∇f (x, y) ≈ G(i, j) ≈ GF (i, j) + GC (i, j) (2.6) Una vez que se obtiene el módulo del gradiente (ecuación 2.6) en cada pı́xel, se aplica la operación de umbralización, que es la que decide si el pı́xel pertenece o no a un borde de la imagen. Un umbral pequeño detectarı́a como borde fluctuaciones debidas al ruido y obtendrı́a múltiples respuestas, si por el contrario es elevado, no detectarı́a muchos de los bordes. Laplaciana Este operador afirma que siempre que se presente un cambio de intensidad a lo largo de una dirección, existirá un máximo en la primera derivada a lo largo de dicha dirección y un paso por cero en la segunda derivada. La dirección de interés será la ortogonal a la orientación local de los cruces por cero (Jiménez [1999]). La función f (x, y) en el dominio continuo, se define como se puede observar en la ecuación 2.7: ∇2 f (x, y) = ∂ 2 f (x, y) ∂ 2 f (x, y) + ∂x2 ∂y 2 (2.7) La Laplaciana vale cero si f (x, y) es constante o cambia linealmente su amplitud. El cambio de signo indica que en ese punto existe un borde. La Laplaciana al contrario que el gradiente no es un vector. La aproximación discreta se muestra en la ecuación 2.8: L F (i, j) = F (i, j) ⊗ H(i, j) (2.8) Donde H(i, j) es de 4 vecinos que se normaliza para tener una ganancia unidad sobre los pı́xeles de pesos positivo y negativos. H(i, j) se muestra en la tabla 2.7. 1 4 0 -1 0 -1 4 -1 0 -1 0 Figura 2.7: H(i, j) En las imágenes discretas, es muy poco probable que el paso por cero coincida en un pı́xel de la imagen, por lo que, el borde se marca en el pı́xel cuyo nivel de gris sea más próximo a cero, teniendo como vecino a un pı́xel con nivel de gris de signo contrario. A continuación, se resumen las caracterı́sticas de la Laplaciana: 16 CAPÍTULO 2. ESTADO DEL ARTE Pobre detección de bordes ya que la segunda derivada es muy sensible al ruido. Es necesario suavizar la imagen antes. Si los bordes cumplen ciertas condiciones de suavidad, los cruces por cero son curvas cerradas. Bordes con espesor de un pı́xel. Canny El método de detección de bordes definido por Canny (Rebaza [2007]) se basa en tres criterios: Detección: Evita eliminar bordes importantes y no suministrar falsos bordes. Localización: La distancia entre la posición localizada y la real del borde debe minimizarse. Respuesta: Integra múltiples respuestas correspondientes a un único borde. El algoritmo de Canny se basa en la primera derivada para detectar bordes, lo que implica que el algoritmo se divida en tres etapas, que son: Obtención del gradiente para calcular la magnitud y la dirección en cada pı́xel. Primero se aplica un suavizado para reducir el ruido, el cual, se obtiene promediando los valores de intensidad de los pı́xeles en el entorno de vecindad con una máscara de convolución de media cero y desviación estándar σ. Luego se calcula la magnitud y la dirección de cada pı́xel obteniendo dos imágenes. Supresión no máxima, consigue que la anchura de los bordes detectados sea de un pı́xel (Rebaza [2007]). Las dos imágenes obtenidas en el primer paso, se utilizan como entrada para generar la imagen con los bordes adelgazados. Para ello, se consideran cuatro direcciones identificadas por las orientaciones en el eje x ( las orientaciones son 0◦ , 45◦ , 90◦ y 135◦ ). En cada pı́xel la dirección se aproxima a la dirección del ángulo de gradiente. Una vez hecho esto, si la magnitud del gradiente es más pequeña que al menos dos de sus vecinos en la dirección del ángulo, ese pı́xel tendrá valor cero, sino, tendrá el valor de la magnitud del gradiente. Al final se obtiene una imagen con los bordes adelgazados. Histéresis del umbral reduce la aparición de falsos bordes (Rebaza [2007]). Debido al ruido la imagen obtenida en el paso anterior presenta máximos locales, y que para eliminarlos se utiliza la histéresis del umbral. Esto consiste en tomar los 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 17 puntos pertenecientes a un borde y tomar dos umbrales, donde el primero es menor que el segundo. Para cada pı́xel, se localiza el siguiente pı́xel de borde no explorado mayor al segundo umbral, y a partir de ahı́, se siguen las cadenas de máximos locales conectados a las direcciones perpendiculares a la normal del borde, siempre que sean mayores al primer umbral. Por último, se realiza el cierre de los contornos que han podido quedar abiertos. Para ello se suele utilizar el algoritmo de Deriche y Cocquerez (Herrera et˜al. [2004]), que de entrada utiliza una imagen binaria con contornos y un pı́xel de ancho. El algoritmo busca los extremos de contornos abiertos siguiendo el máximo gradiente hasta cerrarlos con el otro extremo. Para cada pı́xel, busca un patrón que delimita la continuidad del contorno en tres direcciones, esto se logra utilizando una máscara de convolución en cada pı́xel. Cuando alguno de los tres puntos es un pı́xel de borde, se entiende que el contorno se ha cerrado, en otro caso, el pı́xel con máximo gradiente se elige como pı́xel de borde. Esto se repite hasta que el extremo abierto encuentre su cierre o hasta un número determinado de interacciones. La figura 2.8 muestra el resultado de aplicar Canny. Figura 2.8: Bordes detectados por Canny 2.3.2. Segmentación Es el proceso más importante en la visión por computador, ya que extrae objetos de la imagen para su posterior descripción y reconocimiento. Por tanto, la segmentación es el proceso que divide una imagen en regiones u objetos cuyos pı́xeles tienen atributos similares (Jiménez [1999]), como por ejemplo niveles de gris, textura, . . . . La segmentación se divide en tres grupos: técnicas de detección de la frontera. técnicas de umbralización. técnicas basadas en el agrupamiento de pı́xeles. Los dos últimos grupos enfocan la segmentación como un problema de clasificación de pı́xeles, donde, los pı́xeles de la misma región son similares y los pı́xeles de regiones distintas son no-similares. La similitud de los pı́xeles se suelen basar en el nivel de gris, textura, proximidad, posición en la imagen, . . . . 18 CAPÍTULO 2. ESTADO DEL ARTE La técnica basada en la frontera aisla los objetos del resto de la imagen, identificando los pı́xeles que forman la frontera, por tanto proporciona la forma del objeto. En la figura 2.9 se puede observar un ejemplo de segmentación por color. Figura 2.9: Segmentación por color Técnicas de detección de la frontera Consiste en localizar los lugares donde se produce un cambio significativo de los niveles de intensidad de los pı́xeles, es decir, se basa en la detección de bordes. Si se utiliza el operador de la primera derivada, el gradiente rara vez define la frontera completa debido al ruido y la iluminación uniforme entre otros. Si se utiliza la segunda derivada la obtención de los cruces por cero obtienen contornos cerrados, definiendo completamente la frontera de los objetos. En caso de utilizar la primera derivada para unir los bordes se suele emplear el seguimiento del contorno o la transformada de Hough J.C.Garay et˜al. [2009]. Seguimiento del contorno Se va extendiendo la frontera en la dirección perpendicular al gradiente con pı́xeles vecinos que tengan un gradiente similar. La parte más crı́tica es la de seleccionar el primer punto, el cual, se calcula teniendo en cuenta el vector gradiente como información a priori. El contorno se sigue en los sentidos +90 y −90 grados del vector gradiente, dado que el contorno no tiene por qué ser una curva cerrada. Este proceso incluye los siguientes procedimientos complementarios: Seguimiento del borde: Los pı́xeles candidatos son los vecinos del último pı́xel incorporado. De entre los vecinos se selecciona el que tenga mayor gradiente, siempre y cuando la similitud entre el pı́xel actual y el candidato estén por debajo 19 2.3. PROCESAMIENTO DE IMÁGENES VISUALES de los umbrales establecidos. Los umbrales establecidos serán para la diferencia de magnitud (ecuación 2.9) y para la diferencia de ángulo (ecuación 2.10). G f (x, y) − G f (x′ , y ′) < T (2.9) α(x, y) − α(x′ , y ′) < A (2.10) Ası́, se evita seguir contornos en zonas ruidosas caracterizadas por frecuentes cambios en la magnitud y/o en la dirección del gradiente. Salto y búsqueda de nuevos pı́xeles de comienzo: Si no se ha encontrado ningún vecino que cumpla lo anterior, los nuevos pı́xeles se buscarán a lo largo de la frontera. Primero se deja un hueco de un pı́xel en la dirección del borde, si tampoco se encuentran pı́xeles, se puede dejar un hueco de dos o más pı́xeles. Cuando se encuentre un pı́xel de la frontera que cumpla las condiciones anteriores, los pı́xeles del hueco en la dirección del borde se incorporarán y se continua el seguimiento. Si la búsqueda falla, se reinicia el seguimiento en la otra dirección del borde. La búsqueda finalizará cuando no se incorporen más pı́xeles en la frontera o cuando se reencuentre el punto de partida. El inconveniente es la debilidad en el seguimiento de esquinas donde el gradiente varı́a bruscamente. Transformada de Hough Detecta curvas en una imagen, pero en principio se requiere que la curva se especifique por una expresión analı́tica. La ventaja es la robustez al ruido y a la existencia de huecos en la frontera. Para aplicar Hough (J.C.Garay et˜al. [2009]) hay que binarizar la imagen, para luego obtener el gradiente y aplicar un umbral de corte. El objetivo es encontrar los conjuntos de puntos alineados existentes en la imagen, es decir, encontrar los puntos que satisfagan la ecuación 3.5 para los distintos valores de a y b. En una recta los parámetros a y b son constantes, donde (x,y) son las variables. y = ax + b (2.11) Los parámetros de la recta no se conocen, en cambio, sı́ se conocen las coordenadas en uno o varios puntos. Los parámetros se consideran variables y las coordenadas son constantes. En el plano de parámetros cada punto (x,y) del plano imagen se convierte en una recta de pendiente −x y de ordenada en el origen y, que representa el lugar geométrico de todas las rectas que pasan por el punto (x,y) en el plano imagen. 20 CAPÍTULO 2. ESTADO DEL ARTE La intersección en el plano de parámetros de dos rectas (xi , yi ) y (xj , yj ) forma el par (a’,b’), correspondiente a la recta que pasa por los puntos (xi , yi ) y (xj , yj ) en el plano imagen, esto se muestra el la figura 2.10. Figura 2.10: Paso del plano imagen al plano de parámetros El plano de parámetros se discretiza en una serie de celdas, sobre los intervalos (amin , amax ) y (bmin , bmax ), lo que se denomina acumulador. Hay que evaluar la ecuación 2.12 para cada punto (xk , yk ) de la imagen y cada valor de a en el intervalo (amin , amax ). b = −axi + yi (2.12) Si al tomar ai se obtiene bj , se incrementa en uno el número de votos de la celda A(i,j). El número de votos que haya en cada celda indica los puntos que satisfacen la ecuación de la recta, y por tanto, las celdas con más votos forman el conjunto de rectas detectadas. El inconveniente de utilizar la ecuación 3.5 para representar a una recta, es que la pendiente y la ordenada en el origen tienden a infinito, conforme la recta se acerca a posiciones verticales, por lo que se utiliza la normal de una recta, obtenida por la ecuación: x cos θ + y sen θ = t (2.13) Donde t es la distancia de la recta al origen y θ el ángulo de la normal con el eje x. La diferencia en el acumulador es que da lugar a M curvas sinusoidales (que pertenecen a M puntos colineales pertenecientes a la recta 2.13) que se cortarán en el espacio de parámetros en el punto (θj , tj ). En la figura 2.11 se puede observar el resultado de detectar las rectas mediante la transformada de Hough. 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 21 Figura 2.11: Rectas detectadas por hough Técnicas de umbralización Esta técnica actúa sobre las imágenes binarias con el fin de tener un fondo oscuro y un objeto (o varios) claro, para poder extraer el objeto de la imagen seleccionando un umbral de intensidad T . Los pı́xeles pertenecientes al objeto, serán aquellos que sean mayores que el umbral establecido, es decir, cualquier punto (x, y) que cumpla f (x, y) > T es un punto del objeto, en cambio si f (x, y) ≤ T el punto pertenece al fondo, esto queda reflejado en la figura 2.12. Figura 2.12: Histograma dividido por el umbral T Una operación de umbralización puede verse como una comparación con una función de la forma: T = T [x, y, p(x, y), f (x, y)] . f (x, y) es el nivel de gris en el punto (x, y), y p(x, y) es alguna propiedad local del punto. La imagen umbralizada g(x,y) se obtiene como: 1 si f (x, y) > T g(x, y) = 0 si f (x, y) ≤ T Si T depende solamente de f (x, y) el umbral será global, si T depende de f (x, y)yp(x, y) será local y si sólo depende de las coordenadas x e y será dinámico. Umbralización global Se utiliza para segmentar imágenes con contraste alto e iluminación uniforme. Las imágenes son creadas con retro iluminación o luz estructurada. Es el método más 22 CAPÍTULO 2. ESTADO DEL ARTE sencillo pero también el más sensible a los cambios de luminosidad. Para n segmentos (objetos) se establecen (n − 1) umbrales. Tglobal (g) = 0 1 .. . n si g < t1 si t1 ≤ g < t2 .. . (2.14) sig ≥ tn−1 Umbralización local La imagen se divide en varias regiones Ri , y en cada región se establece un umbral ti . Es menos sensible a los cambios de luminosidad, pero pueden aparecer desniveles entre las fronteras de las regiones. 0 si g(x, y) < t i Tlocal (x, y) = ∀(x, y) ∈ Ri 1 si g(x, y) ≥ t i (2.15) Umbralización dinámica A cada pı́xel se le asigna un vecindario de tamaño N, al que se le asigna un umbral adecuado t(N). Es la técnica más estable a los cambios de luminosidad localizados, pero la potencia de calculo se incrementa demasiado, debido a que a cada pı́xel se le debe asignar un nuevo umbral. 0 si g(x, y) < t(N(x, y)) Tdinamica (x, y) = 1 si g(x, y) ≥ t(N(x, y)) (2.16) Lo más importante en la segmentación por umbralización es encontrar un umbral óptimo. Para localizar el umbral se utilizan procedimientos paramétricos y no paramétricos. En los paramétricos la distribución de los niveles de gris de una clase objeto ayuda a encontrar el umbral. En cambio, en los no paramétricos los umbrales son obtenidos de acuerdo a algún criterio. Hay varios métodos para encontrar el umbral óptimo, pero la mayorı́a no obtiene buenos resultados sobre imágenes del mundo real debido al ruido, a la iluminación o a los histogramas planos. El que mejor resultados obtiene y se hace de manera automática es el método de Otsu (Artificial [2005]), el cuál, calcula el umbral de manera que la dispersión dentro de cada segmento sea lo más pequeña posible, pero la máxima posible entre segmentos. Para ello se calcula el cociente entre las varianzas y se busca el umbral para que el cociente sea máximo. 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 23 Técnicas basadas en regiones El principal objetivo es detectar regiones de interés en la imagen. Para la creación de las regiones, se tiene en cuenta que los pı́xeles que pertenecen a una determinada región tienen caracterı́sticas similares. Esta técnica de segmentación cumple los siguientes objetivos: La unión de todas las regiones obtenidas forman la imagen completa. Los puntos de una región están conectados. Las regiones son disjuntas. Los pı́xeles de una región satisfacen determinadas propiedades. Las propiedades satisfechas por los pı́xeles de una región, no son satisfechas por los pı́xeles de otra región. Dentro de esta técnica, para crear regiones se utiliza el crecimiento de regiones añadiendo pı́xeles o la división y fusión de regiones. Crecimiento de regiones añadiendo pı́xeles Se parte de un conjunto de semillas a las que se les van añadiendo pı́xeles vecinos con propiedades similares. A veces establecer una semilla no es suficiente, por lo que, se escoge una región pequeña a partir de la semilla y se opera con criterios de valores numéricos promedio. Si se usan n semillas, se podrá obtener una segmentación con un máximo de n regiones más el fondo. Las ventajas son: Facilidad de uso, por no tener parámetros. Se puede implementar en cualquier sistema de coordenadas de cualquier dimensión. Mientras que las desventajas son: La selección de la semilla. La elección de las propiedades para incluir los pı́xeles en regiones. Las más utilizadas son la textura, el nivel de gris y el nivel de gris más localización. 24 CAPÍTULO 2. ESTADO DEL ARTE División y fusión de regiones Se basa en ir dividiendo la región de estudio en cuatro subregiones, siempre y cuando la región de estudio no cumpla los criterios de permanencia. En tal caso, se vuelve a aplicar el mismo proceso recursivo hasta que las cuatro subregiones pertenezcan a la misma región. Pero esta parada puede llegar cuando se esté analizando un único pı́xel, por esto surge la restricción de una imagen cuadrada potencia de dos. Se genera un árbol implı́cito en el que cada nodo tiene ningún o cuatro hijos. Si solo se divide, se puede llegar a incumplir, que regiones distintas cumplan propiedades distintas (último objetivo de este tipo de segmentación), por lo que es necesario fusionar. Dos cuadrantes se fusionarán si cumplen las mismas caracterı́sticas. La principal ventaja es la ausencia de parámetros y la velocidad de computación, mientras que el mayor inconveniente es determinar regiones utilizando únicamente criterios de permanencia. En la figura 2.13 se puede observar como funciona la división y fusión de regiones. Figura 2.13: Ejemplo de división y fusión de regiones 2.3.3. Suavizado Tiene como objetivo reducir el ruido y los efectos espurios de las imágenes producidos por la digitalización, proceso de captura y transmisión. Se suele realizar en el dominio de frecuencias mediante un filtro de paso-bajo. En la visión por computador los filtrados se suelen realizar en el dominio espacial, debido al alto coste computacional de la transformada de Fourier (Garcı́a [2008]). Las técnicas más conocidas son: el promediado del entorno de vecindad, filtro gaussiano, promediado de imágenes y el filtrado de la mediana. Promediado del entorno Se tiene en cuenta el nivel de gris de los pı́xeles vecinos del pı́xel que se está estudiando. Las diferentes técnicas que se utilizan en este apartado se diferencian en la forma de escoger los vecinos y en la ponderación aplicada sobre cada uno de ellos. La caracterı́stica principal es la utilización de una máscara para realizar una convolución. El principal inconveniente es el enturbiamiento de la imagen, el cual, provoca el difuminado de los bordes. Estos filtros se clasifican en: 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 25 Filtros paso-bajo: Eliminan el ruido contenido en las frecuencias altas. La principal desventaja es que la respuesta impulsional es infinita. Filtros de respuesta impulsional finita: Actúan sobre una extensión infinita de frecuencias. Filtros que combinan las técnicas mencionadas: Existe un compromiso de actuación de dominio de frecuencia y espacial. Esto se determina por la ecuación 2.17, llamada parámetro de incertidumbre, donde Ω y X son la extensión del dominio de frecuencias y espacial, respectivamente. Este parámetro está acotado inferiormente △∪ ≥ 1/2 .Cuanto más próximo sea a 1/2 más óptimo será. △∪ = ΩX (2.17) Dentro del promediado del entorno destacan la media simple y el promediado selectivo y ponderado. Media simple Dada una imagen f (i, j) se genera una imagen nueva g(i, j), donde la intensidad para cada pı́xel se consigue promediando los valores de intensidad de los pı́xeles de f (i, j) incluidos en un entorno de vecindad. Esto se refleja de forma matemática en la ecuación 2.18. g(i, j) = 1/p X f (m, n) (2.18) (m,n)∈S Donde S es un subconjunto de x pı́xeles dentro del entorno de (i, j). Cuanto mayor sea la máscara, mayor reducción de ruido y mayor enturbamiento en los bordes. El enturbamiento se puede reducir, si no se cambian las regiones donde hay una gran variación del nivel de gris (ecuación 2.19). T es un umbral positivo. El principal problema es que no actúa sobre los datos espurios. P 1/p P (m,n) f (m, n) si f (x, y) − 1/p (m,n) f (m, n) < T g(x, y) = f (x, y) en otro caso (2.19) En la figura 2.14 se puede observar el resultado de aplicar la media simple con máscaras de 3x3 y 9x9 respectivamente. 26 CAPÍTULO 2. ESTADO DEL ARTE Figura 2.14: Resultado de aplicar el suavizado de la media simple Promedio selectivo y ponderado Para evitar el difuminado o enturbamiento de bordes, esquinas, lı́neas y puntos de interés, se debe tener en cuenta determinados pı́xeles. Para ello se puede añadir un detector de bordes y promediar en los pı́xeles que no se hayan detectado. Otra forma serı́a promediar con los pı́xeles que están en la dirección del borde. El inconveniente es el alto coste computacional. Otro modo serı́a decidir qué pı́xeles entran en el vecindario. Por ejemplo, se selecciona un pı́xel X y se crea un vecindario entorno a este pı́xel y este se puede dividir en otros subvecindarios, formando una máscara por cada subvecindario. Luego se mide la variación de gris de cada subvecindario y se reemplaza el pı́xel X por el promedio del subvecindario más próximo. El promedio ponderado también evita la difuminación de las caracterı́sticas de interés, pero realiza una ponderación con distintos pesos para cada pı́xel. Por lo demás es similar al selectivo. Filtro de Gauss Calcula el valor de cada punto como el resultado de promediar con distintos pesos los vecinos que tiene a ambos lados. En este método es de gran importancia el valor de σ para controlar el suavizado, cuanto mayor sea el valor, mayor suavizado, ya que se tiene en cuenta vecinos más lejanos y viceversa. El valor de los pesos en la máscara será mayor cuanto más se aproxime a la media, que es el pı́xel analizado (punto central). La ecuación encargada de esto es 2.20. gσ (x, y) = 2 1 −1/2( x2 +y ) σ2 e 2 2πσ (2.20) 2.3. PROCESAMIENTO DE IMÁGENES VISUALES Para una imagen discreta la ecuación es: 2 1 X X −1/2( x2 +y ) σ2 e F (i, j) = f (i + k, j + l) 2πσ 2 k l 27 (2.21) La ecuación 2.21, se traduce como la convolución de una imagen con la máscara cuyo tamaño lo indica σ. A la medida que aumenta σ, el número de puntos más alejados de la media aumentan y no tienen que ser despreciados. El filtro gaussiano se aplica en dos partes, donde la primera realiza una convolución por filas y la segunda por columnas, con esto se consigue reducir el orden de complejidad de N 2 a 2N. Esto esta reflejado en la ecuación 2.22 1 −1/2( x )2 1 −1/2( y )2 σ σ e e gσ (x, y) = 2πσ 2 2πσ 2 (2.22) La figura 2.15 muestra un ejemplo de este tipo de suavizado. Figura 2.15: Filtro gaussiano Promediado de imágenes Este filtro promedia pı́xeles de distintas imágenes de una misma escena, donde la diferencia entre las imágenes radica en el ruido. Una imagen real se puede considerar como la suma de una imagen ideal con ruido, donde el ruido se supone blanco, es decir, tiene media cero y una matriz de covarianzas diagonal (ruido no correlado). Esto se representa en la ecuación 2.23, donde f (x, y) es la imagen ideal y η(x, y) es el ruido asociado a la imagen. g(x, y) = f (x, y) + η(x, y) (2.23) Como esta técnica calcula el promedio de M imágenes, se obtiene como resultado la ecuación 2.24 ḡ(x, y) = 1/M M X i=1 gi (x, y) (2.24) 28 CAPÍTULO 2. ESTADO DEL ARTE Además, esta técnica tiene que verificar las ecuaciones 2.25 y 2.26, donde la imagen promedio de las M imágenes ruidosas reduce el ruido inherente a las imágenes reales. Cuanto mayor sea M, mayor será la disminución del ruido. El inconveniente es que desdibuja los contornos y otros detalles de la imagen. Esta técnica se aplica en escenas invariantes. E[ḡ(x, y)] = f (x, y) X ḡ(x, y) = 1/M X η(x, y) (2.25) (2.26) En la figura 2.16 se muestra como funciona el promediado de imágenes. Figura 2.16: Resultado de aplicar el suavizado promediado Filtro de la mediana Es un método no-lineal, es decir, no utiliza máscaras de convolución para reducir el ruido. Esta técnica reduce el ruido reemplazando el nivel de gris para cada pı́xel, utilizando la mediana de los niveles de gris de los vecinos. La mediana de una secuencia {a1 , a2 , . . . , aN } es el elemento a(N −1)/2 . Su comportamiento es mejor que el del promediado del entorno, para eliminar efectos espurios y para preservar los bordes, el inconveniente es que pierde detalles finos como lı́neas delgadas, puntos aislados, redondea esquinas y desplaza los bordes. Pero el principal problema es el coste computacional. Para reducirlo, sólo el bit más significativo de los pı́xeles que pertenecen a la ventana analizada es el más relevante para calcular la mediana de los niveles de gris. Ası́, el número de operaciones es del orden del número de bits que se usan para las intensidades de los pı́xeles, que son 8. Otro método utilizado es el filtro de la pseudo-mediana (Jiménez [1999]), donde halla mı́nimos o máximos de subsecuencias y posteriormente halla el máximo o mı́nimo de los mı́nimos o máximos obtenidos. El principal problema es que no suele dar la mediana verdadera. El resultado de aplicar el filtro de la mediana se puede ver en la figura 2.17. 29 2.3. PROCESAMIENTO DE IMÁGENES VISUALES Figura 2.17: Resultado de aplicar el filtro de la mediana 2.3.4. Técnicas morfológicas La morfologı́a matemática se basa en la teorı́a de conjuntos y en la topologı́a, donde cada conjunto representa la forma de los objetos presentes en una imagen binaria. Cualquier transformación sobre un conjunto forma una nueva imagen utilizando la correspondencia entre operadores lógicos básicos y operaciones básicas sobre conjuntos. El objetivo de estas transformaciones es la extracción de formas geométricas en los conjuntos sobre los que se opera, con la ayuda de otro conjunto denominado elemento estructurante (EE). El tamaño y la forma del EE se eligen según la morfologı́a del conjunto sobre el que se va a aplicar y según la forma que se desee obtener. Al desplazar el EE sobre una imagen, el operador analiza su posición en relación al primer plano y fondo de la misma. Las aplicaciones básicas son erosión, dilatación apertura y cierre. Erosión Es el resultado de comprobar si el EE está totalmente incluido dentro del conjunto X. Cuando el EE no está totalmente incluido en el conjunto, el resultado es el conjunto vacı́o. Se puede definir como el conjunto de puntos o elementos x, que pertenecen a X, de forma que cuando el EE se traslada a ese punto, el elemento queda fuera de X. Esto se refleja en la ecuación 2.27. X ⊖ B = {p ∈ E 2 | p + b ∈ X, ∀b ∈ B} En la figura 2.18 se muestra un ejemplo de aplicar dicha técnica. Figura 2.18: Resultado de aplicar la erosión sobre una imagen (2.27) 30 CAPÍTULO 2. ESTADO DEL ARTE La erosión se utiliza para eliminar partes finas de objetos, simplificación de formas y para dividir en subobjetos. Dilatación Es el conjunto de puntos barridos por el centro del EE, donde algún punto del EE coincide con alguno de la imagen. Puede interpretarse como el resultado de reemplazar cada pı́xel blanco de la imagen original, por una réplica del EE. La ecuación 2.28 muestra la definición. X ⊕ B = {p ∈ E 2 | p = x + b, ∀x ∈ X, ∀b ∈ B} (2.28) Se utiliza para rellenar pequeños agujeros y fisuras en objetos, también aumenta la superficie del objeto. En la figura 2.19 se muestra un ejemplo. Figura 2.19: Resultado de aplicar la dilatación sobre una imagen Apertura Es la composición de un operador erosión y otro de dilatación con el mismo EE. La definición viene dada por la ecuación 2.29. X ◦ B = (X ⊖ B) ⊕ B (2.29) Este operador alisa contornos, es decir, redondea las esquinas donde no cabe el EE, elimina las pertuberancias donde no cabe el EE y separa objetos en puntos estrechos. La figura 2.20 muestra un ejemplo. Figura 2.20: Resultado de aplicar la apertura, con diferentes EE 2.3. PROCESAMIENTO DE IMÁGENES VISUALES 31 Cierre Es la composición de un operador de dilatación y otro de erosión con el mismo EE. La definición viene dada por la ecuación 2.30. X • B = (X ⊕ B) ⊖ B (2.30) Este operador rellena vacı́os en el contorno, fusiona grietas estrechas y conecta objetos vecinos. La figura 2.21 muestra un ejemplo. Figura 2.21: Resultado de aplicar el cierre sobre una misma imagen con EE distintos También se pueden realizar operaciones morfológicas en escala de grises, donde los tratamientos morfológicos actúan sobre una función con valores reales definidos por una malla cartesiana n-dimensional. La diferencia con las anteriores es que, cada punto no representa la pertenencia a la clase objeto o a la clase fondo. En este tipo se utilizan elementos estructurales planos, que son funciones b(x) con la forma: 0 six ∈ B b(x) = −∞ en otro caso (2.31) En este tipo de operaciones la dilatación se define como: f ⊕ b(x, y) = max{f (x − i, y − j) + b(i, j)} (2.32) Si en la imagen todos los elementos son positivos, la imagen obtenida tiene mayor brillo y los elementos oscuros son eliminados o reducidos, dependiendo del valor y del elemento estructurante. Un ejemplo de dilatación en escala de grises es mostrado en la figura 2.22. Figura 2.22: Ejemplo de dilatación en escala de grises 32 CAPÍTULO 2. ESTADO DEL ARTE En la erosión si todos los elementos de la imagen son positivos, la imagen obtenida será más oscura, es decir, los elementos claros o brillantes son reducidos. Un ejemplo de erosión en escala de grises es mostrado en la figura 2.23. f ⊗ b(x, y) = min{f (x + i, y + j) − b(i, j)} (2.33) Figura 2.23: Ejemplo de erosión en escala de grises Por último, otro operador muy utilizado es el gradiente morfológico, el cual, usa elementos estructurantes simétricos, por lo que tiende a depender menos de la direccionalidad del borde. Con este operador se puede detectar bordes en todas direcciones en una imagen multinivel. Se define como se muestra en la ecuación 2.34. g = (f ⊕ b) − (f ⊖ b) (2.34) La figura 3.20 muestra un ejemplo de aplicar este gradiente, donde la dilatación y erosión producidas son las que se han mostrado en las figuras 2.22 y 2.23, respectivamente. Figura 2.24: Ejemplo de gradiente en escala de grises 2.3.5. Detección de puntos invariantes (SIFT) Se utilizan, para extraer caracterı́sticas invariantes de imágenes que son usadas para llevar a cabo un matching fiable entre las distintas vistas de una escena. Estas caracterı́sticas locales son invariantes a escalado, rotación y parcialmente invariantes a 2.4. PROCESAMIENTO DE IMÁGENES DE PROFUNDIDAD 33 cambios de iluminación y punto de vista. Las caracterı́sticas locales se almacenan en los descriptores como variables, que entre ellas se encuentra el gradiente. Para reducir el coste se utiliza una aproximación en cascada, donde las operaciones más costosas se realizan sobre las localizaciones que han superado un test. El algoritmo se divide en cuatros pasos: Detección de extremos escala-espacio: Se realiza una búsqueda en todas las escalas y localizaciones de la imagen, utilizando la diferencia Gaussiana para identificar puntos que son invariantes a escala y orientación. Localización de puntos: Para cada candidato, se ajusta un modelo para determinar su localización y escala. Los puntos son seleccionados según las medidas de estabilidad. Asignación de la orientación: A cada localización se le asigna una o más orientaciones basadas en las direcciones de los gradientes locales. De esta forma son invariantes a las transformaciones. Descriptor del punto: Para cada punto se genera un descriptor dividiendo la región próxima en una cuadrı́cula y computando un histograma de direcciones de gradientes locales. Los descriptores de los puntos son muy distintivos, lo que acotará el entorno de vecindad de un punto de acuerdo a sus caracterı́sticas durante el emparejamiento. Se puede observar un ejemplo de la detección de puntos SIFT en la figura 2.25. Figura 2.25: Puntos SIFT de una imagen 2.4. Procesamiento de Imágenes de Profundidad El ser humano para detectar la profundidad en una escena utiliza la visión binocular, lo que le permite interactuar con el mundo 3D al apreciar las distancias y volúmenes 34 CAPÍTULO 2. ESTADO DEL ARTE del entorno que le rodea. Por la separación que hay entre los ojos, el cerebro tiene que procesar dos imágenes con pequeñas diferencias, a esto se le denomina disparidad, donde alguna coordenada del punto observado coincidirá en las dos imágenes. Para conseguir este proceso en los sistemas robotizados, se utilizan las cámaras estéreo, quienes simulan a los ojos de una persona por medio de dos o más lentes separadas unos milı́metros. Una de las lentes contiene un sensor imagen, el cual, es un dispositivo que transforma una imagen óptica en una señal electrónica. Estas cámaras se pueden utilizar para crear lo que se conoce como gama de imágenes (range imaging), que es una colección de técnicas que se utilizan para producir imágenes 2D mostrando la distancia a la que se encuentran los puntos en una escena. El dispositivo capaz de realizar range imaging, se le denomina range camera, el cual, puede realizar distintas técnicas. Algunas de estas técnicas se comentan a continuación: Triangulación estéreo: Determina la profundidad de los puntos en una escena. Si las lentes son totalmente paralelas, tomando como referencia el punto central de la recta que va desde una lente a la otra, se simplifica el problema. Pero tiene la dificultad de encontrar la correspondencia entre los puntos que aparecen en los planos diferentes. Sólo produce datos fiables de profundidad para los puntos que son visibles desde cualquier cámara. Triangulación con una capa de luz: Cualquier punto que se quede fuera de la capa de luz, será representado como una curva. La forma depende de la distancia entre el observador y la fuente de luz y también depende de la distancia entre la fuente de luz y los puntos reflectados. Hay que conocer la posición y la orientación de la cámara y la fuente de luz. Time of flight: Calcula la distancia a los puntos por medio de la velocidad de la luz. Es similar a un radar, salvo que aquı́ se lanza un pulso de luz. Captura toda la escena en 3D utilizando un sensor de imagen. El principal inconveniente es el alto coste de estos sensores, por lo que en muchos casos, frena la investigación en este campo. Pero hoy en dı́a gracias a Kinect de Microsoft se ha abierto un nuevo camino, ya que su bajo coste y su sensor de profundidad lo ha hecho una herramienta muy potente a lo que se refiere en el procesamiento de imágenes de profundidad. En la figura 2.26 se puede observar un mapa de profundidad. 2.4. PROCESAMIENTO DE IMÁGENES DE PROFUNDIDAD 35 Figura 2.26: Mapa de profundiad El sensor de profundidad de Kinect se compone de un láser infrarrojo combinado con un proyector monocromo CMOS, que captura los datos 3D con cualquier luz ambiental. CMOS está distribuido en forma de matriz, por lo que cada celda hace referencia a un pı́xel, y su función es la de almacenar en cada celda una carga eléctrica, cuanta mayor cantidad de luz reciba el punto mayor será su carga. Por tanto, el sensor de profundidad emite un patrón IR que es simultáneamente capturado por el CMOS de la cámara IR. Para calcular la profundidad de cada pı́xel en la imagen, Kinect usa las posiciones relativas de los puntos en el patrón IR. Los valores de profundidad son las distancias a partir del plano cámara-láser en lugar de la distancia al propio sensor. La figura 2.27 muestra una ilustración de como funciona el sensor de profundidad de Kinect. Figura 2.27: Formación del mapa de profundidad utilizando kinect 36 CAPÍTULO 2. ESTADO DEL ARTE 2.4.1. Detección de Poses Las imágenes de profundidad son utilizadas en múltiples funciones; pero en este apartado, se utilizarán para averiguar la pose de un humano en tiempo real. Existen dos planteamientos principales para detectar la pose; uno basado en modelos y otro basado en el aprendizaje. El primer planteamiento basado en modelos, confı́a en que haya un parámetro que indique el modelo humano, consiguiendo mediante la inversión cinemática de los puntos de la imagen, recuperar la pose obtenida de las articulaciones del cuerpo (C.Barron & Kakadiaris [2000]). Otra manera de realizar este planteamiento, se da buscando espacios altos de configuraciones dimensionales formuladas de forma determinista, como un problema de optimización no lineal (J.M.Rehg & T.Kanade [1995]). El planteamiento basado en el aprendizaje, obtiene la pose a raı́z de una secuencia de imágenes observadas sin requerir inicializaciones ni modelos 3D precisos (G.Mori & J.Malik [2006]). Un ejemplo de este tipo de planteamiento es realizar una búsqueda los k vecinos más cercanos, donde la salida se unirá con la base de datos que almacena las poses para averiguar la pose detectada. Otros planteamientos secundarios para extraer la pose por medio de imágenes de profundidad, se dan utilizando la información de la detección de bordes en 2D junto a la información de la detección de forma en 3D y la información de la profundidad relacional. Además de utilizar una segmentación que extrae el contorno del sujeto de forma precisa (Xia et˜al. [2011]). Por otro lado, si se dispone de una secuencia de imágenes planteadas como un problema de máxima probabilidad, se obtiene la pose detectada a partir del conocimiento de inicialización y de un modelo dinámico aproximado. Kinect, para detectar la pose, realiza la segmentación de las diferentes partes del cuerpo localizando los modelos espaciales de estas, y utilizando el clasificador Random Forest (C.Burgos [2009]). Esta segmentación, puede producir los siguientes problemas (aunque suele presentar resultados bastante eficientes): Los métodos requieren una definición arbitraria de las partes del cuerpo que aproximadamente se alinean con las articulaciones. Los modos de segmentación de la superficie se encuentran en el espacio y las articulaciones dentro del cuerpo. La localización de las articulaciones, no se pueden estimar cuando una parte asociada está ocluida. Para finalizar, cabe destacar, que si se utiliza el planteamiento basado en regresión (aún estando en oclusión), realiza una predicción directa de la posición de la arti- 2.4. PROCESAMIENTO DE IMÁGENES DE PROFUNDIDAD 37 culación. Para ello se considera que el sujeto puede hacer cualquier movimiento sin restricciones(Girshick et˜al. [2010]). Un ejemplo en la detección de poses se muestra en la figura 2.28. Figura 2.28: Detección de poses Capı́tulo 3 Metodologı́a 3.1. Entorno de trabajo y Herramientas En este capı́tulo, se describe el entorno de trabajo en el cual, se han llevado a cabo las pruebas para comprobar la eficiencia obtenida en el reconocimiento de objetos, colores y pose del humano. Además, se incluye una breve introducción sobre las herramientas empleadas para desarrollar los objetivos y subobjetivos del proyecto. 3.1.1. Entorno de trabajo El proyecto se ha llevado a cabo en el siguiente entorno de trabajo. Ordenador: AMD Phenom 2x6 1055T, 2.8GHz y 4GB de memoria RAM. Cámara RGB y Cámara Profundidad: Dispositivo Microsoft Kinect. Algoritmo de clasificación: C4.5 en el kit de herramientas Weka (J48). Condiciones de iluminación: 2 bombillas de 50hz. Distancia entre humano y Kinect: 2 − 4m. Entorno: 360x545cm de habitación. Altura de Kinect: 80cm. Especificaciones técnicas de Kinect: • Ángulo del campo de visión: 57◦ horizontal y 43◦ vertical. • Imágenes por segundo: 30. • Rango espacial nominal: 640x480 VGA. • Resolución espacial nominal: 3mm a una distancia de 2m. 39 40 CAPÍTULO 3. METODOLOGÍA • Rango de profundidad espacial: 0,8m-3,5m. • Resolución de profundidad nominal: 1cm a una distancia de 2m. • Tipo de conexión del dispositivo: USB y energı́a externa. 3.1.2. Herramientas OpenCV Es una librerı́a de visión por computador en código abierto y multi-plataforma que fue diseñada para crear aplicaciones con enfoques en tiempo real apoyadas sobre un cálculo eficiente. OpenCV tiene como objetivo proporcionar infraestructuras de visión por computador que ayudan a realizar aplicaciones de visión artificial sofisticadas. Incluye sobre 500 funciones que abarcan varias áreas de la visión, tales como: inspección de productos en fábricas, imágenes médicas, seguridad, interfaces de usuario, calibración de cámaras, visión en estéreo y robótica. También incluye una librerı́a de aprendizaje automático (MLL) que está enfocada en el reconocimiento y agrupación de patrones estadı́sticos. El origen de OpenCV fue en 1999, en el laboratorio de Intel en colaboración con el grupo Software Performance Libraries. Los objetivos que se querı́an cumplir con la creación de esta librerı́a eran: Avanzar en la investigación de la visión artificial utilizando una infraestructura básica, optimizada y en código abierto. Crear un infraestructura común de modo que el código fuera legible y transferible para todos los desarrolladores. Crear aplicaciones comerciales basadas en la visión artificial con código portable y optimizado bajo una licencia que no exigiera que fueran aplicaciones gratuitas. OpenCV está compuesto por cinco módulos principales que se comentan a continuación: CV: Realiza el procesamiento básico de las imágenes, además de contener los algoritmos relacionados con la visión artificial. MLL: Incluye los clasificadores estadı́sticos y herramientas de clustering. HighGUI: Contiene rutinas de Entrada/Salida y funciones para guardar y/o cargar vı́deo e imágenes. CXCore: Contiene los algoritmos y estructuras de datos básicas. CvAux: Contiene algoritmos experimentales. 3.1. ENTORNO DE TRABAJO Y HERRAMIENTAS 41 La figura 3.1 muestra como están estructurados los módulos más importantes de OpenCV. Figura 3.1: Estructura de OpenCV OpenNI OpenNI es un framework multi-plataforma que define APIs para crear aplicaciones que utilizan la interacción natural. La interacción natural se entiende como la interacción humano-dispositivo basada en los sentidos humanos, tales como la visión y la audición. OpenNI permite comunicarse con los sensores de vı́deo, audio y profundidad de Kinect, además de proporcionar una API que se utiliza como conector entre el hardware del equipo y las aplicaciones e interfaces del S.O. También permite capturar movimientos en tiempo real, reconocer gestos, utilizar comandos de voz y además utiliza un analizador de escenas que detecta y distingue figuras en primer plano. Al no haber una dependencia entre sensor y middleware permite crear aplicaciones portables para operar en la parte superior de diferentes módulos middleware, además de escribir algoritmos con datos en bruto. El middleware incluido en Kinect, se divide en un motor de visión por computador y en un framework que proporciona controles de interfaz de usuario basado en gestos. Esta división del middleware crea lo que se denomina NITE, que a su vez se divide en: Algoritmos NITE: Establece las bases del procesamiento del flujo de datos de profundidad. Aquı́ se utilizan los algoritmos de visión por computador para realizar: • Segmentación de la escena: Proceso en el que se separan y etiquetan a los usuarios y a los objetos del fondo. 42 CAPÍTULO 3. METODOLOGÍA • Detección y seguimiento de la mano: Detecta y sigue las manos de los usuarios. • Seguimiento del cuerpo: Está basado en la salida de la segmentación de la escena. Un cuerpo es detectado cuando se realiza una pose determinada que además detecta el conjunto de localizaciones de las articulaciones. Controles NITE: Analiza los puntos de la mano generados por los algoritmos de NITE para proporcionar herramientas que diseñan aplicaciones de acuerdo al movimiento de las manos. Estos controles identifican gestos especı́ficos. En la figura 3.2 se muestra como se divide en capas el funcionamiento de Kinect. Figura 3.2: Vista en capas de la adquisición y procesamiento de datos en kinect Weka Es una colección de herramientas de visualización y de algoritmos para el análisis de datos y modelado predictivo, unido a una interfaz gráfica de usuario para acceder a sus funcionalidades. Weka también incluye herramientas que realizan transformaciones sobre los datos, tareas de clasificación, regresión, clustering, asociación y visualización. Es una herramienta orientada a la extensibilidad, por lo que se pueden añadir funcionalidades nuevas. Todas las técnicas asumen que los datos están disponibles en ficheros de texto plano, donde cada registro está descrito por un número fijo de atributos que normalmente son numéricos o nominales. También proporciona acceso a bases de datos vı́a SQL, debido 3.1. ENTORNO DE TRABAJO Y HERRAMIENTAS 43 a la conexión JDBC, que también le permite procesar los datos devueltos por una consulta hecha a la base de datos. Weka está implementado en el lenguaje Java por la universidad de Waikato (Nueva Zelanda) y es de libre distribución y difusión. Al estar programado en Java es independiente de la arquitectura, ya que funciona en cualquier plataforma que tenga la máquina virtual Java. En la figura 3.3 se puede ver la interfaz gráfica de weka. Figura 3.3: Interfaz gráfica de Weka Este proyecto se divide en dos partes, la primera consiste en obtener el mapa de profundidad para poder averiguar si un usuario está requiriendo la atención del sistema o simplemente está indicando la zona donde se encuentra el objeto con el que quiere interactuar. Y la segunda parte, es el procesamiento de la imagen RGB para obtener la forma y el color de los objetos detectados. La figura 3.4 muestra el diagrama de funcionamiento del sistema. 44 CAPÍTULO 3. METODOLOGÍA Figura 3.4: Diagrama de funcionamiento del sistema 3.2. Procesamiento de la Imagen de Profundidad La información que se obtiene del mapa de profundidad es la posición (x, y, z) de cada articulación, para guardarla en una BBDD en la que posteriormente se realizará el estudio del conjunto de datos para crear un clasificador C4.5, que permita predecir cuando una persona está apuntando a la izquierda, a la derecha o no está apuntando a ningún sitio. Para poder acceder a los datos de profundidad que ofrece la librerı́a OpenNI es necesario crear un contexto, en el cual, se declara un nodo de tipo DepthGenerator, que es el encargado de obtener la profundidad a la que se encuentra cada punto de la escena. Pero también hace falta otro nodo de tipo UserGenerator, que es el que obtiene la posición en coordenadas 3D de las articulaciones del cuerpo que ha sido previamente reconocido y calibrado por medio de la pose PSI (figura 3.7). Antes de continuar se debe comentar que el rango sobre el que está comprendido el campo de visión de Kinect es de [500, 10000]mm; lo que supone un inconveniente, ya que para obtener datos fiables el individuo tiene que estar situado entre el rango 3.2. PROCESAMIENTO DE LA IMAGEN DE PROFUNDIDAD 45 [1000, 4500]mm, debido a que puntos que están por debajo de 1000mm o por encima de 4500mm son erróneos. Para cambiar de rango se ha aplicado una normalización por medio de la ecuación 3.1. V alornuevo = Vactual − Minantiguo ∗ (Maxnuevo − Minnuevo ) + Minnuevo (3.1) Maxantiguo − Minantiguo Una vez que se ha normalizado el rango del campo de visión, para obtener el mapa de profundidad se debe crear un histograma de frecuencias, el cuál almacena la frecuencia con la que se ha detectado una distancia sobre los distintos puntos de la escena. De una forma más gráfica, un histograma es un gráfico donde el eje horizontal contiene las distancias que están comprendidas entre el rango [1000, 4500]mm y en el eje vertical se indica el número de puntos que se han detectado en cada distancia. Si se utilizan los datos del histograma sin pre-procesar, el mapa de profundidad obtenido mostrarı́a los puntos con distancias más próximas a Kinect con niveles de gris claro (niveles más próximos a 256) y los más lejanos con niveles de gris oscuro (niveles más próximos a 0). Esto supone que la diferencia de intensidad que hay entre el nivel de gris de un punto a otro punto, es insuficiente para poder distinguir la forma de los objetos. Un ejemplo de esto se puede observar en la figura 3.6. Para evitar este problema, se recorre el histograma desde la f recuenciadistanciainicial + 1 (en este caso desde 1001) hasta el final, donde a la f recuenciadistanciai−esima del histograma se le suma el valor de la f recuenciadistanciai−esima − 1. Con esto se obtiene un mapa de profundidad donde los puntos más lejanos tienen el nivel de gris más próximos a 0, por lo que la diferencia de intensidad en el nivel de gris entre los puntos aumenta, mejorando la distinción de objetos en la escena. Es decir, al histograma se le realiza un realce local ya que se le aumenta el contraste redistribuyendo los niveles de gris sin tener en cuenta los pı́xeles vecinos. La figura 3.5 muestra la mejorı́a obtenida al realizar el realce local. Una vez que se ha hecho todo lo anterior, para obtener el mapa de profundidad es necesario modificar el histograma de frecuencias para que ahora almacene el nivel de gris correspondiente a cada distancia, en vez de la frecuencia. El nivel de gris de cada distancia depende de su frecuencia. Esto se consigue por medio de la siguiente ecuación 3.2. f recuenciadistanciai−esima 256 ∗ 1 − NumerototalP untos (3.2) Con todo lo anterior se consigue obtener un mapa de profundidad en escala de grises, pero lo que se quiere obtener es un mapa de profundidad en color. Para ello, en cada pı́xel del mapa se le asigna un valor RGB, cuyo valor será obtenido a partir del valor del nivel de gris que almacena dicho pı́xel. Por ejemplo, si un pı́xel que se encuentra a una distancia de 1000mm le corresponde el valor 200 en la escala de gris, 46 CAPÍTULO 3. METODOLOGÍA el nuevo valor para ese pı́xel será de 200 para cada canal de color (R,G y B), lo que hará que se forme un color determinado en formato RGB. La imagen 3.5 muestra el resultado de todo lo comentado anteriormente, donde se ha decidido mostrar con granate los puntos que están entre [700 − 1395]mm, en azul los puntos que están entre (1395 − 1700]mm y en amarillo el resto de puntos. Figura 3.5: Mapa de profundidad realzado Figura 3.6: Mapa de profundidad sin realzar Una vez que se ha obtenido el mapa de profundidad, es el momento de reconocer cuando un usuario está requiriendo la atención del sistema robotizado. El algoritmo para detectar a un individuo y reconocer la pose de este (en este caso la pose PSI) ya viene integrado en OpenNI. Por tanto, el individuo tendrá que imitar la pose PSI (figura 3.7) que gracias al nodo UserGenerator de Kinect comenzará el tracking del individuo. Esta pose además de reconocer al individuo que desea ser seguido por el sistema, también calibra las articulaciones del individuo detectado. Como tracking se entiende que Kinect actualiza en cada momento la posición 3D de cada articulación. Una vez que se ha detectado al usuario y se ha comenzado el tracking de este, se declara el último nodo necesario de tipo ImageGenerator, que es el que suministra la imagen RGB que será procesada para obtener la información que se necesite del entorno. El problema que surge, es que hay un desfase entre el mapa de profundidad y la imagen RGB obtenida, por lo que es necesario una sincronización para eliminar dicho desfase. Se sincroniza el mapa de profundidad respecto a la imagen RGB. Con esta sincronización se consigue que al mover un brazo, por ejemplo, se mueva al mismo tiempo en la imagen RGB y en el mapa de profundidad, pero el problema es que en ocasiones se produce un bloqueo del flujo de datos, ya que el nodo DepthGenerator se retrasa en obtener los datos de profundidad. También se puede sincronizar a la inversa, es decir, sincronizar la imagen RGB respecto al mapa de profundidad. Pero el problema es que se generan más tramas de la imagen RGB que tramas de profundidad, por lo que mientras no se actualicen los datos de profundidad, se obtienen posiciones duplicadas de articulaciones para las tramas nuevas que se obtienen. 3.2. PROCESAMIENTO DE LA IMAGEN DE PROFUNDIDAD 47 La inclusión de tuplas de datos repetidos en la BBDD, empeora la calidad de los clasificadores creados para detectar si la persona está apuntando o no a una zona de interés, por lo que la mejor opción es sincronizar el mapa de profundidad respecto a la imagen RGB, dado que de esta forma no se obtienen tuplas de datos repetidos. Esto se puede ver en los vı́deos que contiene el CD. Figura 3.7: Pose PSI que reconoce Kinect para reconocer al individuo además de calibrar las articulaciones de este Una vez que se han sincronizado las dos imágenes, se obtiene la posición 3D de las articulaciones para clasificarlas por medio de un clasificador C4.5, que permitirá al sistema predecir cuando una persona está apuntando a una zona de interés. La BBDD utilizada para crear dicho clasificador, tendrá como atributos la posición 3D de las siguientes articulaciones: head, neck, left shoulder, left elbow, left hand, right shoulder, right elbow y right hand. Los posibles valores de clase para el clasificador son: AtenciónIzq, AtenciónDch y NoAtención. Esto se estudiará más a fondo en el capı́tulo 4. OpenNI ofrece los datos de todas las articulaciones del cuerpo humano, pero debido al alto coste computacional que lleva procesar todas las articulaciones, también proporciona las articulaciones que se encuentran de cadera hacia arriba o de cadera hacia abajo. En este proyecto se ha decidido utilizar las articulaciones que se encuentran desde la cadera hasta la cabeza por las siguiente razones: Son las que más información suministran para saber si se está apuntando a la izquierda o a la derecha. Reducción del coste computacional. Se evita la pérdida de la calibración de las articulaciones. El problema es que si dos articulaciones tienen posiciones similares, se produce la desconfiguración de la calibración inicial, lo que provoca la pérdida de la posición de alguna articulación o que las posiciones de las articulaciones se intercambien. 48 CAPÍTULO 3. METODOLOGÍA Una vez que el sistema averigüe que el individuo detectado está apuntando a la izquierda o a la derecha, comenzará el análisis de la imagen RGB para detectar la forma y el color de los objetos que pasen los filtros. 3.3. Procesamiento de la Imagen Visual Una vez que el sistema ha averiguado la zona a la que está apuntando el individuo (izquierda o derecha) por medio de los datos ofrecidos por el mapa de profundidad y el clasificador C4.5, se analiza la escena por medio de la imagen RGB que obtiene kinect. Lo primero que se debe averiguar es la región de interés (ROI), que es la zona de la escena donde se encuentran los objetos que interesan al usuario. La ROI tiene forma de cono y para formarlo se debe tener en cuenta la posición de la cabeza, el cuello y la mano derecha o izquierda del individuo (dependiendo de hacia donde se esté apuntando). El cono tiene el origen en la cabeza por lo que es necesario obtener las rectas que forman los laterales. Un lateral está formado por la recta que cruza la cabeza y la mano mientras que el otro es la recta que cruza desde la cabeza hasta un punto de corte en el eje de ordenadas. Cada recta tiene un ángulo de inclinación respecto a la bisectriz, que es la recta que divide al cono en dos partes iguales. La bisectriz cruza por la cabeza y por un punto de corte en el eje de ordenadas, que a diferencia de las rectas anteriores, es paralela a la recta que cruza por el cuello y la mano. Antes de calcular la ROI, se debe pasar las coordenadas 3D de las articulaciones (neck, head, hand, shoulder, . . . ) al sistema de coordenadas cartesianas (coordenadas 2D). Esta transformación se realiza debido a que el estudio de la escena se hace sobre coordenadas 2D. Para cambiar de coordenadas del mundo a coordenadas cartesianas se utiliza la cinemática. Hay dos formas realizar la cinemática, una de ellas serı́a trasladar el sistema de coordenadas de Kinect al mismo sistema de coordenadas en el que están las articulaciones del cuerpo (cinemática directa). Mientras que la otra forma, consiste en trasladar el sistema de coordenadas de las articulaciones del cuerpo al sistema de coordenadas de Kinect (cinemática inversa). Para este proyecto se ha realizado la técnica de la cinemática inversa, que mediante las ecuaciones 3.3 y 3.4 se calculan las coordenadas (x, y) del sistema de coordenadas cartesiano. xc = yc = (( xw ∗ fx + cx zw yw ∗ fy ) ∗ −1) + cy zw (3.3) (3.4) 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 49 Las variables fx y fy representan la distancia focal en (x, y), con valores constantes de 594,214 y 591,04 respectivamente, mientras que las variables cx y cy son el centro óptico en (x, y) con valores de 330,308 y 270,739 respectivamente. Una vez pasadas todas las posiciones de las articulaciones al sistema de coordenadas cartesiano, llega el momento de calcular la ROI. Como ya se ha mencionado anteriormente tiene forma de cono y para calcularlo, primero es necesario calcular la bisectriz. La bisectriz es la recta que tiene como extremos la posición de la cabeza y el punto de corte en el eje de ordenadas b. Para calcular b se utiliza la ecuación de la recta 3.5: y = mx + b (3.5) La bisectriz es paralela a la recta que pasa desde el cuello a la mano (derecha o izquierda), por lo que tendrán la misma pendiente (m2 = m). De esta forma se puede averiguar el punto que corta al eje de ordenadas en la ecuación 3.5. Esto se puede observar de una manera más gráfica en la figura 3.8. Figura 3.8: Calculo de la bisectriz Otra forma de calcular el punto b2 , serı́a calcular b, y restarle la distancia que hay desde el cuello a la cabeza. El siguiente paso es calcular los lados del cono a partir de la bisectriz. La inclinación de las rectas sobre la bisectriz, se calcula por medio de la pendiente que tiene la bisectriz y la recta que cruza la cabeza y la mano respecto al eje horizontal trasladado a la cabeza. La bisectriz divide al cono en dos partes iguales, por lo que el ángulo de inclinación de las rectas será el mismo. Se sabe que tgα = m, entonces para saber el valor del ángulo basta restar la pendiente de la recta que pasa por la cabeza y la mano, con la pendiente 50 CAPÍTULO 3. METODOLOGÍA de la bisectriz. Para saber la pendiente que tiene la recta restante, basta con sumar el ángulo obtenido con la pendiente de la bisectriz. Esto se refleja en la figura 3.9. Figura 3.9: Cono que forma la zona de interés A continuación se debe detectar los objetos que tengan forma cuadrangular, rectangular o circular y que estén dentro de la ROI. Para detectar los objetos se deben realizar los siguientes pasos: Transformar la imagen RGB a escala de grises. Suavizar la imagen. Detectar bordes. Aplicar gradiente morfológico. Filtrar contornos. Puesto que se trabaja con una imagen RGB, esta se debe transformar al formato de escala de grises para poder aplicar el detector de bordes Canny, que devolverá los contornos de los objetos. El problema de transformar la imagen RGB a escala de grises, es que al aplicar Canny algún contorno obtenido no está cerrado o no se ha detectado correctamente. Para mejorar la detección de los contornos sobre la imagen RGB, esta se divide en los canales de color que la forman pasados a escala de grises. Los distintos canales obtenidos son el R, G y B que utilizándolos en conjunto obtienen una imagen en color. Las figuras 3.10, 3.11 y 3.12, representan cada canal de color en escala de grises. 51 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL Figura 3.10: Canal R Figura 3.11: Canal G Figura 3.12: Canal B Posteriormente se suaviza la imagen obtenida de dividir la imagen RGB en sus canales de color, para eliminar todo el ruido posible y mejorar en la detección de bordes. Primero se realiza un suavizado por medio de la mediana para eliminar puntos aislados y lineas finas, y luego se aplica un suavizado Gaussiano con una máscara de convolución de 3x3. Una vez que se ha eliminado todo el ruido posible a la imagen, se le aplica el detector de bordes Canny que devolverá todos los contornos encontrados en la imagen. El valor del umbral mı́nimo y del máximo para Canny es 0 y 125 respectivamente, ya que con estos valores se obtienen los mejores resultados para detectar el máximo posible de contornos cerrados. Para mejorar la calidad de los contornos o bordes detectados, se ha decidido aplicar la operación morfológica gradiente en escala de grises, donde el elemento estructurante tiene forma de elipse para evitar deformar los contornos obtenidos. Realizando esta operación se consigue que algunos contornos que no están cerrados se cierren. Las figuras 3.13, 3.14 y 3.15 muestra la detección de bordes en cada espacio de color rojo, verde y azul respectivamente. 52 CAPÍTULO 3. METODOLOGÍA Figura 3.13: Detección de bordes en el plano de Figura 3.14: Detección de bordes en el plano de color G color R Figura 3.15: Detección de bordes en el plano de color B El siguiente paso es filtrar los contornos obtenidos en la detección de bordes. Puesto que se quiere detectar los objetos que están en la ROI, el primer filtro que se utiliza es para descartar los objetos que están fuera de esta región. Este filtro descartará todo contorno que tenga más de la mitad de sus puntos fuera de la región de interés. Para ello se utiliza la ecuación 3.6. (y2 − y1 ) ∗ x3 + (x1 − x2 ) ∗ y3 + (x2 ∗ y1 ) − (y2 ∗ x1 ) (3.6) Esta ecuación indica si un punto está a la izquierda, a la derecha o sobre una recta. Un punto estará a la izquierda de una recta si su resultado es mayor que 0, a la derecha si es menor que 0, y si es igual que 0 estará sobre la recta. Los valores de (x1 , y1 ) y (x2 , y2 ) indican la posición de los extremos de la recta, y los valores de (x3 , y3 ) indica la posición del punto del que se quiere saber el lado en el que se encuentra respecto la recta dada. Por tanto para que un objeto pertenezca a la ROI, todos o la mitad de los puntos que forman su contorno tienen que estar entre las rectas que forman los laterales del cono calculado anteriormente. Un punto estará dentro de la ROI, si está a la derecha de la recta del cono que está por encima de la cabeza y a la izquierda de la recta que está por debajo de la cabeza. La dirección de las rectas será desde los puntos que están más a la izquierda hacia los que están a la derecha, es decir, la dirección de las rectas será de izquierda a derecha. 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 53 Una vez que se sabe que el objeto está dentro de la ROI, es el turno de averiguar la forma de este. Para saber la forma del objeto se debe reducir el número de puntos que forman el contorno al mı́nimo posible. De esta forma si se trata de un cuadrado, el número de puntos se reducirá a cuatro, uno por cada vértice, si es un triángulo se reducirá a 3; pero para los cı́rculos no se debe reducir el número de los puntos del contorno, ya que puede detectar objetos con forma de hexágono, dodecaedro, . . . como cı́rculos. Por tanto, el siguiente filtro primero comprobará si un contorno es circular, si no lo es, se verificará si tiene forma cuadrangular, y en caso negativo se comprobará si tiene forma triangular. En caso de que no se cumpla ninguna de las condiciones anteriores se descartará como posible objeto de interés. A continuación, se indica como detectar los objetos según su forma. Cı́rculo: Para averiguar si un contorno es circular una forma de hacerlo es encerrándolo en la circunferencia mı́nima que lo contiene. OpenCV ofrece la función cvMinEnclosingCircle para encerrar un contorno en la circunferencia mı́nima que lo contiene, además también devuelve el centro y el radio de la circunferencia. Se debe relajar la detección de forma que acepte contornos que no sean totalmente circulares. Para ello, se aceptarán los puntos del contorno que tengan una distancia en el intervalo [radio − 3, radio + 3], teniendo el centro de la circunferencia devuelto por la función anterior como referencia. Todo contorno que tenga un área mayor que 50, y que el número de puntos del contorno que están fuera del intervalo anterior sea menor que P untosT otalescontorno /10, se aceptará como cı́rculo. Cuadrado: Como ya se ha comentado anteriormente, se debe reducir al menor número posible los puntos que forman el contorno del objeto, que en este caso son cuatro, uno por cada vértice. Para ello, se utiliza la función de openCV cvApproxPoly, a la que se le pasa como argumento cvContourPerimeter*0.02 para obtener el menor número posible de puntos que forman el contorno. La función cvApproxPoly funciona del siguiente modo: Primero el algoritmo toma los dos puntos del contorno que están a mayor distancia, que están unidos por medio de una recta. El siguiente punto elegido, será aquel que está más alejado de la recta que une a los puntos iniciales, y ası́ sucesivamente hasta que todos los puntos tengan una distancia menor que la precisión que ha sido pasada como parámetro. En este caso la precisión viene indicada por cvContourPerimeter*0.02. La figura 3.16 muestra un ejemplo de como funciona dicha función. 54 CAPÍTULO 3. METODOLOGÍA Figura 3.16: Ejemplo de funcionamiento de la función cvApproxPoly Una vez que se ha reducido el número de puntos del contorno a cuatro, su área es mayor que 50 y es convexo pasa al siguiente filtro, quien decidirá si es un cuadrado apto o no apto. Para saber si un cuadrado es válido, todos los ángulos internos tienen que ser de 90◦ , pero se puede relajar dejando que algún ángulo interno sea algo mayor a 90◦ . Con esto se detectarán objetos que no son cuadrados perfectos. Para calcular los ángulos internos se utiliza la ecuación 3.7, que calcula el ángulo que hay entre dos vectores. (x1 ∗ x2 ) + (y1 ∗ y2 ) cos α = p 2 (x1 + y12) ∗ (x22 + y22 ) (3.7) Triángulo: Para saber si el contorno es triangular se hace lo mismo que para el cuadrado, pero la diferencia está en que el contorno se tiene que reducir a tres puntos y el área tiene que ser mayor de 100. No hace falta saber el valor de los ángulos internos. Cuando el contorno de un objeto pasa algún filtro de los mencionados anteriormente, el siguiente paso a realizar es dibujar el contorno del objeto sobre una copia de la imagen RGB, para facilitar la segmentación que se realizará posteriormente para averiguar el color medio del objeto. Hay que recordar que todos los pasos anteriores se realizan sobre cada espacio de color de la imagen RGB, por lo que, en ocasiones algún objeto se detectará hasta tres veces. Un ejemplo de los objetos detectados por el sistema queda reflejado en la figura 3.17. 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 55 Figura 3.17: Objetos que se han detectado dentro de la ROI Como se puede observar en la figura 3.17, se ha detectado un cuadrado, dos triángulos y dos cı́rculos. Los objetos en los que se ha dibujado un contorno negro es porque se ha detectado como externo, en cambio, si dicho contorno es blanco entonces es interno. Una vez que se han detectado los objetos que podrı́an ser de interés para el individuo, llega el momento de averiguar el color de estos. Para averiguar el color se siguen los siguientes pasos: Transformar a escala de grises la imagen RGB y la copia. Restar la imagen RGB y la copia. Suavizar. Aplicar la operación morfológica gradiente. Segmentar. Calcular color medio. Antes de comenzar a explicar cómo realizar cada paso, se debe comentar que el modelo de color que se ha decidido usar es el Y Cr Cb en vez del RGB. El problema de utilizar el modelo RGB es que cuando se producen cambios en la iluminación se producen grandes diferencias respecto a los valores que forman un determinado color. En cambio, en el modelo Y Cr CB la iluminación o luminancia viene dada por el componente Y , y la crominancia por los componentes Cr y Cb , que representan la intensidad de rojo y azul relativos al componente verde. Con esto se consigue que frente a cambios de la iluminación de una escena, los valores de los componentes Cr y Cb sean próximos a los de un color con diferente iluminación. Es decir, cuando se produce un cambio de iluminación en modelos de color Y Cr Cb , el único valor que va a sufrir una gran 56 CAPÍTULO 3. METODOLOGÍA diferencia respecto a los valores del color inicial será el componente Y , mientras que los otros componentes serán más próximas al valor inicial. Por ejemplo, se supone que se ha detectado un objeto de color azul cuyo valor en el modelo Y Cr Cb bajo una iluminación inicial es de (67, 116, 142), y si posteriormente se aumenta la iluminación de la escena, el nuevo valor obtenido para el color es de (127, 117, 146). El primer paso para averiguar el color de los objetos detectados por el sistema, consiste en transformar a escala de grises la imagen RGB y la copia donde se han dibujado los contornos detectados, para poder realizar la operación resta sobre las imágenes. Restando las imágenes anteriores, se obtiene una imagen donde los pı́xeles que coinciden en ambas imágenes tienen valor 0 y los que son diferentes tienen valor 255, por lo que en este caso, se obtiene una imagen donde los pı́xeles que pertenecen a los bordes detectados tienen valores de 255 y el resto de 0. La figura 3.18 muestra el resultado obtenido de realizar la operación diferencia entre dos imágenes. Figura 3.18: Diferencia obtenida entre la imagen RGB y la copia donde se han dibujado los contornos detectados Cómo se puede ver en la figura 3.18, en algunos objetos se han detectado hasta tres contornos diferentes e incluso los contornos detectados aparecen escalonados, por lo que es necesario realizar un suavizado Gaussiano con una máscara de convolución de 5X5 para intentar eliminar la forma escalonada de los contornos. Este suavizado se realiza para obtener de una forma más exacta el contorno más adecuado de los que se han detectado sobre un mismo objeto. En la figura 3.19 se muestra el resultado de suavizar la imagen obtenida de la operación resta. 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 57 Figura 3.19: Suavizado sobre los contornos obtenidos Una vez realizado el suavizado, se realiza la operación morfológica gradiente, la cual, obtiene una imagen donde se aprecian dos contornos, uno externo y otro interno por objeto detectado. Como contorno se selecciona el externo. El resultado obtenido del gradiente se puede observar en la figura 3.20 Figura 3.20: Operación morfológica gradiente sobre los contornos detectados También se pueden dibujar los contornos detectados sobre una imagen inicializada a cero, pero el inconveniente de hacerlo ası́ es que se dibujan contornos que no existen debido al ruido, por lo que la mejor opción es la que se ha comentado anteriormente. Un ejemplo de este comportamiento se muestra en la figura 3.21. 58 CAPÍTULO 3. METODOLOGÍA Figura 3.21: Ruido que aparece al dibujar los contornos sobre una imagen inicializada a cero Una vez que se obtiene el contorno más adecuado para cada objeto detectado, llega el momento de segmentar los objetos uno a uno. Para ello, primero se debe hacer una máscara con el contorno seleccionado. Para realizar la máscara, el contorno seleccionado se encierra en el cuadrado mı́nimo que contiene a dicho contorno, para obtener el punto central del contorno (esto se realiza por medio de la función cvMinAreaRect2 de openCV) que es utilizado para rellenar el contorno en blanco. Esto se refleja en la figura 3.22. Figura 3.22: Máscara obtenida a partir de un contorno Para rellenar el contorno seleccionado se utiliza la función cvFloodFill de OpenCV, a la que se le pasa el contorno a rellenar y el punto central que devuelve la función cvMinAreaRect2, además del color con el que se quiera rellenar. Todo lo anterior se hace para realizar la operación And entre la imagen RGB y la máscara, la cual, realiza la segmentación del objeto seleccionado. Una vez se ha segmentado el objeto se calcula el color medio de este. 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 59 La función cvAvg de OpenCV es la encargada de realizar la operación And y de calcular el color medio del objeto segmentado. A esta función se le pasa como argumentos la imagen RGB transformada al modelo Y Cr Cb y la máscara, la cual, tiene que estar rellena de color blanco y en escala de grises. La figura 3.23 muestra el resultado devuelto por la función anterior, donde el valor que aparece sobre el objeto es el color de este en el modelo Y Cr Cb . Figura 3.23: Resultado obtenido de segmentar y calcular el color medio de un objeto El último paso es predecir el color del objeto según el valor Y Cr Cb devuelto en el paso anterior. Para predecir el valor se utiliza la ecuación 3.8, la cual, calcula la distancia que hay entre el color detectado y los colores que se toman como referencia (rojo, verde, amarillo, violeta, azul, negro, blanco, naranja). Se elige el color con el que hay menos distancia. △E = p △(Y )2 + △(Cr )2 + △(Cb )2 (3.8) Pero como se verificará posteriormente en el capı́tulo 4, la utilización de la ecuación 3.8 no es totalmente eficiente a la hora de predecir el color del objeto. La figura 3.24 muestra el resultado final que obtiene el sistema. 60 CAPÍTULO 3. METODOLOGÍA Figura 3.24: Resultado final También se ha intentado reforzar al sistema robotizado con un reconocimiento de objetos concretos en una escena, sin la necesidad de presencia humana, implementando un clasificador capaz de detectar otros objetos que no tengan forma circular, cuadrangular o triangular. En este proyecto se estudia el comportamiento de utilizar descriptores de región para identificar objetos, debido a que de una forma u otra involucran a todos los pı́xeles que contiene un objeto. Dentro de la familia de los descriptores de región se ha decidido utilizar los momentos. Los momentos están relacionados con el tamaño, la posición, la orientación y la forma de regiones planas. Dentro de los momentos se encuentran los momentos centrales que son invariantes a las traslaciones y los normalizados, que son invariantes a escalados. Si se combinan los momentos centrales con los normalizados se obtienen los momentos Hu, los cuales, son invariantes a traslaciones, escalados y rotaciones. El clasificador que se utiliza para detectar los objetos, tiene como atributos los momentos espaciales, los centrales y los Hu, además de incluir el centro de masas para los objetos y el valor de cada componente del modelo de color Y Cr Cb . El centro de masas se obtiene por medio de los momentos de orden cero y orden uno. Esto se muestra en la figura 3.25. X= M10 M00 (3.9) Y = M01 M00 Figura 3.25: Obtención del centro de masas por medio de los momentos (3.10) 3.3. PROCESAMIENTO DE LA IMAGEN VISUAL 61 Esta técnica de detectar objetos difiere de la técnica anterior, en que primero es necesario tener almacenada una imagen como fondo o background, para luego añadir en la escena los objetos que se deseen detectar. El resto es de forma similar a la técnica anterior, es decir, se pasa a escala de grises el background y la imagen RGB capturada, para aplicar la diferencia de imágenes, y ası́, obtener una imagen resultante con los objetos que se han colocado en la escena posteriormente. Esto se refleja en las figuras 3.26, 3.27 y 3.28. Figura 3.26: Background Figura 3.27: Inserción de un objeto en la escena 62 CAPÍTULO 3. METODOLOGÍA Figura 3.28: Diferencia del background y la nueva frame Luego se aplica un suavizado por medio de la mediana, para ası́, eliminar los detalles del fondo que no se han eliminado al realizar la diferencia de las imágenes. Posteriormente para eliminar las sombras, se aplica el suavizado Gaussiano con una máscara de convolución de 7x7. Para segmentar la imagen y obtener el objeto a clasificar, se procede igual que en el caso explicado anteriormente. Una vez segmentado el objeto, se clasifica con el clasificador C4.5 obtenido a partir del conjunto de datos almacenado. La figura 3.29 muestra el resultado de segmentar y clasificar el objeto. Figura 3.29: Objeto identificado Los resultados obtenidos de las pruebas realizadas sobre esta metodologı́a se comentan y muestran en el capı́tulo 4. Capı́tulo 4 Resultados En este capı́tulo se somete a los datos a distintas técnicas de procesado ofrecidas por Weka, con la finalidad de poder averiguar cual es la mejor forma de representar dichos datos, para obtener los mejores resultados posibles en eficiencia. A continuación, se presentan los resultados obtenidos en los experimentos realizados sobre la detección de la pose por medio de los datos obtenidos del mapa de profundidad, el reconocimiento de objetos por su forma básica, la predicción del color de los objetos identificados y la identificación de objetos especı́ficos en una escena. Antes de continuar, se debe comentar que para saber si un conjunto de datos es eficiente o no, se ha tenido en cuenta la tasa de acierto y el error relativo absoluto devueltos por Weka. Weka obtiene el error relativo absoluto, mediante la normalización de los resultados obtenidos en la predicción de las probabilidades de las clases estimadas a partir de los datos de entrenamiento. Por tanto, el error relativo absoluto es el cociente obtenido de dividir el error absoluto medio entre el error correspondiente del clasificador. En definitiva, indica como de buena es una medida en relación al conjunto de datos utilizado. 4.1. Descripción de los datos del mapa de profundidad Se debe decidir como representar el conjunto de datos en la BBDD para crear un clasificador lo más eficiente posible. Para ello, se han comparado dos conjuntos de datos tratados de manera distinta. Un conjunto de datos contiene los datos tal cuál los obtiene Kinect, mientras que el otro conjunto, contiene los datos de Kinect pero tomando como centro de coordenadas la posición 3D del cuello. Estos conjuntos han sido comparados utilizando un clasificador C4.5 (en Weka se le denomina J48), sin realizar ningún tipo de pre-procesado a los datos y utilizando el mismo conjunto de datos para entrenamiento y para test, 63 64 CAPÍTULO 4. RESULTADOS utilizando una validación cruzada de 10 pliegues. Los resultados obtenidos se muestran en la tabla 4.1. Conjunto datos sin tratar Conjunto datos con Ocoordenadas en el cuello acierto error relativo absoluto acierto error relativo absoluto 82.4 % 34.9 % 85.9 % 23.5 % Tabla 4.1: Comparativa de conjuntos En la tabla 4.1, se puede observar que el conjunto de datos con origen de coordenadas en el cuello, obtiene una ligera mejorı́a en la tasa de acierto y menor error relativo absoluto utilizando un clasificador J48 sin pre-procesar los datos. Por tanto, en un principio, se utilizará un conjunto de datos tomando el cuello como origen de coordenadas para predecir a donde está apuntando el individuo. Kinect también obtiene la orientación de las articulaciones, por lo que puede resultar de ayuda a la hora de predecir la zona a donde está señalando el usuario. La tabla 4.2, muestra los resultados de clasificar un conjunto de datos con origen de coordenadas en el cuello, sin utilizar la orientación de las articulaciones, y otro utilizando la orientación de éstas. Para la obtención de los resultados, se ha utilizado un clasificador J48 sin haber aplicado ningún tipo de pre-procesado previo y utilizando el mismo conjunto de datos tanto para entrenamiento como para test y realizando una validación cruzada a 10 pliegues. Ocoordenadas en el cuello sin orientación Ocoordenadas en el cuello con orientación acierto error relativo absoluto acierto error relativo absoluto 85.9 % 23.5 % 79.8 % 35.0 % Tabla 4.2: Comparativa de conjuntos Según los datos de la tabla 4.2, se obtiene mejor resultado sin utilizar la orientación de las articulaciones, por lo que finalmente, se utiliza un conjuntos de datos con el origen de coordenadas en el cuello y sin utilizar la orientación de las articulaciones. El conjunto de datos seleccionado, se almacenan en una BBDD que contiene 477 instancias con la posición 3D de cada articulación; por lo que tiene un total de 24 atributos, donde cada atributo representa el valor de cada eje del sistema de coordenadas 3D. Como valores de clase se encuentran las etiquetas NoAtención, AtenciónIzq y AtenciónDch. Para seleccionar el mejor clasificador del conjunto de datos, se realizarán distintos pre-procesados, utilizando el mismo conjunto tanto para entrenamiento como para test, 65 4.2. DETECCIÓN DE OBJETOS SEGÚN LA FORMA BÁSICA y realizando una validación cruzada con 10 pliegues. Los resultados que se muestran en las tablas 4.3 y 4.4, han sido obtenidos por medio de un clasificador J48. preprocesado acierto error relativo absoluto cfsSubeval /greedystepwise 87.0 % 21.7 % wrapper con J48 /greedystepwise 88.6 % 19.5 % infoGainAtributeEval /ranker 13 89.0 % 19.4 % discretizar /wrapper con J48 /greedystepwise 84.0 % 33.0 % discretizado /infoGainAtributeEval /ranker 13 81.0 % 34.7 % Tabla 4.3: Datos obtenidos con un factor de confianza de 0.25 preprocesado acierto error relativo absoluto cfsSubeval /greedystepwise 87.0 % 22.0 % wrapper con J48 /greedystepwise 89.9 % 17.7 % infoGainAtributeEval /ranker 13 89.5 % 18.8 % discretizado /infoGainAtributeEval /ranker 13 82.0 % 33.4 % Tabla 4.4: Datos obtenidos con un factor de confianza de 0.35 El mejor clasificador obtenido de las tablas 4.3 y 4.4, es en cual, se realiza un pre-procesado donde se seleccionan los atributos por medio de un evaluador wrapper, con un clasificador J48 y utilizando como buscador la técnica greedystepwise, con un factor de confianza de 0,35. Puesto que se ha utilizado el mismo conjunto de datos para entrenamiento y para test, se realizará otro clasificador utilizando otro conjunto de datos (que tenga los mismos atributos que los que se han obtenido por medio del pre-procesado con mejor resultado), para observar si se ha producido un sobreajuste. Los resultados obtenidos han sido de un 77,4 % de tasa de acierto y un error relativo absoluto de 38,4 %, lo que nos indica, que frente a nuevos datos, el comportamiento del clasificador, no es lo suficientemente eficiente, aunque en la práctica obtiene buenos resultados. 4.2. Detección de objetos según la forma básica En esta sección se muestran los resultados obtenidos de analizar una escena con 17 objetos, de los cuales 6 son triángulos, 5 cuadrados y 6 cı́rculos, para comprobar cómo de eficiente es el reconocimiento de objetos según la forma básica. Se debe mencionar que en esta sección no se ha construido ningún clasificador para comprobar la efectividad, por tanto, para comprobar la eficiencia en el reconocimiento de objetos, se han tomado 30 tramas con luz ambiental y otras 30 con luz artificial, para calcular la media aritmética de los objetos detectados en cada trama. 66 CAPÍTULO 4. RESULTADOS Los resultados obtenidos son los que se muestran en la tabla 4.5. forma luz ambiente luz artificial triángulos 80.5 % 87.2 % cuadrados 86.0 % 98.0 % cı́rculos 88.2 % 89.9 % Tabla 4.5: Tasa de acierto en la detección de formas Como se puede observar en la tabla 4.5, el sistema reconoce a los objetos de una forma más eficiente cuando la escena tiene unas condiciones de iluminación favorables, aunque también tiene un comportamiento bastante bueno, en escenas con poca iluminación. Estos resultados, han sido obtenidos en una escena donde los objetos están en un plano perpendicular a la cámara, pero también es necesario saber como de eficiente es el reconocimiento de objetos en un plano paralelo a esta. La escena analizada donde los objetos se encuentran en un plano paralelo a la cámara, se muestra en la figura 4.1. Figura 4.1: Objetos paralelos a la cámara En la tabla 4.6, se muestran los resultados de calcular la media aritmética de los objetos detectados en una secuencia de 30 tramas, donde la escena está iluminada con luz artificial. 4.3. DETECCIÓN DEL COLOR DE LOS OBJETOS forma acierto triángulos 34.5 % cı́rculos 67.3 % cuadrados 0% 67 Tabla 4.6: Tasa de acierto en la detección de formas en un plano paralelo a la cámara Como se puede observar en la tabla 4.6, no se detectan cuadrados debido a que el sistema sólo reconoce contornos cuadrangulares que tengan algún ángulo que no sea superior a 100◦ , y debido a que el plano es paralelo a la cámara, se detectan cuadrados con ángulos mayores a 100◦. Si esta condición la cambiamos para que acepte contornos cuadrangulares con algún ángulo que no supere los 120◦ , se obtiene un 55,0 % de tasa de acierto, con el inconveniente de que el sistema reconoce contornos triangulares como cuadrados. La figura 4.2 muestra la nueva detección de cuadrados en la escena 4.1. Figura 4.2: Detección cuadrados 4.3. Detección del color de los objetos En esta sección, se presentan los resultados obtenidos de predecir el color de los objetos reconocidos, utilizando la ecuación que obtiene la distancia entre colores (ecuación 3.8). El color de referencia seleccionado, será el que tenga la menor distancia con el color detectado. 68 CAPÍTULO 4. RESULTADOS El inconveniente de utilizar la ecuación 3.8, es que no se obtienen buenos resultados en la detección de color, debido a que se toma un único valor por cada color de referencia y los colores obtenidos de los objetos detectadas se mueven dentro de un rango en el modelo de color Y Cr Cb . En la figura 4.3, se puede observar como la ecuación 3.8 no realiza una detección de color eficiente. Figura 4.3: Detección de color por medio de la ecuación 3.8 Debido a la mala predicción obtenida, se ha probado a darles distintos pesos a los componentes de la ecuación 3.8. Puesto que el componente Y representa el valor de la iluminación, se le asigna un peso de 0, pero como se puede observar en la figura 4.4, no se ha obtenido una predicción eficiente. 4.3. DETECCIÓN DEL COLOR DE LOS OBJETOS 69 Figura 4.4: 0 como peso para el componente Y En la figura 4.5, se muestra la detección del color utilizando como peso para el componente Y el valor 0.5 y para los componentes restantes el valor 2. Figura 4.5: 0.5 para el componente Y y 2 para los componentes Cr y Cb Como se puede deducir de las imágenes anteriores, la ecuación 3.8 no realiza una predicción eficiente, por lo que es necesario utilizar otra técnica que proporcione mayor 70 CAPÍTULO 4. RESULTADOS eficiencia. Otro método que puede obtener resultados más eficientes, es construir un clasificador J48 (es el clasificador C4.5 implementado en Weka) que tenga tres atributos, uno por cada componente del modelo de color Y Cr Cb y por valores de clase tiene los ocho colores utilizados como referencia. Para conseguir un clasificador lo más eficiente posible, se han observado 30 tramas en distintas condiciones de iluminación, en las que se ha deducido el rango en el que se mueven los colores de referencia en los componentes Cr y Cb del modelo de color. El componente Y no se tiene en cuenta puesto que su valor indica la cantidad de iluminación que se ha detectado en el color. Estos rangos se muestran en la tabla 4.7. color Cr Cb Red 158-182 116-124 Blue 106-129 136-156 Green 114-129 109-114 Pink 136-162 111-130 Yellow 129.5-154.5 75-117 Orange 148-164 96-106 Black 126-138 124-129 Purple 131-165 130-151 Tabla 4.7: Rango de los componentes Cr y Cb en los colores de referencia Ahora que se conoce entre qué rango se mueven los colores, se crea una BBDD con diez instancias por color y que tenga 3 atributos, uno por cada componente del modelo de color y como valores de clase tiene los colores de referencia. Si al conjunto de datos se le elimina el atributo Y , se discretiza utilizando la técnica de F ayad − Irani y se crea el clasificador J48 utilizando como conjunto de test otra BBDD (con las mismas caracterı́sticas), se obtiene un 97,5 % de tasa de acierto y un 6,5 % de error relativo absoluto. Por tanto, se puede observar que el empleo de un clasificador con las caracterı́sticas anteriores, obtiene resultados bastantes eficientes a la hora de predecir los colores ante conjuntos de datos distintos al utilizado en el entrenamiento del clasificador. Para saber cómo de eficiente es el clasificador obtenido, se han observado 30 tramas en diferentes condiciones iluminación, para averiguar la media aritmética de cada color detectado en la secuencia de tramas. La tasa de acierto por color se resume en la tabla 4.12 4.4. DETECCIÓN DE OBJETOS ESPECÍFICOS color acierto Red 88.1 % Blue 81.0 % Green 87.2 % Pink 79.0 % Yellow 90.0 % Black 88.0 % Purple 85.1 % 71 Tabla 4.8: Tasa de acierto por color Como se puede observar en la tabla 4.12, se obtienen resultados bastante aceptables a la hora de identificar los colores por medio del clasificador. El color que peor reconoce es el Pink, debido a que el rango en el que se mueve el componente Cr , está incluido en el rango Cr de otros colores. La figura 4.6 muestra el resultado de detectar los colores por medio del clasificador obtenido. Figura 4.6: Detección de color utilizando un J48 4.4. Detección de objetos especı́ficos Para reconocer objetos especı́ficos en una escena, se ha decidido emplear los descriptores de región, ya que involucran a todos los pı́xeles que contiene un objeto. Los 72 CAPÍTULO 4. RESULTADOS operadores utilizados en este experimento son los momentos centrales, los normalizados y los Hu. Los momentos centrales son invariantes a translaciones, los normalizados a los escalados y los Hu a translaciones, escalados y rotaciones. Para obtener la mayor eficiencia posible en el reconocimiento de objetos, se debe conocer cuál es la mejor representación de los datos. Para averiguar dicha representación, se va a utilizar un clasificador J48, el cual, tendrá como atributos los momentos citados anteriormente, los componentes del modelo de color Y Cr Cb y el centro de masas para cada objeto. Como valores de clase, se utilizan las etiquetas que identifican a los objetos a detectar. En la tabla 4.9, se muestran los resultados de aplicar sobre un conjunto de datos con las caracterı́sticas citadas anteriormente, los dos mejores pre-procesados obtenidos utilizando el mismo conjunto de datos para entrenamiento y test, y utilizando una validación cruzada a 10 pliegues. pre-procesado acierto error relativo absoluto discretizar/wrapper con J48/greedystepwise 89.5 % 17.2 % discretizar/cfsSubeval/greedystepwise 87.0 % 20.5 % Tabla 4.9: tasa de acierto de los clasificadores en la detección de objetos especı́ficos Dado que se detectan muchos contornos que no se identifican con los objetos almacenados, se ha decidido añadir el valor de clase SinId, el cual, etiqueta aquellos contornos que no tienen la forma de los objetos que se quieren detectar. En la tabla 4.10, se muestran los dos mejores pre-procesados obtenidos, utilizando el mismo conjunto de datos tanto para entrenamiento como para test y utilizando validación cruzada a 10 pliegues. pre-procesado acierto error relativo absoluto discretizar 92.3 % 11.7 % discretizar/wrapper con J48/greedystepwise 89.7 % 14.6 % Tabla 4.10: Tasa de acierto de los clasificadores en la detección de objetos especı́ficos con un valor más de clase De las tablas 4.9 y 4.10, se llega a la conclusión de que el mejor resultado se obtiene añadiendo el valor SinId como valor de clase y realizando un pre-procesado, en el que únicamente se discretiza el conjunto de datos. A continuación, en la tabla 4.11, se muestra la tasa acierto en la detección de cada objeto, utilizando el mejor clasificador obtenido de la tabla 4.10. Para obtener la tasa de acierto, se ha observado un flujo de 30 tramas, donde se ha calculado la media aritmética para cada objeto reconocido en dicho flujo. 4.4. DETECCIÓN DE OBJETOS ESPECÍFICOS objeto acierto caballo 25.0 % maleta 20.1 % mochila 65.0 % copa 15.0 % tetera 35.2 % jarron 15.0 % libro 80.3 % 73 Tabla 4.11: Tasa de acierto en la detección de objetos especı́ficos Como se puede observar en la tabla 4.11, no se consiguen buenos resultados, por lo que se ha decidido eliminar los atributos que representan a los momentos centrales y los espaciales, debido a que los momentos Hu se obtienen a partir de estos, y además, de que los momentos Hu son invariantes a translaciones, escalados y rotaciones. A continuación, en la tabla 4.12, se muestra el mejor resultado obtenido al clasificar el conjunto de datos con las modificaciones indicadas anteriormente. El mejor resultado se ha obtenido realizando como pre-procesado la discretización de F ayadeIrani, y utilizando el mismo conjunto de datos para entrenamiento y para test, y realizando una validación cruzada a 10 pliegues. acierto error relativo absoluto 93.5 % 9.7 % Tabla 4.12: Tasa de acierto y error relativo absoluto de eliminar los atributos que forman los momentos centrales y normalizados El resultado de la tabla 4.12, indica que los datos obtenidos están sobreajustados, por lo que si se utiliza un nuevo conjunto de datos para test, se obtendrá un bajo porcentaje en la tasa de acierto y un porcentaje alto en el error relativo absoluto. La tabla 4.13, muestra los resultados obtenidos de calcular la media aritmética de cada objeto detectado en una secuencia de 30 tramas, sobre una escena con luminosidad estática, utilizando el clasificador obtenido de la tabla 4.12. 74 CAPÍTULO 4. RESULTADOS objeto acierto caballo 73.0 % maleta 70.1 % mochila 65.0 % copa 40.3 % tetera 60.2 % jarron 50.0 % libro 89.5 % Tabla 4.13: Tasa de acierto en la detección de objetos especı́ficos utilizando únicamente los momentos Hu Comparando las tablas 4.11 y 4.13, se llega a la conclusión de que se obtiene mejor resultado utilizando únicamente los momentos Hu, los componentes Y Cr Cb y el centro de masas como atributos. La figura 4.7, muestra un ejemplo de la detección de los objetos especı́ficos utilizando el clasificador obtenido en la tabla 4.12. Figura 4.7: Objetos detectados en una escena Capı́tulo 5 Conclusiones y Trabajo Futuro 5.1. Conclusiones El reconocimiento de la pose por medio de un mapa de profundidad, es un proceso relativamente sencillo, debido a la gran información que se obtiene de dicho mapa en unión con el empleo de técnicas incluidas en la minerı́a de datos, tales como la creación de árboles de decisión; como por ejemplo el árbol C4.5. En cambio, la identificación de objetos a bajo nivel por la forma básica y los colores, es un problema complejo debido a los factores que influyen en el reconocimiento, tales como el cambio de iluminación en la escena, la efectividad en el reconocimiento de los contornos, la calidad de la imagen RGB, etc. Si partimos de los objetivos propuestos al comenzar este proyecto, se puede concluir diciendo que los objetivos planteados han sido alcanzados; puesto que el robot alcanza un alto grado de autonomı́a para extraer del entorno en el que se encuentra la información necesaria. La información obtenida por el robot, viene marcada por la señalización de la región de interés indicada por el humano, pudiendo ası́ comenzar una conversación donde se mejora la HRI. Respecto al estudio de la descripción de los datos del mapa de profundidad, para obtener unos datos de profundidad lo más estables posibles, se toma como origen de coordenadas la posición 3D del cuello, ası́ el clasificador obtenido reduce el error relativo absoluto, por lo que mejora la eficiencia de éste. Otra conclusión dentro del mismo estudio, es que para crear un conjunto de datos de profundidad lo más eficientemente posible, es necesaria la posición 3D de cada articulación, descartando la orientación de éstas, ya que si se incluye la orientación al conjunto de datos, se pierde eficiencia para predecir cuando un individuo está a puntando a una zona de la escena. De los resultados obtenidos en este estudio, se llega a la conclusión de que el clasificador J48 obtenido para predecir la zona a la que está apuntando un usuario, no es muy eficiente debido a que utilizando un conjunto de datos distinto como conjunto de test, se obtiene 75 76 CAPÍTULO 5. CONCLUSIONES Y TRABAJO FUTURO un 77,4 % de tasa de acierto y un 38,4 % error relativo absoluto, por lo que se arrastra demasiado error a la hora de clasificar una nueva instancia. Aunque los resultados no sean muy favorables, la utilización de un clasificador J48 es suficiente para predecir la zona a la que está apuntando el individuo con buenos resultados en la práctica. En el experimento de la detección de color, la utilización de la ecuación 3.8 para averiguar el color de los objetos, se descarta debido a que no se aproxima al color real del objeto analizado, por lo que la implementación de un clasificador J48 mejora enormemente la detección de color. Como el clasificador está basado en el rango Cr y Cb por el que se mueven los colores de referencia, obtiene más eficiencia respecto a la ecuación 3.8, ya que esta ecuación toma un único valor de referencia por color. Por otro lado, teniendo en cuenta el resultado del estudio de la eficiencia en el reconocimiento de objetos respecto la forma básica, el robot obtiene un gran resultado de eficiencia en la detección de objetos que se encuentran en el plano perpendicular a la cámara (independientemente de la iluminación que haya en la escena), en cambio, es poco eficiente a la hora de identificar objetos que están en el plano paralelo a la cámara. Por último, de los resultados obtenidos en el estudio del reconocimiento de objetos especı́ficos, se ha comprobado que es mucho más eficiente el clasificador J48 obtenido del conjunto de datos al que se le ha añadido el valor de clase SinId. En este estudio, también se puede observar que el clasificador creado del conjunto de datos donde sólo se utilizan como atributos los momentos Hu, el centro de masas y los componentes Y Cr Cb , es más eficiente que el clasificador que además de mantener los atributos mencionados, también contiene los momentos centrales y normalizados. Según los resultados obtenidos, al detectar los objetos por los descriptores de región, se puede concluir que objetos que no se parecen ni en la forma ni en el color a otros objetos, se obtienen buenos resultados de detección, pero por contra, objetos que se parecen en la forma y en el color no se detectan de forma eficiente. Por último, mencionar que este proyecto será expuesto en el congreso Workshop of physical agents que se celebrará en Septiembre de 2012 en Santiago de Compostela. 5.2. Trabajo Futuro Para trabajo futuro, se plantea utilizar otros métodos basados en la información que aporten más eficiencia a la hora de detectar cuándo una persona está apuntando a una zona de la escena, ya que con clasificadores J48 y utilizando como conjunto de test otro conjunto de datos, no se obtienen grandes resultados de eficiencia. Los otros métodos que se tienen en mente son la implementación de redes neuronales o por medio de conjuntos difusos, aunque este último puede resultar inviable debido al gran coste 5.2. TRABAJO FUTURO 77 computacional que puede alcanzar por todas las variables necesarias. Para detectar los colores de forma más eficiente se pueden incluir más colores de referencia, además de incluir los rangos completos de los componentes Cr y Cb para cada color, ya que de esta manera aumenta la efectividad del clasificador empleado. También se puede incluir alguna técnica más eficiente para detectar cı́rculos, cuadrados y triángulos que funcione tanto en planos paralelos como en perpendiculares a la cámara. Para detectar objetos especı́ficos, se puede implementar algún clasificador u otro método que utilice los puntos SIFT como descriptores, puesto que utilizando dichos puntos se obtienen muy buenos resultados en la detección aunque los objetos hayan sufrido traslaciones, rotaciones y/o escalados, y no es necesario utilizar un background para detectar los objetos. Puesto que el sistema sólo reconoce a un usuario, también serı́a interesante dotarlo de medios para que detecte a más de un usuario, de manera que un sistema pueda comunicarse con más de una persona a la vez. Para lı́neas futuras, se debe incorporar a la nube RobotEarth, que consta de una red y una base de datos que los robots utilizan para compartir conocimientos y caracterı́sticas de los entornos, que les sirve para mejorar en eficiencia a la hora de realizar tareas y en la HRI. Bibliografı́a Aliaga, I. (2000). Teleoperación 2d. Centro de Estudios e Investigaciones Ténicas de Gipuzkoa. 6 Artificial, C.V. (2005). Segmentación por umbralización, método de otsu. Universidad Nacional de Quilmes. 22 Baumela, L. & J.M.Buenaposada (2006). Visión por computador. Universidad Politécnica de Madrid . 12 C.Barron & Kakadiaris, I. (2000). Estimating anthropometry and pose from a single image. Computer Vision and Pattern Recognition. 36 C.Burgos, A. (2009). Selección de variables en problemas multiclase. Universidad Nacional de Rosario. 36 Chen, Q. (2006). Hand detection with a cascade of boosted clasifiers using haar-like features. Discover Lab, SITE, University of Ottawa. Cuesta, J., Prio, R.A. & Martı́nez, J. (2008). Development of a tourproviding robot integrating dialogue system and emotional speech: Robint project. Grupo de Tecnologı́a del Habla, UPM . 8 F.Alonso & M.A.Salichs (2011). Integration of a voice recognition system in a social robot. Universidad Carlos 3 de Madrid . 8 Frintrop, S., Rome, E. & Christensen, H. (2010). Computational visual attention systems and their cognitive foundations: A survey. ACM Journal Name, Vol 7, No 1 . v, 12 Garcı́a, D. (2008). Desarrollo de aplicación para visión artificial. Arquitectura y Tecnologı́a de Computadores, Universidad De Sevilla. 10, 24 Girshick, R., Shotton, J., Kohli, P., Criminisi, A. & Fitzgibbon, A. (2010). Efficient regression of general-activity human poses from depth images. University of Chicago and Mocrosoft Research Cambridge. 37 79 80 BIBLIOGRAFÍA G.Mori & J.Malik (2006). Recovering 3d human body configurations using shape contexts. IEEE trans on pattern analysis and machine intelligence. 36 Goodrich, M.A. & Schultz, A.C. (2007). Human-robot interaction: A survey. US Naval Research Laboratory. 5 Henrı́quez, H.E.F. (2007). Diseño y construcción de interfaces hri utilizando gestos realizados con las manos. Universidad de Chile. 8, 9, 10 Herrera, A.S., nez, M.N. & Sanchez, S.L. (2004). Procesamiento de imágenes para la detección de objetos en movimiento. Universidad Autónoma Metropolitana. 17 Itti, L. & Koch, C. (2001). Computational modeling of visual attention. Institute of Technology, California. 11 J.C.Garay, O., Quintanilla, E.M., Quispe, J.C. & Tesén, J.A. (2009). Diseño e implementación de la transformada de hough aplicada a la detección de lı́neas rectas sobre un fpga. Universidad Nacional de Ingenierı́a de Lima. 18, 19 Jiménez, J.G. (1999). visión por computador. international thomson publishing paraninfo. 12, 13, 14, 15, 17, 28 J.M.Rehg & T.Kanade (1995). Model-based tracking of self-occluding. In ICCV . 36 López, C.F.R. (2009). Sistema de interacción humano robot basado en voz para el entrenamiento de comportamientos. Instituto Tecnológico Autónomo de México. 7 M.J.L.Boada, R.Barber, V.Egido & M.A.Salichs (2004). Sistema de navegación por voz para robots móviles autónomos. Universidad Carlos 3 de Madrid and Universidad Europea de Madrid . 8 no Ortega, E.N. & nez Villaluenga, L.B. (2004). Teleoperación: técnicas, aplicaciones, entorno sensorial y teleoperación inteligente. Universidad Politécnica de Barcelona. 6 Pavlovic, V., Sharma, R. & Huang, T. (1997). Visual interpretation of hand gestures for human-computer interaction. IEEE Transactions on Pattern Analysis and Machine Intelligence. 10 Rebaza, J.V. (2007). Detección de bordes mediante el algoritmo de canny. Universidad Nacional de Trujillo. 13, 16 BIBLIOGRAFÍA 81 R.LópezCózar, A.L.Rubio, P.Garcı́a & J.E.DÃazVerdejo (2004). Interacción hombremáquina mediante sistemas automáticos del diálogo. Universidad de Granada. 8 Ruiz, M.P. (2007). Robot teleoperado de aplicación en entornos no estructurados. Universidad Politécnica de Cartagena. 6 Sarasola, M.P. (2007). Control remoto de un robot industrial. Escuela superior de Ingenerı́a Industrial de Barcelona. 6 Sun, Y. & Fisher, R. (2002). object-based visual attention for computer vision. School of Informatics, The University of Edinburgh. 11 Waldherr, S., Romero, R. & Thrun, S. (2000). A gesture based interface for human-robot interaction. Autonomous Robots. 10 Xia, L., Chen, C.C. & Aggarwal, J. (2011). Human detection using depth information by kinect. The university of Texas, Departament of Electrical and Computer Engineering. 36