sistema para el aprendizaje del lenguaje de señas
TRANSCRIPT
Universidad de La Salle Universidad de La Salle
Ciencia Unisalle Ciencia Unisalle
Ingeniería en Automatización Facultad de Ingeniería
2018
Sistema para el aprendizaje del lenguaje de señas colombiano Sistema para el aprendizaje del lenguaje de señas colombiano
usando visión por computador usando visión por computador
Iván Camilo Triviño López Universidad de La Salle, Bogotá
Follow this and additional works at: https://ciencia.lasalle.edu.co/ing_automatizacion
Part of the Computer Engineering Commons, and the Engineering Education Commons
Citación recomendada Citación recomendada Triviño López, I. C. (2018). Sistema para el aprendizaje del lenguaje de señas colombiano usando visión por computador. Retrieved from https://ciencia.lasalle.edu.co/ing_automatizacion/159
This Trabajo de grado - Pregrado is brought to you for free and open access by the Facultad de Ingeniería at Ciencia Unisalle. It has been accepted for inclusion in Ingeniería en Automatización by an authorized administrator of Ciencia Unisalle. For more information, please contact [email protected].
SISTEMA PARA EL APRENDIZAJE DEL LENGUAJE DE SEÑAS
COLOMBIANO USANDO VISIÓN POR COMPUTADOR
IVÁN CAMILO TRIVIÑO LÓPEZ
UNIVERSIDAD DE LA SALLE
FACULTAD DE INGENIERÍA
INGENIERÍA EN AUTOMATIZACIÓN
BOGOTÁ, D.C.
2018
SISTEMA PARA EL APRENDIZAJE DEL LENGUAJE DE SEÑAS
COLOMBIANO USANDO VISIÓN POR COMPUTADOR
IVÁN CAMILO TRIVIÑO LÓPEZ
TRABAJO DE GRADO PARA OPTAR POR EL TITULO DE INGENIERO EN
AUTOMATIZACIÓN
Director
CESAR HERNÁN RODRÍGUEZ GARAVITO, PhD.
UNIVERSIDAD DE LA SALLE
FACULTAD DE INGENIERÍA
INGENIERÍA EN AUTOMATIZACIÓN
BOGOTÁ, D.C.
2018
Nota de aceptación
Firma del presidente del jurado
Firma del jurado
Firma del jurado
Bogotá D.C.
DEDICATORIA Y AGRADECIMIENTOS
Dedico este trabajo a mis padres Martha López y Camilo Triviño que con su esfuerzo
hicieron todo lo posible para permitirme comenzar y culminar este proceso y ayudarme a
lograr mis objetivos. Agradezco su apoyo, sus consejos y su preocupación por hacerme
crecer como persona y como profesional día a día.
Agradezco a mi hermano Edwin Triviño, a mi abuela Flor López y a mi novia Vanessa
Aristizabal, quienes contribuyeron durante este proceso formativo con sus consejos, su
apoyo incondicional y su compañía.
Agradezco a mi director de trabajo de grado Cesar Rodríguez por todas sus enseñanzas
a lo largo del desarrollo de este trabajo de grado; todo el conocimiento que me compartió
sin duda me hizo crecer como persona y como profesional.
Por último, comparto este logro con las personas anteriormente mencionadas y con to-
dos los profesores, compañeros y amigos que estuvieron presentes a lo largo de este
proceso.
TABLA DE CONTENIDOS
pág.
INTRODUCCIÓN 1
1. VISIÓN POR COMPUTADOR 10
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Representación de una imagen . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.1. Espacio de color RGB . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2. Espacio de color YCrCb . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. Descriptores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1. Local Binary Patterns (LBP) . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2. Histograma de Orientación de Gradientes (HOG) . . . . . . . . . . . 17
1.3.3. Firma del contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.4. Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2. DETECCIÓN Y SEGUIMIENTO 22
2.1. Adquisición de la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2. Pre-procesamiento y detección de la mano . . . . . . . . . . . . . . . . . . 24
2.3. Seguimiento o tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3. RESULTADOS DE CLASIFICACIÓN 30
3.1. Métricas empleadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.1. Exactitud o accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
III
3.1.2. Precisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.3. Sensibilidad o Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.4. F1-Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2. Clasificación de señas estáticas . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3. Clasificación de señas dinámicas . . . . . . . . . . . . . . . . . . . . . . . . 36
4. DESARROLLO DE LA APLICACIÓN 39
4.1. Resultados de encuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5. CONCLUSIONES 44
5.1. TRABAJO FUTURO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
REFERENCIAS 47
A. Matrices de confusión de señas estáticas 50
B. Matrices de confusión de señas dinámicas 52
C. Formato de encuesta 53
IV
LISTA DE FIGURAS
pág.
1. Ejemplo de interfaz Humano-Maquina aplicado al proyecto Linux . . . . . . 1
2. Diagrama de funcionamiento del sistema diseñado. . . . . . . . . . . . . . 4
3. Representación de una imagen mediante un histograma . . . . . . . . . . . 11
4. Representación matricial del espacio RGB . . . . . . . . . . . . . . . . . . 12
5. Imágenes tomadas para ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 14
6. Ejemplo de cálculo de descriptor LBP . . . . . . . . . . . . . . . . . . . . . 15
7. Patrones LBP uniformes en una imagen . . . . . . . . . . . . . . . . . . . . 16
8. Ejemplo de características LBP . . . . . . . . . . . . . . . . . . . . . . . . . 16
9. Ejemplo de características HOG . . . . . . . . . . . . . . . . . . . . . . . . 18
10. Ejemplo de características de Firma Contorno . . . . . . . . . . . . . . . . 19
11. Ejemplo de descriptor de trayectoria . . . . . . . . . . . . . . . . . . . . . . 21
12. Superposición de imágenes del sensor de profundidad y el sensor RGB
sin calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
13. Diagrama de descripción de las etapas de pre-procesamiento y detección
de la mano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
14. Posiciones de la mano detectadas por el clasificador Haar Cascade pre-
entrenado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
15. Validación de la mano detectada por el clasificador Haar Cascade . . . . . 26
16. Segmentación por color de piel . . . . . . . . . . . . . . . . . . . . . . . . . 27
17. Ilustración de los vecinos que son seleccionados por cada pixel. . . . . . . 28
V
18. Representación genérica de la matriz de confusión. . . . . . . . . . . . . . 30
19. Tablas de precisión de señas estáticas. . . . . . . . . . . . . . . . . . . . . 33
20. Gráficas de precisión de señas estáticas. . . . . . . . . . . . . . . . . . . . 34
21. Exactitud de clasificación de señas estáticas. . . . . . . . . . . . . . . . . . 34
22. Métricas F1-Score promedio para cada descriptor. . . . . . . . . . . . . . . 35
23. Tabla de precisión de señas dinámicas . . . . . . . . . . . . . . . . . . . . . 36
24. Tabla de precisión de señas dinámicas . . . . . . . . . . . . . . . . . . . . . 37
25. Tabla de resultados de la métrica F1-Score de señas dinámicas . . . . . . . 37
26. Gráfica de resultados promedio de la métrica F1-Score para señas dinámicas 38
27. Tabla de resultados de exactitud para señas dinámicas . . . . . . . . . . . 38
28. Vistas de la aplicación desarrollada . . . . . . . . . . . . . . . . . . . . . . 39
29. Distribución de la vista de práctica . . . . . . . . . . . . . . . . . . . . . . . 40
30. Tiempo promedio de ejecución de cada componente de la aplicación . . . 41
31. Resultados de las encuestas . . . . . . . . . . . . . . . . . . . . . . . . . . 42
32. Matrices de confusión para el clasificador de Naive bayes. . . . . . . . . . . 50
33. Matrices de confusión para el clasificador de SVM. . . . . . . . . . . . . . . 50
34. Matrices de confusión para el clasificador de ANN. . . . . . . . . . . . . . . 51
35. Matrices de confusión para el clasificador de KNN. . . . . . . . . . . . . . . 51
36. Matriz de confusión para el clasificador de Naive bayes. . . . . . . . . . . . 52
37. Matriz de confusión para el clasificador de KNN. . . . . . . . . . . . . . . . 52
38. Matriz de confusión para el clasificador de Random Forest. . . . . . . . . . 52
39. Matriz de confusión para el clasificador de SVM. . . . . . . . . . . . . . . . 52
VI
LISTA DE ALGORITMOS
pág.
1. Proceso de remuestreo sobre la trayectoria. . . . . . . . . . . . . . . . . . . 21
2. Pseudocódigo del algoritmo Region growing. . . . . . . . . . . . . . . . . . . 29
VII
RESUMEN
El reconocimiento de gestos con las manos es un área de investigación que ha capturado
la atención de muchos investigadores para el desarrollo de aplicaciones de interacción
Humano-Máquina (HCI, por sus siglas en inglés), entre las que se pueden encontrar
realidad virtual, realidad aumentada, juegos, aplicaciones educativas, entre otras.
En el presente proyecto de investigación se desarrolló un sistema para el apoyo de la
enseñanza del lenguaje de señas a través de una aplicación HCI que emplea visión
por computador; el sistema propuesto le indica al usuario a través de una imagen o
un videoclip, qué seña debe ejecutar y de qué manera debe hacerlo, posteriormente
le permite ejecutar la seña mientras la captura con un dispositivo Microsoft Kinect para
luego, haciendo uso de procesamiento de imágenes digitales y algoritmos de inteligencia
artificial, determinar si el usuario ha ejecutado la seña de manera correcta.
La aplicación desarrollada es capaz de clasificar un conjunto de siete señas estáticas,
con un total de 3.600 muestras y cuatro señas dinámicas, con un total de 1.800 muestras;
para el análisis de las señas estáticas se tuvieron en cuenta tres descriptores: HOG,
U-LBP y Firma del contorno, junto con cuatro clasificadores: Naive Bayes, SVM, ANN
y KNN, obteniendo que el mejor descriptor es HOG, con una precisión promedio de
clasificación de 0, 9795 con el clasificador SVM y asimismo que el mejor clasificador es
SVM con una exactitud de clasificación de 0, 9800 y un resultado de F1-Score de 0, 9798
junto con el descriptor HOG. Por otro lado, para las señas dinámicas se tuvo en cuenta un
descriptor basado en la trayectoria junto con cuatro clasificadores: Random Forest, SVM,
KNN y Naive Bayes, obteniendo que el mejor clasificador es el SVM con una exactitud
de clasificación de 0, 9400, una precisión promedio de 0, 9400 y un resultado de F1-Score
de 0, 9390.
El desarrollo de la aplicación así como las pruebas, se realizaron en un computador con
procesador Intel Core i5 de 2,5 GHz con TurboBoost 3,1GHz y 8GB de memoria RAM.
Palabras clave: visión por computador, seguimiento de la mano, Microsoft Kinect, ma-
chine learning, Interfaz Humano-Maquina
INTRODUCCIÓN
El reconocimiento de gestos con las manos es un área de investigación que ha cap-
turado la atención de muchos investigadores independientes y empresas a lo largo del
mundo, para el desarrollo de aplicaciones de interacción Humano-Máquina (HCI, por sus
siglas en inglés), entre estas podemos encontrar aplicaciones de realidad virtual, reali-
dad aumentada, juegos, aplicaciones educativas, entre otras. En la Figura 1 se observa
un ejemplo de cómo funciona una aplicación HCI; por un lado se tiene al usuario, quien a
través de sus sentidos interactúa con el hardware que se encarga de traducir las peticio-
nes del usuario a lenguaje de máquina, el cual es interpretado por una pieza de software
que retorna una respuesta la cual se presenta al usuario a través del hardware nueva-
mente.
Figura 1: Ejemplo de interfaz Humano-Maquina aplicado al proyecto Linux.
Fuente: Otto Traian (2014)
1
Lenguaje de señas
El lenguaje por el cual se expresan las personas hipoacúsicas es llamado lenguaje de
señas, el cual es el objeto de estudio de este trabajo; los elementos del lenguaje de señas
son la configuración, la posición y la orientación de las manos en relación con el cuerpo
y con el individuo, de los cuales también se tiene en cuenta el espacio, la dirección y la
velocidad, entre otros elementos, para transmitir el significado del mensaje (Insor, 2018).
El lenguaje de señas en el mundo occidental tiene sus inicios formales a partir del año
1755, cuando el abad francés Charles Michel de l’Épée funda en París la primera escuela
pública para sordos, donde desarrolla un alfabeto y crea signos que posteriormente se
adaptaron a una estructura gramatical parecida al idioma francés; ese primer lenguaje
de señas posteriormente dio inicios a otros lenguajes de señas como el Lenguaje de
Señas Americano (ASL, por sus siglas en inglés), Lenguaje de señas Mexicano (LSM),
el Lenguaje de señas Brasileño (LIBRAS, por sus siglas en brasileño), entre otros (Cruz,
2008). A partir de la extensión del lenguaje de señas alrededor del mundo, cada país
lo adoptó de una manera particular teniendo en cuenta su cultura y su idioma natal
(aunque sin embargo es importante aclarar que el lenguaje de señas en un país no
es dependiente de su idioma natal y no necesariamente guarda estrecha relación con el
mismo); el lenguaje de señas adoptado para la realización de este trabajo es el Lenguaje
de Señas Colombiano (LSC).
La comunidad de personas hipoacúsicas está conformada por individuos pertenecientes
a diferentes condiciones personales y sociales, haciéndola heterogénea; sin embargo,
la imposibilidad de comunicación verbal genera una limitante en la integración social y
participación en actividades laborales, académicas, entre otras; asimismo, quienes no
padecen de dicha patología no son formados para establecer comunicación mediante el
Lenguaje de Señas (Tovar, 2015). Dado el problema anterior, se decidió realizar el pre-
sente proyecto de investigación con el fin de aportar al desarrollo de una aplicación HCI
que despierte el interés de las personas para aprender lenguaje de señas, enseñándoles
algunos elementos básicos del mismo. Todo esto se realizó a través de una aplicación
de visión por computador que además de enseñarle al usuario cómo se ve una seña, lo
2
incentiva a realizarla, validando si la está ejecutando de manera correcta.
Para abordar el problema anterior, se dividió el sistema en tres módulos principales: un
primer módulo de captura y pre-procesamiento de imágenes, en este módulo se captura
la imagen por medio del sensor y se le aplica una serie de filtros para disminuir el ruido
en la escena, el cual puede surgir como consecuencia de las características físicas del
sensor o de las condiciones medioambientales y se compone de una variación de color
aleatoria en la imagen; un segundo módulo para procesar las imágenes y extraer los
elementos de interés que van a ser posteriormente analizados, a esto se le denomina
segmentación y extracción de características (también conocidas como descriptores); fi-
nalmente un último módulo que se encarga de pasar las características por algoritmos
de aprendizaje automático (machine learning) y determinar si la respuesta obtenida con-
cuerda con la seña que se le está solicitando al usuario.
En la Figura 2 se muestra un diagrama que describe el funcionamiento general de la
aplicación diseñada; inicialmente se capturan las imágenes con el sensor Microsoft Ki-
nect (tanto RGB como de profundidad), posteriormente se extrae el fondo y se busca una
mano abierta en la escena, cuando la mano es encontrada se clasifica la seña ingresada
usando el modelo de machine learning previamente entrenado y por último se le entrega
al usuario el resultado de clasificación cuando este es exitoso.
Para el desarrollo e implementación de este proyecto se utilizó un computador Macbook
Pro con procesador Intel Core i5 dual core de 2,5 GHz, 8 GB de memoria RAM y un
sensor óptico Microsoft Kinect V1. En cuanto al software se empleó el driver que ofrece
OpenKinect mediante su librería libfreenect para establecer conexión con el sensor Ki-
nect y capturar datos, la librería OpenCV (Bradski, 2000) para realizar procesamiento de
imágenes digitales, las librerías scikit-learn (Pedregosa et al., 2011) y TensorFlow (Aba-
di et al., 2015) para estandarización de descriptores y algoritmos de machine learning,
NumPy (Oliphant, 2006) para computación científica y manejo de matrices, Cython (Beh-
nel et al., 2011) para optimización de módulos de python y PyQt para realizar la interfaz
gráfica.
El conjunto de datos utilizado se creó desde ceros, ya que era necesario extraer los des-
3
Figura 2: Diagrama de funcionamiento del sistema diseñado.
Fuente: El autor. Imágenes tomadas de Freepik.
criptores y entrenar los algoritmos de machine learning con las imágenes y trayectorias
obtenidas luego del procesamiento de las imágenes capturadas para prevenir que se
propagara un error de clasificación; asimismo, se recopilaron imágenes propias ya que
no existen bancos de datos libres para el Lenguaje de Señas Colombiano. Para la clasifi-
cación de las señas estáticas se capturaron en total 3.600 imágenes pertenecientes a 9
diferentes categorías: letra A, letra B, letra E, letra L, letra V, letra W, letra Y, Fondo y Pal-
ma abierta. Para la clasificación de las señas dinámicas de capturaron 800 trayectorias
pertenecientes a 4 diferentes categorías: Decidir, Diferente, Hacer y Jugar.
El desarrollo de la aplicación se realizó para el Lenguaje de Señas Colombiano, sin
embargo los métodos de pre-procesamiento, seguimiento y segmentación de la mano,
extracción de descriptores y entrenamiento de clasificadores son aplicables a cualquier
lenguaje de señas, siempre y cuando se cuente con un conjunto de datos de las señas
de interés.
4
Trabajos relacionados
Particularmente, en el análisis de gestos para el reconocimiento del lenguaje de señas
se han realizado varias investigaciones y desarrollos tanto a nivel nacional como a nivel
internacional. Es importante aclarar que el lenguaje de señas no es universal; es decir,
cada país e incluso cada ciudad/region puede adoptar señas diferentes, lo que hace que
centrarse en el desarrollo de un único software no sea suficiente para abarcar la gran
magnitud de señas y es ahí donde radica la importancia del estudio particular por cada
país en el área. A continuación se exponen algunos trabajos relevantes relacionados a
este proyecto de investigación.
RIVERA et al. (2013) en su trabajo “IDENTIFICACIÓN DE LA PUNTA DE LOS DEDOS
DE LA MANO EN UN PLANO 2D BASADO EN KINECT” presenta un sistema de reco-
nocimiento de la ubicación del centro de la palma de la mano y a través de la técnica de
Alineamiento Temporal Dinámico (DTW por sus siglas en inglés) encuentra la ubicación
de los dedos con ayuda del sensor de profundidad de la Kinect. Debido a variables como
la luminosidad y distorsión de contornos, la exactitud del reconocimiento de la mano se
ve afectada, por lo que a través de un modelo se procede a encontrar la ubicación más
acertada de los dedos de la mano, pero no se tiene distinción de cuál de los dedos de los
extremos corresponde al meñique y cuál corresponde al pulgar. Por otro lado, Rodríguez
et al. (2013) en su trabajo “Software que captura, por medio de Kinect, los datos de las
señas manuales y los traduce a texto” captura los puntos de la escena con el sensor de
profundidad de la Kinect y mediante procedimientos de filtrado de la imagen elimina los
datos no deseados, reconstruyendo finalmente una en 2D que contiene los datos desea-
dos. Para el análisis de la imagen resultante captura el gesto realizado y lo compara con
la base de datos para encontrar similitudes con algún dato y presentar los resultados
finales. Concluyen, que empleando la librería OpenCV es posible realizar el filtrado de
las imágenes, en escala de grises para este caso particular, sin un elevado coste compu-
tacional. Se entrena una red neuronal para llevar a cabo la clasificación de los elementos
de entrada del sistema. Si bien ambos trabajos emplean el sensor de profundidad para
determinar la ubicación de la mano, el primer trabajo distingue la posición de cada de-
do de la mano mientras el segundo trabajo toma la imagen segmentada y binarizada, y
5
la analiza con la base de datos. Si bien puede resultar más fácil segmentar la imagen
y realizar la posterior identificación, para el desarrollo de este proyecto es de gran im-
portancia conocer la posición de la mano para acertar en el signo que el usuario está
introduciendo, aunque no precisamente realizando aproximaciones mediante modelos.
Vargas et al. (2010) presenta un sistema de reconocimiento de patrones de imágenes es-
táticas empleando redes neuronales para la identificación de las señas del Lenguaje de
Señas Colombiano; consiste en una red neuronal multicapa con un algoritmo de retropro-
pagación. Se capturan las imágenes y se les realiza un procesamiento para adaptarlas a
la red con el fin de discriminar patrones de mejor forma. El sistema presentó un desem-
peño favorable para el reconocimiento de señas estáticas mediante redes neuronales.
En este trabajo se presenta al sistema la seña en un ambiente controlado, por lo que la
influencia de las perturbaciones lumínicas medioambientales se reduce en gran medida,
pero se limita el uso del software a un ambiente particular.
Plaza (2015) realiza una herramienta computacional capaz de capturar una secuencia de
imágenes, correspondientes a los gestos que ingresa el usuario; el software se encarga
de analizar el gesto introducido para emitir el texto correspondiente a su significado.
El software permitió identificar correctamente los signos en diferentes ambientes. Se
empleó el algoritmo convexhull para detectar adecuadamente el contorno de la mano
y apoyar el proceso de identificación del significado del signo ingresado; también se
empleó el algoritmo k-nearest para el entrenamiento del clasificador.
Sánchez and Hurtado (2015) emplean la API ofrecida por Microsoft para el sensor Kinect,
que proporciona las posiciones de las articulaciones del cuerpo humano en un espacio
bidimensional. Con las posiciones se usa la técnica DWT para realizar la traducción del
LSC a texto, para lo cual se obtuvo un 98,2 % de acierto. Este trabajo está orientado
únicamente al reconocimiento de señas dinámicas, principalmente debido a la técnica
empleada; los resultados de este trabajo dejan ver que la técnica DWT resulta ser una
opción adecuada para el análisis de señas dinámicas dado su porcentaje de éxito.
A nivel nacional, el trabajo realizado hasta el momento presenta mayor similitud es el
realizado por Londoño (2015), el cual se titula “Aplicativo para apoyar el proceso de
6
aprendizaje del lenguaje de señas hacia un oyente mediante Microsoft Kinect”. El trabajo
presenta un aplicativo que por medio de un sensor de tipo RGB-D procesa las imágenes
capturadas y a través de inteligencia artificial enseña al usuario conceptos básicos sobre
el lenguaje de señas colombiano. Se hizo énfasis en el filtrado de la imagen de entrada
para eliminar variables de luminosidad y contraste, esto con el fin de evitar calibrar el
sistema cada vez que se iniciase. Se concluyó que el entrenamiento juega un papel
crucial, ya que los valores de convergencia de los estados de la cadena de Markov están
ligados con las secuencias de entrenamiento, por lo que con puntos parecidos el sistema
no sabe a cuál converger.
Vogler and Metaxas (2001) propone un framework para el reconocimiento del lenguaje de
señas americano que consiste en la descomposición de los signos en sus fonemas que
emplea Modelos Paralelos Ocultos de Markov para así obtener aspectos simultáneamen-
te de forma independiente; con lo cual se logra que se pueda realizar el entrenamiento
de forma independiente sin requerir la consideración de las diferentes combinaciones.
Se realizó el experimento para 22 signos diferentes del Lenguaje de Señas Americano
y se demostró la eficiencia de los Modelos Paralelos Ocultos de Markov frente a los
convencionales.
Chana and Jakkree (2016) propone una técnica de reconocimiento de la postura de la
mano con fondos complejos, aprovechando las características del sensor Microsoft Ki-
nect para evitar interferencias del entorno como el color de la piel. Se emplean histogra-
mas de gradiente orientado para extraer las características de los signos introducidos,
que posteriormente son pasadas por una red neuronal artificial para el entrenamiento y
reconocimiento. Se observó que el método propuesto es robusto en cuanto a la detec-
ción de signos introducidos en entornos con fondos complejos. Se obtuvo un porcentaje
de reconocimiento del 84,05 % para el reconocimiento de 24 signos diferentes.
Yamashita and Watasue (2014) propone una metodología en la que se divide la comple-
ja arquitectura de la mano; por un lado se realiza la extracción de la forma de la mano
con fondos complejos y cambios de iluminación y por otro lado el reconocimiento de la
postura de la mano por medio de una imagen binarizada. Según lo anterior, se propone
la implementación de una red neuronal convolucional con capas especiales para la ex-
7
tracción de características de imágenes binarizadas. Se obtuvieron mejores resultados
en comparación con con el método base (esto es, sin incluir las capas especializadas en
extracción de características de las imágenes binarizadas). PÉREZ (2012) propone en
su tesis de maestría un sistema que contiene dos módulos principales: uno de aprendi-
zaje y uno de reconocimiento. Emplea un sensor Microsoft Kinect para capturar los datos
y compararlos con los patrones almacenados en la base de conocimiento del sistema.
Cuando se ingresa un signo con una similitud menor al 90 % se acciona el módulo de
aprendizaje que almacena el nuevo signo ingresado. Con el primer método se reconocen
20 signos diferentes invariantes a rotaciones , escalamiento y traslaciones del lenguaje
de señas mexicano; para este método se requiere de un fondo negro, condiciones de
iluminación controladas y que la mano se sitúe a 50cm del sensor óptico. Se encontró
que el problema más recurrente es identificar la ubicación de la muñeca, ya que el an-
tebrazo afecta el reconocimiento de la mano. Con el segundo método se reconocieron
25 señas del Lenguaje de Señas Mexicano; con este método se obtuvo una tolerancia
ante las rotaciones y deformaciones de la mano durante la ejecución, además de que no
requiere de aprendizaje previo. Se observó que capturar la mano con el sensor Kinect
presenta una ventaja para el proceso de segmentación, pero debido a la resolución de la
cámara (para la versión 1) no se puede distinguir la transición entre señas realizadas rá-
pidamente debido al efecto motion blur. Para el proceso de aprendizaje-reconocimiento
del segundo método se requirió definir un umbral de reconocimiento para discriminar
adecuadamente cuando se trata de una seña del Leguaje según los datos de la base de
conocimiento; dicho umbral debe ser menor o igual al 10 % para un resultado correcto.
A nivel internacional, uno de los trabajos más representativos en el campo de hand trac-
king es el presentado por POUDEL (2014) en su tesis doctoral. En esta se propone una
técnica basada en regiones para la detección del color de la piel, que contrasta con
las técnicas empleadas actualmente basadas en pixeles y según el autor supera los re-
sultados obtenidos; se basa en una técnica de segmentación llamada superpixels que
agrupa varios pixeles del mismo color. El framework propuesto consta de 3 módulos:
segmentación de regiones de la mano, estimación de la postura mediante regresiones y
seguimiento de la mano empleando estimación de la posición, prioridad cinemática e in-
8
formación temporal. Empleando la técnica propuesta se obtuvo un resultado del 91,17 %
de aciertos, frente a un 13,12 % de falsos negativos. El trabajo realizado en esta tesis fue
publicado en la propuesta de código abierto para liberación del SDK’s del sensor Kinect
para el sistema operativo Microsoft.
9
1. VISIÓN POR COMPUTADOR
1.1. Introducción
La visión artificial, también conocida como visión por computador (CV, por sus siglas
en inglés), es un campo de la inteligencia artificial en el cual por medio de análisis de
imágenes se obtiene una descripción de los objetos capturados en una escena. Dentro
de los campos en los que se utiliza la visión por computador se encuentran aplicaciones
militares, de control de calidad industrial, robótica, agricultura, biomedicina, seguridad,
control de tráfico, etc.
Para lograr el correcto funcionamiento de una aplicación de visión artificial es necesa-
rio inicialmente preparar la imagen para ser leída de manera adecuada, resaltando las
características principales que se desean obtener mediante filtros, y posteriormente ex-
traer los datos de interés mediante diferentes técnicas que varían según la aplicación en
concreto. (de la Escalera, 2001)
1.2. Representación de una imagen
Una imagen digital se compone de un conjunto de valores numéricos que van típica-
mente de 0 a 255, cada valor es denominado pixel y su posición dentro de la imagen se
determina a través de coordenadas X y Y que se sitúan en los ejes horizontal y vertical
con límites en el ancho y alto de la imagen respectivamente, siendo el eje X horizontal y
positivo en dirección derecha y el eje Y vertical y positivo hacia abajo. De forma general,
considerando un modelo de imagen simple f(x, y) compuesta únicamente de valores de
intensidad luminosa (imagen en escala de grises), donde el valor f(x, y) es el valor de
intensidad en el pixel (x, y), se tiene que f(x, y) ∈ [0,∞) debido a que la luz es una forma
de energía (Muñoz P., 2009).
La intensidad luminosa de la imagen f(x, y) se puede caracterizar por dos componen-
tes: la cantidad de luz que incide en la escena denotada por I(x, y) ∈ [0,∞) y la cantidad
de luz reflejada por los objetos de la escena denotada por r(x, y) ∈ [0, 1], de manera que:
10
f(x, y) = I(x, y)× r(x, y) (1)
De la Ecuación 1 se obtiene que una imagen tiene una representación matricial y por
tanto es susceptible de ser computada con otras imágenes por medio de operaciones
como suma, resta o multiplicación; asimismo, una imagen digital puede ser representa-
da mediante histogramas, los cuales son funciones que indican la frecuencia con la que
aparecen los valores de intensidad que pueden tomar los pixeles, como se muestra en
la Figura 3; sin embargo, es necesario tener en cuenta que esta representación no pro-
porciona información espacial de la imagen, por lo que dos imágenes diferentes podrían
llegar a tener un mismo histograma, razón por la cual esta representación no suele ser
utilizada como una descripción de la imagen (de la Escalera et al., 2016).
Figura 3: Representación de una imagen mediante un histograma.
Fuente: Girod (2013)
Además de la intensidad, los objetos presentes en una escena se caracterizan principal-
mente por el color. Un espacio de color es una interpretación que a partir de un conjunto
de ecuaciones matemáticas permite describir los colores de una imagen y descomponer-
los en canales. Existen multiples espacios de color que según su composición pueden
ser empleados en diferentes contextos para resaltar ciertas características, entre algunos
11
de los más populares se encuentran el RGB, el HSV y el YCrCb.
1.2.1. Espacio de color RGB
Es el más extendido y el que utilizan dispositivos como cámaras de video y cámaras fo-
tográficas para construir imágenes de color, motivo por el cual es ampliamente utilizado
como sistema de referencia en aplicaciones de visión por computador, ya que trabajar
con el mismo espacio de color en que vienen las imágenes desde el sensor disminu-
ye la aparición de ruido y previene la alteración de las propiedades del color durante
operaciones sobre la imagen.
En el espacio de color RGB los colores están definidos por la mezcla de los valores de
intensidad de tres colores primarios, rojo, verde y azul (Red-Green-Blue), de manera que
cada pixel de una imagen RGB está compuesto por una tupla de 3 componentes, cada
uno correspondiente a un canal de color (ver Figura 4).
Figura 4: Representación matricial del espacio RGB.
Fuente: El autor.
1.2.2. Espacio de color YCrCb
Surge de una codificación no lineal del espacio RGB; la componente Y representa la
luminancia y las componentes Cr y Cb representan la crominancia o tono de color, Cb
12
toma colores en una escala entre el azul y el amarillo y Cr toma colores en una escala
entre el rojo y el verde. La transformación entre el espacio RGB y YCrCb se puede reali-
zar mediante la Ecuación 2 (Molinero D., 2010).
Y
Cb
Cr
=
65, 481 128, 553 24, 966
−39, 797 −74, 203 112
112 −93, 786 −18, 214
∗R
G
B
+
16
128
128
(2)
Las componentes RGB están codificadas en un byte (de 0 a 255), mientras que la lumi-
nancia se define en 220 niveles y las crominancias en 224 niveles, por lo que es necesa-
rio escalar las componentes para que puedan ser almacenadas dentro de un byte como
un número sin signo.
1.3. Descriptores
Una imagen digital puede contener cientos de características inmersas en la escena, pa-
ra extraer correctamente las características de las imágenes previamente presentadas
al sistema se hace uso de los descriptores (Cuenca, 2008); estos son características
extraídas del resultado de modelos matemáticos aplicados a las imágenes digitales, los
cuales resumen y simplifican el contenido de estas. Existen diferentes tipos de descrip-
tores que varían según su complejidad; entre estos se pueden encontrar histogramas de
color o intensidad, descriptores LBP, HOG, etc.
En la Figura 5 se muestran tres diferentes señas tomadas aleatoriamente del conjunto
de datos, sobre las cuales serán aplicados los descriptores propuestos en este trabajo
de grado para evidenciar cómo se comporta cada uno sobre una misma imagen.
13
Figura 5: Imágenes tomadas para ejemplo.
Fuente: El autor.
1.3.1. Local Binary Patterns (LBP)
LBP es un descriptor de textura invariante a la iluminación que se construye a partir de
un histograma de patrones que se calculan sobre una región por los niveles de grises
relativos de los pixeles vecinos (Heikkilä et al., 2009).
Para realizar el cálculo del descriptor LBP inicialmente se divide la imagen en celdas;
se compara cada pixel de cada celda con sus vecinos, los cuales se determinan a partir
de un radio que puede ir desde 1 hasta n ∈ N+ con n < image.size (ej. si el radio es
1 toma los 8 pixeles contiguos al pixel actual); si el pixel central es mayor al vecino se
toma un valor de 0 para la posición del vecino, de lo contrario se toma un valor 1, lo
anterior genera un byte que se suele representar en base decimal, el cual reemplaza al
valor del pixel central; finalmente, se normaliza el histograma resultante de cada celda y
se concatenan sucesivamente para formar el vector descriptor. La Figura 6 muestra un
ejemplo del cálculo del descripto LBP para una posición, tomando un radio R = 1.
14
Figura 6: Ejemplo de cálculo de descriptor LBP.
Fuente: El autor.
(255 ∗ 0) + (128 ∗ 1) + (64 ∗ 0) + (32 ∗ 1) + (16 ∗ 1) + (8 ∗ 0) + (4 ∗ 0) + (2 ∗ 1) = 178
obteniendo un valor de 178 para la posición X.
En términos generales, el operador LBP se describe con la Ecuación 3.
LBPR,N (x, y) =
N−1∑i=0
s(ni − nc)2i, s(x) =
1, x ≥ 0
0, otherwise
(3)
Donde nc corresponde al valor del pixel central y ni corresponde al nivel de gris de los
pixeles del vecindario en el radio R.
El descriptor LBP en su versión original no es invariante a la rotación, por lo que una
leve inclinación del objeto en la imagen puede provocar que el histograma resultante sea
completamente diferente al original; para hacer el descriptor LBP invariante a la rotación
se puede emplear la variación U-LBP (Uniform Local Binary Pattern), cuyo patron “U"
hace referencia al número de transiciones de 0 a 1 y viceversa, de manera que el LBP
es considerado uniforme si tiene máximo dos patrones uniformes. En la Figura 7 se
muestran cinco ejemplos de patrones uniformes que corresponden a características en
la imagen.
15
Figura 7: Patrones LBP uniformes en una imagen.
Fuente: Pietikäinen et al. (2011)
De forma general, la Ecuación 4 indica el número de patrones uniformes que se pueden
obtener con P vecinos; por ejemplo, para un vecindario de 8 puntos se obtienen 59 patro-
nes uniformes, lo que genera una reducción dimensional del 76,95 % (de 256 patrones
para el LBP original a 59 para el U-LBP).
P (P − 1) + 3 (4)
Debido a lo anterior, para este descriptor se decidió utilizar la variación U-LBP, ya que
el LBP original introduce muchas dimensiones al vector descriptor y las características
más importantes de la imagen están localizadas en los contornos y las esquinas, entre
otras que son correctamente localizadas con la variación U-LBP; de acuerdo con eso, se
utilizó un radio R = 8 y P = 24 puntos. En la Figura 8 se muestra el resultado de aplicar
el algoritmo U-LBP sobre las tres señas de muestra de la Figura 5.
Figura 8: Ejemplo de características LBP.
Fuente: El autor.
16
1.3.2. Histograma de Orientación de Gradientes (HOG)
En visión por computador, un gradiente indica el cambio de dirección en la intensidad de
una imagen y se define mediante 2 valores: dirección del cambio de intensidad (desde
0 hacia 255) y magnitud del cambio de dirección. A continuación se describe la forma
más elemental del cálculo del gradiente: en primer lugar se calculan las diferencias en
los ejes de coordenadas comparando el valor de intensidad de un pixel contra el de sus
vecinos, de manera que las diferencias en los ejes se calculan empleando la Ecuación 5
donde I es el mapa de intensidad.
dx = I(x+ 1, y)− I(x− 1, y)
dy = I(x, y + 1)− I(x, y − 1)(5)
En segundo lugar se determina el ángulo del gradiente de acuerdo con las diferencias
empleando la Ecuación 6.
θ(x, y) = tan−1
(dy
dx
)(6)
Finalmente, se calcula la magnitud empleando la Ecuación 7.
g(x, y) =√dx2 + dy2 (7)
A partir del cálculo del gradiente es posible definir un descriptor que pueda brindar in-
formación global de la imagen, conocido como histograma de orientación de gradientes
(HOG por sus siglas en inglés), para lo cual hay que dividir la imagen en un número fijo de
celdas y para cada celda se obtiene un histograma de las orientaciones de los gradientes
y finalmente todos los histogramas se combinan para formar el descriptor (López P. et al.,
2015).
Para el descriptor HOG se seleccionó una configuración de bloques de 16x16 px, tamaño
de celdas de 8x8 px y 9 bins. En la Figura 9 se muestra el resultado de aplicar el des-
criptor HOG sobre las imágenes de la Figura 5. Se puede identificar que cada seña tiene
17
una orientación de gradientes diferente y se evidencia particularmente en el contorno de
la mano y los bordes de los dedos.
Figura 9: Ejemplo de características HOG.
Fuente: El autor.
1.3.3. Firma del contorno
La firma de un contorno es una representación unidimensional del contorno, que con-
siste en un vector donde cada elemento se compone de la distancia desde el centroide
del objeto hasta el contorno y el ángulo que forma con respecto al eje horizontal. Para
calcular la firma de un contorno es necesario extraer el contorno del objeto, para ello se
puede realizar una binarización de la imagen y posteriormente una extracción del con-
torno. Para facilitar el cálculo del centroide de un objeto se hace uso de los momentos
de la imagen. Los momentos de orden p + q de una imagen I(x, y) se describen por la
Ecuación 8.
Mp,q =N∑
x=1
M∑y=1
xpyqI(x, y) (8)
En particular se sabe que M0,0 es el área A del objeto (reemplazando p y q por cero en
la Ecuación 8), con ello se calcula el centroide con las formulas de la Ecuación 9.
18
x =
N∑x=1
M∑y=1
xI(x, y)
A=M1,0
M0,0
y =
N∑x=1
M∑y=1
yI(x, y)
A=M0,1
M0,0
(9)
Finalmente, a cada punto del contorno se le resta el valor del centroide encontrado y se
pasa de coordenadas cartesianas a coordenadas polares tomando como (0, 0) el punto
del centroide. En la Figura 10 se muestra un ejemplo del descriptor obtenido para las
señas de la Figura 5.
Figura 10: Ejemplo de características de Firma Contorno.
Fuente: El autor.
1.3.4. Trayectorias
Una seña dinámica puede ser descrita por diferentes características tales como la tra-
yectoria, la velocidad, la aceleración, la orientación y combinaciones entre las anteriores
(Meng et al., 2014); en este trabajo se tomó la trayectoria como descriptor de las se-
ñas dinámicas y se eliminaron las componentes de velocidad y aceleración mediante un
proceso de remuestreo para mejorar la similitud entre una seña y otra.
Una trayectoria se compone de un conjunto de puntos C ordenados en el espacio con
coordenadas, en este caso, X, Y y Z; la cantidad de puntos de una trayectoria depende
19
del intervalo de tiempo en que es capturada, del sensor empleado, la velocidad con la
que se mueve el objeto y la cantidad de operaciones realizadas durante el tiempo de
captura. Para este trabajo, las trayectorias se capturaron durante un intervalo de tiempo
de 4 segundos para cada muestra.
Debido a que la longitud de una trayectoria puede variar, para hacer dos trayectorias
directamente comparables se realiza un procedimiento de remuestreo de los puntos ori-
ginales en N puntos equidistantes; si bien el remuestreo no es la única técnica, ha de-
mostrado tener buenos resultados sobre trayectorias (Wobbrock et al., 2007). El número
de puntos N más adecuado depende del tipo de trayectoria que se esté trabajando, y si
bien no existe una formula para definir la cantidad más adecuada, se tiene como regla
general que una cantidad N de puntos muy baja puede generar perdida de precisión a
la hora de comparar dos trayectorias, mientras que una cantidad N de puntos muy alta
le agrega mayor dimensionalidad al vector, lo cual no necesariamente genera una ma-
yor precisión pero si suma tiempo de procesamiento al generar un vector más largo. La
longitud máxima de las trayectorias capturadas en este trabajo fue de 156 puntos, por
lo que se probaron diferentes combinaciones de ese valor hacia abajo en potencias con
base dos, encontrando que el valor más adecuado es de 64 puntos.
Para realizar el proceso de remuestreo inicialmente se calcula la longitudM de los puntos
de la trayectoria original y se divide la cantidad de puntos por N − 1, obteniendo el
incremento I (ver Ecuación 10).
I =M
N − 1(10)
Conociendo el incremento I se itera la trayectoria original con saltos de I y se va agre-
gando cada elemento a un nuevo vector, como se observa en el Algoritmo 1.
Una vez remuestreada la trayectoria se calcula su centro y se traslada al origen del plano
coordenado X-Y , esto se hace con el fin de normalizar el vector y hacerlo invariante
a traslaciones en el espacio, de manera que cada seña pueda ser reconocida por el
clasificador independientemente del lugar donde esté ubicada la persona que la ejecuta.
Finalmente, para hacer más robusta la descripción se calcula un descriptor sobre la
20
M = length(trajectory);I = M / (N-1);i = 0;for j in 0:I:m-1 do
reshaped[i] = trajectory[j];i++;
end
Algoritmo 1: Proceso de remuestreo sobre la trayectoria.
trayectoria que relaciona cada puntoN con el puntoN+1 como se observa en el ejemplo
de la Figura 11, calculando la relación angular entre ambos siendo X el eje principal (ver
Ecuación 11).
θt = arctan
(yt−+1 − ytxt+1 − xt
), t = 1, 2, ..., T − 1 (11)
Figura 11: Ejemplo de descriptor de trayectoria.
Fuente: El autor.
21
2. DETECCIÓN Y SEGUIMIENTO
2.1. Adquisición de la imagen
Las cámaras convencionales permiten retratar el mundo desde una perspectiva bidimen-
sional, pero para un correcto análisis del entorno es necesario capturar la imagen por
medio de una representación tridimensional. La terminología en sensores ópticos hoy en
día permite el análisis tridimensional del entorno por medio de sensores de tipo RGB-D.
Ahora bien, la forma en que es almacenada la información de este tipo de sensores es
por medio de nubes de puntos; una nube de puntos es un arreglo de datos sobre un
sistema coordenado X, Y y Z (Kadambi et al., 2014). Para generar la nube de puntos es
necesario que el sensor óptico empleado cuente con dos elementos principales: sensor
de profundidad y cámara RGB; la cámara permitirá captar características esenciales en
los elementos de la escena mientras que el sensor de profundidad permitirá definir la
ubicación en el espacio de dichos elementos. Además de contar con el sensor RGB-D,
es necesario realizar una calibración debido a que los dos sensores ofrecen resoluciones
diferentes y asimismo se encuentran separados físicamente uno del otro, lo que genera
traslación de una imagen a otra (ver Figura 12).
Figura 12: Superposición de imágenes del sensor de profundidad y el sensor RGB sincalibración, el borde azul representa el contorno de la mano en el mapa de profundidad.
Fuente: El autor.
22
El método más común para hallar los parámetros es el modelo de pinhole, donde la
escena se forma proyectando los puntos 3D en un plano empleando transformaciones
geométricas; la forma general de este modelo se describe por la Ecuación 12.
u
v
w
=
fx 0 cx
0 fy cy
0 0 1
r11 r12 r13 t1
r21 r22 r23 t2
r31 r32 r33 t3
X
Y
Z
1
(12)
El driver de la librería libfreenect incorpora un método que se encarga de realizar el re-
gistro basado en los parámetros que trae incorporados el sensor Kinect de fabrica, lo que
resume la Ecuación 12 en la Ecuación 13; gracias a eso se puede asumir por simplicidad
que ambos sensores cuentan con los mismos parámetros.
u
v
w
=
fx 0 cx
0 fy cy
0 0 1
X
Y
Z
(13)
En la Ecuación 13 las coordenadas u, v y w corresponden a las coordenadas en la
imagen dadas en pixeles; X, Y y Z corresponden a las coordenadas espaciales en milí-
metros (ver Ecuación 14); fx y fy son las distancias focales expresadas en pixeles; cx y
cy son las coordenadas del centro de la imagen en pixeles. Como se observa en la Ecua-
ción 13 w = Z, esto es porque el sensor fue configurado desde el driver para devolver la
profundidad en milímetros.
w = Z ⇒ Z = w
u = fxX + CxZ ⇒ X =Z(u− cx)
fx
v = fyY + CyZ ⇒ Y =Z(v − cy)
fy
(14)
23
2.2. Pre-procesamiento y detección de la mano
A continuación, en la Figura 13 se muestra un diagrama que describe las etapas de pre-
procesamiento y detección de la mano.
Figura 13: Diagrama de descripción de las etapas de pre-procesamiento y detección dela mano.
Fuente: El autor.
La rutina de la Figura 13 ocurre únicamente previo a la detección de la mano, una vez
la mano ha sido detectada se procede a correr la rutina de seguimiento o tracking hasta
que se detenga el programa.
La rutina de pre-procesamiento inicia adquiriendo tanto la imagen RGB como el mapa
de profundidad; gracias a que el driver empleado entrega las dos imágenes alineadas,
24
el tratamiento se realiza como si se tratara de una única nube de puntos en el espacio.
Inicialmente se toma el punto más cercano al dispositivo de captura, el sensor de profun-
didad tiene un rango de operación de 0, 7 a 4, 0 metros, de modo que la distancia mínima
del sensor a la mano debe ser de 0, 7 metros para lograr un resultado correcto; luego de
obtener el punto más cercano se extraen los elementos que estén 80 milímetros hacia
atrás en el eje Z de ese punto.
Con la imagen segmentada mediante el proceso descrito anteriormente se emplea un
clasificador Haar Cascade pre-entrenado para identificar la mano en la escena; el clasi-
ficador es capaz de detectar las posiciones mostradas en la Figura 14. Para clasificar la
imagen primero es necesario realizar un proceso de binarización donde el fondo debe
quedar en color negro y el blob a analizar de color blanco.
Figura 14: Posiciones de la mano detectadas por el clasificador Haar Cascade pre-entrenado.
Fuente: Imagen tomada de Freepik.
Como el clasificador Haar Cascade es capaz de detectar la mano en 5 diferentes posicio-
nes, es susceptible de generar falsos positivos, debido al efecto de motion blur y la auto
oclusión de la mano; para prevenir la propagación de errores se realiza una validación de
la mano detectada, donde sólo se admite como entrada la palma completamente abierta.
El proceso de validación consiste en hallar la envolvente convexa, también conocida
como convex-hull, sobre la mano (línea verde en la Figura 15) con lo que se obtienen
los puntos de los dedos que corresponden a los puntos de inflexión de la envolvente
(puntos rojos en la Figura 15). La librería OpenCV permite encontrar los defectos de la
envolvente convexa, que son los puntos más alejados de contorno (puntos amarillos en
25
la Figura 15), con los cuales se puede calcular el ángulo de apertura que hay entre un
dedo y otro. Sólo los defectos que se encuentran en medio de dos dedos deben ser
tomados como válidos y para que un defecto sea tomado como el punto de unión entre
dos dedos, el ángulo que debe haber entre ambos no debe ser mayor a 90 grados (para
que la mano sea validada debe tener entre 3 y 4 defectos).
Figura 15: Validación de la mano detectada por el clasificador Haar Cascade.
Fuente: El autor. Imagen tomada de Freepik.
2.3. Seguimiento o tracking
Con la detección de la mano se obtiene la región de interés (ROI, por sus siglas en
inglés) que indica su ubicación en el plano X − Y , cuyo centro se utiliza como punto
de partida para hacer el seguimiento de la mano; el proceso de seguimiento tiene como
objetivo segmentar activamente la mano del resto de la escena sin necesidad de realizar
el proceso de reconocimiento por cada frame.
Se evaluaron dos métodos de segmentación de la mano, uno basado en la segmentación
del color de la piel y otro basado en un algoritmo de Region Growing, los cuales reciben
como entrada el ROI entregado por la etapa de validación.
El procedimiento de segmentación por color de piel consta de 3 etapas: obtención del
modelo de color, extracción del fondo y segmentación de la piel dentro de la escena.
Para obtener el modelo de color de la mano se toma el blob dentro del ROI y se hace
26
un procedimiento de inpaint, con lo que se obtiene una nueva imagen cuyos pixeles se
corresponden con el color de la piel; el procedimiento de inpaint permite corregir marcas
o imperfecciones en una imagen con base en los pixeles vecinos de las mismas, dichas
imperfecciones para el objeto de este trabajo se toman como el fondo de la imagen, con lo
cual se logra que los pixeles del fondo sean reemplazados por los pixeles obtenidos como
color de piel. Para realizar la extracción del fondo se retiran todos los elementos que se
encuentren a más de 1, 5m del sensor y finalmente para extraer la piel de la escena se
realiza una operación de backprojection entre el histograma de la imagen que contiene
el modelo de color y la imagen de la escena; el backprojection compara los histogramas
de dos imágenes (una imagen base y otra de muestra) y extrae los pixeles de la imagen
de muestra que se asemejen a los de la imagen base, lo anterior se puede entender
como un procedimiento de filtrado o umbralización adaptativo basado en histogramas.
Todo el procedimiento anterior se realiza empleando el espacio de color YCrCb ya que
ha demostrado tener un mejor resultado en segmentación de piel (Khamar et al., 2015).
En la Figura 16 se observa el resultado de realizar la segmentación basada en el color
de piel.
Figura 16: Segmentación por color de piel.
Fuente: El autor.
27
Por otro lado, Region Growing es un método utilizado en visión por computador para
segmentar elementos de forma local partiendo de un punto semilla y propagándose por
una región homogénea o con características similares (Puneet Kumar and Seba, 2013).
El algoritmo desarrollado para este trabajo parte del punto semilla y toma en cuenta los
puntos superior, inferior y laterales como se observa en el ejemplo de la Figura 17, donde
el cuadro verde corresponde al punto semilla y los cuadros azules corresponden a los
vecinos tomados en cuenta; su funcionamiento se puede asemejar al de un algoritmo
convencional de búsqueda, donde se tiene una lista de candidatos y se evalúa cada uno
para determinar si pertenece o no a la región que se quiere delimitar; el criterio para
definir si el candidato corresponde a la región es que se encuentre dentro de la ventana
del ROI de la mano y que el nivel de profundidad se encuentre dentro del umbral, que
para este caso es de 20 milímetros y corresponde a la distancia máxima que puede
haber entre los extremos de la mano en perspectiva.
Figura 17: Ilustración de los vecinos que son seleccionados por cada pixel.
Fuente: El autor.
A continuación, en el Algoritmo 2 se muestra un pseudocódigo donde se describe el
funcionamiento del algoritmo de Region Growing desarrollado.
Debido a que el algoritmo consiste en una serie de operaciones cíclicas anidadas, sobre
una imagen de 640 x 480 pixeles toma un tiempo de ejecución variable del orden de
cientos de milisegundos y una carga computacional alta debido a que el script de Python
es interpretado. Para solucionar el problema y mejorar el rendimiento del algoritmo se
hace uso de Cython, un compilador optimizado para lenguaje de programación Python,
Cython (el cual es un lenguaje extendido) y C, que al ser ejecutado retorna un módulo
28
Input: threshold, depthMap, windowseed = window.center;meanDepth = depthMap[seed.x, seed.y];queue = depthMap.resize(1, depthMap.width*depthMap.height);while length(queue) != 0 do
item = getFirstElementInTheQueue(queue);dropFirstElementInTheQueue(queue);neighbors = getNeighbors(item);for neighbor in neighbors do
if isMember(neighbor, meanDepth) thenregion.add(neighbor);
endend
endOutput: region
Algoritmo 2: Pseudocódigo del algoritmo Region growing.
compilado que puede ser usado tanto desde lenguaje C/C++ como Python. Luego de
realizar la optimización del algoritmo escrito en su gran mayoría en lenguaje Cython se
obtuvo que el tiempo de ejecución descendió al orden de cientos de nanosegundos, así
como también la carga computacional.
De acuerdo con los resultados obtenidos, se decidió utilizar el algoritmo de Region Gro-
wing, ya que si bien el método de segmentación por piel arroja buenos resultados en
terminos de extracción de las zonas que contienen piel, deja pasar regiones que no
corresponden a piel y asimismo devuelve regiones correspondientes a los brazos y el
rostro, lo que hace necesario adicionar una sub-etapa más de segmentación, mientras
que el algoritmo de Region Growing permite obtener directamente la region segmentada
de la escena y es invariante a la iluminación al trabajar únicamente sobre el mapa de
profundidad.
Por último, sobre la región segmentada se realiza el seguimiento con el algoritmo de
meanshift ofrecido en la librería de OpenCV, el cual recibe como argumento el ROI y
devuelve la predicción de la siguiente posición de la mano.
29
3. RESULTADOS DE CLASIFICACIÓN
3.1. Métricas empleadas
Luego de extraer las características y entrenar el modelo de machine learning es nece-
sario evaluar el rendimiento del clasificador para determinar la viabilidad del mismo; una
de las métricas más usadas a la hora de evaluar un algoritmo de clasificación es la Matriz
de Confusión (de ahora en adelante MC). La MC por sí sola no da información relevante
acerca del rendimiento del clasificador, pero a partir de ella se extraen otras métricas que
dan información veraz del mismo.
La MC consta de cuatro partes fundamentales como se muestra en la Figura 18, donde
en las columnas se ubican las clases ya establecidas y en las filas las clases de prueba.
Figura 18: Representación genérica de la matriz de confusión.
Fuente: El autor.
Verdaderos positivos (TP por sus siglas en inglés): es el número de clasifica-
ciones verdaderas correctas.
Verdaderos negativos (TN por sus siglas en inglés): es el número de clasifica-
ciones falsas correctas.
Falsos positivos (FP por sus siglas en inglés): es el número de clasificaciones
verdaderas incorrectas.
30
Falsos negativos (FN por sus siglas en inglés): es el número de clasificaciones
falsas incorrectas.
A partir de las cuatro partes fundamentales de la matriz de confusión es posible extraer
la exactitud, la precisión, la sensibilidad, entre otras métricas importantes.
3.1.1. Exactitud o accuracy
Evalúa el número total de clasificaciones correctas frente al total de muestras clasifica-
das, esto en la matriz de confusión se describe en la Ecuación 15. La exactitud toma
valores de cero a uno (o cero a cien si se representa como porcentaje) siendo cero una
exactitud muy baja y uno una exactitud muy alta.
Accuracy =TP + TN
TP + FP + FN + TN(15)
La exactitud únicamente debe ser utilizada cuando el número de muestras tanto de entre-
namiento como de prueba es similar para cada clase, de lo contrario la métrica siempre
tendrá un sesgo hacia la clase que tenga mayor número de muestras.
3.1.2. Precisión
Evalúa el número de clasificaciones correctas para cada clase de prueba; es decir, cuán-
tas clasificaciones verdaderas son realmente verdaderas para cada clase, esto en la MC
se describe en la Ecuación 16. La precisión al igual que la exactitud, toma valores de
cero a uno (o cero a cien si se representa como porcentaje) siendo cero una precisión
muy baja y uno una precisión muy alta.
Precision =TP
TP + FP(16)
31
3.1.3. Sensibilidad o Recall
Indica qué número de muestras que corresponden a una clase fueron clasificadas dentro
de ella para cada muestra evaluada; es decir, cuántas clasificaciones que debían ser ver-
daderas fueron clasificadas como verdaderas, esto en la MC se describe en la Ecuación
17. La sensibilidad también toma valores de cero a uno (o cero a cien si se representa
como porcentaje) siendo cero una sensibilidad muy baja y uno una sensibilidad muy alta.
Recall =TP
TP + FN(17)
A primera vista la precisión y la sensibilidad parecen ser iguales, pero la diferencia radica
en que la precisión tiene en cuenta los falsos positivos mientras que la sensibilidad tiene
en cuenta los falsos negativos.
3.1.4. F1-Score
Para conocer el rendimiento general del modelo habitualmente se calcula la relación en-
tre las medidas de precisión y sensibilidad mediante una media harmonica, este indicador
es conocido como F1-Score y es calculado mediante la Ecuación 18
F1 Score = 2 · Precision ·RecallPrecision+Recall
(18)
3.2. Clasificación de señas estáticas
En el Apéndice A se muestran las matrices de confusión para las señas estáticas. Para
cada matriz de confusión se analizaron las cuatro métricas mencionadas en la sección
anterior, determinando mediante la precisión qué descriptor es el más adecuado y, me-
diante la exactitud y la métrica F1-Score qué clasificador es el más adecuado.
En la Figura 19 se observan las tablas de precisión extraídas de las matrices de con-
fusión del Apéndice A para cada seña versus los tres descriptores empleados por cada
32
clasificador y en la Figura 20 se observan gráficamente los datos de las tablas de la Fi-
gura 19.
Figura 19: Tablas de precisión de señas estáticas.
(a) Precisión Naive Bayes (b) Precisión SVM
(c) Precisión ANN (d) Precisión KNN
Fuente: El autor.
Para el clasificador de Naive Bayes se obtiene una alta precisión con el descriptor U-LBP
sobre los otros dos descriptores (ver Figura 20); sin embargo, los valores obtenidos no
superan el umbral de 0,86 como se observa en su respectiva tabla en la Figura 19. Por
otro lado, para los clasificadores SVM, ANN y KNN se obtienen resultados superiores
tanto con el descriptor HOG como con el descriptor U-LBP, como se puede observar en
las líneas de color azul de las gráficas de la Figura 20. Descartando el descriptor de
Firma del Contorno por sus bajos resultados y asimismo el clasificador de Naive Bayes
que igualmente presenta una precisión más baja que los demás clasificadores, se tiene
que para el clasificador SVM la precisión promedio del descriptor HOG es de 0, 97 y
la del descriptor U-LBP es de 0,91; para el clasificador ANN la precisión promedio del
33
Figura 20: Gráficas de precisión de señas estáticas.
(a) Gráfica precisión Naive Bayes (b) Gráfica precisión SVM
(c) Gráfica precisión ANN (d) Gráfica precisión KNN
Fuente: El autor.
descriptor HOG es de 0, 90 y la del descriptor U-LBP es de 0, 83; para el clasificador KNN
la precisión promedio del descriptor HOG es de 0, 94 y la del descriptor U-LBP es de
0, 88.
Por otro lado, en la Figura 21 se muestra la tabla de los resultados de exactitud calculados
con las matrices de confusión del Apéndice A de cada descriptor contra cada clasificador.
Figura 21: Exactitud de clasificación de señas estáticas.
Fuente: El autor.
En la tabla de la Figura 21 se observa nuevamente que el rendimiento tanto del clasifica-
dor Naive Bayes como del descriptor de Firma del Contorno es considerablemente bajo
34
con respecto a los demás datos. Omitiendo los datos anteriores se tiene que la exactitud
más baja es de 0, 8389 para el descriptor U-LBP con el clasificador ANN y la exactitud
más alta es de 0, 9806 para el descriptor HOG con el clasificador SVM.
Finalmente, se calcula la métrica F1-Score mediante la Ecuación 18 empleando las ma-
trices de confusión del Apéndice A y se extrae el promedio para cada clasificador, obte-
niendo como resultado las gráficas de la Figura 22.
Figura 22: Métricas F1-Score promedio para cada descriptor.
Fuente: El autor.
Se observa que para el descriptor HOG el resultado más alto se obtiene con el clasifica-
dor SVM con un puntaje de 0, 97 y el resultado más bajo se obtiene con el clasificador
Naive Bayes con un puntaje de 0, 48; para el descriptor U-LBP el resultado más alto tam-
bién se obtiene con el clasificador SVM con un puntaje de 0, 91 y el resultado más bajo
igualmente con el clasificador Nave Bayes con un puntaje de 0, 75; finalmente, para el
descriptor Firma del Contorno el resultado más alto se obtiene con el clasificador KNN
con un puntaje de 0, 32 y el resultado más bajo se obtiene con el clasificador Naive Bayes
con un puntaje de 0, 08.
Debido a que la métrica F1-Score permite conocer la exactitud obtenida de la clasifica-
ción sobre un conjunto de prueba teniendo en cuenta la precisión y la sensibilidad, de
la Figura 22 se observa que el clasificador SVM logra clasificar correctamente un mayor
35
número de muestras con respecto a los demás clasificadores y además se observa que
el descriptor HOG junto con el clasificador SVM permite una mejor clasificación de las
muestras de prueba.
3.3. Clasificación de señas dinámicas
En el Apéndice B se encuentran las matrices de confusión de los resultados de clasifi-
cación para las señas dinámicas. Para el análisis de las señas dinámicas se tuvo en en
cuenta la precisión de las señas, la exactitud y la métrica F1-Score para cada clasificador.
En la Figura 23 se observa la tabla de precisión extraída de las matrices de confusión
del Apéndice B.
Figura 23: Tabla de precisión de señas dinámicas
Fuente: El autor.
En la Figura 24 se muestran gráficamente los resultados para la tabla de la Figura 23. De
igual forma, en la Figura 24 se observa que los cuatro clasificadores presentan resultados
similares salvo la seña de "diferente"; sin embargo, calculando la precisión promedio para
cada clasificador se obtiene para el clasificador Random Forest 0, 805, para el clasificador
SVM 0, 940, para el clasificador KNN 0, 880 y para el clasificador Naive Bayes 0, 885 de
precisión. Como resultado se evidencia que tanto en la precisión promedio como en la
línea color naranja en la Figura 24 el clasificador SVM tiene una precisión más alta sobre
los otros tres clasificadores.
36
Figura 24: Tabla de precisión de señas dinámicas
Fuente: El autor.
Por otro lado, en la Figura 25 se muestra la tabla para la métrica F1-Score obtenida de
las matrices de confusión del Apéndice B y en la Figura 26 se muestra una gráfica con
los resultados promedio obtenidos para cada clasificador.
Figura 25: Tabla de resultados de la métrica F1-Score de señas dinámicas
Fuente: El autor.
De la gráfica de la Figura 26 se observa que el clasificador SVM tiene el mayor resultado
para la métrica F1-Score con 0,939 frente a los demás clasificadores cuyos resultados
son 0, 794, 0, 879 y 0, 879 para los clasificadores Random Forest, KNN y Naive Bayes
respectivamente.
Finalmente, en la Figura 27 se muestra la tabla de resultados de exactitud para cada
clasificador.
37
Figura 26: Gráfica de resultados promedio de la métrica F1-Score para señas dinámicas
Fuente: El autor.
Figura 27: Tabla de resultados de exactitud para señas dinámicas.
Fuente: El autor.
Al igual que para el caso de las señas estáticas se obtiene que el clasificador SVM
tiene una mayor exactitud de clasificación con un puntaje de 0, 9400 frente a los demás
clasificadores que tienen una exactitud de 0, 8050, 0, 8800 y 0, 8850 para Random Forest,
KNN y Naive Bayes respectivamente; de manera que se selecciona el clasificador SVM.
38
4. DESARROLLO DE LA APLICACIÓN
La interfaz gráfica de la aplicación fue desarrollada empleando el framework Qt con el
wrapper PyQt que permite usar el framework con Python. En la Figura 28 se muestran
las tres vistas principales de la aplicación.
Figura 28: Vistas de la aplicación desarrollada.
(a) Vista principal (b) Vista para señas estáticas
(c) Vista para señas dinámicas
Fuente: El autor.
Inicialmente se presenta al usuario una vista de bienvenida y se le da a elegir la opción
de practicar señas estáticas o dinámicas. El layout de las vistas de práctica se compone
de dos secciones principales, como se observa en la Figura 29; en la sección del lado
izquierdo se encuentran los botones de iniciar/detener el programa y un cuadro con un
fondo por defecto donde se muestra lo que el sensor está capturando cuando se oprime
el botón de iniciar; en la sección del lado derecho se encuentra un selector para que el
39
usuario elija la seña que desea practicar, un recuadro donde se muestra el ejemplo de la
seña que el usuario debe ejecutar (que es un video para el caso de las señas dinámicas
y una fotografía para el caso de las estáticas) y las instrucciones de ejecución.
Figura 29: Distribución de la vista de práctica.
Fuente: El autor.
Si bien la aplicación está escrita en Python, los tiempos de ejecución son cortos debido
a que gran parte de los componentes están hechos con Cython o C/C++ y se comunican
con Python a través de wrappers y módulos compilados, lo que se traduce en un ren-
dimiento similar al de un programa compilado, con una penalización del 3 % al 10 % en
tiempo de ejecución y uso de recursos durante los procedimientos de mayor demanda
computacional; lo anterior permite no solo proporcionarle al usuario una mejor experien-
cia durante el uso de la aplicación, sino también que la aplicación pueda ser utilizada en
equipos con menores prestaciones de hardware siempre y cuando cuenten con todas las
dependencias de software necesarias.
En la Figura 30 se observa una tabla con el tiempo de ejecución promedio de los prin-
cipales componentes de la aplicación; los valores presentados pueden variar según la
cantidad de puntos que haya en las imágenes analizadas entre el 10 % y 15 % del valor
40
presentado hacia arriba o hacia abajo. En el cálculo del tiempo de clasificación tanto de
las señas estáticas como las dinámicas se tuvo en cuenta la extracción de descriptores,
la normalización de los vectores, la reducción dimensional con PCA y la clasificación.
Figura 30: Tiempo promedio de ejecución de cada componente de la aplicación
Fuente: El autor.
De acuerdo con los datos de la tabla de la Figura 30, el tiempo de ejecución de la apli-
cación durante la práctica de señas estáticas es de aproximadamente 233, 7315 ms y
durante la práctica de las señas dinámicas es de 375,1995 ms, lo anterior sin tener en
cuenta el tiempo que el usuario tarda en ejecutar la seña ni el tiempo de arranque de la
aplicación que pueden variar entre diferentes personas y equipos respectivamente.
Como se observa, las etapas más críticas son las de búsqueda y validación de la mano,
con una duración de 188, 0412 ms y la clasificación de las señas dinámicas con una du-
ración de 186, 7470 ms; lo anterior puede ser optimizado empleando un clasificador más
robusto que se encargue de detectar y validar la mano en una sola operación, aunque
eso puede suponer un mayor costo computacional y optimizando la extracción del des-
criptor de las señas dinámicas. Sin embargo, con los valores obtenidos se garantiza que
el usuario puede obtener una respuesta casi inmediata durante el uso de los diferentes
componentes de la aplicación.
41
4.1. Resultados de encuestas
Para evaluar la aplicación desde la perspectiva de la experiencia de usuario, se selec-
cionaron diez voluntarios que utilizaron la aplicación y posteriormente respondieron la
encuesta del Apéndice C que permite conocer información principalmente los tiempos
de ejecución, la precisión de clasificación y el diseño de la interfaz desde la perspectiva
del usuario.
Cada pregunta de la encuesta tiene tres posibles respuestas categóricas: Malo, Regular
y Bueno; luego de obtener las respuestas de los usuarios se extrajo el porcentaje para
cada tipo respuesta por pregunta y se representó en una gráfica para analizar las dife-
rentes variables. En la Figura 31 se muestran los resultados obtenidos.
Figura 31: Resultados de las encuestas.
Fuente: El autor.
En cuanto al tiempo que toman los dos procesos más críticos en términos computaciona-
les, de la gráfica de la Figura 31 se observa que el 60 % de los encuestados consideran
que la aplicación tiene un buen tiempo de arranque mientras que el 40 % restante con-
sidera que tiene un tiempo de arranque regular; por otro lado, el 80 % considera que el
tiempo de reconocimiento es bueno mientras que el 20 % considera que es regular. De
los resultados anteriores se observa que un gran porcentaje de los encuestados conside-
42
ra que la aplicación tiene un buen tiempo de arranque y de reconocimiento de las señas;
es importante tener en cuenta que algunos voluntarios experimentaron el tiempo de car-
ga inicial de la aplicación que toma más tiempo en comparación con los demás inicios,
principalmente por el tiempo que tarda en cargar los modelos que deben ser leídos de
archivos de texto plano y cargados a la RAM al inicio de la aplicación.
En cuanto al diseño de la interfaz y la usabilidad de la aplicación, 90 % de los encuestados
consideran que la navegación buena mientras que el 10 % considera que es regular; 80 %
considera que la forma en que se presentan los ejemplos de las señas es buena y 20 %
que es regular; 10 % considera que el diseño de la aplicación (en términos gráficos) es
buena, 80 % que es regular y 10 % que es malo. De los resultados anteriores se observa
que la aplicación es intuitiva para los usuarios, los ejemplos son mostrados de forma
correcta pero debe ser mejorado el aspecto gráfico de la misma.
En cuanto a la precisión de clasificación, 40 % considera que la precisión de clasificación
de señas estáticas es buena, 50 % que es regular y 10 % que es mala; por otro lado,
80 % considera que la precisión de clasificación de señas dinámicas es buena y 20 % que
es regular. De los resultados anteriores se observa que las señas estáticas tienen más
tendencia a fallar frente a las señas dinámicas, debido principalmente a que el descriptor
empleado para las señas estáticas es dependiente de la iluminación, de manera que la
oscuridad y la sobre-exposición pueden alterar los resultados obtenidos.
Por último, 80 % de los encuestados considera que la cantidad de señas disponibles es
regular y el 20 % que es mala; y el 70 % considera que es una aplicación adecuada para
aprender de forma rápida y efectiva mientras que el 30 % considera que es regular. De los
resultados anteriores se observa que es recomendable ampliar la base de datos de las
señas disponibles con el fin de brindar un abanico de posibilidades mayor a los usuarios,
pero sin embargo la metodología para enseñarles es adecuada y les permite percibir la
aplicación como una buena plataforma de aprendizaje.
43
5. CONCLUSIONES
Se desarrolló una aplicación para el apoyo de la enseñanza del Lenguaje de Señas
Colombiano, tanto para señas estáticas como para señas dinámicas, haciendo especial
énfasis en el análisis de los algoritmos de machine learning, las técnicas de análisis de
datos y las técnicas de análisis de imágenes mediante algoritmos de visión por compu-
tador, lo que permite que la aplicación sea fácilmente adaptable a otros lenguajes de
señas, siempre y cuando se cuente con un conjunto de datos de las señas de interés.
La aplicación desarrollada fue escrita en Python y hace uso de módulos optimizados con
Cython, lo que permite que pueda ser usada en tiempo real sin comprometer la experien-
cia de usuario y previniendo un alto impacto en el consumo de recursos computacionales.
En cuanto a la segmentación de la mano se evaluaron dos técnicas, una basada en
segmentación por color de piel y otra basada en segmentación de regiones mediante un
algoritmo de Region Growing; se observó que el algoritmo de segmentación basado en
el color de piel es altamente dependiente de la iluminación (aunque se empleó el espacio
de color YCrCb que permite prescindir de la iluminación y tener en cuenta únicamente las
componentes de crominancia) y deja pasar regiones que no corresponden con la mano,
lo que hace necesario introducir una sub-etapa de segmentación adicional; por otro lado,
el algoritmo de Region Growing tiene un rendimiento superior ya que permite segmentar
regiones locales y no es dependiente de la iluminación al trabajar sobre el mapa de
profundidad, por lo que se decidió emplear el algoritmo de Region Growing, que aunque
implica un mayor costo computacional (que se disminuye realizando la optimización del
código con Cython) ofrece mejores resultados.
Para el análisis de clasificación de las señas estáticas se analizaron los descriptores
HOG, U-LBP y Contour Signature junto con los clasificadores SVM, ANN, KNN y Naive
Bayes, obteniendo los más altos resultados de precisión con el descriptor HOG y la
mayor exactitud con el par HOG-SVM con un puntaje de 0, 9806 junto con un valor F1-
Score promedio más alto igualmente con el par HOG-SVM de 0, 9798; por otro lado, para
las señas dinámicas, se desarrolló un descriptor basado en la trayectoria junto con los
clasificadores SVM, Random Forest, KNN y Naive Bayes, obteniendo la exactitud más
44
alta con el clasificador SVM con un puntaje de 0, 9400 junto con el valor de F1-Score más
alto para el mismo clasificador con un puntaje de 0, 9390. De acuerdo con lo anterior,
para la clasificación de las señas estáticas se eligió el clasificador HOG junto con el
clasificador SVM y para las señas dinámicas se empleó el descriptor propuesto basado
en la trayectoria junto con el clasificador SVM.
Por último, de acuerdo con las encuestas realizadas a los voluntarios, se comprobó que
la aplicación tiene un tiempo de respuesta bastante bueno tanto en el arranque con un
60 % de aceptación como en el reconocimiento de las señas con un 80 % de aceptación, la
precisión de las señas dinámicas tiene muy buenos resultados con un 80 % de aceptación
pero para las señas estáticas se presentan fallas debido principalmente a los cambios
fuertes de iluminación, que la aplicación es intuitiva y fácil de manejar pero sin embargo
es importante mejorar el diseño gráfico y que la aplicación diseñada representa una
buena herramienta para el aprendizaje.
5.1. TRABAJO FUTURO
El rendimiento de la aplicación en términos de la efectividad de clasificación fue medido
con un conjunto de datos relativamente grande (3.600 muestras de señas estáticas y
1.800 muestras de señas dinámicas), aunque a nivel individual la cantidad de muestras
por cada seña puede aumentarse en tamaño y diversidad con el objetivo de mejorar el
rendimiento del sistema de clasificación en general; asimismo, con los algoritmos de ma-
chine learning convencionales se tiene un límite de rendimiento máximo dada su cons-
trucción, por lo que eventualmente el crecimiento del conjunto de datos podría generar
mejoras insignificantes en el sistema, de manera que podrían emplearse algoritmos más
complejos basados en el estado del arte de los algoritmos de aprendizaje automático
(Deep Learning), sacrificando el costo computacional.
En cuanto a los descriptores de las señas estáticas, es necesario tener en cuenta que
si bien el HOG demostró entregar mejores resultados con respecto a los demás descrip-
tores, no es invariante a la iluminación, por lo que en condiciones de iluminación preca-
rias puede generar la propagación de falsos positivos y falsos negativos en el sistema
y también que el sensor Microsoft Kinect no puede ser usado en exteriores puesto que
45
entornos con abundante luz natural pueden causar sobre-exposición de las imágenes
RGB y generar ruido en el mapa de profundidad; de modo que emplear un sensor más
robusto y proponer un descriptor basado únicamente en información tridimensional (co-
mo descriptores sobre la nube de puntos de la mano) podría mejorar considerablemente
el rendimiento de la aplicación en cualquier entorno, aunque igualmente se sacrificaría
costo computacional.
Finalmente, de acuerdo con la retroalimentación de los voluntarios, es recomendable
modificar la interfaz de usuario de la aplicación, haciéndola ver más moderna y adaptable
a diferentes resoluciones de pantalla.
46
Referencias
Abadi, M., Agarwal, A., Barham, P., Brevdo, E., Chen, Z., Citro, C., Corrado, G. S., Davis,
A., Dean, J., Devin, M., Ghemawat, S., Goodfellow, I., Harp, A., Irving, G., Isard, M., Jia,
Y., Jozefowicz, R., Kaiser, L., Kudlur, M., Levenberg, J., Mané, D., Monga, R., Moore,
S., Murray, D., Olah, C., Schuster, M., Shlens, J., Steiner, B., Sutskever, I., Talwar, K.,
Tucker, P., Vanhoucke, V., Vasudevan, V., Viégas, F., Vinyals, O., Warden, P., Watten-
berg, M., Wicke, M., Yu, Y., and Zheng, X. (2015). TensorFlow: Large-scale machine
learning on heterogeneous systems.
Behnel, S., Bradshaw, R., Citro, C., Dalcin, L., Seljebotn, D. S., and Smith, K. (2011).
Cython: The best of both worlds. Computing in Science and Engineering, 13(31–39).
Bradski, G. (2000). The opencv library. Dr. Dobb’s Journal of Software Tools.
Chana, C. and Jakkree, S. (2016). Hand gesture recognition for thai sign language in
complex background using fusion of depth and color video. University of Technology
Thanyaburi, Department of Electronics and Telecommunication Engineering.
Cruz, M. (2008). Gramática de la lengua de señas mexicana.
Cuenca, J. S. (2008). Reconocimiento de objetos por descriptores de forma. Universitat
de Barcelona, Facultat de Matemàtiques, Barcelona.
de la Escalera, A. (2001). Visión por Computador. Fundamentos y métodos. Prentice
Hall.
de la Escalera, A., Armingol, J. M., García, F., Gómez, D. M., and Al-Kaff, A. H. (2016).
Introducción a la visión por computador: desarrollo de aplicaciones con opencv.
Girod, B. (2013). Digital image processing.
Heikkilä, M., Pietikäinen, M., and Schmid, C. (2009). Description of interest regions with
local binary patterns. Pattern Recognition, 42(3):425 – 436.
Insor (2018). ¿qué es la lengua de señas?. Tomado de:
http://www.insor.gov.co/ninos/que-es-la-lengua-de-senas/.
47
Kadambi, A., Bhandari, A., and Raskar, R. (2014). 3d depth cameras in vision: Benefits
and limitations of the hardware.
Khamar, S., Ganesan, P., Kanlist, V., Sathish, B. S., and Merlin, J. (2015). Comparative
study of skin color detection and segmentation in hsv and ycbcr color space.
Londoño, R. S. (2015). Aplicativo para apoyar el proceso de aprendizaje del lenguaje de
señas hacia un oyente mediante microsoft kinect.
López P., A., Valveny, E., and Vanrell, M. (2015). Detección de objetos.
Meng, H., Furao, S., and Jinxi, Z. (2014). Hidden markov models based dynamic hand
gesture recognition with incremental learning method.
Molinero D., G. (2010). Segmentación de imágenes en color basada en el crecimiento
de regiones.
Muñoz P., J. (2009). Procesameinto de imágenes.
Oliphant, T. (2006). A guide to numpy.
Otto Traian, S. C. (2014). Human-machine interface, tomado de:
https://commons.wikimedia.org/w/index.php?curid=31693853.
Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel,
M., Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau,
D., Brucher, M., Perrot, M., and Duchesnay, E. (2011). Scikit-learn: Machine learning
in python. Journal of Machine Learning Research, 12:2825–2830.
PÉREZ, F. P. (2012). Reconocimiento de imágenes del lenguaje de señas mexicano.
INSTITUTO POLITÉCNICO NACIONAL, CENTRO DE INVESTIGACIÓN EN COMPU-
TACIÓN.
Pietikäinen, M., Hadid, A., Zhao, G., and Ahonen, T. (2011). Computer Vision Using Local
Binary Patterns. Springer Science and Business Media.
Plaza, J. A. (2015). Intérprete de lenguaje de signos para la comunicación de perso-
nas con discapacidad auditiva empleando el procesamiento de imágenes. Revista de
investigación - Universidad del Quindío.
48
POUDEL, R. P. (2014). 3d hand tracking. Bournemouth University.
Puneet Kumar, J. and Seba, S. (2013). An adaptative single seed based region growing
algorithm for color image segmentation.
RIVERA, S. C., ÁLVAREZ, D. J., and RODRIGUEZ, R. J. (2013). Identificación de la
punta de los dedos de la mano en un plano 2d basado en kinect.
Rodríguez, C. P., Pineda, J. A., and Sánchez, D. F. (2013). Software que captura, por
medio de kinect, los datos de las señas manuales y los traduce a texto.
Sánchez, R. A. and Hurtado, J. I. (2015). Sistema intérprete del lengaje de señas colom-
biano (lsc) usando el sensor kinect.
Tovar, L. A. (2015). La importancia del estudio de las lenguas de señas.
Vargas, L., Barba, L., and Mattos, L. (2010). Sistema de identificación de lenguaje de
señas usando redes neuronales artificiales.
Vogler, C. and Metaxas, D. (2001). A framework for recognizing the simultaneous aspects
of american sign language. University of Pennsylvania, Department of Computer and
Information Science.
Wobbrock, J. O., Wilson, A. D., and Li, Y. (2007). Gestures without libraries, toolkits or
training: A $1 recognizer for user interface prototypes.
Yamashita, T. and Watasue, T. (2014). Hand posture recognition based on bottom-up
structured deep convolutional neural network with curriculum learning.
49
APÉNDICES
A. Matrices de confusión de señas estáticas
(a) HOG (b) U-LBP
(c) SIGNATURE
Figura 32: Matrices de confusión para el clasificador de Naive bayes.
(a) HOG (b) U-LBP
(c) SIGNATURE
Figura 33: Matrices de confusión para el clasificador de SVM.
50
(a) HOG (b) U-LBP
(c) SIGNATURE
Figura 34: Matrices de confusión para el clasificador de ANN.
(a) HOG (b) U-LBP
(c) SIGNATURE
Figura 35: Matrices de confusión para el clasificador de KNN.
51
B. Matrices de confusión de señas dinámicas
Figura 36: Matriz de confusión para el clasificador de Naive bayes.
Figura 37: Matriz de confusión para el clasificador de KNN.
Figura 38: Matriz de confusión para el clasificador de Random Forest.
Figura 39: Matriz de confusión para el clasificador de SVM.
52
C. Formato de encuesta
Malo Regular Bueno
1Cómoconsideraeltiempodearranquedelaaplicación
2
3
4
5
6
7
8
9
Encuestadeexperienciaconlaaplicación
Acontinuaciónencontraráunaencuestadenueve(9)preguntasqueresumensuexperienciaconlaaplicaciónenterminosdeefectividadyvelocidaddelaaplicacióndesarrollada.
Consideraqueelaplicativopermiteaprenderdeformarápidayefectiva
Cómoconsideralacantidaddeseñasdisponibles
Cómoconsideraeldiseñodelainterfazdeusuario
Puntaje
Cómoconsideralaformaenquesepresentanlosejemplosparaseñasestáticasydinámicas
Consideraquelainterfázdeusuarioesfacildeusarydenavegar
Cómoconsideraqueeslaprecisióndereconocimientodeseñasdinámicas
Cómoconsideralostiemposdereconocimientodelasseñas
Cómoconsideraqueeslaprecisióndereconocimientodeseñasestáticas
No. Pregunta
Cadapreguntacuentacontresposiblesrespuestas:Malo,RegularyBueno.Porfavorrespondalaspreguntasdeacuerdoconsuexperienciaconelusodelaaplicación
53