Método Propuesto
Índice de esta sección
Introducción .................................................................................................................................... 1
Procesamiento de Imágenes ............................................................................................................ 2
Adquisición de la Imagen ................................................................................................................3
Características de la Captura ............................................................................................................ 4
Características de la Mano ............................................................................................................... 5
Compresión .......................................................................................................................................6
Segmentación....................................................................................................................................8
Reconocimiento de objetos .............................................................................................................12
Proceso general de reconocimiento de objetos .............................................................................. 12
Modelo de Red Neuronal Utilizado ............................................................................................... 13
Entrenamiento de la red neuronal .................................................................................................. 16
Post-Procesamiento ........................................................................................................................17
Reconocimientos de Gestos ........................................................................................................... 18
Bibliografía..................................................................................................................................... 19
Introducción
En esta sección se describirá la solución propuesta hacia la problemática planteada en la
sección anterior. En primer lugar se definirá el procesamiento de imágenes llevado a cabo, las
distintas etapas que el mismo comprende y como se resolvió cada una de estas. En segundo lugar
se explicará el proceso de reconocimiento de gestos, el cual tiene como entrada la información
resultante del procesamiento de las imágenes obtenidas utilizando una WebCam.
Procesamiento de Imágenes
Como todo procesamiento, el procesamiento de imágenes se conforma de una serie de
etapas fundamentales que pueden apreciarse en la siguiente figura.
Cada procesamiento de imágenes que resolverá un problema específico ajusta el número de
etapas de acuerdo al resultado que se pretende lograr. <<PONER UN EJEMPLO>>
En el trabajo propuesto, las etapas coloreadas en la figura siguiente son las que se debieron
implementar con el objetivo de alcanzar los resultados esperados:
La figura anterior muestra la existencia de una “Base de Conocimiento” , la cual almacenará
diferente información dependiendo de la existencia o no de algunas de las etapas y de sus
respectivos requisitos para funcionar de la manera deseada. No existen, por lo tanto, restricciones
generales para este componente ya que simplemente podría indicar el área de interés dentro de
una imagen.
En este trabajo, dicha base se utiliza como la unidad central que administrará el orden de las
etapas, permitiendo, de esta manera, sincronizar la salida de cada una de estas con la entrada de
su sucesora.
A continuación se realizará una explicación al detalle de cada una de las etapas implementadas,
describiendo como se llevaron a cabo y cuales técnicas o herramientas se utilizaron para esto.
Adquisición de la Imagen
Para poder llevar a cabo la captura de imágenes se utilizó la librería OpenCV1. Esta
librería permite la interacción con un dispositivo de captura, como una webcam, mediante la
invocación a funciones de alto nivel escritas en lenguaje C. Una de sus principales características
ofrecidas es la capacidad de obtener imágenes provenientes de estos tipos de periféricos.
1
Open Computer Vision Library (BSD License, Intel)
Básicamente el proceso de captura se basa en solicitar frames contínuamente cerciorándose
previamente que el dispositivo de captura esté todavía disponible. Por lo tanto, antes de proceder
a la solicitud de la próxima imagen, se verifica que la cámara se encuentre en ese estado.
Mientras que este proceso puede parecer complejo, gracias al alto nivel de abstracción que provee
la librería en cuestión se vuelve sumamente sencillo, tal como lo muestra el siguiente código:
Si bien esta librería facilita la obtención de los frames provenientes de la cámara que se
seleccione independizando al sistema de las características de los drivers correspondientes, hace
falta definir las características de la captura, como son:

Ubicación de la cámara respecto de la superficie en la que se desplazará la mano (Zona
de Trackeo)

Características de la zona de trackeo.

Características de la mano a ser reconocida.
Cada una de estas se describe en la siguiente sub-sección.
Características de la Captura
En primer lugar, la captura del stream de video debe realizarse respetando las siguientes
restricciones:

Resolución: 320 x 240 Pixels.

Modelo de color: RGB (Red – Green – Blue).

Frecuencia de captura: 25 fps (frames por segundo)
En caso que la configuración de la cámara no respete estos parámetros, la aplicación forzará al
dispositivo a responder según estos valores mientras la aplicación se encuentre en ejecución, sin
necesidad de la intervención del usuario.
En segundo lugar, se describen los requisitos necesarios para que la zona de trackeo sea la
indicada:

