Atención Visual Activa Para Interacción Humano Robot

Anuncio
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
Descargar