El objetivo general del reconocimiento de gestos de mano es la interpretación de la posición, postura o movimiento de la mano.
El reconocimiento de gestos puede llevarse a cabo de dos maneras. Mediante el uso de un guante de datos que transforma las flexiones del cuerpo en información de movimiento, o mediante visión donde una cámara sirve de ojo humano para grabar las posiciones del cuerpo que serán extraídas por medio de procesado de imágenes [5].
Está claro que el primer método puede dar resultados precisos.
El enfoque basado en la visión, por el contrario, no posee requerimientos de equipo para el usuario final (a excepción de la cámara), por lo que es adecuado para aplicaciones generales [5].
El guante de datos es bastante incómodo en términos de comodidad del usuario. Además, el equipo necesario para emplear el método sería inaceptablemente costoso para la mayoría de los clientes estándar por lo que sólo es adecuado en usos especiales.
El inconveniente del método basado en la visión, sin embargo, radica en la complejidad algorítmica que requiere de una gran cantidad de tiempo y potencia de cálculo para extraer los movimientos del cuerpo [5].
Existen varios algoritmos disponibles que se centran en diferentes aspectos de una persona haciendo gestos (bajo diferentes supuestos). En general, se pueden dividir en dos categorías, los algoritmos basados en la apariencia y los basados en modelos 3D. El enfoque basado en modelos 3D compara los parámetros de entrada de una extremidad con la proyección 2D de un modelo 3D de la extremidad. El enfoque basado en la apariencia utiliza características de la imagen para modelar la apariencia visual de una extremidad y la compara con características de la imagen extraída de la entrada de vídeo [5].
En la sección 4.1 se definieron tres tipos de gestos. Se utiliza un clasificador general para detectar gestos estáticos (es decir, posturas). El clasificador nos dice qué gesto o postura fue reconocido. Sin embargo, los gestos dinámicos de mano tienen un aspecto temporal y requieren de técnicas que manejen esta dimensión, es decir, los modelos ocultos de Markov (HMM). La otra forma es utilizar modelo basado en movimiento.
Algunas de las técnicas utilizadas para el reconocimiento del gesto estático (y dinámico) de la mano son el algoritmo K-Means, KNN, SVM, el ya mencionado algoritmo HMM, el algoritmo DTW o las redes neuronales [3].
Para un procesado más rápido de los datos en el proceso de reconocimiento de gestos, no toda el área de la imagen puede ser procesada.
Una vez es detectada automáticamente la mano, se asigna sólo el área alrededor de la mano que es luego procesada reduciendo así la carga de procesado. Las distancias obtenidas se convierten en una imagen en escala de grises para obtener el contorno de la mano.
A continuación, se describen dos métodos para el proceso de reconocimiento de gestos.
Defectos de convexidad
El primer paso consiste en separar la mano del fondo. La separación se puede obtener utilizando la información de profundidad, determinando qué píxeles de imagen pertenecen a mano. El segundo paso es detectar el contorno de la mano.
Las formas de muchos objetos complejos están bien caracterizadas por defectos de convexidad. La Figura. 4.3 ilustra el concepto de defecto de convexidad utilizando una imagen de una mano humana. El casco convexo se representa como una línea oscura alrededor de la mano, y las regiones etiquetadas de la A a la H son cada uno de los "defectos" en relación a ese casco. Como se puede ver, estos defectos de convexidad caracterizan también el estado de la mano. El algoritmo retorna las coordenadas de tres puntos, el punto de inicio, el punto más profundo y el punto final (Fig. 4.4) del defecto, en el que el punto más profundo es entendido como la distancia máxima entre el casco y el contorno de la mano.
El objetivo del algoritmo es encontrar el punto en el dedo que se encuentre más alejado del centro de la mano. El primer paso es eliminar todos los defectos cuya altura sea inferior a un valor especificado. Después se eliminan los defectos que tengan una distancia entre el punto de inicio y el punto máximo por encima de un valor especificado, definido dinámicamente (si dos puntos están demasiado lejos, significa que no pueden representar un dedo). A continuación también se eliminan los defectos que tienen una distancia entre el punto de inicio y el punto de profundidad menor a un valor especificado. Este valor cambia dinámicamente de acuerdo con el tamaño de la región en la que se detecta la mano (Fig. 4.5). El último paso consiste en eliminar todos los defectos que se producen por debajo de la muñeca.
Reconocimiento de gestos de la mano en base a partes
En el primer paso de este algoritmo, se obtienen y se convierten a imagen binaria los segmentos de datos que contienen las manos. El centro de la palma (Fig. 4.6) se calcula a partir del círculo interior y la suma de un punto sobre la envolvente del casco que pertenece a la mano y que tiene una distancia máxima desde el defecto encontrado.
Todos los puntos del contorno de la mano se mapean en el eje X. El eje Y describe la distancia relativa de cada punto desde el centro de la palma. Los puntos mapeados crean una curva (Fig. 4.7).
El siguiente paso del algoritmo es el análisis de la curva con el objetivo de encontrar un máximo local. Una vez finalizado el análisis de la curva, se inicia la extracción del dedo. Se compara la distancia de cada máximo para establecer un umbral. Cada dedo tiene un peso específico. Los dedos se detectan a partir de unas relaciones definidas (la relación se encuentra comparando el peso con unos valores dados y en base a ello se conoce el número de dedos, así, si el peso <1,5x peso medio - El segmento contiene un dedo, etc.). Este algoritmo funciona también para dedos unidos (Fig. 4.8).
Los gestos dinámicos aseguran el acceso a contenidos privados de usuarios o al control de un sistema o una aplicación. Su uso se puede utilizar también como una contraseña. Las redes neuronales y los algoritmos genéticos se utilizaron sobre todo en los comienzos del reconocimiento de gestos.
Estos métodos tenían una tasa de reconocimiento aceptable, pero el mayor inconveniente era la cantidad de potencia de cálculo necesaria y el tiempo necesario para el entrenamiento de las redes neuronales, los cuales eran inaceptablemente elevados para aplicaciones prácticas.
Hoy en día, se utilizan nuevas técnicas para reconocer los gestos. Se han inventado algoritmos que no requieren de redes neuronales, por ejemplo, la búsqueda de la sección áurea, el algoritmo incremental de reconocimiento y modelos probabilísticos como el modelo oculto de Markov. Para aumentar la tasa de éxito de los algoritmos mencionados se puede utilizar Machine learning. Existen muchos enfoques de cómo hacer el reconocimiento de gestos. Los métodos HMM se han convertido en muy populares en los últimos años. La razón principal es que el método HMM es bien conocido y utilizado en muchas áreas.
El algoritmo propuesto por Kristensson y Denby [4], originalmente para los trazos del lápiz digital y dispositivos de pantalla táctil, se puede extender también a los gestos dinámicos.
Para esta propuesta, se define una plantilla como un conjunto de segmentos que describen un gesto. Es evidente que, dado un conjunto de gestos suficientemente distinguibles el uno del otro, el reconocimiento puede tener éxito después de tan sólo realizar una parte del gesto (Fig. 4.9).
El uso de gestos se amplia con los gestos de deslizamiento. Este tipo de gesto resulta muy natural y cómodo. Los gestos de deslizamiento están diseñados para una navegación rápida y rutinaria en menú, programas y la galería. Poseen 4 direcciones para cada mano y un par de combinaciones de la mano izquierda-derecha. El método CDGR (Circle Dynamic Gesture Recognition) publicado en [1] se basa en la detección de la mano, la velocidad del movimiento y la distancia. Si la mano del hombre ejecuta un movimiento más rápido y el círculo ínterior sale del círculo exterior, el sistema procesa este movimiento y determina el gesto. El gesto viene dado por el ángulo del movimiento ejecutado desde el círculo central hacia el círculo exterior. Los gestos posibles son: deslizamiento a la izquierda, derecha, arriba y abajo. Los mismos gestos también se pueden hacer con ambas manos. El usuario también puede realizar gestos de zoom in y zoom out (Fig. 4.10).