Espacio físico: Superficie plana.

Color: Diferente al color piel. En lo posible, el que genere mayor contraste (Azul, blanco,
entre otros).

Posición: Vertical u horizontal. Se recomienda mesa o escritorio de trabajo, sin
obstáculos o elementos que generen ruido para el proceso de reconocimiento de la mano.
En tercer lugar, se detallan las recomendaciones en cuanto a la posición de la cámara web:

Ubicación: Sobre el vector perpendicular a la zona de trackeo. Se recomienda sobre la
superficie.

Visión: Visualizar la zona de trackeo en su totalidad.
La siguiente figura ilustra el escenario descrito anteriormente:
(Figura de la cámara en vertical y bla bla bla)
Cabe destacar que las restricciones planteadas son no mandatorias, ya que el método que se
propone es capaz de trabajar correctamente ante variaciones en el ángulo generado entre la
cámara y la zona de trackeo, así también como con variaciones en la distancia existente entre
estas. Esta capacidad es una de las más interesantes de este trabajo y es descrita en mayor detalle
más adelante en este capítulo.
Características de la Mano
Como en todo sistema de tracking, existen restricciones sobre el objeto a seguir. En este caso,
dado que se trata de un proyecto basado en el seguimiento de la mano, las restricciones se
aplican sobre la misma.
<<EXPLICAR LOS TIPOS DE RESTRICCIONES EN EL ARCHIVO QUE PASÉ LA OTRA
VEZ>>
Tal como se ideó inicialmente, se desea evitar todo tipo de pre-condiciones que puedan
incomodar la utilización del aplicativo. De todas maneras, si bien en este proyecto no existen
limitaciones impuestas sobre el color de la mano y condiciones de luminosidad existente, la única
restricción impuesta se refiere a situar la mano sobre la zona de trackeo y cubrir el resto del
brazo, tal como se haría con una prenda de mangas largas. Esta situación se ilustra en la figura
siguiente.
<<IMAGEN DE ESTO>>
Como se explicará más adelante en este capítulo, se utilizó una red neuronal artificial para el
reconocimiento de la posición de la mano. Por lo tanto, la restricción mencionada anteriormente
se acarrea desde el entrenamiento, donde se utilizaron imágenes en las cuales el brazo se
encontraba cubierto. De esta manera, el único objeto de color piel aparente en la imagen debe ser
la mano.
Durante el entrenamiento se utilizó un filtro de piel con el objetivo de introducir a la red patrones
bien distinguidos. Es por esto que si el usuario no procede a cubrir su brazo, la entrada a la red
representará un patrón totalmente diferente a los del conjunto de entrenamiento, y no se podrá
determinar correctamente la posición de la mano.
Compresión
Luego de obtener un frame desde la cámara web, surge la necesidad de reducirse su tamaño. Esta
actividad debe desarrollarse en este momento ya que las etapas que restan, se encuentran
limitadas respecto a la tasa de datos que pueden procesar y adicionalmente se asegura la no
perdida de información. La principal limitación existe en la técnica utilizada en la etapa de
segmentación y reconocimientos de objetos. Este paso tiene como restricción el tamaño de la
entrada, es decir, la resolución del frame que procesará. Cabe aclarar que se persigue el propósito
de ejecutar el procesamiento en tiempo real, y en este caso el tiempo de ejecución depende
proporcionalmente del tamaño de la imagen trabajada.
Para obtener una idea más precisa del problema, y de la relevancia de esta etapa, se deben tener
en cuenta los siguientes valores: La adquisición de la imagen se realiza en una resolución de 320
* 240 pixeles, donde cada uno de estos se conforma de 3 valores entre 0 y 255 que se
corresponden con los distintos canales RGB. De esta manera, se procesan 230400 (320 pixeles *
240 pixeles * 3 canales) elementos por frame. Evidentemente, este es un valor muy alto de
elementos para procesar dados los resultados que se quieren obtener. De esta manera, se intenta
obtener una imagen con una cantidad de pixeles que oscile alrededor de los 5000 y que aún posea
las características buscadas por el procesamiento. Esta cantidad podrá ser procesada sin
inconvenientes por las etapas siguientes.
(CAPAZ QUE TENEMOS QUE PONER DE DONDE SACAMOS ESTE
VALOR!!!<.ALGUNA TABLA CON VALORES DE TIEMPOS QUE TARDA LA RED EN
PROCESAR) SISI VA UN PÁRRAFO Y UNA EXPLICACIÓN!!! (porque arriba se hace
referencia).
Analizando la resolución de la imagen de entrada, y teniendo en mente la cantidad de elementos
que se busca, se optó por reducir proporcionalmente el tamaño del frame en un factor de 4. Por lo
tanto la salida de esta etapa será una imagen de 80x60, determinando así 4800 pixeles. Para llevar
a cabo esta reducción, denominada downsampling, se utilizo nuevamente la librería OpenCV y
una de sus funciones de procesamiento de frames. Esta función recibe el nombre de cvPyrDown.
La misma efectúa una reducción del frame excluyendo columnas y filas de la matriz que
representa al frame. En la siguiente imagen se puede observar el comportamiento de esta función.
Como se puede observar, el tamaño del frame resultante del proceso es 2 veces menor que el
tamaño del frame original.
Como se mencionó anteriormente, se busca reducir en un factor de 4 el tamaño del frame. Para
lograr esto se aplica la función de downsampling dos veces consecutivas, logrando el factor de
compresión deseado.
Segmentación
El procesamiento realizado requiere la distinción entre el color de la piel y el resto de la imagen,
por lo que en esta etapa se busca obtener como salida una imagen en la que se distingan
notoriamente los pixeles de color piel.
Básicamente, la entrada de esta etapa es el frame en RGB obtenido de la etapa anterior, en donde
se redujo el tamaño de la imagen original, mientras que la salida es una imagen con el mismo
tamaño pero graficada en un espacio de color binario. Esto significa que los pixeles que
corresponden al color piel en el frame de entrada serán representados con el color blanco,
mientras que los pixeles restantes lo harán con el color negro.
Esta idea se encuentra avalada por distintos conceptos acerca de detección de la piel. En el
trabajo Skin Detection - a Short Tutorial [1] se detallan las ventajas y desventajas de utilizar
diferentes estrategias para su resolución. De este mismo trabajo se conoce que la idea principal de
un detector de piel se divide en dos etapas.
En primer lugar se debe seleccionar un espacio de color adecuado convirtiendo cada pixel de la
imagen original a ese espacio de color. Existen distintos tipos de espacio de color: YUV, YIQ,
HSV, CIE-XYZ, RGB, entre otros. RGB es el espacio de color más conocido y utilizado en
procesamiento de imágenes por su simplicidad. Sin embargo a la hora de intentar la detección de
piel posee una gran desventaja: En RGB no se percibe uniformemente el color de piel. Esto
significa que las distancias entre colores en el espacio de color RGB no se corresponden con
distancias lineales en la percepción humana. Adicionalmente los componentes R, G y B se
encuentran altamente correlacionados, lo que indica que no es posible obtener fácilmente la
luminosidad de un pixel (componente que afectará la clasificación en gran medida).
En segundo lugar, se utiliza un clasificador de piel para determinar por cada pixel si se trata de
uno de color piel o no. Este clasificador hace uso de una base de entrenamiento para poder
describir correctamente el contenido de un pixel. Dicha base, en general, se define como un
conjunto de pixeles del color pretendido, graficados utilizando variados tonos de color y
obtenidos bajo diferentes condiciones de luz. Luego, utilizando estos, se determinan las
características de los pixeles y se obtiene una condición uniforme que será utilizada a la hora de
clasificar las imágenes.
Tal como es de esperar, el espacio de color seleccionado afecta directamente al clasificador, ya
que se debe utilizar un modelo de color que permita la distinción de pixeles sin verse afectado por
las distintas condiciones de luminosidad presentadas durante la captura de la imágen. Por lo
tanto, se debe obtener un espacio de color que facilite la construcción de un clasificador. En el
trabajo de Forsyth and Fleck [2] se afirma que el color de la piel humana se encuentra en un
rango restringido de Hue2 y que a su vez no es saturada en profundidad. Esto puede determinarse
debido a que la pigmentación de la piel se conforma de la sangre que fluye a través de ella y de su
principal pigmento: La melanina, un pigmento de color pardo oscuro formado por células
(melanocitos) distribuidas entre las demás células de la epidermis.
Adicionalmente, y basado en el trabajo de Shin et al. [3] y Albiol et al. [4], se requiere poder
discriminar la luminosidad fácilmente. Por estos motivos se ha seleccionado un espacio de color
diferente: HSV. Este modelo posee tres componentes, H (Hue, Tonalidad), S (Saturation,
Saturación) y V (Value, Brillo).
El proceso desarrollado, lleva a descartar el tercero de los componentes V (Brillo) para reducir el
efecto de la luminosidad y magnificar los restantes a fin de tener en cuenta solo los dos primeros
a la hora de clasificar un pixel.
En resumen, en esta etapa se realiza el siguiente proceso:

Conversión de color: Transformación del frame original en RGB a imagen en HSV.

Clasificación: Por cada pixel del frame se determina si los valores de Hue y Saturation se
encuentran dentro del rango establecido para pixeles de color piel.
2
Tonalidad: Es uno de los canales principales, en el modelo de color HSV.

Reducción a binario: Si el pixel es clasificado como piel, se asignará el color blanco en
la posición correspondiente de la imagen resultante. De lo contrario, el color negro es
asignado.
El primero de los pasos mencionados se realiza mediante una transformación no lineal, ya que el
espacio de color HSV y sus variantes (entre ellas HSI3) son deformaciones del Cubo de Color de
Espacio RGB4. Para esta transformación se utilizo una de las funciones de la librería OpenCV
mencionada anteriormente.
En la siguiente imagen muestra la relación entre HSV y RGB, a modo de visualizar la
transformación no lineal mencionada en el párrafo anterior.:
<<IMAGEN Y ALGO QUE LA EXPLIQUEN>>
Para poder encontrar los valores correctos de Tonalidad y Saturación es necesaria la utilización de
una imagen que a partir de ahora se denominará Máscara de Piel. La Máscara de Piel que se ha
utilizado para este proyecto se muestra en la siguiente figura:
En esta imagen se pueden observar distintos tonos de piel, bajo diferentes condiciones de luz.
Esta base se encuentra disponible en el sitio de internet donde se describe el trabajo de Jeremiah
Still [5].
3 Hue, Saturation, Intensity – Tonalidad, Saturación, Intensidad.
4
El espacio RGB se suele representar como un cubo en el que cada eje perpendicular corresponde a un canal.
Dado que uno de los principales propósitos de este trabajo es que funcione correctamente en
tiempo real, la clasificación de pixeles debe cumplir con esta imposición. Es por esto que los
valores promedios de Tonalidad y Saturación de la base de entrenamiento se calculan al comienzo
de la ejecución de la aplicación. Los valores de Hue y Saturation calculados en la máscara
anterior son los siguientes:
Adicionalmente se define un DeltaSkin ∆, que representa la zona considerada color piel alrededor
de los valores promedios. Para esta aplicación se seleccionó un delta con valor 42, el cual fue
obtenido mediante prueba y error, ya que no existe un método formal para su determinación. De
esta manera el rango de Hue y Saturation para el cual se considera que un pixel es color piel es:
La siguiente tabla muestra valores de DeltaSkin testeados junto con imágenes de color piel, que
son rechazadas debido a que los valores de H y S no pertenecen a la región delimitada por el
umbral en cuestión.
<<TABLA>>
Estos valores visualizados en la tabla anterior fueron los que permitieron determinar
correctamente el valor de DeltaSkin.
A modo de ejemplo, se muestran algunos frames segmentados por el proceso descrito
anteriormente:
Reconocimiento de objetos
Conceptualmente, el objetivo de esta última etapa es: Dado un frame de 80 * 60 pixeles
modelado en un espacio de color binario (pixeles blancos y negros), determinar las coordenadas
del centro geométrico de la mano.
Existen distintos tipos de técnicas de reconocimiento de objetos, entre ellas los métodos basados
en decisiones teóricas y los métodos estructurales. En este trabajo se opto por la utilización de
una Red Neuronal Artificial5, que se ubica entre los métodos basados en decisiones teóricas, para
analizar el frame de entrada y determinar la posición de la mano en el mismo.
La elección de utilizar una red neuronal para el reconocimiento de la mano se debió a la
capacidad de este modelo para trabajar con patrones de entrada desconocidos. Más precisamente
el modelo de red neuronal utilizado puede determinar la posición de la mano dentro de una
imagen sin antes haber observado la mano en esa posición. Esto lleva a obtener un sistema
5
Ver Anexo A para más información sobre Redes Neuronales
robusto, capaz de procesar distintos tipos de imágenes y determinar exitosamente la posición de
la mano.
Para organizar de manera correcta la lectura de esta sección, se describirá en primer lugar el
proceso general de reconocimiento y los componentes que este involucra. En segundo lugar se
detallará el componente principal: La red neuronal con sus características.
Proceso general de reconocimiento de objetos
El proceso de reconocimiento de objetos puede apreciarse en la siguiente figura:
Como se observa, la entrada se transforma a un vector columna binario de 4800 elementos, que
luego ingresará a la red neuronal para procesarla detectando la mano. Finalmente, la red dará
como resultado las dos coordenadas del centro geométrico de la mano la imagen.
Modelo de Red Neuronal Utilizado
Existen variados modelos de redes neuronales: Asociadores de patrones, redes competitivas, entre
otras. Las diferencias principales que existen entre ellas son los problemas que cada una puede
resolver. Por ejemplo una red de tipo asociadora de patrones puede mapear patrones de entrada
con otros de salida mediante un entrenamiento supervisado adecuado. Por otra parte, las redes de
tipo competitivas intentan clasificar un patrón de entrada sin ningún tipo de supervisación durante
la fase de entrenamiento. Adicionalmente, las redes se pueden clasificar según el patrón de
conexión que presenta la red, el tipo de aprendizaje de la que pueden ser capaces o la naturaleza
de los datos de entrada (contínuos o discretos). Cada tipo de red puede resolver un problema en
concreto y se debe seleccionar la red que más se ajusta al problema que se intenta resolver.
El reconocimiento de objetos en este trabajo se realizó utilizando una red Backpropagation,
clasificada dentro de las redes asociadoras y con entrenamiento supervisado de dos fases6.
En caso de necesitar una previa introducción a la técnica de redes neuronales, se recomienda
consultar el apéndice A al final de este trabajo. Por lo pronto, en este capítulo, se detallarán los
diferentes parámetros que se han utilizado para la configuración de la red.
La topología de la red utilizada es de tipo multicapa. Esta clase de redes se conforma de una capa
de entrada, una de salida y otras denominadas ocultas. Las capas de entrada y salida están
definidas por el problema a resolver, por lo que el número de neuronas que poseerá cada una de
ellas no requiere específicamente de un análisis profundo. En el caso de la primera de las capas,
se tienen 4800 neuronas, correspondiéndose cada una de estas a un componente del vector
columna creado al inicio de esta fase. Por otro lado la capa de salida posee solo dos neuronas,
correspondientes a las coordenadas X e Y que representan la mano dentro del frame.
Sin embargo, mientras que el número de neuronas de las capas de entrada y salida se pueden
determinar fácilmente, las capas intermedias no corren la misma suerte. En este proyecto en
particular, la capa intermedia es única.
Tal como se demuestra en (PONER REFERENCIA) no existe un método formal para determinar
el número de neuronas que debe contener una capa intermedia de un modelo neuronal. Por lo
tanto, este valor debe ser obtenido mediante prueba y error. Una buena estrategia, que fue la que
se utilizó en este trabajo, es analizar proyectos que resuelvan problemas similares y comenzar a
realizar las pruebas desde un número promedio de neuronas. Algunos de los trabajos consultados
son (PODEMOS PONER TRABAJOS SIMILARES!!!)
Debido a los cálculos realizados, el número de neuronas con el que se efectuaron las pruebas fue
en el rango (50,80), incrementando en cada prueba en 5 la cantidad de neuronas. Se configuraron
distintas redes neuronales con esas cantidades, se entrenaron (con el mismo set de imágenes) y se
compararon los errores obtenidos.La siguiente tabla resume los resultados obtenidos:
<<TABLA!>>
6 Ver el anexo A para más información.
Como se observa, el mejor resultado se obtuvo utilizando una red neuronal con una capa
intermedia de 70 neuronas. Esta configuración obtuvo el menor de los errores y a su vez dentro
del rango de errores aceptables por la problemática7.
Por lo tanto el modelo a utilizar es el siguiente:
Como en todo modelo neuronal de este tipo, existen otros parámetros a determinar: Las funciones
de transferencia a utilizar en cada capa es uno de ellos.
Por un lado, considerando que la red debe entregar dos valores, uno en el rango [0,80]
correspondiente a la coordenada horizontal y el otro en entre [0,60] correspondiente a la
coordenada vertical, debe albergar en cada neurona de salida una función lineal.
Por otro lado, y considerando trabajos similares, se optó por una función sigmoidea para cada una
de las neuronas de la capa intermedia. Esta función es la más utilizada y posee un buen nivel de
convergencia8.. (PONER PORQUE ES ESTA FUNCION!!!! con algún gráfico y algo de eso).
7
El término “error aceptable” se definirá con más detalle en la sección de entrenamiento de la red
8 Descrito en mayor detalle en el anexo A.
En conclusión, el modelo neuronal propuesto es de naturaleza sencilla, y posee las características
adecuadas para cumplir la tarea de reconocimiento de la mano adecuadamente. Más aún, una de
las ventajas de este modelo, la cual se estudiará en las secciones siguientes, es la velocidad de
procesamiento de un frame. Esta cualidad es ideal para no alejarse del objetivo planteado acerca
del procesamiento en tiempo real. Si bien un cuestionamiento válido es que el error que se logra
puede ser mejorable, la velocidad con la que un frame es procesado permite un procesamiento en
tiempo real.
La implementación de la red neuronal artificial, se llevó a cabo utilizando una librería llamada
FANN9, la cual provee la funcionalidad suficiente para la creación una red, su entrenamiento y
ejecución. Más información acerca de esta librería puede encontrarse en el apéndice C.
Entrenamiento de la red neuronal
Existen dos etapas fundamentales a la hora de querer utilizar una red neuronal para resolver un
problema en particular: El primero de ellos es el entrenamiento de la red, mientras que el segundo
se refiere a la ejecución misma.
El entrenamiento de la red se realiza fuera de línea (cuando el proyecto no está en ejecución),
utilizando un conjunto de imágenes cuidadosamente seleccionado que debe cumplir con las
siguientes características: <<CARACTERÍSTICAS>>
Generalmente, solo se utiliza un 6/7 de ese conjunto para entrenar, mientras que el 1/7 restante es
necesario para el testeo de la red. Durante este proceso supervisado la red se adapta al conjunto
de entrenamiento autodeterminando los parámetros de cada una de sus neuronas. En cambio,
mientras la red esté ejecutándose, no sufrirá modificaciones en su estructura.
Se podría pensar que a mayor volumen de información utilizado para el entrenamiento, la salida
de la red mejoraría notoriamente. Sin embargo, existe un problema importante durante este
proceso que se denomina “Sobre-generalización”. Este fenómeno ocurre cuando el conjunto de
entrenamiento es muy extenso y al entrenar la red, esta pierde la capacidad de generalizar nuevos
9
FANN – Fast Artificial Neuronal Network Library
casos debido a que <<EXPLICAR>>. También sería un error considerar que poca información
haría a la red funcinoar correctamente. Por el contrario, si el conjunto de entrenamiento es
demasiado pequeño, la red no logrará adaptarse al problema, por lo que no generalizará ningún
caso desconocido correctamente.
Al entrenar una red, dos parámetros son importantes: El algoritmo de entrenamiento y la función
que determinará si el entrenamiento puede darse como finalizado.
En este trabajo, el algoritmo de entrenamiento que se utilizó fue QuickProp, el cual es una
variabte mejorada del algoritmo BackPropagation. Ambos algoritmos se describen en el apéndice
A.
En cuanto a la elección de la función que determina si el entrenamiento debe detenerse, se optó
por la función MSE10. La misma tiene como objetivo cuantificar que tan lejos se encuentra un
valor calculado del real.
LO QUE SIGUE Y HASTA POST-PROCESAMIENTO NO VA ACÁ IGUAL COMPLETAR
Para realizar el entrenamiento de la red utilizada en este proyecto, se seleccionó un conjunto de
649 casos. De esta base, 556 fueron utilizados para la etapa de entrenamiento, mientras los 93
restantes lo fueron para realizar el testeo de la red. <<hablar algo de estos números, porque 649,
si hubo pruebas fallidas>>.
El entrenamiento de la red consumió un total de 1112 segundos (18,5 minutos) en un procesador
dedicado. Durante este proceso, se utilizaron 1200 épocas11 y el error que se logró fue de 2,5
pixeles. Esto significa que cuando la red procesa un frame, la posición del centro geométrico de
la mano puede estar desviada en 2,5 pixeles, ya sea de manera vertical u horizontal. El siguiente
gráfico muestra, dada una imagen, el espacio donde la red informará que se encuentra la mano.
<<Una foto de la mano con un círculo o algo donde podría estar la salida de la red>>
10 Medium Square Error
11
Época – es una iteración en la cual la red procesa todo el conjunto de entrenamiento y actualiza sus pesos
El siguiente grafico detalla el error a través de las épocas.
(GRAFICO!!!!!!!!!!)
(ANALISIS DEL GRAFICO!!!!!!!!!!!!!!)
Post-Procesamiento
Luego del procesamiento descrito anteriormente, del cual se obtienen las coordenadas del centro
de la mano, es necesario un proceso denominado Post-Procesamiento. Debido a que una de las
aplicaciones principales de este proyecto es la simulación del movimiento del mouse mediante
los desplazamientos de la mano, y considerando que la salida de la red es muy pequeña en
comparación a la resolución que el usuario está utilizando en su ordenador, existe una limitación
que debe ser tratada correctamente. Si se intentara mapear directamente la salida de la red
neuronal a la posición en la pantalla correspondiente a ese punto, se observaría una vibración
irregular donde el puntero debería mostrarse, lo cual dificultaría el uso esperado. La solución
propuesta a este problema es realizar un procesamiento de suavizado de la salida.
Para comprender mejor este problema, se muestran los siguientes gráficos donde se observa una
secuencia de posiciones que describen un movimiento circular y las respectivas posiciones sin
aplicar el algoritmo de suavizado y aplicándolo.
(ANALISIS DEL GRAFICO!!!)
Para poder obtener el efecto de suavizado, el cual permite una salida sin variaciones importantes,
se utilizo un filtro pasa bajos. Este tipo de filtros eliminan los picos de frecuencia en una señal,
logrando que la salida sea uniforme. Si bien existen distintas clases de estos filtros, en este
trabajo se utilizo una variante conocida como “Exponential Smoothing”. Básicamente la salida de
un tiempo t1 a un tiempo t2 es proporcional a la diferencia entre la salida previa y la entrada
actual. La siguiente notación intenta aclarar este concepto.
Como consecuencia, si el parámetro α es pequeño, la salida tendrá más inercia, lo que significa
que dicha salida (Yi) responderá lentamente a un cambio en los valores de entrada (Xi),
continuando con el movimiento que venían trayendo las coordenadas anteriores.
Reconocimientos de Gestos
ACA VA TU PARTE MAN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Bibliografía
[1] Skin Detection - a Short Tutorial. Elgammal et. Al
[2] Finding naked people. In: Proceedings of the European Conference on Computer Vision
(ECCV). (1996) 593–602. Fleck, M.M., Forsyth, D.A., Bregler, C
[3] Does colorspace transformation make any difference on
skin detection? In: WACV ’02: Proceedings of the Sixth IEEEWorkshop on Applications of
Computer Vision, Washington, DC, USA, IEEE Computer Society (2002) 275. Shin, M.C., Chang,
K.I., Tsap, L.V.
[4] Optimum color spaces for skin detection. In: Proceedings of
the International Conference on Image Processing (ICIP). (2001) I: 122–124. Albiol, A., Torres,
L., Delp, E
[5] Matlab Scripts - http://www.urwelcome.us/Jstill/Matlab/
Descargar

Metodo Propuesto