Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TESIS DOCTORAL
Dirigida por:
Dr. Isidro Villó Pérez
Codirigida por:
Dr. Rafael Toledo Moreo
Cartagena, 2022
Fin
FRANCISCO JAVIER|TOLEDO|MOREO
7 de noviembre de 2022
Aunque el camino para llegar hasta esta página ha sido largo, lo hago, como no
podía ser de otra manera, justo de tiempo para escribir en ella unas líneas de
agradecimiento.
Durante estos años, no han sido pocas las veces en las que he decidido no hacerlo:
«qué necesidad habrá, lo haré en persona». Afortunadamente, he comprendido a
tiempo que ni este documento ni este trabajo estarían entonces completos.
Por tanto, como punto, al fin, final de mi tesis, quiero dejar escrita mi gratitud a
personas que me han ayudado, acompañado e incluso sostenido durante el proceso;
por el ánimo, apoyo, ayuda, compañía, comprensión, confianza, consejo, dedicación,
paciencia y unas cuantas cosas más que me han dado, por haberme enseñado, por
haberme escuchado, por el tiempo compartido.
No están todos los que son. Por motivos que creo que son obvios para ellos, sí son
todos los que están.
Gracias
a Rafa
a Isidro
a Ramón
a José
a Ginés
a José Manuel
a Pedro
a mi madre y mi padre
1. Preámbulo 1
1.1. Comunicación basada en los gestos de la mano 3
1.1.1. Definición y tipos de gestos de la mano 4
1.2. Sistemas para reconocimiento de gestos de la mano 7
1.3. Reconocimiento de gestos de la mano basado en visión por computador 11
1.4. Objetivos de la tesis 13
PARTE I 38
i
Índice general
PARTE II 154
Plataforma hardware 154
Arquitectura propuesta 156
ii
Índice general
Bibliografía 251
iii
Listado of acrónimos más utilizados
FF flip-flop
Preámbulo
La evolución de las computadoras en las últimas décadas ha dado lugar a una era de ubicuidad
digital. La potencia de cálculo, la capacidad de almacenamiento, el consumo, el tamaño, el
precio, la diversificación de soluciones en cualquier combinación de los aspectos anteriores;
la ciencia y la tecnología han ido abriendo caminos que nos han conducido a un mundo
más inteligente que nunca, más conectado que nunca, un mundo construido sobre sistemas
basados en microprocesadores. Con las computadoras presentes en prácticamente cualquier
ámbito de la vida cotidiana actual, nuestra manera de comunicarnos con ellas ha sido objeto
de evolución continua.
Aunque la historia de las computadoras comienza en los años 40 (Colossus, 1944; ENIAC,
1946), no es hasta finales de los años 70 cuando adquiere relevancia su interacción con las
personas. Evidentemente, en el largo periodo de tiempo intermedio se produjeron avances
fundamentales en la manera de interactuar desde las primeras tarjetas perforadas usadas
para programarlas, pero el contexto, descrito de la siguiente manera por [MacKenzie], era muy
diferente del actual: «what’s all this talk about make the state of the system visible to the user?
What user? Sounds a bit like ... well ... socialism! [...] Interaction was not on the minds of the
engineers and scientists who designed, built, configured and programmed the early computers».
Es la popularización de las computadoras a finales de los años 70 y principios de los 80 la que
da un nuevo significado a la comunicación con ellas y una nueva dimensión a la Interacción de
las Personas con las Computadoras, mayoritariamente denominada HCI (Human Computer
Interface). Desde entonces, HCI es un campo de investigación muy activo y en constante
evolución. Entre las muchas revisiones que pueden encontrarse en la literatura, [Myers] resume
de manera clara y concisa los principales avances tecnológicos en la historia de la HCI,
reivindicando en ella como fundamental el papel de la investigación en las universidades. La
colección de William Buxton, investigador en Microsoft Research y pionero en el campo de
la interacción persona-computadora, incluye una completa e interesante representación de
dispositivos.
La comunicación con las computadoras puede dividirse en tres eras, cuyas fechas de apari-
ción y periodos de vigencia se recogen en la Figura 1.1. Esta figura está construida sobre tres
hitos. El empleo de máquinas teletipo modificadas para enviar órdenes de trabajo a las compu-
tadoras establece, a lo largo de la primera mitad de la década de los años 50, el comienzo de
1
1.Preámbulo
HAL 9000
Naturalidad
Figura 1.1: Las tres eras de la comunicación con las computadoras: la era de las interfaces
de línea de comandos comienza mediados los años 50, con el empleo de máquinas
teletipo para programar las computadoras; la fecha de inicio de la era de las
interfaces gráficas de usuario se sitúa en 1981, cuando se presentó el 8010 Star
Information System de Xerox; la de las interfaces de usuario naturales en 2007,
cuando Apple popularizó a escala global la tecnología multi-toque en su iPhone.
HAL 9000, paradigma de computadora capaz de relacionarse de manera absolu-
tamente natural con el ser humano, se sitúa en un futuro indeterminado.
2
1.1. Comunicación basada en los gestos de la mano
con cualquier computadora, sea lo más natural posible, que no sea necesario aprender a
manejar con destreza un ratón, un teclado o cualquier otro dispositivo de entrada, que sea
suficiente tocar o desplazar el dedo, hablar con un interlocutor como Siri o Google Home,
hacer un gesto con la mano, o simplemente pensar en ello (Brain-Computer Interfaces). NUI
supone un cambio de paradigma. Hasta ahora, las personas han tenido que adaptarse a los
límites de la tecnología y definir en base a ello la forma de trabajar con las computadoras.
Con NUI, son las computadoras las que se adaptan a nosotros, a nuestras características y
preferencias, para que podamos usar la tecnología de la forma que nos sea más natural: «I’m
convinced this [NUI] is a transformational technology», escribió en 2011 Bill Gates.
Esta evolución ha convertido la investigación en HCI en un campo amplísimo que engloba
no sólo disciplinas tecnológicas como la Electrónica o las Ciencias de la Computación sino
también humanísticas como la Lingüística o la Psicología y que es de gran interés en otras
como la Neurociencia o la Inteligencia Artificial ([Newell y Card, Helander et al., Brown]).
El desarrollo de máquinas más humanas requiere dotarlas de la capacidad de percibir con
naturalidad el entorno en el que se encuentran y lo que sucede a su alrededor. Para ello,
entender la comunicación natural de los seres humanos es fundamental y ésta se produce,
tal y como afirma el pionero en la investigación en Realidad Virtual y Realidad Aumentada
Myron Krueger, a través de la voz y los gestos: «natural interaction means voice and gesture»
([Wachs et al.]). El reconocimiento del habla y el reconocimiento de los gestos son el camino
hacia la interacción natural con las computadoras y hacia máquinas inteligentes.
3
1.1. Comunicación basada en los gestos de la mano
Para los dos primeros tipos de la taxonomía de Kendon, [McNeill a] propone cuatro cate-
gorías o dimensiones: icónicos, metafóricos, deícticos y rítmicos1 . Los icónicos y los metafó-
ricos presentan imágenes de acciones o entidades, concretas los primeros, con mayor abstrac-
ción los segundos. Los deícticos son aquéllos que realizan la acción de apuntar a objetos,
1
El término original en inglés es beat. Ha sido traducido por rítmico atendiendo a la descripción del tipo
de gesto y a la propia referencia musical del acuñador del término en [McNeill a].
4
1.1. Comunicación basada en los gestos de la mano
personas o en una dirección. El concepto de deixis, que en la Lingüística hace referencia a las
expresiones cuyo significado es relativo a la persona que las realiza y sólo pueden entenderse
por su contexto, se utiliza en el campo del estudio de los gestos para definir aquéllos que
realizan la acción de señalar. Por último, los rítmicos marcan el compás del discurso y son
utilizados, típicamente de forma espontánea, para enfatizar ciertas palabras o frases.
Desde el punto de vista del Lenguaje Corporal los gestos se agrupan en cinco categorías:
emblemáticos, ilustrativos, reguladores, emotivos y adaptadores. Son emblemáticos aquellos
gestos que pueden ser automáticamente traducidos, en el contexto cultural apropiado, a pala-
bras. Los gestos ilustrativos o ilustradores acompañan a la comunicación verbal y sirven para
completar, matizar o enfatizar lo que se está diciendo, si bien, a diferencia de los emblemas,
no tienen un significado directamente traducible. Los reguladores son los movimientos produ-
cidos para controlar la comunicación verbal empleándose, por ejemplo, para pedir o ceder el
turno de palabra, o para iniciar o finalizar una conversación. Los gestos emotivos o de afecto
son los que trasladan emociones. Finalmente, se denominan gestos adaptadores aquéllos que,
de manera consciente o inconsciente, liberan tensión física o gestionan emociones que no se
expresan de otro modo.
Probablemente la clasificación más popular en la literatura de reconocimiento de gestos
para HCI es la presentada por [Quek] (Figura 1.3) y más tarde ligeramente modificada
por [Pavlović et al.] (Figura 1.4). Ambas están construidas sobre la distancia —el grado de
abstracción— del gesto respecto a la interpretación deseada y en ambas los autores descartan
como gestos los movimientos no intencionados de manos y brazos, que no aportan informa-
ción relevante. Entre los gestos propiamente dichos, [Pavlović et al.], y ésta es su principal
diferencia con [Quek], distingue dos categorías: los realizados para comunicar y normalmente
acompañados o acompañando a la comunicación verbal —comunicativos—, y los realizados
para actuar sobre los objetos del entorno —manipulativos—. Los comunicativos pueden ser,
de acuerdo con la distancia o nivel de asbtracción entre el movimiento y la interpretación
que el gesticulador espere que lleve asociada, acciones o símbolos. Los símbolos son aquéllos,
arbitrarios por naturaleza, que tienen un valor lingüístico. En las acciones, sin embargo, el
movimiento está directamente relacionado con la interpretación que se pretende conseguir. Los
símbolos pueden ser a su vez referenciales o modeladores. Los primeros sirven para designar un
objeto o un concepto; los segundos para transmitir la opinión del comunicador, normalmente
acompañando a la comunicación verbal. Por último, las acciones se dividen en miméticas, si
el gesto replica aquéllo a lo que se refiere, y deícticas.
Gestures
Acts Symbols
5
1.1. Comunicación basada en los gestos de la mano
Hand/Arm movements
Manipulative Communicative
Acts Symbols
Figura 1.4: Taxonomía de gestos de la mano para HCI propuesta por [Pavlović et al.]
Gesticulación
otros
Figura 1.5: Tipos de gestos en el marco de la taxonomía de sistemas HCI basados en gestos
(modificada de [Karam y Schraefel])
Los gestos manipulativos, como se ha indicado al citar el trabajo de [Pavlović et al.], son
aquéllos cuyo propósito es controlar un objeto; los semafóricos (semaphoric) son aquéllos,
definidos a priori formando una especie de diccionario de gestos, utilizados para activar una
determinada acción en el sistema con el que se interactúa. Existen diferencias muy significa-
tivas entre ellos, hasta el punto de que posiblemente su única característica común sea que se
6
1.2. Sistemas para reconocimiento de gestos de la mano
utilizan las mismas partes del cuerpo para realizarlos ([Quek et al.]). La primera de ellas es
la motivación principal del empleo de la mano en sistemas HCI: la naturalidad del gesto. La
manipulación de objetos es inherente al uso de la mano por el ser humano. Sin embargo, los
gestos semafóricos son muy poco representativos en la comunicación entre personas; prácti-
camente son una solución desarrollada ad hoc para interactuar con las computadoras. Desde
un punto de vista más pragmático, gestos manipulativos y semafóricos difieren por ejemplo
en la dinámica de los movimientos, en la accesibilidad —visibilidad— de rasgos relevantes de
la mano o en la respuesta que se recibe al realizarlos. No obstante lo anterior, estos dos tipos
de gestos son los que ocupan la inmensa mayoría de trabajos en el campo del reconocimiento
de gestos en HCI.
7
1.2. Sistemas para reconocimiento de gestos de la mano
Tipo de gestos
Vocabulario
Funcionalidad
Ámbito de operación (Interior/Exterior)
Homogénea Heterogénea
8
1.2. Sistemas para reconocimiento de gestos de la mano
ejes, y su accesorio Wii Motion Plus, destinado a capturar movimientos más complejos con
mayor precisión, en un giróscopo. Los guantes sensorizados (data gloves) incluyen también
sensores de flexión implementados con galgas extensiométricas para detectar los movimientos
de los dedos de la mano y estimar su configuración.
Una novedosa propuesta, todavía en ciernes, para la detección de los movimientos es
el empleo de señales EMG. La Electromiografía (EMG) es una técnica de registro de la
actividad eléctrica que generan los músculos esqueléticos. En Medicina, el electromiograma
es utilizado para estudiar el sistema nervioso periférico, evaluar la activación de los músculos
y diagnosticar enfermedades neuromusculares. Basado en ella, Myo es un brazalete destinado
a reconocer gestos diseñado por Thalmic Labs Inc. Sensores EMG capturan señales eléctricas
de actividad de los músculos que, combinadas con la información de un giróscopo y de un
acelerómetro, permiten realizar acciones de manera remota moviendo la mano, la muñeca y
el antebrazo.
El otro gran tipo de sensores empleado es el de los sensores de imagen. Las cámaras están-
dar, aquéllas que disponen de un sensor sensible a la luz en el rango visible del espectro, son
la solución más accesible y económica. El desarrollo de sistemas basados en ellas es la línea
de investigación que mayor interés suscita en el campo desde hace años. No obstante, con el
propósito de solventar algunas de las dificultades que se presentan, otros tipos de sensores
han sido propuestos. Las cámaras termográficas, sensibles a longitudes de onda en el infrar-
rojo térmico, facilitan la identificación del cuerpo humano en el entorno y son una opción
especialmente útil en condiciones de poca o nula luminosidad (p.ej. [Sahami Shirazi et al.]).
Sin embargo, cuestiones tecnológicas, de privacidad de los usuarios y sobre todo económicas
las descartan como una solución viable comercialmente. El empleo de sensores en el rango del
infrarrojo cercano ha despertado un notable interés en los últimos años, fundamentalmente
a raíz de la presentación del accesorio Kinect para las consolas Xbox 360 de Microsoft. El
propósito de Kinect es permitir a los usuarios interactuar con la consola mediante una interfaz
natural que reconozca gestos. Para ello emplea, además de una cámara estándar, un sensor
de imagen en el infrarrojo cercano que captura la proyección sobre la escena de un patrón de
luz emitida en ese mismo rango del espectro ([Zhang]). Esta técnica, denominada Luz Estruc-
turada, permite obtener información de profundidad a partir del análisis de la deformación
del patrón emitido; utilizando luz infrarroja, no se interfiere en la escena. Combinado con el
sensor en el rango visible, se construye una de las posibles configuraciones de lo que se conoce
como cámara RGB-D (RGB-Depth), una cámara que proporciona tanto información de color
como de distancia.
La Luz Estructurada forma parte de un conjunto de técnicas denominadas Range Imaging,
destinadas a proporcionar información de la distancia a la que se encuentran los píxeles de
la imagen en la escena. La gran utilidad de esta información de distancia en la segmentación
de las imágenes previa a la identificación de objetos, y los avances en estas técnicas y en el
desarrollo de los sensores que las implementan ha motivado que hayan adquirido considerable
presencia e importancia en sistemas HGR (p.ej. [Pisharady y Saerbeck]) y en general en el
análisis del movimiento del cuerpo humano (p.ej. [Chen et al., D’Orazio et al.]). La triangu-
lación a partir de la información de las imágenes de un sistema de visión estereoscópica es la
más extendida y accesible, si bien en los últimos años han evolucionado y se han extendido
aproximaciones al problema de estimación de la profundidad que, como la mencionada Luz
Estructurada, intervienen en la escena. En ellas, el sensor de imagen no se limita a percibir
señales de manera pasiva, sino que genera sus propias señales y es a través del análisis de la
respuesta de la escena a esas señales cómo se obtiene la información de distancia. Al conjunto
de estas técnicas se le denomina Visión Activa. La emisión y captura del patrón de luz estruc-
9
1.2. Sistemas para reconocimiento de gestos de la mano
turada es, en gran parte debido a Kinect, la más popular entre ellas, pero no la única. Las
cámaras Time of Flight, que estiman la distancia de los objetos emitiendo un pulso de luz y
calculando el tiempo que esa señal tarda en ser detectada por cada píxel del sensor, también
han sido utilizadas (p.ej. [Liu y Fujimura]).
Una solución de visión activa tecnológicamente más sencilla y accesible que la luz estruc-
turada o las cámaras ToF es iluminar la escena con luz infrarroja. El controlador Leap Motion,
diseñado para ser utilizado como periférico de reconocimiento de gestos en ordenadores perso-
nales, está basado en un sistema con cámaras y LEDs infrarrojos. Tres LEDs iluminan la
escena que captan dos cámaras IR con objetivo gran angular. Con la información de ambas,
se detecta y siguen las manos en un rango de entre 60 y 80 centímetros, limitado según los
desarrolladores por la máxima corriente que puede alimentar un puerto USB.
La información de una cámara estándar y de una cámara infrarroja pueden estar conte-
nidas en una única imagen utilizando un único sensor que integra capacidad sensitiva en el
espectro visible y en el infrarrojo cercano, constituyendo una cámara hiperespectral. Utilizadas
en otros campos como la astronomía, la agricultura o la industria alimentaria, [Goel et al.]
proponen el uso de su cámara hiperespectral Hypercam, una solución de bajo coste que utiliza
visión activa, para detectar las manos de un usuario en un sistema HCI.
Operando con magnitudes físicas y con características diferentes, cada tecnología requiere
una configuración, ofrece unas prestaciones y la información que proporciona debe ser proce-
sada de manera diferente. El contexto de uso juega un papel fundamental. El sistema puede
aprovecharse, por ejemplo, de un funcionamiento estático en un entorno con iluminación
controlada o debe poder hacer frente a su manejo en exterior y en movimiento. El tipo
y vocabulario de gestos, el entorno de funcionamiento, la sensorización y su plataforma
para capturarlos están absolutamente imbricados para determinar las prestaciones que el
sistema ofrece en cuanto a resolución, latencia, rango de funcionamiento, libertad de movi-
miento del usuario, comodidad de uso, coste; en definitiva, el grado de usabilidad del sistema.
[Berman y Stern] realizan una análisis de la relación de los principales tipos de tecnologías
de sensores con la configuración de la plataforma y con las prestaciones del sistema HGR2 .
Según la configuración de la plataforma, y como recogen las Figuras 1.5 y 1.6, se dis-
tinguen dos tipos básicos de sistemas: aquéllos en los que la mano del usuario lleva sen-
sores o algún tipo de dispositivo que juega un papel relevante en el reconocimiento, y los
que no. En la bibliografía, este criterio de clasificación recibe nombres diferentes: encum-
bered/unencumbered (p.ej. [Berman y Stern] [Wachs et al.]), perceptual/non-perceptual (p.ej.
[Karam]), o contact/contact-less (p.ej.[Pisharady y Saerbeck]); todos responden, con dife-
rentes matices, a este criterio que atiende a la necesidad por parte del usuario de llevar
o manejar algo.
Los data gloves son la solución más representativa de la primera configuración. Desarro-
llados y popularizados para mejorar la interacción en aplicaciones de Realidad Virtual, los
guantes sensorizados son plataformas multisensoriales con acelerómetros, giróscopos y sen-
sores de flexión —electromecánicos o también basados en luz, construidos con fibra óptica—
empleados para conocer la configuración de la mano. A menudo incluyen también actuadores
para generar fuerza, vibración o movimiento con el fin de recrear la sensación, ficticia, de tacto
al interactuar con objetos virtuales. [Premaratne, capítulo 2] recoge los principales hitos en
la evolución de los guantes sensorizados desde sus primeros modelos hasta la fecha.
2
[Berman y Stern] —así como algunas otras revisiones— considera las pantallas táctiles como dispositivos
de interfaz HGR e incluye por ello en su taxonomía según el principio de funcionamiento del sensor la categoría
eléctricos.
10
1.3. Reconocimiento de gestos de la mano basado en visión por computador
11
1.3. Reconocimiento de gestos de la mano basado en visión por computador
es replicar en las computadoras nuestra habilidad para interpretar lo que vemos. Pretender
hacer las máquinas más inteligentes dotándalas de la capacidad de percibir y reconocer su
entorno convierte a la Visión por Computador en un pilar de la Inteligencia Artificial.
HCI es una de las áreas de investigación en las que la Visión por Computador despierta
gran interés. El reconocimiento de gestos basado en visión tiene el potencial para ser una
interfaz flexible, eficiente e intuitiva entre el ser humano y una computadora. El empleo de
cámaras y Visión por Computador libera al usuario de dispositivos, simplifica, si no anula, el
entrenamiento, y reduce las limitaciones de uso; elimina barreras al mismo tiempo que reduce
el coste. Con un sistema de visión es posible, además, incorporar técnicas de reconocimiento
del movimiento del cuerpo y de análisis de la postura corporal ([Gavrila, Moeslund et al.,
Poppe, Weinland et al., Aggarwal y Ryoo]) y se abre el camino hacia una interfaz integral
capaz de identificar caras e interpretar expresiones faciales, reconocer el iris o leer los labios.
Por todo ello, su empleo para construir sistemas HGR no invasivos es la principal línea de
investigación ([Karam]) desde hace unos años en el campo de reconocimiento de gestos de la
mano, iniciado por los trabajos pioneros de [Rehg y Kanade] con su plataforma DigitEyes y
[Freeman y Weissman] con su sistema, patentado por los autores en 1997, basado en visión
para ajustar el volumen y cambiar el canal de una televisión. De manera genérica se pretende,
con los sistemas basados en visión, interfaces con las computadoras tan naturales como lo
es la comunicación gestual entre personas. La Figura 1.7 muestra la configuración estándar
elemental. Una o varias cámaras captan al usuario en una escena. Las imágenes son enviadas
a un sistema basado en microprocesador que implementa algoritmos de procesamiento desti-
nados a detectar y reconocer los gestos de la mano.
Cámara
Sistema µP
Respuesta
12
1.4. Objetivos de la tesis
13
1.4. Objetivos de la tesis
Nuestra aplicación de técnicas de visión a una secuencia de vídeo para reconocer e inter-
pretar gestos de un usuario en tiempo real debe atender a los siguientes requisitos y objetivos:
La metodología de diseño de los algoritmos debe favorecer que éstos ofrezcan la modu-
laridad y escalabilidad necesaria para posibilitar la actualización del vocabulario de
gestos y la adaptación del funcionamiento del sistema a diversas aplicaciones.
El sistema debe ser versátil e integrable. No se pretende en ningún caso una solución
cerrada y excluyente, sino que nuestra contribución debe poder ser utilizada como un
módulo que amplíe funcionalidad o mejore las prestaciones no sólo de cualquier propues-
ta de reconocimiento de gestos basada en visión, sino de manera genérica de cualquier
tarea de Visión por Computador en la que alguno de los algoritmos desarrollados pueda
ser de interés.
Marco de trabajo
Esta tesis doctoral se realiza en el seno del Grupo de Investigación Diseño Electrónico y Téc-
nicas de Tratamiento de Señal de la Universidad Politécnica de Cartagena. Creado en enero
de 2001, el grupo cuenta en la actualidad con 14 miembros, 12 de ellos doctores, formados
en disciplinas como la Electrónica, Ciencias de la Computación, Física o Neurociencia, y
mayoritariamente vinculados al Departamento de Electrónica, Tecnología de Computadoras
y Proyectos, y a la Escuela Técnica Superior de Ingeniería de Telecomunicación. Entre las
líneas de trabajo se encuentran la bioingeniería, los sistemas electrónicos para aplicaciones
de salud y de integración de la diversidad funcional, y la interacción de las personas con las
computadoras. En 2010, el grupo fue galardonado con el premio Isaac Peral como mejor grupo
14
1.4. Objetivos de la tesis
15
2
Este capítulo revisa las principales técnicas de visión para el reconocimiento de los gestos de
la mano y presenta las soluciones adoptadas para definir nuestro propuesta. Para afrontar la
complejidad de la variedad de gestos, la variedad de realizaciones de un mismo gesto incluso
cuando es realizado por una misma persona, y las variaciones de la apariencia de la mano, la
Visión por Computador ofrece un amplio abanico de aproximaciones y un enorme número de
técnicas. El tipo y números de sensores, la representación bi- o tridimensional del gesto, los
parámetros que lo modelan, cómo se gestiona la dinámica del gesto, la velocidad y la latencia,
los requisitos al usuario, la estructura del entorno; son numerosas las variables que definen el
sistema. Por ello, no se pretende en los siguientes apartados ser exhaustivo en la revisión de
la vasta literatura en el campo de reconocimiento de objetos ni es posible citar cada trabajo
y cada sistema propuesto en el ámbito del reconocimiento de los gestos de la mano basado en
visión. En su lugar, creemos de mayor utilidad y claridad referenciar aquéllos que, tras una
profunda revisión bibliográfica, hemos considerado especialmente relevantes.
16
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
con esta notación matemática, el proceso se puede expresar como H = THG G y V = TVH H,
o también directamente como V = TVG G, siendo TVG la transformación que describe cómo
se genera la información visual a partir del concepto mental del gesto. El propósito de un
sistema de reconocimiento de gestos es, en definitiva, inferir Ĝ a partir de V , y para ello es
necesario modelizar estas transformaciones.
G H V
17
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Palma de la mano
Características SIFT HOG
Falanges de Haar
Articulaciones
Shape Context Características
geométricas silueta
aparece en la imagen. Sin embargo, manejar estos complicados modelos matemáticos implica
una carga computacional difícilmente compatible con el funcionamiento en tiempo real que un
interfaz de usuario debe ofrecer para ser satisfactorio. Se tiende, por tanto, a emplear modelos
más sencillos, construidos con formas más simples (cilindros, esferas, etc.) y no texturizados.
La Figura 2.3 muestra un ejemplo de cada tipo.
Por su parte, los métodos que emplean modelos basados en la apariencia pretenden
detectar e identificar gestos utilizando directamente la información visual de las imágenes.
No utilizan un modelo explícito de la mano sino unos descriptores, determinados a partir del
análisis previo de imágenes de entrenamiento, que permiten identificar un gesto y diferenciarlo
de otros. El modelo de cada gesto está formado por el conjunto de valores de estos descriptores
(ver Figura 2.2). Algunos de ellos pueden tener cierto significado visual en las imágenes, otros
pueden ser más abstractos y consistir en un conjunto de números con ciertas propiedades.
Independientemente del tipo de modelo adoptado, la etapa de detección de la Figura 1.8
implica, de manera génerica, las tres tareas indicadas en la Figura 2.4: extracción de carac-
terísticas, estimación de los parámetros del modelo y clasificación. Se denomina extracción de
Las técnicas correspondientes a modelos basados en la apariencia y los acrónimos indicados en ellas son
1
18
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
características al proceso por el cual se obtiene de las imágenes información relevante para el
reconocimiento. Con esta información se realiza una estimación de los valores en la imagen
de los parámetros del modelo espacial, que son finalmente utilizados por algún tipo de clasi-
ficador para identificar, contrastando con la base de datos de gestos, el estado gestual en la
imagen.
Detección
Biblioteca
Modelos de gestos
19
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
diferentes. Las técnicas de extracción pretenden encontrar características de los objetos que
sean lo menos sensibles posible, idealmente invariantes, a cambios de su apariencia en las
imágenes. Son propiedades invariantes básicas la posición del objeto en la imagen, lo que se
denomina invarianza a la posición o invarianza a la traslación, que implica que el valor de
las características que describen el objeto no está sujeto a la posición en la que éste aparece
en una imagen; la invarianza a la orientación, que es de aplicación a la rotación del objeto
en la imagen; la invarianza al tamaño o invarianza a la escala, por la cual los valores de las
características son independientes del tamaño del objeto o del tamaño con el que aparece en
la imagen; y la invarianza a la iluminación, de manera que el reconocimiento sea robusto a
cambios en las condiciones de luz de la escena.
La elección de las características es esencial en cualquier sistema de reconocimiento de
objetos. Siendo éste uno de los grandes desafíos actuales de la Visión por Computador,
la variedad de descriptores y técnicas propuestos es amplísima (p.ej. [González y Woods,
Szeliski, Nixon y Aguado b]). Es habitual (p.ej. [Jain et al. c]) distinguir tres tipos de carac-
terísticas: globales, aquéllas que describen la imagen completa o una región de ella tales como
el área, el perímetro, los descriptores de Fourier o los momentos; locales, que describen un
punto o una pequeña área alrededor de él, como las esquinas, la curvatura o las características
SIFT; y las relacionales, que describen relaciones entre puntos o regiones de la imagen y por
tanto sólo tienen significado en función de otras, como por ejemplo la distancia entre dos
puntos de la imagen o una determinada relación de tamaño entre regiones.
La bondad del sistema HGR reside, en primer lugar y de manera fundamental, en la
capacidad de las características para identificar de manera inequívoca la configuración de
la mano independientemente de las variaciones de su apariencia, y por ello muchos de esos
descriptores y técnicas han sido evaluadas con tal propósito y recogidos en numerosas revi-
siones (p.ej. [Kisačanin et al., Erol et al., Wachs et al., Premaratne, Pisharady y Saerbeck]).
Este apartado está dedicado a presentar aquéllas que, tras el estudio de la bibliografía en
reconocimiento de gestos de la mano, se pueden considerar representativas.
Los valores de intensidad de los píxeles de la imagen son la información de la que parten
las técnicas de extracción de características. Una propuesta inmediata es utilizar un área de
m × n píxeles que contenga el objeto directamente como su descriptor y buscarlo en una
imagen utilizando template matching o redes neuronales. Desafortunadamente, ésta es una
solución válida únicamente en aplicaciones extraordinariamente particulares, y es necesario
profundizar en la complejidad de las técnicas buscando obtener información relevante a partir
de los valores de los píxeles.
Con la idea de que el aspecto de los objetos en una imagen puede ser descrito a través de las
diferencias de intensidades de píxeles vecinos, el empleo de un histograma de orientación local
es una técnica habitual en el proceso de extracción de características. La información de la
orientación ofrece, frente al valor de intensidad, menor sensibilidad a cambios de iluminación;
por su parte, el histograma proporciona invarianza a la translación. De manera genérica,
las técnicas que utilizan el histograma para representar características de la apariencia o de
la forma se denominan basadas en la distribución. [Freeman y Roth] calculan el histograma
de orientación de imágenes mostrando diferentes configuraciones de la mano y lo utilizan
como vector de características en un sistema de reconocimiento de gestos. Sin embargo, de
acuerdo con las conclusiones de los autores, su empleo directo no discrimina gestos de manera
satisfactoria, no es robusto a cambios de orientación y necesita un fondo de la imagen muy
controlado.
20
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
El Patrón Binario Local (Local Binary Pattern, LBP), propuesto por [Ojala et al.] como
un caso particular de la Unidad de Textura definida por [Wang y He], y sus variantes son
descriptores utilizados para clasificación de texturas ([Brahnam et al.]). El descriptor LBP
se calcula sobre una nueva imagen transformada de la original. Para cada píxel de la imagen
original se compara su valor con el de un conjunto de píxeles situados en una vecindad de radio
predefinido. El valor de este píxel en la imagen transformada depende de si su valor es mayor
o menor que el de estos vecinos y de cuál, ya que el peso en el nuevo valor del resultado
de la comparación depende de la posición del vecino en el orden en el que se realizan las
comparaciones. El descriptor LBP es el histograma de esta imagen transformada.
Las características de Haar (Haar-like features), derivadas de la Transformada de Haar,
son descriptores de imagen ampliamente utilizados en reconocimiento de objetos. Una carac-
terística se calcula como la diferencia de la suma de intensidades de los píxeles situados en
diferentes regiones de un área rectangular, centrada en un píxel de la imagen. Aplicando
sobre cada uno de los píxeles esta forma rectangular, que a su vez y en sucesivas iteraciones
presenta diferente tamaño, orientación y distribución de regiones, se obtiene un conjunto de
características de Haar. Su uso fue inicialmente propuesto por [Viola y Jones] para detección
de caras y rápidamente se popularizó como el algoritmo Viola-Jones, generalizándose para
reconocimiento de objetos.
La Transformación a Características Invariantes a Escala (Scale-Invariant Feature Trans-
form, SIFT), fue propuesta y patentada por [Lowe b, Lowe a] para localizar y describir carac-
terísticas locales que permitan reconocer un objeto con independencia de su posición, orien-
tación y escala en la imagen, replicando, según los autores, un proceso similar al que realizan
las neuronas en la zona inferior del lóbulo temporal del cortex. El algoritmo SIFT aplica
filtros gaussianos de diferente escala —determinada por σ, la desviación típica en la fun-
ción gaussiana— a una pirámide de imágenes mediante formada sucesivas reducciones de
su tamaño a partir de la imagen original. Sobre los puntos de interés, que son aquéllos que
presentan mínimos o máximos locales en las imágenes resultantes de las diferencias de gaus-
sianas (y satisfacen una serie de condiciones adicionales que pretenden asegurar la robustez),
se sitúa una ventana que a su vez se subdivide en celdas en las que se calcula el Histograma
de Orientaciones del Gradiente para estimar la orientación dominante. Cada punto de interés
queda finalmente descrito por el conjunto de histogramas normalizado de las celdas que
componen la ventana centrada en el punto de interés, y el objeto queda representado por
los descriptores de sus puntos de interés. SIFT es también robusto frentes a cambios de ilu-
minación y variaciones en el punto de vista. Su popularidad ha dado lugar a una serie de
variaciones. Entre ellas destaca PCA-SIFT, propuesto por [Ke y Sukthankar], que emplea el
Análisis de las Componentes Principales (Principal Component Analysis, PCA) para reducir
el tamaño del descriptor de los puntos de interés. El Histograma de Localización y Orientación
del Gradiente (Gradient Location-Orientation Histogram, GLOH) es una extensión de SIFT
diseñada por [Mikolajczyk y Schmid] para mejorar su robustez y capacidad de diferenciación.
Con un esquema similiar al de SIFT, [Bay et al.] proponen el detector y descriptor SURF
(Speed-Up Robust Features). Persiguiendo reducir la complejidad y, como el propio nombre
indica, acelerar el cálculo, para el proceso de detección de puntos de interés sustituyen la
Diferencia de Gaussianas por el determinante de una aproximación a la matriz Hessiana
que permite el uso de la Imagen Integral. Las sucesivas reducciones de la imagen son a su
vez reemplazadas por las equivalentes ampliaciones del tamaño del filtro. Localizados los
puntos de interés, la estimación de la orientación y el cálculo de los descriptores son también
simplificados, en este caso mediante el empleo de filtros de Haar, que permiten una reducción
considerable del coste computacional utilizando, de nuevo, la Imagen Integral. Esta Integral
21
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Image es una transformación de la imagen original propuesta por [Viola y Jones] que da lugar
a una nueva imagen del mismo tamaño en la que cada píxel tiene un valor que corresponde
a la suma de todos los píxeles situados a la izquierda y arriba en la imagen original. Con ella
se agiliza considerablemente la suma de intensidades y por ello resulta de gran utilidad en
cualquier descriptor que acumule valores en zonas rectangulares de la imagen.
La técnica del Histograma de Orientaciones del Gradiente (Histogram of Oriented Gradi-
ents, HOG) también ha sido empleada para generar directamente una representación global
de la imagen a partir de la información local del gradiente. Partiendo del gradiente de cada
píxel, el HOG se determina dividiendo la imagen en celdas y calculando en cada una de ellas
un histograma que acumula las magnitudes de los gradientes cuya orientación se encuentre
en un rango de valores determinado. Posteriormente, con el propósito de reducir la influencia
de los cambios de iluminación, las celdas se agrupan en bloques para la normalización de los
histogramas. El descriptor de la imagen está formado por el conjunto de los histogramas de
celdas normalizados. Este método, inicialmente propuesto para la detección de peatones en
imágenes estáticas por [Dalal y Triggs], ha sido desde entonces ampliamente utilizado para
reconocer todo tipo de objetos, especialmente partes del cuerpo humano y en particular la
mano. [Wang et al.] integran HOG con el descriptor de textura LBP para mejorar los resul-
tados por separado de ambos en el reconocimiento de personas.
Frente a estas características de bajo nivel, la forma del objeto proporciona características
de más alto nivel. Intentando replicar la habilidad humana para reconocer objetos simple-
mente por su forma, perfeccionar las técnicas para identificarla en una escena y describirla es
una importante línea de investigación en el campo de reconocimiento de objetos. En parti-
cular, la forma de la mano, de gran interés desde hace tiempo para la identificación de personas
en aplicaciones de tecnología biométrica, se puede considerar por sí misma una caracterís-
tica suficientemente descriptiva en muchas configuraciones habituales de gestos y por ello es
especialmente relevante en sistemas HGR.
22
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Las técnicas basadas en el contorno pretenden describir la forma del objeto a partir
de un conjunto de puntos extraídos de las imágenes, identificados en una etapa previa de
procesamiento como bordes. El empleo de información derivada del contorno presenta ventajas
frente a la extraída de la textura, como mayor invarianza a condiciones de iluminación o al
color del objeto.
Probablemente la técnica más utilizada en las últimas décadas para localizar formas en
imágenes es la Transformada de Hough, propuesta inicialmente por [Hough] y posterior-
mente generalizada para la detección de formas arbitrarias en Visión por Computador por
[Ballard, Dana H]. Su idea básica es intercambiar los roles de variables y parámetros en la
descripción paramétrica de un modelo (una recta es el ejemplo más elemental), obteniendo
con ello una representación en el espacio de parámetros tal que todos los puntos en la imagen
que se ajustan al modelo corresponden al mismo y único punto en el espacio de parámetros.
La detección y el estudio de las propiedades de los picos en este espacio de parámetros permite
reconocer formas.
Los Descriptores de Fourier son una representación clásica de la forma de un objeto en
el dominio de la frecuencia. Dado un conjunto de puntos del contorno, éstos pueden ser
ordenados como una secuencia unidimensional de valores complejos en los que la parte real
es la coordenada x de cada punto y la parte imaginaria la coordenada y. Los Descriptores
de Fourier son los coeficientes de la Transformada Discreta de Fourier de esa secuencia.
A partir de este planteamiento, varias modificaciones y expansiones han sido propuestas
([Nixon y Aguado b]).
[Belongie et al.] consideran que la forma de un objeto puede quedar descrita mediante
un conjunto de puntos de su contorno sin necesidad de definir éste de manera explícita y
proponen para ello lo que denominan Shape Context. Obtenido un conjunto de puntos del
contorno mediante un algoritmo de detección de bordes, que no requieren satisfacer ninguna
característica adicional y que pueden ser del contorno exterior o de un posible contorno in-
terior, para cada uno de ellos definen un descriptor Shape Context. Este descriptor contiene
la configuración de la forma del objeto desde la perspectiva del punto en cuestión, repre-
sentando en forma de histograma bidimensional la información de distancia y ángulo de los
vectores que unen el punto con todos los demás puntos del contorno considerados. La forma
queda definida por el conjunto de descriptores Shape Context de los puntos del contorno, que
pueden ser utilizados para identificar objetos en una imagen evaluando su grado de similitud
con los descriptores que se calculen para los puntos localizados en la imagen. Posteriormente,
para proporcionar invarianza a la rotación, [Mori et al. a] proponen el descriptor General-
ized Shape Context, en el que el ángulo del vector que conecta el punto con los restantes del
contorno está referido a un vector unitario tangente al borde en el punto.
Las técnicas que ofrecen flexibilidad para la detección del contorno, denominadas modelos
deformables, son especialmente interesante para modelar la forma de objetos articulados,
como es el caso del cuerpo, el brazo y en particular la mano. Entre ellas, es muy popular el
empleo de Active Contour Models o Snakes. Un modelo de contorno activo, propuesto por
[Kass et al.], consiste en una curva spline sometida a fuerzas que la deforman para ajustarla
a una forma. Las fuerzas son de tres tipos: de la imagen, que la atraen hacia características
relevantes como bordes o líneas; internas, para mantener la continuidad y suavidad de la
curva; y externas, que buscan la configuración de la curva que alcance el mínimo de energía
del conjunto de estas fuerzas. Por cómo se produce la evolución de la forma de la curva, estos
modelos reciben el nombre de Snakes.
23
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Las Snakes son modelos deformables absolutamente libres en los que el contorno queda
definido por la acción de las fuerzas sobre la curva sin contemplar cómo es la estructura
global de la forma que quieren representar. Para la búsqueda de objetos de una categoría, una
aproximación alternativa es tomar en consideración información estadística sobre la forma de
los objetos de interés y utilizarla para que los modelos sólo se puedan deformar de manera tal
que mantengan cierta consistencia con los que forman parte de una base de datos construida
previamente. Es el caso de los Active Shape Models propuestos por [Cootes et al. b]. Estos
modelos de forma activa están formados por un conjunto de puntos, no sólo del contorno
sino también internos o incluso externos como el centro de curvatura de una parte cóncava
del contorno, y por un Modelo de Distribución del Punto para cada uno de ellos, obtenido
del análisis estadístico de las posiciones de los puntos en los objetos de la base de datos. Los
puntos se ajustan progresivamente a la forma del objeto evaluando de manera iterativa un
área alrededor de cada punto. Una variación propuesta por los propios autores son los Active
Appearance Models ([Cootes et al. a]), en los que el ajuste no se realiza de manera local para
cada punto sino a nivel global.
En esta misma línea de contornos ajustables, las Deformable Templates propuestas por
[Jain et al. a] integran ideas de Snakes y Active Shape Models. Una plantilla deformable
consiste en un conjunto de puntos del contorno, no necesariamente cerrado, y en un modelo
probabilístico de su posible deformación. El conjunto de puntos forman una plantilla 2D
representada como una imagen en blanco y negro de 8 bits que define la forma prototipo
del objeto, solamente una de las muchas posibles pero la más representativa. El modelo de
deformación recoge los posibles cambios que la plantilla puede sufrir, tanto en cada punto
como de forma global, para representar una variedad de formas del objeto. La combinación
de ambos permite a la plantilla deformarse para ajustarse a las características extraídas de
la imagen asegurando al mismo tiempo la coherencia con la base de datos.
Por su parte, la silueta es una solución intuitiva para reconocer la presencia de un objeto
en una imagen y por ello los descriptores derivados de ella son ampliamente utilizados. Como
muestra la Figura 2.5, en el contexto de procesamiento de imagen la silueta de un objeto es una
imagen binaria, u ocasionalmente en escala de grises, en la que el objeto aparece separado del
resto de la imagen. De ella se pueden obtener descriptores y construir un modelo definido por
propiedades geométricas como su área, su perímetro, la posición del centroide, las dimensiones
de su rectángulo envolvente (bounding box), su orientación o su excentricidad. A su vez, estos
descriptores pueden derivarse bien de la silueta del objeto o bien de las siluetas de las regiones
—blobs— por las que éste pudiera estar formado.
Una de las principales aproximaciones históricas para describir cuantitativamente la forma
a partir de la silueta son los Momentos. Derivados de la Mecánica y la Estadística, su empleo
como herramienta de análisis en imágenes fue inicialmente propuesto por [Hu]. Los Invariantes
de Hu (Hu’s Moment Invariants) son un conjunto de siete valores calculados a partir de
los Momentos Centrales de segundo y tercer orden. Invariantes al tamaño, la posición y la
orientación de la región, han sido ampliamente utilizados en reconocimiento de objetos. Sin
embargo, evaluados por [Thippur et al.] para el reconocimiento de la postura de la mano, son
la peor solución comparados con HOG y Shape Context. Los Momentos de Zernike son otra
gran alternativa en esta aproximación. Propuestos por [Teague] a partir de los polinomios de
Zernike, forman un conjunto ortogonal y por ello permiten optimizar el tamaño del conjunto
de valores necesarios para describir con mayor precisión cualquier forma. [Prokop y Reeves]
realizaron una completa revisión de estos y otros Momentos aplicados al reconocimiento de
objetos.
24
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
2.1.1.2. Segmentación
Cuando un sistema de visión capta una escena en un entorno real, las imágenes contienen
información de interés para la aplicación, sea cual sea ésta, y también información no deseada.
En aplicaciones de reconocimiento de objetos, la información de interés son los objetos que se
pretende encontrar; la información no deseada, todo lo demás. El problema de reconocimiento
de objetos se puede dividir por tanto en dos etapas: en primer lugar, encontrar posibles objetos
en la imagen; después, identificarlos. Las técnicas de extracción de características buscan en
la imagen atributos que sirvan para describir y reconocer los objetos. Esta complicada tarea
puede ser aliviada y mejorada si se combina con información sobre cuáles son las regiones de
la imagen que puedan resultar de interés. Los métodos basados en la silueta, con el objeto
separado del resto de la imagen como en la representación binaria de la Figura 2.5, están
directamente basados en esa información. Pero su utilidad no es exclusiva de ellos: identificar
en la imagen las áreas de píxeles que puedan corresponder a un mismo objeto contribuye a
mejorar los resultados con cualquier técnica de extracción de características.
A la tarea de decidir qué píxeles de la imagen constituyen un objeto se la denomina
segmentación, y juega un papel fundamental en la Visión por Computador. La segmentación
de imágenes es el proceso de agrupar en regiones —asignar una etiqueta— a aquellos píxeles
de la imagen que presenten determinadas características comunes. Su objetivo es producir una
representación de la imagen que realce o genere información de interés para una aplicación y
anule información inútil. El resultado es una imagen formada por regiones dentro de las cuales
los píxeles son, según un determinado criterio, homogéneos, y a la vez son diferentes de los de
otras regiones. La segmentación es habitualmente la primera etapa de cualquier algoritmo de
procesamiento de imagen, precediendo a la extracción de características —considerándose por
ello como parte del preprocesamiento—, y en consecuencia su influencia en el resto del proceso
es vital. Sin una segmentación adecuada, un único objeto puede ser dividido en numerosas
regiones dificultando su reconocimiento —sobre-segmentado—, o puede ser considerado como
parte de otros con los que queda agrupado en una misma región —sub-segmentado—.
En la etapa de segmentación se establece la frontera entre el procesamiento de imagen
de bajo nivel y el análisis de las imágenes ([Jähne]). Intrínsecamente relacionada con el reco-
nocimiento de objetos, segmentar de la manera adecuada una imagen es otro de los grandes
desafíos de la Visión por Computador. Su importancia y su complejidad explican que también
en este caso sean muy numerosas las técnicas propuestas y evaluadas (ver p.ej. [Ngan y Li]).
Estas técnicas pueden trabajar sobre diferentes fuentes de información: directamente conte-
nida en las imágenes, como la intensidad y el color; o derivada de ellas, como la profundidad
y el movimiento. Cada una de ellas puede ser más o menos relevante en el contexto de una
determinada aplicación. A menudo, la complejidad de la tarea de segmentación requiere, para
conseguir resultados aceptables, la combinación de varias técnicas. Sin la pretensión de rea-
25
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
lizar una revisión detallada y un análisis comparativo que quedan más allá del ámbito de
esta tesis, se resumen a continuación las principales soluciones de segmentación utilizadas en
implementaciones de sistemas HGR.
Figura 2.6: Guante de colores empleado por [Wang y Popović] para la detección de la mano
utilizando segmentación basada en el color
26
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Por otra parte, aún desde el punto de vista del color, el reconocimiento del objeto mano
presenta la singularidad de que tiene uno característico: el color de la piel. Inicialmente
desarrollada para la detección de caras en aplicaciones de reconocimiento de personas o de
interpretación de gestos faciales, donde es enormemente popular, la segmentación basada en
el color de la piel se puede emplear como herramienta de preprocesamiento en la localización
de partes —sin ropa— del cuerpo humano y en el análisis de su actividad: detectadas en la
imagen áreas del color de la piel, las técnicas de extracción de características pueden centrarse
en estas regiones candidatas y descartar el resto de la imagen (Figura 2.7b).
Figura 2.7: Segmentación de la mano basada en el color de la piel (b) y en la profundidad (c)
27
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
28
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Biblioteca
Modelos de Gestos
Una vez construidos los modelos, las características son empleadas para detectar la pre-
sencia de gestos en la imagen. Es la fase de reconocimiento propiamente dicha, en la que
la información visual obtenida de la imagen se compara con la de los modelos para decidir
si aparece alguno y cuál. Naturalmente, la herramienta que lleva a cabo esta toma de deci-
siones sobre las imágenes de entrada es la misma que agrupa los vectores de las imágenes de
entrenamiento en regiones.
De manera general, el problema de clasificación presenta mucha menor dependencia de la
aplicación que el problema de extracción de características. No obstante, las prestaciones de
un clasificador pueden variar con diferentes características y a su vez diferentes clasificadores
pueden ofrecer diferentes prestaciones con las mismas características. Por ello, y como sucede
en el resto de tareas asociadas al reconocimiento de objetos ya mencionadas, son muy nume-
rosas las técnicas evaluadas y las soluciones propuestas. Centrándonos en el reconocimiento
de gestos de la mano que motiva esta tesis, las aproximaciones principales al problema de
clasificación se pueden dividir en dos categorías: basadas en reglas y basadas en aprendizaje
automático.
Las primeras infieren, para cada postura de la mano contemplada, una serie de reglas
comunes a todos los vectores de descriptores de aquellas imágenes de entrenamiento que
corresponden a dicho postura. Establecidas estas reglas, la clasificación consiste en comprobar
si el vector obtenido de la imagen de entrada cumple o no las propias de cada una de las
posturas.
29
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
Por su parte, las técnicas de Machine Learning o Aprendizaje Automático buscan desa-
rrollar algoritmos que permitan a las computadoras aprender de los datos y con ese conoci-
miento hacer predicciones. En particular, en el campo de reconocimiento en Visión por
Computador se usan para conectar el espacio de características con la toma de decisiones, bus-
cando establecer de manera automática a partir de las imágenes de entrenamiento la relación
entre los vectores de descriptores y el tipo de gesto. Support Vector Machines (SVM, Máquinas
de Vectores de Soporte), k-Nearest Neighbors (KNN, k-vecinos —vectores de características
de las imágenes de entrenamiento— más cercanos) y su particularización para k = 1 Nearest
Neighbor (el vecino más cercano), AdaBoost (Adaptive Boosting), clasificadores Naïve Bayes
y Redes Neuronales Artificiales son las principales soluciones al problema de clasificación en
sistemas HGR (ver p. ej., [Premaratne]).
30
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
31
2.1. Técnicas de visión para el reconocimiento de gestos de la mano
32
2.2. Propuesta de sistema
33
2.2. Propuesta de sistema
Extracción de
Utiliza parámetros derivados de la imagen
Características resultante de la segmentación y de la aplicación
y de template matching a la imagen segmentada
utilizando plantillas de las partes elementales
Estimación
que forman la mano.
de parámetros
34
2.2. Propuesta de sistema
35
2.2. Propuesta de sistema
La compra de Altera por Intel en 2015 y la posterior de Xilinx por AMD en 2022 evi-
dencian que la evolución de las prestaciones de los sistemas computacionales pasa actualmente
por plataformas híbridas que posibiliten acelerar la ejecución de algoritmos mediante su
implementación hardware al mismo tiempo que se da soporte a una alta integración con
procesadores de propósito general.
Por todo ello, se ha considerado que las FPGA son una plataforma adecuada para la
implementación de nuestro sistema. Empleando dispositivos y herramientas de Xilinx
R
, se ha
diseñado, implementado y validado un sistema digital que ejecuta las tareas de procesamiento
involucradas en el reconocimiento de los gestos, en el marco de una arquitectura híbrida
hardware/software basada en el microprocesador soft MicroBlaze. El criterio de particio-
nado ha sido la escala temporal de las tareas, en la que se distinguen dos niveles: nivel de
píxel y nivel de imagen. Para resoluciones y sensores de imagen típicos de sistemas embe-
bidos, los algoritmos que operan con los valores de los píxeles lo hacen en el orden de los
nanosegundos. Su dominio propio es el del hardware, donde es posible explotar el paralelismo
de las operaciones y la flexibilidad de la arquitectura de las FPGA para lograr procesamiento
en tiempo real, trabajando en el rango de decenas o incluso centenas de megahercios. En
nuestro sistema, es el caso de la segmentación según el color de la piel y del cálculo de las
convoluciones y de sus valores máximos.
En numerosas aplicaciones, la utilidad de la convolución bidimensional está limitada por
las dimensiones de la plantilla. Aunque conceptualmente el cálculo es sencillo, su coste compu-
tacional se incrementa exponencialmente con el tamaño, razón por lo cual, en la práctica, las
prestaciones temporales lo restrigen. Para solventar esta limitación, proponemos una arqui-
tectura que optimiza la implementación de la convolución 2D con plantillas de gran tamaño
en FPGA.
Extraídas de la imagen las características, cada una de ellas se reduce a un conjunto de
descriptores que se actualizan conforme a una tasa de frames por segundo, habitualmente en
el orden de las decenas de milisegundos. En función de la complejidad del algoritmo que opere
con ellas, una implementación software puede ser la opción más natural y flexible, siempre y
cuando su ejecución no constituya el cuello de botella de la aplicación. Es el caso en nuestro
sistema de las reglas para reconocer la postura y el modelo temporal, que son evaluados
mediante un programa que se ejecuta en MicroBlaze, un microprocesador soft diseñado por
Xilinx que se implementa sobre los recursos de propósito general y específicos de sus FPGA.
Atendiendo a consideraciones sobre la naturalidad de los Interfaces de Interacción Natural
(p.ej. [Norman]), se ha diseñado un módulo que da soporte a la generación de menús de
interacción. Con ella se pueden crear interfaces de usuario estándar que a través de texto
faciliten al usuario explorar la funcionalidad de la aplicación a la que se dedique el sistema
HGR, así como configurar parámetros propios de las tareas implicadas en el reconocimiento.
En relación con esto y en particular con la conveniencia de que el sistema proporcione al
usuario realimentación sobre el funcionamiento del propio reconocimiento, en el diseño de los
algoritmos se ha contemplado la posibilidad de mostrar información relevante de cada etapa.
Obviamente, todo el sistema está soportado por una plataforma de captura y generación
de vídeo, un frame grabber que alimenta los módulos que implementan los algoritmos con
un flujo de datos procedentes de una fuente de vídeo y que permite visualizar los diferentes
resultados de las etapas de procesamiento sobreimpuestos en la imagen de entrada.
36
2.3. Estructura del documento
37
PARTE I
38
3
1
Teniendo presente la clasificación según su color, mayoritariamente basada en la actualidad en la escala
Fitzpatrick según el fototipo, que sustituye al término raza propio de la antropología clásica y en desuso. Los
fototipos están asociados a la capacidad de la piel para asimilar radiación solar.
39
3.1. Espacios de color
Figura 3.1: Colección de fotografías del Proyecto Humanæ, cuyo propósito es reflejar la paleta
cromática del color de la piel
40
3.1. Espacios de color
Azul
Cian
Magenta
Blanco
B
Negro G
R Verde
Rojo
Amarillo
Figura 3.2: Representación del modelo del espacio de color RGB en forma de cubo
Sin embargo, RGB no es la mejor opción para manejar imágenes en color reales, es decir,
no generadas digitalmente. Por ejemplo, para modificar la intensidad de un color es necesario
acceder y modificar las tres componentes, mientras que un sistema que trabaje con un formato
de intensidad puede hacerlo más eficientemente. RGB tampoco es la solución más eficiente
para codificar información de color. De hecho, no es el formato habitual para la transmisión
de vídeo, que suele estar basada en luminancia y crominancias precisamente por su capacidad
para comprimir los datos con menor pérdida de información de color que RGB. Además, la
información en las tres componentes rojo, verde y azul está muy correlacionada, lo que conlleva
que pequeños cambios en la iluminación produzcan cambios importantes en los valores de las
tres componentes.
No obstante lo anterior, que RGB sea hoy en día el estándar de facto para el almacena-
miento y la gestión de la información de color sin duda ha contribuido a que haya sido utilizado
en soluciones al problema del reconocimiento de la piel (p.ej. [Peer et al., Gómez y Morales,
Jones y Rehg, Wark y Sridharan].
Con el fin de reducir la mencionada dependencia respecto de la iluminación, de RGB se
deriva el espacio de color RGB normalizado, en el que el valor de cada componente de color
de RGB se divide por la suma del valor de las tres, como muestra la ecuación 3.1:
R
Rn =
R+G+B
G
Gn = (3.1)
R+G+B
B
Bn =
R+G+B
Algunos trabajos (p.ej. [Soriano et al. b, Xiong et al., Wang y Yuan]) detectan que la
transformación a RGB normalizado acota el rango de valores posibles para el color de la
piel incluso para diferentes pigmentaciones y que reduce la influencia de la iluminación, por
lo que ha sido utilizado para construir clasificadores de diferente tipo.
41
3.1. Espacios de color
Verde Amarillo
Azul Magenta
B
S
H
0
Negro
Figura 3.3: Representación del modelo del espacio de color HSB (HSV) en forma de pirámide
de base hexagonal. Los colores complementarios están separados 180o en H en la
base de la pirámide invertida, con rojo en 0o .
42
3.1. Espacios de color
0 si max = min
G−B
60 × + 360 si max = R
∧ G<B
max − min
G−B
60 × +0 si max = R
H = ∧ G≥B
max − min
B−R
60 × + 120 si max = G
max − min
R−G
60 × + 240 si max = B
max − min
(3.2)
0 si max = 0
S = min
1−
si max 6= 0
max
V = max
El espacio de color HSL, también conocido como HSI, es bastante similar. Las compo-
nentes H y S representan igualmente la tonalidad y la saturación, mientras que la compo-
nente L (Lightness) corresponde a la luminosidad. La diferencia con el modelo HSV radica
en el cálculo de esta componente de brillo/luminosidad, que determina no sólo su propia
distribución y rango dinámico sino también los de la saturación. Como se puede apreciar en
la representación gráfica de la Figura 3.4, HSL es un modelo simétrico con respecto a lumi-
nosidad/oscuridad y con ello el color blanco ya no se encuentra en el centro de la base sino
en el vértice superior de la doble pirámide. Por tanto, a diferencia de HSV, es posible obtener
blanco incrementando el valor de la componente de la luminosidad independientemente de los
valores de tonalidad y saturación. Las ecuaciones (3.3) recogen las fórmulas para el cálculo
de S y L desde RGB; H se calcula de la misma forma que para HSV.
0 si max = min
max − min
si l ≤ 0,5
S = max + min (3.3)
max − min
si l > 0,5
2 − (max + min)
1
L = (max + min)
2
A la hora de elegir entre uno u otro, HSL es considerado más apropiado para tareas
de procesamiento de imagen tradicionales que trabajan sobre la componente de luminosi-
dad/intensidad, mientras que HSV es preferido para ajustar colores por medio de la tonalidad
y la saturación.
La capacidad de estos espacios para hacer más intuitiva la definición y la manipulación
de los colores ha motivado su empleo en aplicaciones de reconocimiento del color de la
piel con la esperanza de aproximarse a la facilidad con la que la realiza el ser humano
(p.ej. [Kjeldsen y Kender, Jordao et al., Kurata et al., Wang y Yuan, Hsieh et al., Chen y Qi,
García y Tziritas, Sigal et al.]).
43
3.1. Espacios de color
Blanco
Verde Amarillo
Cian Rojo
Azul Magenta
L
S
H
0
Negro
Figura 3.4: Representación del modelo del espacio de color HSL en forma de doble pirámide
de base hexagonal
Con estas ecuaciones, y considerando datos de 8 bits para las componentes RGB, los
valores de la componente Y se mantienen en el rango [0,255] pero los de las componentes U y
V pueden tomar valores positivos y negativos en los rangos [-111,18 111,18] y [-156,82 156,82],
respectivamente. Para extender el rango de valores a datos de 8 bits sin signo, los coeficientes
de transformación se pueden escalar teniendo en cuenta los anteriores valores máximos y
mínimos, y desplazarlos para asegurar valores no negativos. La expresión 3.5 muestra las
ecuaciones de transformación resultantes, que han sido las empleadas en esta tesis para el
desarrollo del modelo de color de la piel descrito más adelante.
0, 299 0, 587 0, 114 0
Y R
U = −0, 169 −0, 333 0, 502 · G + 128 (3.5)
V 0, 502 −0, 420 −0, 082 B 128
44
3.1. Espacios de color
De manera análoga a lo comentado para el espacio de color YUV, estos coeficientes pueden
ser escalados y el resultado de las multiplicaciones desplazado para optimizar la representación
del resultado con datos de 8 bits sin signo, dando lugar a la transformación de la expresión 3.7
que ha sido la utilizada para el desarrollo del modelo de color de la piel en este espacio de
color.
0, 299 0, 587 0, 114 0
Y R
I = 0, 502 −0, 232 −0, 270 · G + 128 (3.7)
Q 0, 204 −0, 502 0, 298 B 128
Sirviéndose de que el sistema visual tiene más resolución para el brillo que para el color,
sobre estos espacios se desarrollan formatos de codificación de vídeo en color (4:2:2, 4:1:1,
etc.) en los que se transmite más información de luminancia que de crominancia para cada
píxel. La optimización que conllevan estos formatos hace que sean los usados habitualmente
no sólo para la difusión de vídeo, sino también para la transmisión desde los dispositivos de
captura, lo que implica que estos espacios sean la representación original del color en muchos
sistemas de procesamiento.
En el área del reconocimiento del color de la piel existe la creencia generalizada de que la
variabilidad entre diferentes colores de la piel reside principalmente en la intensidad, mientras
que las crominancias mantienen valores mas acotados y menos variables. De acuerdo con esto,
el impacto de las variaciones del color de la piel y de los cambios de iluminación puede ser
minimizado dando mayor peso o incluso considerando de manera exclusiva las crominancias,
por lo que estos espacios de color han sido ampliamente utilizados en el diseño de clasi-
ficadores (p.ej. [Sobottka y Pitas, Chai y Ngan, He et al., Wong et al. a, García y Tziritas,
Habili et al., Soontranon et al., Zhu et al., Wu y Ai]).
45
3.1. Espacios de color
0,9 520
0,8 540
0,7
560
0,6
500
0,5 580
y
0,4 600
620
0,3
0,2
480
0,1
460
0
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8
x
46
3.2. Modelización del color de la piel
1 1
1 1
!
Rn −
arctan 3
+ si Gn − >0
2π 4 3
1
Gn −
3
1 3 1
1
!
=
Rn −
T arctan 3
+ si Gn − <0
2π Gn − 1
3
4 3
1
0 si Gn − = 0
3
(3.9)
v
u9 1
2
1
2 !
u
S = Rn − + Gn −
5 3 3
t
Por su parte, [de Dios y Garcia] proponen un espacio de color basado en luminancia y
crominancias en el que, a diferencia de YCb Cr en el que se utiliza la componente azul, una
de las crominancias se calcula como la resta del color verde con la luminancia. Este nuevo
espacio YCg Cr , cuyas ecuaciones de transformación desde RGB son las de la expresión (3.10),
es según los autores más apropiado para la segmentación de la piel.
Una solución intermedia entre recurrir a un espacio existente y la definición de uno nuevo
es la utilización de un espacio mixto, formado por componentes definidas en más de un espacio
de color. Ésta es la propuesta de [Gómez] que, tras el estudio de la complementariedad
de las componentes de 13 espacios de color diferentes, propone para el reconocimiento de
la piel el espacio mixto H-GY-Wr, siendo H la tonalidad de HSV, GY la diferencia de la
componente G de RGB con la luminancia Y de YCb Cr y W r una pseudo-componente derivada
por [Soriano et al. b] de RGB normalizado.
47
3.2. Modelización del color de la piel
Figura 3.6: Ejemplo de imagen utilizada en la construcción de un modelo del color de la piel
Según la manera de proceder con estos datos, se distinguen tres aproximaciones: defini-
ción explícita de la región de color piel, modelado paramétrico y modelado no-paramétrico.
La definición explícita de la región de color piel se basa en el hecho de que el color de la
piel humana, dentro de su variabilidad, se concentra en áreas concretas de un espacio de
color. Los métodos de modelado paramétrico, por su parte, representan la distribución de
la piel mediante valores estadísticos derivados de los datos de entrenamiento, como la media
o la covarianza. Finalmente, los métodos no-paramétricos no desarrollan un modelo explí-
cito del color de la piel, sino que estiman el modelo de la piel directamente de los datos de
entrenamiento.
48
3.2. Modelización del color de la piel
128
96
64
32
0
Cr
-32
-64
-96
-128
-128 -96 -64 -32 0 32 64 96 128
Cb
iluminación artificial
R > 220 ∧ G > 210 ∧ B > 170 ∧
R>B ∧ G>B ∧ (3.12)
|R − G| ≤ 15
También en RGB [Tomaz et al.] proponen, en lugar de establecer condiciones para re-
conocer la piel, unas condiciones para descartar colores que no pueden corresponder a ella:
Estas restricciones en RGB actúan de filtro previo a una clasificación en función de los
valores de las componentes saturación S y tinta T en el espacio de color TSL, según la cual
un color es considerado piel si, además de cumplir las condiciones del filtrado inicial, satisface
T ∈ (0,996, 1,010) y S ∈ (−2, 2).
En el espacio HSV, [Jordao et al.] consideran piel los colores cuya componente de color
H está en el rango (−14, 14). [Sobottka y Pitas] definen un rango diferente para H y añaden
restricciones también a la componente de saturación S, de manera tal que considera piel los
49
3.2. Modelización del color de la piel
colores cuyas componentes H y S se encuentren en los rangos [0, 50] y [0,23, 0,68], respecti-
vamente. [Hsieh et al.] utilizan HS completado con la componente I en el espacio HSI. En su
algoritmo, diseñado para caras orientales, se considera piel los colores que satisfagan:
La componente I, en este caso en el espacio YIQ, es utilizada como único criterio de clasifi-
cación en [He et al.], donde un color es considerado piel si I ∈ (20, 100). Un rango muy similar
de I en YIQ es utilizado en [Zhu et al.] para completar la propuesta de [Sobottka y Pitas]
con las restricciones I ∈ [20, 90] y θ ∈ [150, 100], calculándose θ a partir de los valores U y V
del espacio YUV por medio de:
|V |
θ = tan−1 (3.15)
|U |
En esta línea de combinar definiciones explícitas en diferentes espacios de color,
[Wang y Yuan] definen restricciones que deben satisfacerse tanto en el subespacio Rn Gn de
RGB normalizado, con Gn ∈ [0,28, 0,363] y Rn ∈ [0,36, 0,465], como en HSV, con H ∈ [0, 50],
S ∈ [0,20, 0,68] y V ∈ [0,35, 1,0].
El espacio HSV es utilizado también en la propuesta de [García y Tziritas], en la que para
ser considerado piel un color debe cumplir:
S ≥ 10 ∧
V ≥ 40 ∧
S ≤ −H − 0,1V + 110 ∧ (3.16)
S ≤ 0,08(100 − V )H + 0,5V si H ≥ 0 ∧
S ≤ 0,5H + 35 si H < 0
Cr ≥ −2(Cb + 24) ∧
Cr ≥ −(Cb + 17) ∧
Cr ≥ −4(Cb + 32) ∧
Cr ≥ 2,5(Cb + θ1 ) ∧
Cr ≥ θ3 ∧
(3.17)
Cr ≥ 0,5(θ4 − Cb ) ∧
220 − Cb
Cr ≤ ∧
6
4
Cr ≤ (θ2 − Cb )
3
50
3.2. Modelización del color de la piel
256 − Y
si Y > 128 θ1 = −2 +
16
256 − Y
θ2 = 20 −
16
θ3 = 6
θ4 = −8
(3.18)
si Y ≤ 128 θ1 = 6
θ2 = 12
Y
θ3 = 2 +
32
Y
θ4 = −16 +
16
En ambos casos, se realiza previamente una homogeneización de las regiones de la imagen
para reducir el rango de colores con el propósito de mejorar la segmentación.
Una solución más sencilla, y al mismo tiempo ampliamente referenciada, en las crominan-
cias de YCb Cr es utilizada en [Chai y Ngan], donde se considera piel los valores comprendidos
en Cb ∈ [77, 127] y Cr ∈ [133, 173]. Más recientemente, [Premaratne et al.] proponen consi-
derar piel aquellos colores con crominancia Cb en el rango [100, 122] y crominancia Cr en
el rango [132, 150] si la fuente de luz es incandescente, o en los rangos Cb ∈ [108, 125] y
Cr ∈ [132, 151] si la luz es fluorescente.
En lugar de un único subespacio Cb Cr para el color de la piel, [Wong et al. a] definen
6 mapas de cromaticidad de piel diferentes en el plano Cb Cr en función del valor de la
componente de luminancia Y . Un mapa de cromaticidad de piel es el área que definen los
píxeles de color piel en el plano Cb Cr .
Un paso más allá en la combinación de definiciones explícitas en diferentes espacios de
color se presenta en [Gómez], donde, tras el análisis de las componentes de 13 espacios de
color diferentes, se propone un espacio mixto H-GY-Wr en el que se considera piel los colores
que satisfacen: H ∈ (−17,45, 26,67), GY < −5,92 y W r < 0,0271.
Con la intención de superar la limitación que la definición manual de los límites del cluster
de piel pueda imponer, [Gómez y Morales] utilizan técnicas de aprendizaje autónomo para
establecer restricciones en el espacio RGB, obteniendo las siguientes ecuaciones para definir
el color de la piel:
B
< 1,249 ∧
G
R+G+B
> 0,696 ∧
3R
(3.19)
1 B
− > 0,014 ∧
3 R+G+B
G
< 0,108
3(R + G + B)
51
3.2. Modelización del color de la piel
Modelado paramétrico
Los métodos paramétricos pretenden reconocer el color de la piel modelando su función de
densidad/distribución de probabilidad con una función paramétrica, típicamente una gaus-
siana como la mostrada en la Figura 3.8 que responde a la expresión:
1
P (x) = (3.21)
1 T Σ−1 (x−µ)
e− 2 (x−µ)
(2π) |Σ|
d 1
2 2
1 X n
Σ= (cj − µ)(cj − µ)T (3.23)
n − 1 j=1
y con n el número total de muestras de color de piel cj . Las dimensiones de x, µ y Σ vienen
dadas por d, que representa el número de componentes de color consideradas y que toma valor
3 cuando se utilizan las tres componentes que definen un color o valor 2 cuando únicamente
se utiliza un subespacio del espacio de color. Con esta técnica de modelado, un color es
considerado de la piel si el valor de su probabilidad P (x) obtenido con una expresión como
la de (3.21) es superior a un determinado umbral. Si de manera similar se construye también
el modelo de no-piel, la decisión puede venir dada por la relación entre las probabilidades
obtenidas de cada modelo.
Una extensión del modelado gaussiano es el empleo de varias de estas funciones, que son
combinadas con diferentes pesos para estimar la probabilidad de un color de pertenecer a la
piel. Tras esta idea se encuentra la dificultad de modelar la distribución del color de la piel con
una única función gaussiana y la capacidad que ofrece la combinación de ellas para describir
distribuciones de forma compleja. La estimación de la probabilidad viene dada ahora por:
N
1 T Σ−1 (x−µ )
P (x) = (3.24)
1
e− 2 (x−µi )
X
ωi i i
(2π) |Σi |
d 1
i=1 2 2
siendo nuevamente x el valor del color en el espacio de color correspondiente, estando definida
la gaussiana i-ésima por la media µi y la matriz de covarianza Σi y teniendo un peso ωi en
el valor de probabilidad total. No se ha fijado ninguna regla ni criterio que a priori permita
52
3.2. Modelización del color de la piel
3000
Número de píxeles
2000
1000
100
50
-100 0
-50
0 50 -50
100 V
150 -100
200
U
Figura 3.8: Distribución del color de la piel en UV del espacio CIE-LUV obtenida
por [Yang y Ahuja b]
Modelado no paramétrico
Los métodos no-paramétricos de modelado del color de la piel no construyen un modelo
explícito de la distribución de la piel. En lugar de eso, utilizan directamente los datos de
entrenamiento para evaluar la función de densidad de probabilidad de manera independiente
53
3.2. Modelización del color de la piel
54
3.2. Modelización del color de la piel
De (3.30) se deduce que, además del histograma de piel, es necesario calcular el histograma
de no-piel, es decir, contar cuantas veces cada una de las combinaciones posibles en el espacio
de color no corresponde a la piel, para disponer de la probabilidad de que se trate del color
c cuando se sabe que el color no pertenece a la piel. De manera análoga a P (c|piel), esta
probabilidad viene dada por:
no − piel[c]
P (c|¬piel) = (3.31)
T¬p
con no − piel[c] el valor del histograma de no-piel para el color c, y T¬ p la suma de todos los
valores del histograma de no-piel.
Al manejar dos histogramas en lugar de únicamente uno para la piel, conviene reescribir
la expresión en (3.27):
piel[c]
P (c|piel) = (3.32)
Tp
siendo ahora Tp la suma de todos los valores del histograma de piel.
El criterio mayoritariamente aceptado para clasificar un color determinado como piel es la
relación entre las probabilidades condicionadas, que debe alcanzar un determinado umbral:
P (piel|c)
>θ (3.33)
P (¬piel|c)
P (c|piel)
>θ (3.35)
P (c|¬piel)
con:
P (¬piel) 1 − P (piel)
θ=k× =k× (3.36)
P (piel) P (piel)
El valor de θ se fija por medio de curvas ROC, por lo que en última instancia el compor-
tamiento del clasificador es independiente de los valores de las probabilidades a priori P (piel)
y P (¬piel): cualquiera que sea su valor es posible encontrar un valor de k que dé el mismo
umbral θ. Por lo tanto, la expresión final para la clasificación queda:
P (c|piel)
piel si >Θ (3.37)
P (c|¬piel)
55
3.2. Modelización del color de la piel
56
3.2. Modelización del color de la piel
por lo que, con vistas a optimizar recursos de memoria, 64 podría ser la mejor opción. En
cualquier caso, el tamaño 32 propuesto por los trabajos anteriores resulta ser claramente peor
para estos autores.
En un trabajo posterior, empleando igualmente curvas ROC para evaluar los resultados y
con una base de datos también en el orden de las decenas de millones de muestras, [Xu y Zhu]
apuesta claramente por 32 como el tamaño más apropiado tras estudiar histogramas cons-
truidos en 14 espacios de color. Ésta es la línea del ya mencionado [Jones y Rehg], donde, si
bien la base de datos tiene aproximadamente menos de la mitad de muestras de color que
la de [Phung et al.], éstas corresponden a más del doble de imágenes y por tanto se puede
considerar también representativa.
Las redes neuronales artificiales han sido utilizadas con éxito para resolver problemas de
reconocimiento de patrones y de clasificación en numerosísimas aplicaciones de todo tipo. Su
capacidad para aprender complejas relaciones no lineales y para generalizar a partir de los
datos de entrenamiento ha animado a diferentes autores a aplicarlas al reconocimiento del
color de la piel. En las revisiones de [Phung et al.], [Kakumanu et al.] y [Vezhnevets et al.]
se recogen algunos ejemplos de soluciones basadas en perceptrones multicapa y en mapas
auto-organizativos.
Estudios comparativos
La gran variedad de soluciones propuestas en la literatura específica para la elección del
espacio de color y para la definición del modelo genera dudas sobre la existencia de una
solución óptima. Además, y desafortunadamente, no existe una base de datos utilizada como
referencia común para evaluar los resultados, por lo que las diferentes propuestas no son
directamente comparables. Esta circunstancia ha motivado la realización de varios estudios
comparativos.
Intentando evaluar de manera aislada el impacto de la elección del espacio de color en
el reconocimiento de la piel, [Shin et al.] estudian en 8 espacios de color la compacidad y
la separabilidad de los clusters de piel y no-piel, estimando la dispersión de los valores y la
intersección de los histogramas. Sus resultados indican que el mejor espacio de color es el RGB.
En un trabajo posterior, [Xu y Zhu] realizan una comparativa evaluando 14 espacios de color
3D y 14 subespacios de color de crominancia, añadiendo la entropía a las métricas propuestas
en [Shin et al.]. Los autores concluyen que no existe un espacio de color óptimo que sea el
mejor en todas las medidas, pero RGB y los que se derivan de él mediante transformaciones
lineales son los que ofrecen mejores resultados. Comprueban también que la clasificación
mejora significativamente al tener en cuenta la componente de iluminación.
El primer estudio detallado entre modelos de piel es el realizado por [Jones y Rehg],
donde la comparación de una tabla de búsqueda construida con los histograma de piel y
no-piel según la Teoría de Bayes con un modelo paramétrico de multiples gaussianas, cons-
truidos ambos en RGB, da como mejor opción la tabla de búsqueda. [Xu y Zhu] amplian la
comparación a cuatro tipos de modelos: mapa de probabilidad, gaussiano simple, gaussiano
mixto y un mapa auto-organizativo, obteniendo en general mejores resultados con el mapa
de probabilidad independientemente del espacio de color utilizado. [Phung et al.] comparan
nueve clasificadores diferentes: tres definiciones explícitas, un SPM bayesiano en RGB de
resolución 256 valores por color, modelos gaussianos de piel simples en Cb Cr y en YCb Cr ,
57
3.3. Propuesta de modelo del color de la piel
58
3.3. Propuesta de modelo del color de la piel
A partir de estas posibilidades, y dada la clasificación correcta de los píxeles de las imá-
genes realizada a priori —el ground-truth—, se definen cuatro tasas o porcentajes:
donde Npiel y N¬piel son respectivamente los números totales de píxeles etiquetados previa-
mente como Piel y No-Piel. Obviamente, SC + SF = 1, ya que el número total de píxeles Piel
corresponde a la suma de los identificados correctamente por el clasificador como Piel más
los identificados incorrectamente como No-Piel. Análogamente, el número de píxeles que son
No-Piel es la suma de los clasificados correctamente como tal más los considerados incorrecta-
mente como Piel, y NSC + NSF = 1. Por tanto, el comportamiento del clasificador queda
definido por el par (SC, NSF ), que sirve como indicador de su bondad o calidad. Un clasifi-
cador es tanto mejor cuanto mayores son SC y NSC, y en consecuencia menores SF y NSF .
El clasificador ideal es aquél que presenta SC = 1 y NSF = 0. Las diferentes posibilidades en
los resultados de la clasificación y sus correspondientes porcentajes se resumen en la matriz
de confusión o de contingencia de la Tabla 3.1, donde las filas representan las predicciones
—el resultado del clasificador— y las columnas el valor real de cada instancia.
Clase real
Piel No-Piel
Piel
(SC) (NSF )
59
3.3. Propuesta de modelo del color de la piel
facilidad la bondad de un clasificador y realizar comparaciones. Por ello, han sido, junto con
las propias tasas SC y NSF, la herramienta utilizada para analizar los resultados obtenidos
con las diferentes propuestas de clasificadores desarrolladas y evaluadas en el marco de esta
tesis. A modo de ejemplo, la Figura 3.9 es un gráfico ROC con cinco clasificadores C1−5 . En
él se puede comprobar que C4 es mejor que C5 , ya que para los mismos falsos positivos ofrece
más aciertos positivos, y que C3 es a su vez mejor que C4 porque mejora tanto sus aciertos
positivos como los falsos positivos. Por su parte, C2 presenta mejor tasa de falsos positivos
que C3 a expensas de menos aciertos positivos, lo que lo convierte en una opción más conser-
vadora. C1 no tiene falsos positivos ni falsos negativos, siendo, por tanto, el clasificador ideal.
1
C1
Tasa de aciertos positivos SC
0,8 C3
C4
0,6 C2
0,4
0,2 C5
0
0 0,2 0,4 0,6 0,8 1
60
3.3. Propuesta de modelo del color de la piel
Figura 3.10: Imágenes de ejemplo de la recopilación realizada para construir las bases de
datos de entrenamiento y de test
las imágenes ha sido utilizada para diseñar el modelo, formando lo que se ha denominado
Base de Datos de Entrenamiento; la otra mitad constituye la Base de Datos de Test, con la
que se han contrastado los resultados.
61
3.3. Propuesta de modelo del color de la piel
totipos de la escala Fitzpatrick, ya mencionada al comienzo del presente capítulo. Dado que
el reconocimiento del color de la piel en todos ellos queda fuera del alcance de esta tesis, han
sido excluidas de nuestro análisis las imágenes que se han considerado propias de los fototipos
I, II y VI. A su vez, se han descartado aquellas imágenes que presentan unas condiciones de
iluminación extremas, en las que el color aparente de la piel es más propio de algunos de esos
fototipos que de los que sí se incluyen en nuestro estudio. La Figura 3.12 muestra algunas de
las 500 imágenes finalmente seleccionadas para la validación de resultados.
62
3.3. Propuesta de modelo del color de la piel
Figura 3.13: Visualización del histograma 3D de Piel en el espacio de color RGB y sus proyec-
ciones 2D en los planos correspondientes
100
r5 : x > 76
r3
90
r6 : x < 89
80
70
50 60 70 80 90 100 110
Gn
Dadas las ecuaciones de las rectas, un píxel de una imagen a clasificar es etiquetado
como Piel si sus valores en las componentes de color satisfacen todas las restricciones, lo que
implica que la posición del color del píxel en el histograma está dentro del área encerrada
por las rectas; en caso contrario el píxel es etiquetado por el clasificador como No-Piel. La
Figura 3.15 muestra un ejemplo del procedimiento. Representada la imagen de entrada en
el espacio de color apropiado, RGB normalizado en el caso de este ejemplo, se determina
para cada píxel la posición de su color en el plano del histograma 2D {Rn,Gn}, en el que la
zona sombreada en la figura es la de colores que no corresponden a Piel. La imagen de salida
asocia el color blanco a los píxeles que se han clasificado como Piel y el negro a los No-Piel.
Para cada imagen de entrada, la clasificación basada en la evaluación de las ecuaciones del
modelo genera una imagen única, con unas determinadas tasas de aciertos positivos y falsos
positivos. Aplicada al conjunto de imágenes de una base de datos, el clasificador se reduce a
un punto (SC, NSF ) en la gráfica ROC.
63
3.3. Propuesta de modelo del color de la piel
r2 r5 r6 Imagen RGBn
150
140
130 r4
120 r1
110
Rn
100
r3
90
Imagen clasificada
80
70
50 60 70 80 90 100 110
Gn
Figura 3.15: Ejemplo del proceso de clasificación de un píxel con un modelo explícito del color
de la piel en {Rn ,Gn } del espacio de color RGB normalizado
64
3.3. Propuesta de modelo del color de la piel
(a)
r2 r5 r6
150 1
C1
140
0,8
130 r4
120 0,6
r1
110
100 0,4
90 r3 0,2
80
70 0
SC
Rn
Figura 3.16: Ejemplo de configuraciones posibles de un clasificador en {Rn ,Gn } por medio
del ajuste del parámetro b de las rectas que lo definen
65
3.3. Propuesta de modelo del color de la piel
1
C1
Tasa de aciertos positivos SC
0,8 C2
C3
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1
Figura 3.17: Curva ROC formada por las tres configuraciones del ejemplo de la Figura 3.16
66
3.3. Propuesta de modelo del color de la piel
procedimiento seguido ha sido fijar todas las restricciones en una posición tal que el cluster
de piel incluye todos los píxeles etiquetados como Piel en las imágenes de entrenamiento
e ir desplazando únicamente la restricción evaluada en el sentido de hacer más exigente la
clasificación. De nuevo para el caso de las restricciones en el plano {Rn ,Gn } de la Figura 3.14
y las ecuaciones de (3.38), la Figura 3.18 recoge las curvas ROC que reflejan el impacto en
los resultados de la variación de los parámetros b de cada restricción.
Por cómo se ha definido, en todas las restricciones la posición inicial da el máximo SC = 1,
con un valor para NSF inaceptablemente alto. El valor en particular depende de cómo las
restricciones se sitúen sobre el histograma completo, como se analizará con más detalle más
adelante. Todas acaban en una situación en la que el valor del parámetro b sobrepasa el
cluster y no permite reconocer ningún píxel como correspondiente a Piel, dando por tanto
el mínimo de falsos positivos pero también el mínimo de aciertos positivos: SC = NSF = 0.
Entre ambos extremos, cada restricción puede presentar un comportamiento diferente. Así,
por ejemplo, hacer más exigente r1 puede mejorar muy sensiblemente los falsos positivos sin
apenas comprometer los aciertos positivos. Sin embargo, el cambio en el mismo sentido de r2
puede llegar a anular los aciertos positivos sin mejorar los falsos positivos. Estas diferencias se
deben a la forma del cluster de Piel y su ubicación en el histograma completo. Las Figuras 3.19
y 3.20 lo analizan para las restricciones r1 y r2 del modelo propuesto en {Rn ,Gn }. En ambas
figuras, la columna de la izquierda muestra el desplazamiento de la posición de la restricción
estudiada sobre el histograma completo —el construido considerando todos los píxeles de
las imágenes de entrenamiento—, la del centro su desplazamiento sobre el histograma de los
píxeles etiquetados como Piel, y la de la derecha la formación de la curva ROC por medio de
los sucesivos pares (SC, NSF ) que corresponden a cada posición de la restricción.
Las dos restricciones parten, como se ha comentado, de una posición de valor inicial
b = b1 en la que se asegura que todos los píxeles etiquetados como Piel son correctamente
identificados. Conforme se incrementa el valor de b, el clasificador se hace más exigente y
comienzan a apreciarse las diferencias en la respuesta. Para b = b2 ambas restricciones están
ajustadas al borde del cluster. La tasa SC todavía es máxima pero ya se aprecia que NSF se
comporta de manera diferente. En b = b3 , con la restricción sobre el cluster, esta diferencia
ya está claramente marcada. Los aciertos positivos SC se han reducido de manera similar en
ambas gráficas porque hay un rango de valores que han sido etiquetados como Piel y por la
posición de la restricción no se clasifican como tal, pero mientras que en r1 los falsos positivos
mejoran considerablemente, en r2 la variación es mínima. La explicación está en la posición
de la restricción sobre el histograma completo. Para r1 , éste queda en gran parte, incluidos
sus valores más altos —las combinaciones de color que más aparecen en las imágenes— en la
zona de No-Piel (sombreada en las figuras de los histogramas 2D) y por tanto son mayoría
y más frecuentes los colores que correctamente se clasifican como No-Piel. Esto hace que
los falsos positivos sean bajos. Mientras, r2 considera No-Piel una zona mucho menor del
histograma completo y además no incluye los valores más frecuentes. Como consecuencia, no
descarta colores que mayoritariamente no corresponden a piel, lo cual conlleva muchos falsos
positivos. En b = b4 las dos restricciones prácticamente sobrepasan el cluster y por ello los
aciertos positivos son muy bajos, pero mientras r1 excluye como piel las combinaciones de
color más frecuentes y en consecuencia da también muy pocos falsos positivos, r2 todavía
considera piel gran parte del histograma completo y los falsos positivos siguen siendo muy
altos. Es, por tanto, la posición relativa del histograma de piel en el histograma completo
la que explica el comportamiento del clasificador en función del ajuste del parámetro b.
Naturalmente, la forma del cluster también condiciona la evolución de las curvas ROC. En
este caso particular, que es más extenso en la dimensión y y estrecho en la x, explica que la
67
3.3. Propuesta de modelo del color de la piel
0,8 0,8
0,6 0,6
SC
SC
0,4 0,4
0,2 0,2
0 0
0 0,2 0,4 0,6 0,8 1 0 0,2 0,4 0,6 0,8 1
NSF NSF
0,8 0,8
0,6 0,6
SC
SC
0,4 0,4
0,2 0,2
0 0
0 0,2 0,4 0,6 0,8 1 0 0,2 0,4 0,6 0,8 1
NSF NSF
0,8 0,8
0,6 0,6
SC
SC
0,4 0,4
0,2 0,2
0 0
0 0,2 0,4 0,6 0,8 1 0 0,2 0,4 0,6 0,8 1
NSF NSF
Figura 3.18: Curvas ROC para el análisis del comportamiento independiente de las restric-
ciones propuestas en el plano {Rn Gn }
68
3.3. Propuesta de modelo del color de la piel
200 200 1
Cb1
160 160 0,8
40 40 0,2
0 0 0
SC
Rn
Rn
40 60 80 100 120 40 60 80 100 120 0 0,2 0,4 0,6 0,8 1
Gn Gn NSF
200 200 1
Cb2
160 160 0,8
40 40 0,2
0 0 0
SC
Rn
Rn
200 200 1
80 80 0,4
40 40 0,2
0 0 0
SC
Rn
Rn
200 200 1
80 80 0,4
Cb4
40 40 0,2
0 0 0
SC
Rn
Rn
200 200 1
r1 r1
b5=b +50 b5=b +50 0,8
160 160
80 80 0,4
40 40 0,2
Cb5
0 0 0
SC
Rn
Rn
69
3.3. Propuesta de modelo del color de la piel
200 200 1
Cb1
160 160 0,8
80 80 0,4
40 40 0,2
0 0 0
SC
Rn
Rn
40 60 80 100 120 40 60 80 100 120 0 0,2 0,4 0,6 0,8 1
Gn Gn NSF
200 200 1
Cb2
160 160 0,8
40 40 0,2
0 0 0
SC
Rn
Rn
200 200 1
40 40 0,2
0 0 0
SC
Rn
Rn
200 200 1
0
Rn
200 200 1
80 80 0,4
b5=b +45 b5=b +45
r2 r2
40 40 0,2
Cb5
0 0 0
SC
Rn
Rn
70
3.3. Propuesta de modelo del color de la piel
transición entre ambos extremos de la curva ROC se produzca más rápido —para cambios
menores de b— en las restricciones r5 y r6 y más lentamente —con mayor rango de valores
de b— en r3 y r4 .
Este análisis mediante curvas ROC permite conocer el impacto de cada restricción de
manera independiente y el rango de valores de su parámetro b. No obstante, para considerar
piel un color deben satisfacerse todas las restricciones y en última instancia el efecto de la
modificación de una depende de su interrelación con las restantes, por lo que la decisión de
qué parámetros modificar para ajustar el comportamiento del clasificador y de cómo hacerlo
debe tomarse teniendo en cuenta el modelo en su conjunto. Para establecer el conjunto de
valores de b que permita ajustar el grado de exigencia del clasificador asegurando el mejor
comportamiento en cada caso, se han fijado unos rangos para la tasa de aciertos positivos que
definen los 9 niveles de la Tabla 3.2. Para cada uno de ellos, se ha buscado la combinación de
valores de los parámetros b de las restricciones que, asegurando la tasa SC indicada, minimiza
la tasa de falsos positivos NSF. Como resultado, se han obtenido 9 conjuntos de valores que
dan lugar a 9 clasificadores derivados de un mismo modelo, con los que se cubren diferentes
tasas de aciertos positivos para las cuales se minimizan los falsos positivos.
SC
nivel 1 ≥ 0,99
nivel 2 ≥ 0,95
nivel 3 ≥ 0,90
nivel 4 ≥ 0,85
nivel 5 ≥ 0,80
nivel 6 ≥ 0,75
nivel 7 ≥ 0,70
nivel 8 ≥ 0,65
nivel 9 ≥ 0,60
Tabla 3.2: Valores de SC que establecen los intervalos considerados para definir el compor-
tamiento dinámico de un modelo de piel
71
3.3. Propuesta de modelo del color de la piel
la alta correlación que existe entre las componentes de color, que hace que ligeras variaciones
de iluminación produzcan cambios considerables en los valores de todas las componentes. Las
relaciones de área entre ambos histogramas, considerada dicha relación en adelante como un
primer estimador de la bondad del espacio de color, son del 29,1 %, 31,5 % y 36,8 % para los
planos {R,G}, {R,B} y {G,B} respectivamente, y se han considerado excesivas.
Histograma completo
250 250 2500
G
R
100 100 1000
50 50 500
0 50 100 150 200 250 0 50 100 150 200 250 0 50 100 150 200 250
0 100 1 0 200 2 0 50 100 150 200 250
G B B
Histograma piel
250 2500
250
200 2000
200
G
R
R
100 1000
100
50 500 50
0 50 100 150 200 250 0 50 100 150 200 250 0 50 100 150 200 250
50 100 150 200 250 50 100 150 200 250 50 100 150 200 250
G B B
Figura 3.21: Histogramas de piel y completos en los tres planos del espacio de color RGB.
Por su parte, el área ocupada por los colores etiquetados como piel también ha sido el
motivo para no contemplar un modelo en el plano {S,V} del espacio HSV, ya que supone el
50,6 % del histograma completo. Los planos {H,S} y {H,V} han sido descartados por la forma
del cluster. La Figura 3.22 muestra los tres planos de los histogramas de piel y completos.
Para los restantes espacios de color se proponen los modelos explícitos que se describen a
continuación. Para cada uno de ellos, se presentan las rectas que definen las restricciones y los
conjuntos de valores ajustables que, de acuerdo con los niveles SC establecidos, determinan
las configuraciones posibles de los clasificadores. A continuación, se presentan los resultados
obtenidos para las bases de datos de entrenamiento y de test. Para cada una, las tablas corres-
pondientes recogen las tasas SC y NSF para cada configuración evaluada individualmente
así como la resultante de la aplicación del conjunto de clasificadores basados en el modelo.
Ésta última se calcula evaluando cada imagen con todos los clasificadores y considerando
las tasas SC y NSF de aquél que produzca la mejor imagen segmentada. Este mejor caso
se ha determinado por medio de la correlación bidimensional de la imagen producida por el
clasificador con la etiquetada manualmente. Los resultados de cada modelo también incluyen
el área bajo la curva ROC que dibujan los pares (SC, NSF ) resultantes de cada uno de los
clasificadores. El área bajo la curva (Area Under the Curve, AUC) es un indicador estadístico
derivado de la curva ROC utilizado habitualmente para resumir la efectividad de un clasi-
ficador. Obviamente, el valor de esta área depende de los intervalos de valores considerados
en los ejes de la gráfica, siendo, para una misma curva ROC, mayores las diferencias en los
valores de esta área cuanto más estrechos —mayor resolución— sean esos intervalos. En las
72
3.3. Propuesta de modelo del color de la piel
Histograma completo
250 250 250
S
100 100 100
50 50 50
0 50 100 150 200 250 0 50 100 150 200 250 0 50 100 150 200 250
S V V
Histograma piel
250 250 250
S
100 100 100
50 50 50
0 50 100 150 200 250 0 50 100 150 200 250 0 50 100 150 200 250
S V V
Figura 3.22: Histogramas de piel y completos en los tres planos del espacio de color HSV.
tablas de resultados de los siguientes apartados se han considerado dos escenarios: el área
completa de la curva y un área más reducida con límites suficientes para cubrir el rango de
valores obtenidos de los clasificadores con las dos bases de datos. Este rango es el indicado
en los ejes de las curvas ROC que se incluyen en las tablas de resultados y es común a todas
ellas. El primer escenario se ha denominado AF y el segundo Aw1 .
73
3.3. Propuesta de modelo del color de la piel
La Figura 3.23 muestra cada uno de los planos de los histogramas de piel y completos en el
espacio de color RGB normalizado. El cluster de piel ocupa en todos ellos un área similar,
aproximadamente el 10,5 % del área de los histogramas completos. Sobre ellos, se ha propuesto
el modelo de la Tabla 3.3, donde se especifican las ecuaciones de las restricciones y el conjunto
de valores de los parámetros para los niveles SC considerados. Las restricciones establecidas
en los planos {Rn ,Bn } y {Gn ,Bn } y el análisis de los valores óptimos de sus parámetros
explican que las ecuaciones finalmente consideradas para {Rn ,Gn } no coincidan exactamente
con las propuestas en las ecuaciones (3.38), que deben valorarse como una aproximación
inicial. La Tabla 3.4 recoge los resultados de clasificación obtenidos con la base de datos de
entrenamiento y de test, de acuerdo con lo comentado al comienzo del apartado 3.3.3.
250
250 250
250
200
200 200
200
150
150 150
150
Rn
Rn
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Gn Gn
250
250 250
250
200
200 200
200
150
150 150
150
Rn
Rn
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Bn Bn
250
250 250
250
200
200 200
200
150
150 150
150
Gn
Gn
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Bn Bn
Figura 3.23: Histogramas de piel y completos en los tres planos del espacio de color RGB
normalizado
74
3.3. Propuesta de modelo del color de la piel
Ecuaciones
Tabla 3.3: Modelo explícito para el reconocimiento de la piel propuesto en el espacio de color
RGB normalizado
75
3.3. Propuesta de modelo del color de la piel
SC
niveles 1-9 93,56 8,32 NSF
0 0,1 0,2 0,3 0,4 0,5 0,6
AUC
Aw1 85,46
AF 92,05
AUC
Aw1 80,24
AF 88,79
Tabla 3.4: Resultados de reconocimiento del color de la piel basado en el modelo propuesto
en el espacio de color RGB normalizado
76
3.3. Propuesta de modelo del color de la piel
La Figura 3.24 muestra cada uno de los planos de los histogramas completos y de piel en
el espacio de color YCb Cr . Como refleja la figura, el plano más adecuado para establecer
restricciones es el Cb Cr , donde el cluster de piel supone el 17,5 % del área del histograma
completo y además presenta una forma muy compacta. También han sido considerados los
planos YCb e YCr , a pesar de sus mayores relaciones de área, 34,3 % y 28,9 % respectivamente,
y de la forma de éstas. La transformación a luminancia Y desde RGB es idéntica para YUV,
para YIQ y para YCb Cr , como se indica en las expresiones (3.4), (3.6) y (3.8) respectivamente.
Además, es habitual que los sensores de imagen ofrezcan la posibilidad de proporcionar la
información de color de los píxeles como luminancia y crominancias, en diferentes formatos.
Por ello, se ha estimado relevante incluir los planos YCb e YCr para valorar la utilidad de la
componente de luminancia, y por lo tanto el modelo se ha definido sobre los tres planos del
espacio de color. La Tabla 3.5 recoge las ecuaciones y los valores de ajuste para los 9 niveles
SC. La Tabla 3.6 contiene los resultados de reconocimiento del color de la piel considerando
el conjunto de clasificadores empleando las bases de datos de entrenamiento y de test.
250
250 250
250
200
200 200
200
150
150 150
150
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Cb Cb
250
250 250
250
200
200 200
200
150
150 150
150
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Cr Cr
250
250 250
250
200
200 200
200
150
150 150
150
Cb
Cb
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Cr Cr
Figura 3.24: Histogramas de piel y completos en los tres planos del espacio de color YCb Cr
77
3.3. Propuesta de modelo del color de la piel
Ecuaciones
Tabla 3.5: Modelo explícito para el reconocimiento de la piel propuesto en el espacio de color
YCb Cr
78
3.3. Propuesta de modelo del color de la piel
SC
niveles 1-9 87,73 5,51 NSF
0 0,1 0,2 0,3 0,4 0,5 0,6
AUC
Aw1 88,56
AF 93,71
AUC
Aw1 77,85
AF 88,08
Tabla 3.6: Resultados de reconocimiento del color de la piel basado en el modelo propuesto
en el espacio de color YCb Cr
79
3.3. Propuesta de modelo del color de la piel
La Figura 3.25 muestra los planos de los histogramas completos y de piel en el espacio de
color YUV construidos con las imágenes de la base de datos de entrenamiento. Por forma y
tamaño, el 16,7 % del completo, se ha considerado únicamente el cluster de piel en el plano
UV para el modelo presentado en la Tabla 3.7. Los planos YU e YV han sido descartados. La
Tabla 3.8 recoge los resultados de reconocimiento del color de la piel obtenidos con las bases
de datos de entrenamiento y de test.
250
250 250
250
200
200 200
200
150
150 150
150
Y
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
U U
250
250 250
250
200
200 200
200
150
150 150
150
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
V V
250
250 250
250
200
200 200
200
150
150 150
150
U
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
V V
Figura 3.25: Histogramas de piel y completos en los tres planos del espacio de color YUV
80
3.3. Propuesta de modelo del color de la piel
Ecuaciones
Histograma piel UV
r1 : U ≤ 134
r2 : V ≥ 132
r3 : U ≥ 1,34V − 115
r4 : U ≤ 1,35V − 47
r5 : U ≥ −1,1V + 261
r6 : U ≤ −1,1V + 300
Plano UV
r1 r2 r3 r4 r5 r6
nivel 1 0 0 0 0 0 0
nivel 2 1 5 0 6 0 0
nivel 3 2 6 0 12 1 0
nivel 4 2 7 0 13 1 0
nivel 5 11 8 0 13 1 0
nivel 6 13 8 0 24 2 0
nivel 7 13 9 0 24 3 0
nivel 8 13 10 0 28 3 0
nivel 9 16 10 0 28 3 0
Tabla 3.7: Modelo explícito para el reconocimiento de la piel propuesto en el espacio de color
YUV
81
3.3. Propuesta de modelo del color de la piel
AUC
Aw1 90,67
AF 95,19
AUC
Aw1 81,49
AF 89,59
Tabla 3.8: Resultados de reconocimiento del color de la piel basado en el modelo propuesto
en el espacio de color YUV
82
3.3. Propuesta de modelo del color de la piel
La Figura 3.26 muestra los planos de los histogramas completos y de piel en el espacio de
color YIQ. El modelo propuesto está basado en el plano IQ, donde el cluster de piel es el
17,4 % del completo. Los planos YI e YQ han sido descartados. La Tabla 3.9 presenta las
ecuaciones y los conjuntos de valores que dan lugar a los clasificadores definidos de acuerdo
con los niveles SC. La Tabla 3.10 recoge los resultados de reconocimiento del color de la piel
obtenidos empleando las bases de datos de entrenamiento y de test.
250
250 250
250
200
200 200
200
150
150 150
150
Y
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
I I
250
250 250
250
200
200 200
200
150
150 150
150
Y
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Q Q
250
250 250
250
200
200 200
200
150
150 150
150
I
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
Q Q
Figura 3.26: Histogramas de piel y completos en los tres planos del espacio de color YIQ
83
3.3. Propuesta de modelo del color de la piel
Ecuaciones
Histograma piel IQ
r1 : I ≥ 127
r2 : I ≤ 171
r3 : Q ≥ 118
r4 : Q ≤ 145
r5 : I ≤ −2,55Q + 520
r6 : I ≥ −1,64Q + 342
r7 : I ≤ 1,03Q + 41
Plano IQ
r1 r2 r3 r4 r5 r6 r7
nivel 1 0 0 0 0 0 0 0
nivel 2 8 0 2 0 0 4 0
nivel 3 8 0 3 0 0 7 0
nivel 4 11 0 4 0 0 8 0
nivel 5 13 0 5 0 0 8 0
nivel 6 14 0 5 0 0 10 0
nivel 7 15 0 6 0 0 10 0
nivel 8 16 0 6 0 0 11 0
nivel 9 17 0 7 0 0 12 0
Tabla 3.9: Modelo explícito para el reconocimiento de la piel propuesto en el espacio de color
YIQ
84
3.3. Propuesta de modelo del color de la piel
AUC
Aw1 90,52
AF 94,98
AUC
Aw1 81,47
AF 89,45
Tabla 3.10: Resultados de reconocimiento del color de la piel basado en el modelo propuesto
en el espacio de color YIQ
85
3.3. Propuesta de modelo del color de la piel
La Figura 3.27 muestra los planos de los histogramas completos y de piel en el espacio de
color TSL. A pesar de la relación de los tamaños de las áreas, 30,1 % en TS, 40,1 % en TL y
45,6 % en SL, y su distribución sobre los planos, se ha evaluado el modelo de la Tabla 3.11 con
los valores de los parámetros indicados para los correspondientes niveles de acierto positivo.
La Tabla 3.12 muestra los resultados con las bases de datos de entrenamiento y de test. Para
conseguir el nivel de 99 % de acierto positivo es necesario ensanchar considerablemente el
cluster de piel, con el coste de un error muy elevado en los falsos positivos.
250
250 250
250
200
200 200
200
150
150 150
150
T
T
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
S S
250
250 250
250
200
200 200
200
150
150 150
150
T
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
L L
250
250 250
250
200
200 200
200
150
150 150
150
S
100
100 100
100
5050 5050
0 50
50
100
100
150
150
200
200
250
250
0 50
50
100
100
150
150
200
200
250
250
L L
Figura 3.27: Histogramas de piel y completos en los tres planos del espacio de color TSL
86
3.3. Propuesta de modelo del color de la piel
Ecuaciones
Tabla 3.11: Modelo explícito para el reconocimiento de la piel propuesto en el espacio de color
TSL
87
3.3. Propuesta de modelo del color de la piel
AUC
Aw1 89,30
AF 95,27
AUC
Aw1 76,01
AF 87,72
Tabla 3.12: Resultados de reconocimiento del color de la piel basado en el modelo propuesto
en el espacio de color TSL
88
3.3. Propuesta de modelo del color de la piel
Figura 3.28: Ejemplo del resultado de las combinaciones lógicas AND y OR de dos clasificadores
89
3.3. Propuesta de modelo del color de la piel
90
3.3. Propuesta de modelo del color de la piel
Imágenes
Espacio de clasificadores
6
Niveles 5
Clasificador 2
4
1
1 2 3 4 5 6 7 8 9 Número de veces
preseleccionado
Niveles
Clasificador 1
91
3.3. Propuesta de modelo del color de la piel
Algoritmo propuesto
c1 YUV 1 OR YIQ 1
c2 RGB normalizado 1 AND YIQ 1
c3 RGB normalizado 1 AND YUV 2
c4 YCb Cr 1 AND YIQ 2
c5 YCb Cr 2 AND YUV 2
c6 YUV 4 OR YIQ 4
c7 RGB normalizado 3 AND YIQ 3
c8 YCb Cr 2 AND YIQ 4
c9 RGB normalizado 2 AND YUV 5
c10 YCb Cr 4 AND YUV 4
c11 YUV 7 OR YIQ 7
c12 RGB normalizado 3 AND YUV 7
c13 YCb Cr 8 AND YIQ 2
c14 RGB normalizado 3 AND YIQ 9
c15 RGB normalizado 9 AND YIQ 8
c16 YCb Cr 9 AND YIQ 9
Tabla 3.13: Clasificadores que forman el algoritmo propuesto para el reconocimiento del color
de la piel
3.3.4.1. Resultados
Los clasificadores c1 a c16 dan lugar a las tasas de aciertos positivos SC y de falsos positivos
NSF que se recogen en la Tabla 3.14. En ella, la fila ci contiene los resultados producidos
por el clasificador correspondiente en las imágenes de cada una de las bases de datos. Por su
parte, la fila c1−16 indica el resultado global del conjunto de clasificadores, calculado según
el procedimiento descrito para determinar el resultado global de los clasificadores basados en
cada uno de los modelos propuestos. Por tanto, el resultado en c1−16 es comparable con los
resultados en las filas niveles 1-9 de las tablas de presentación de los resultados de dichos
modelos. Con el propósito de validar el algoritmo, se presentan no sólo resultados con las
bases de datos de imágenes de entrenamiento y test, de elaboración propia, sino también con
las imágenes de la base de datos ECU, introducida, como las otras dos, en el apartado 3.3.1.
Los clasificadores c1 a c16 dibujan, individualmente, las curvas ROC que se muestran en
la columna de la izquierda de la Figura 3.30 para la base de datos de entrenamiento (a), de
test (b) y ECU (c). En ellas, cada punto corresponde al par (SC, NSF ) de las líneas c1 a c16
de la Tabla 3.14. Se aprecia que, a diferencia de las gráficas ROC generadas por los modelos
propuestos en cada espacio de color mostradas en las Figuras 3.3 a 3.11, la curva no se ajusta
a una función monótona creciente. Esto no compromete en ningún sentido la calidad del
reconocimiento; más bien al contrario, ya que se debe a la búsqueda de complementariedad
de clasificadores explicada en el apartado anterior. El área que en estas figuras queda bajo
92
3.3. Propuesta de modelo del color de la piel
Algoritmo propuesto
Resultados
Tabla 3.14: Resultados de reconocimiento del color de la piel con el algoritmo propuesto
93
3.3. Propuesta de modelo del color de la piel
la curva ROC se recoge en la Tabla 3.14. Para facilitar la comparación de estos valores,
se mantienen las dos opciones indicadas al comienzo del apartado 3.3.3: AF corresponde al
rango completo de valores de SC y NSF, mientras que Aw1 corresponde al área que definen
los límites de los ejes de las figuras de las curvas ROC y que se ha considerado la principal
zona de interés de la gráfica para la comparación. La Tabla 3.15 recopila todos los resultados
de estos indicadores.
La Figura 3.30 también incluye, en su columna de la derecha, la evolución del resultado
global del algoritmo conforme se van aplicando los clasificadores que lo forman, en el orden en
el que se han listado en la Tabla 3.13 y que implica aumentar la exigencia del reconocimiento.
Así, el primer punto de esta curva corresponde al par (SC,NSF ) del clasificador c1 y su
posición viene dada por los valores en la primera fila de la Tabla 3.14; el segundo punto al
resultado cuando se aplican los clasificadores c1 y c2 , y el último al resultado de la evaluación
de todos los clasificadores y, por tanto, coincide con el valor de c1−16 en la Tabla 3.14. Los
valores globales de tasas de aciertos positivos y falsos negativos resultantes del algoritmo y
de cada uno de los modelos se comparan visualmente en la Figura 3.31.
Entrenamiento Test
AF Aw1 AF Aw1
clasificadores modelo en RGB normalizado 92,05 85,46 88,79 80,24
clasificadores modelo en YCb Cr 93,71 88,56 88,08 77,85
clasificadores modelo en YUV 95,19 90,67 89,59 81,49
clasificadores modelo en YIQ 94,98 90,52 89,45 81,47
clasificadores modelo en TSL 95,27 89,30 87,72 76,01
clasificadores algoritmo 97,34 94,16 95,87 92,13
Tabla 3.15: Comparación de los valores AUC de las curvas ROC del algoritmo propuesto con
los de los clasificadores diseñados en los espacios de color estudiados
En definitiva, los valores de la Tabla 3.14 y las curvas de la Figura 3.30 caracterizan
el comportamiento del algoritmo propuesto para el reconocimiento del color de la piel y la
Tabla 3.15 y la Figura 3.31 facilitan su comparación con los clasificadores propios de cada
modelo. Su análisis señala, en primera instancia, que el algoritmo presenta mejor compor-
tamiento que cualquiera de los modelos descritos en el apartado 3.3.3, lo cual es consecuencia
lógica de la selección de los clasificadores que ofrecen los mejores resultados en los niveles SC
independientemente del espacio de color en el que estén construidos.
Las diferencias entre los resultados de la bases de datos de entrenamiento y test, que
en los clasificadores propios de cada modelo pueden considerarse significativas, se reducen
considerablemente en los del algoritmo y se traducen no tanto en peores resultados sino más
bien en un comportamiento más conservador: menos aciertos positivos pero también menos
falsos positivos. Consideramos que esto pone en valor la complementariedad de clasificadores
buscada en el diseño del algoritmo.
Como cabe esperar por la gran variabilidad de las imágenes que la forman, los resultados
con la base de imágenes ECU no alcanzan la tasa de éxito de los obtenidos con las de
recopilación propia. No obstante, se consideran satisfactorios y en cualquier caso, como se
recoge a continuación, se mejoran las soluciones similares descritas en la literatura.
Finalmente, la Figura 3.32 presenta la comparación de las gráficas ROC obtenidas con
las producidas por los principales modelos del color de la piel referenciados a lo largo de este
capítulo. Aquéllos con resultados sensiblemente peores que los incluidos han sido descartados.
94
3.3. Propuesta de modelo del color de la piel
0,8 0,95
0,7 c1-16
0,6 0,9
0,5
0,4 0,85
SC
SC
0 0,1 0,2 0,3 0,4 0,5 0,6 0 0,05 0,1 0,15 0,2 0,25 0,3
NSF NSF
0,9 c1
c1-2
0,8 0,95
c1-3
0,7
c1-16
0,6 0,9
0,5
0,4 0,85
SC
SC
0 0,1 0,2 0,3 0,4 0,5 0,6 0 0,05 0,1 0,15 0,2 0,25 0,3
NSF NSF
0,9
0,8 0,95 c1
0,7
0,4 0,85
SC
SC
0 0,1 0,2 0,3 0,4 0,5 0,6 0 0,05 0,1 0,15 0,2 0,25 0,3
NSF NSF
Figura 3.30: Curvas ROC del algoritmo propuesto. La columna de la izquierda muestra las
curvas que dibujan los resultados de aciertos positivos y falsos positivos de los
clasificadores evaluados individualmente. La columna de la derecha muestra la
evolución de las tasas de aciertos positivos y falsos positivos conforme se van
evaluando los clasificadores que forman el algoritmo.
95
3.3. Propuesta de modelo del color de la piel
Graficas ROC de valores globales de algoritmo y modelos
Modelo YUV
0,85 0,85
Modelo TSL
SC
0 0,025 0,05 0,075 0,1 0 0,025 0,05 0,075 0,1
NSF NSF
Figura 3.31: Gráfica ROC con las tasas de aciertos positivos y de falsos positivos producidas
por el algoritmo y por los modelos definidos en los espacios de color
En ellas, los resultados de clasificación producidos por modelos formados por un conjunto
de restricciones no ajustables —estáticos— se reducen a un punto (SC,NSF ). Las gráficas
muestran que el algoritmo propuesto es la solución que produce mejores resultados. Con las
bases de datos de entrenamiento y de test, todos los valores (SC,NSF ) producidos por otras
soluciones se sitúan por debajo —y por tanto son peores— de los valores que dibujan la
gráfica de nuestra propuesta. Con la base de imágenes ECU, aunque algunas ofrecen valores
(SC,NSF ) que se sitúan por encima y con ello diferentes compromisos entre aciertos positivos
y falsos positivos, nuestro algoritmo también presenta el mejor comportamiento entre las
soluciones evaluadas.
96
3.3. Propuesta de modelo del color de la piel
Curva ROC
1
0,9
Algoritmo propuesto
0,8
Algoritmo propuesto c1-16
SC
[Peer et al.]
0,6
[Gómez y Morales]
0,5
[Chai y Ngan]
[Wang y Yuan]
Curva ROC
1 [Zhu et al.]
0,8
0,7
SC
0,6
0,5
0,4
0 0,1 0,2 0,3 0,4
NSF
Curva ROC
1
0,9
0,8
0,7
SC
0,6
0,5
0,4
0 0,1 0,2 0,3 0,4
NSF
Figura 3.32: Comparación del algoritmo propuesto con modelos propuestos en la literatura:
a) para la base de datos de entrenamiento; b) para la base de datos de test;
c) para la base de datos ECU
97
4
98
4.1. Biblioteca de gestos
Identificación objetos
Imágenes
segmentadas Plantillas
entrenamiento PA, PB , … PN
Convolución
bidimensional
IP IP … I P
A B N
Determinación Biblioteca
máximos Modelo Gestos
Estimación
puntos de interés
mk
Estimación objetos
palma y dedo
d̂i
Extracción cij Formación Ĝ Verificación
características Hipótesis Hipótesis
G, di
Biblioteca
Gestos
El modelo de los gestos consiste por tanto, de manera global, en el conjunto de las tareas de
procesamiento que parten de la imagen segmentada, en los parámetros que configuran dichas
tareas y en los vectores de características obtenidos mediante dichas tareas de procesamiento,
y en una serie de reglas que los valores de las características, propios e identificativos de cada
gesto, deben cumplir.
99
4.1. Biblioteca de gestos
100
4.2. Identificación y localización de objetos
se han utilizado, las imágenes son escaladas a un tamaño 128 × 96 píxeles. Cada imagen ha
sido segmentada y etiquetada únicamente con el gesto G al que corresponde y el número de
dedos di que lo forman. No se ha establecido a priori ningún marcador o posición asociada a
los dedos o a la palma, que son determinadas en el proceso descrito en la Figura 4.1.
21– 37%
20 – 31%
Figura 4.3: Tamaño de la mano en la imagen, expresado como porcentaje del tamaño de la
imagen
d2
d3 d1
d4
d5
101
4.2. Identificación y localización de objetos
está explicado con más detalle. En él, la Figura 6.13 muestra las otras opciones más fre-
cuentes y que han sido evaluadas, con el resultado de que estas otras opciones desvirtúan
completamente la información de la imagen resultante.
Tomando como punto de partida la imagen segmentada por el algoritmo de reconocimiento
del color de la piel, esto es, idealmente, la silueta de la mano, se han definido plantillas de
objetos que representan sus siluetas. Este hecho, emplear las siluetas, proporciona al sistema
una robustez de la que carecería absolutamente si se utilizaran valores de intensidad de los
píxeles.
1
25
24 1 2 3 4 5 6 7
125
26
50
25
23 24
23
22
22 21
0
20
19
21 18
17
16
25
20 15
14
13
100
19 12
11
10
18 9
17
0
6
16
3
15
14
13
75 – 25
12
– 50
11
50
10
– 75
8
25
– 100
5
1
0 – 128
Figura 4.5: Identificación de los objetos dedo mediante convolución: plantilla A1 , imagen de
entrada e imagen resultante de la convolución
102
4.2. Identificación y localización de objetos
ayuda a identificar los dedos y distinguirlos de la palma. Sin embargo, dado que el número
de elementos de la plantilla con valor 1 sigue siendo el mismo y dibujan la misma silueta, el
resultado, como se puede observar en la figura, es el mismo que para la plantilla A1 .
175 127
1 2 3 4 5 6 7 8 9 10 11 12 13
31
30
29
28
100
27 150
75
26 1 2 3 4 5 6 7 8 9 10 11 12 13
1
31
30
25 29
28
27
24 26
125
25
50
24
23 23
22
21
22 20
0
19
18
21 17
16
25
20
15
14
13
100
19
12
11
10
18
9
17
0
6
16 3
15
14
13
75 – 25
12
– 50
11
50
10
– 75
8
25
– 100
5
1
0 – 128
Figura 4.6: Identificación de los objetos dedo mediante convolución: plantilla A2 , imagen de
entrada e imagen resultante de la convolución
31
30
29
28
100
200
27
75
1 2 3 4 5 6 7 8 9 10 11 12 13
26 31
1
30
25
29
28
27
24 26
25
50
24
23 23
22
160
21
22 20
0
19
18
21 17
16
25
15
20 14
13
12
19 11
10
18 8
120 0
17
6
16
3
15
– 25
14
13
12
80
– 50
11
10
– 75
8
6
40
– 100
5
1
0 – 128
Figura 4.7: Identificación de los objetos dedo mediante convolución: plantilla A3 , imagen de
entrada e imagen resultante de la convolución
De los resultados de los ejemplos mostrados en las anteriores figuras se extrae la conclusión
de que siluetas con valores 1 y 0 no permiten identificar los objetos dedo presentes en la
imagen. Esto se debe a que en la imagen de entrada está presente, además de los dedos, la
palma de la mano, que forma parte de silueta de la mano. En cada convolución, los píxeles de
la imagen de entrada que pertenezcan a la silueta de la mano, a cualquier parte de ella, que
correspondan a píxeles de la silueta de la plantilla contribuirán al valor de la convolución,
y los que no, no sumarán, pero tampoco restarán, es decir, no penalizará al resultado de la
convolución el hecho de que un píxel de la imagen tenga un valor diferente del elemento de
la plantilla a él asociado en el cálculo de cada convolución.
Para aplicar esta penalización para los valores distintos de imagen de entrada y plantilla,
en la plantilla A4 se ha asignado valor −1 a los valores del fondo de la plantilla A1 , mante-
niendo valor 1 para los de la silueta. La Figura 4.8 muestra la plantilla, la misma imagen de
103
4.2. Identificación y localización de objetos
24 26
1 2 3 4 5 6 7
50
25
23 24
–2
23
22
22 21
20
–1
19
21 18
17
25
16
20 15
14
13
19
12
11
10
18 9
–3
7
0
17
6
16
3
15
– 25
14
13
–4
12
– 50
11
10
– 75
8
–5
7
– 100
5
1 – 128 –6
Figura 4.8: Identificación de los objetos dedo mediante convolución: plantilla A4 , imagen de
entrada, imagen resultante de la convolución y diferencia con la imagen resultante
de la convolución con la plantilla A1 de la Figura 4.5
31
30
29
28
100
27
26
75 – 40
1 2 3 4 5 6 7 8 9 10 11 12 13
1
31
30
25 29
28
27
24 26
25
50
24
23 23
22
21
22 20
19
–1
18
21 17
– 80
16
25
15
20 14
13
19
12
11
10
18
9
0
17
6
16
3
15
– 25 – 120
14
13
12
– 50
11
10
– 75
8
6
– 160
– 100
5
– 128
2
1
– 200
Figura 4.9: Identificación de los objetos dedo mediante convolución: plantilla A5 , imagen de
entrada, imagen resultante de la convolución y diferencia con la imagen resultante
de la convolución con la plantilla A2 de la Figura 4.6
104
4.2. Identificación y localización de objetos
El cambio de 0 a −1 del valor asociado al fondo de la silueta en la plantilla implica que los
valores de la plantilla ya no se pueden representar con un único bit sino que son necesarios
2 bits para hacerlo. Independientemente del impacto que el tamaño en bits de los valores
de la plantilla y que el valor máximo que se pueda obtener de la convolución tengan en los
recursos necesarios para la implementación hardware de la convolución y en sus prestaciones
temporales, los cuales han sido estudiados en el apartado 6.1.6 del capítulo dedicado a la
explicación detallada de la propuesta que se realiza en esta tesis para tal implementación, la
Figura 4.10 muestra la plantilla A6 , en la que los píxeles del fondo toman valor −2, la imagen
resultante de la convolución y, para facilitar su comparación con la plantilla A5 , la imagen
resultante de la convolución con ésta. El motivo de la evaluación del valor −2 es que se puede
representar con 2 bits con signo, y de esta manera tratar de aprovechar, si resulta de interés,
todo el rango de valores con los 2 bits necesarios para representar los valores [−1 1] de la
plantilla A5 .
31
1 2 3 4 5 6 7 8 9 10 11 12 13
127 127
30
29
28
100 100
27
26
1 2 3 4 5 6 7 8 9 10 11 12 13
75 75
1
31
30
25 29
28
27
24 26
50 50
25
24
23 23
22
21
22 20
19
–2
21
18
17
25 25
16
20
15
14
13
19
12
11
10
18 9
0
7
0
17 6
16 3
15
– 25 – 25
14
13
12
– 50 – 50
11
10
– 75 – 75
8
– 100 – 100
5
– 128 – 128
2
Figura 4.10: Identificación de los objetos dedo mediante convolución: plantilla A6 , imagen de
entrada, imagen resultante de la convolución e imagen resultante de la convolu-
ción con la plantilla A5 mostrada en la Figura 4.9
En la imagen del resultado se aprecian dos efectos: por un lado, tanto la palma como el
espacio entre los dedos que más se alejan de la silueta de la plantilla A6 presentan valores muy
negativos, saturados en la escala de colores utilizada —y mantenida para la comparación con
el resultado con la plantilla A5 —; por otro, se reduce los valores máximos de la convolución
en las posiciones en las que se encuentran los dedos que presentan mayor similitud con la
plantilla, llegando a hacer apenas distinguibles aquéllos que son menos parecidos.
En el desarrollo del procedimiento de diseño del algoritmo de reconocimiento se ha llegado
a la conclusión de que el primer efecto, la capacidad para separar los dedos y distinguirlos
de la palma, no es relevante, ya que plantillas con valores −1 para el fondo se han mostrado
suficientes para ello. Mientras, el segundo efecto, la disminución de los valores máximos
de la convolución, se ha revelado como negativo, ya que penaliza en exceso las diferencias
entre plantilla y áreas del mismo tamaño de la imagen y conlleva pérdida de flexibilidad
en la capacidad de la técnica basada en convolución para detectar objetos con posiciones
razonablemente, según los criterios del propio algoritmo desarrollado, parecidas a las de la
silueta.
Como consecuencia del análisis anterior y del proceso de diseño del algoritmo de reconocimien-
to, se ha determinado el empleo de las plantillas mostradas en la Figura 4.11 para la iden-
tificación y localización de los dedos. En ellas, hay tres posibles valores para los elementos
de la plantilla: 1, −1 y 0. Los elementos con valor 1 dibujan la silueta del objeto que se
105
4.2. Identificación y localización de objetos
pretende detectar, la forma de los dedos en la imagen segmentada; los elementos con valor
−1 corresponden al fondo y, en particular, a posiciones cercanas al objeto dónde no deben
encontrarse píxeles correspondientes a otros objetos en la imagen de entrada; y los valores
0 corresponden a píxeles de la silueta que no pertenecen al objeto, es decir, también fondo
de la imagen, pero que no penalizarían el resultado de la convolución si correspondieran a
píxeles de otro objeto.
1 0 –1
1 2 3 4 5 6 7 8 9 10 11 12 13
31
30
29
28
27
26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
25 25 25
24 24 24
23 23 23
22 22 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
21 21 21 21
20 20 20 20
19 19 19 19
18 18 18 18
17 17 17 17
16 16 16 16
15 15 15 15
14 14 14 14
13 13 13 13
12 12 12 12
11 11 11 11
10 10 10 10
9 9 9 9
8 8 8 8
7 7 7 7
6 6 6 6
5 5 5 5
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1
Figura 4.11: Plantillas empleadas para la identificación de objetos dedo mediante la convolu-
ción bidimensional con la imagen segmentada
870 870
1 800
860
700
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
31
30
850
29
600
28
27
26
25
24
500 840
23
22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
31
21
30
29
28
20
27
26
25
400
19 24
23
22
18
830
21
20
19
17 18
17
16
16 15
14
15
13
12
300
11
14
10
13 7
820
5
12 4
11 1
10
8 200
7
810
100
5
0 800
Figura 4.12: Identificación del objeto palma de la mano mediante convolución: plantilla PE ,
imagen de entrada e imagen resultante de la convolución
106
4.2. Identificación y localización de objetos
PA 31 × 13 53 61 × 11 0◦
PB 25 × 17 57 61 × 15 130◦
PC 25 × 17 58 61 × 15 50◦
PD 21 × 21 90 15 × 30 0◦
PE 31 × 31 600 35 × 35 0◦
107
4.2. Identificación y localización de objetos
102
108
113
101 118
102 122
104
Figura 4.13: Detalle de la zona con los valores más altos en la imagen resultante de la con-
volución de la imagen de la mano con la plantilla PA
máximo corresponde al valor mayor dentro del área, centrada en la posición del propio valor,
que satisface la condición de umbral establecida para la plantilla aplicada. Cada plantilla
tiene asociada su propia área de filtrado, de forma rectangular y definida por sus dimensiones
ay × ax y por su ángulo aα con respecto a la horizontal. Sus valores han sido determinados
en el proceso de diseño del algoritmo de reconocimiento y están recogidos en la Tabla 4.1.
La Figura 4.14 muestra el resultado de este proceso de filtrado para las imágenes de las
convoluciones con las plantillas PA , PB y PC . Para cada plantilla, la subfigura a) indica los
posiciones de los valores que alcanzan el umbral correspondiente a la plantilla y la subfigura
b) indica la posición del valor máximo final y el área de exclusión en torno a él.
En el proceso de diseño del algoritmo se ha puesto de manifiesto que es poco frecuente
que un mismo objeto dedo produzca el mismo valor en diferentes posiciones de la imagen
con la convolución con la misma plantilla. No obstante, puede suceder. En tal caso, se selec-
ciona el situado en la posición más alejada de la posición estimada de la palma de la mano.
Por su parte, para la convolución con la plantilla para la palma de la mano sí ocurre más
habitualmente, en función del tamaño de la palma en la imagen, que se obtenga un mismo
valor máximo en diferentes posiciones. En esta situación, se ha considerado la posición más
centrada en el conjunto de todas las obtenidas, y en torno a ella se ha situado el área de
filtrado de valores.
El resultado final de este proceso de búsqueda de píxeles de la imagen de la convolución que
satisfacen la condición del umbral y de filtrado mediante el área de exclusión es, combinado
para las convoluciones con las plantillas definidas, un conjunto de puntos de interés en la
imagen que podrían corresponder a objetos dedo y palma que forman la mano. La Figura 4.15
muestra tales puntos para la imagen segmentada de la mano utilizada de ejemplo como imagen
de entrada en todas las figuras anteriores. En ella se indica a qué plantilla corresponden cada
uno.
108
4.2. Identificación y localización de objetos
Plantilla PA Plantilla PA
127
100
75
50
25
0
– 25
– 50
– 75
– 100
– 128
a) b)
Plantilla PB Plantilla PB
127
100
75
50
25
0
– 25
– 50
– 75
– 100
– 128
a) b)
Plantilla PC Plantilla PC
127
100
75
50
25
0
– 25
– 50
– 75
– 100
– 128
a) b)
Figura 4.14: Proceso de filtrado de valores de convolución que alcanzan el umbral de la plan-
tilla para la determinación de puntos de interés
Para hacer frente a estos problemas hay básicamente dos aproximaciones: tratar de evi-
tarlos, actuando sobre el proceso que los genera, es decir, sobre el resultado de la convolución,
redefiniendo para ello las plantillas, sus valores de umbral y las áreas de filtrado, y, en un
nivel previo, modificando el clasificador que produce la imagen segmentada; y asumir que
estas situaciones se producen y depurar los denominados puntos de interés para tratar de
evitar errores y eliminar duplicidades. El proceso iterativo de construcción del algoritmo
de reconocimiento se ha desarrollado simultáneamente en ambas, persiguiendo minimizar la
primera sin comprometer la capacidad de reconocer diferentes configuraciones, es decir, siendo
109
4.2. Identificación y localización de objetos
Figura 4.15: Puntos de interés detectados en una imagen mediante el empleo de las plantillas
y las tareas propuestas
Figura 4.16: Ejemplos de imágenes con conjuntos de puntos de interés en los que se producen
falsos positivos y duplicidad de objetos dedo
menos restrictivo en la detección de los puntos de interés que puedan corresponder a objetos
y delegando en la posterior depuración de éstos la estimación de los objetos presentes en la
imagen. Las plantillas mostradas en las Figuras 4.11 y 4.12 y los parámetros de la Tabla 4.1
son el resultado en la línea de trabajo de las plantillas y el filtrado de los valores de la con-
volución. Se describe a continuación el procesamiento para la depuración de los puntos de
interés.
El objeto palma se asocia a un punto de interés obtenido de la convolución con la plantilla
PE . Si bien se establece que sólo puede haber un objeto palma en la imagen, se contempla
el análisis de dos puntos de interés derivados de esta plantilla. En una primera iteración se
considera el de mayor valor; en caso de que el proceso de reconocimiento de gestos concluyera
que no hay ninguno en la imagen, se repetiría considerando el segundo punto. La situación
en la que después del filtrado de los valores máximos de la convolución hay más de dos de
estos puntos, se considera consecuencia de que la segmentación basada en el color de la piel
no es satisfactoria y necesita ser más exigente. De manera análoga, si no hay ningún valor
de la imagen resultante de la convolución de la imagen con la plantilla PE que alcance el
umbral indicado en la Tabla 4.1, se considera que la segmentación basada en el color de la
piel debe ser menos exigente. En ambos casos, se actua sobre el clasificador en el sentido
correspondiente.
Los objetos dedo se asocian a las convoluciones con las plantillas PA , PB , PC y PD . Sin
embargo, como se ha comentado y ejemplifican las imágenes de la Figura 4.16, no todos los
puntos de interés obtenidos corresponden a dedos y en consecuencia la asociación no puede
ser directa. A partir de la información disponible de los puntos —a qué plantilla corresponde
cada punto mi , su valor de la convolución y su posición en la imagen— se ha analizado su
posición en la imagen con respecto a la del objeto palma y se ha establecido un conjunto de
110
4.2. Identificación y localización de objetos
reglas sobre la distancia lpi entre cada punto mi y la palma, y el ángulo αpi con respecto
a la horizontal de la línea que une el punto mi con la palma. Estas reglas se han definido
en dos ámbitos: las que establecen unos rangos de valores para distancia y ángulo, y las
que establecen una separación angular mínima entre puntos consecutivos. La finalidad de las
primeras es eliminar falsos positivos; la de las segundas es eliminar duplicidades.
La Figura 4.17 muestra estos parámetros extraídos de los puntos de interés m de una
imagen de ejemplo. En esta figura, el color de cada punto identifica la plantilla a la que
corresponde, de acuerdo con la establecido en la Figura 4.15 y que va a ser de aplicación para
las figuras posteriores de este tipo. Para la aplicación de las reglas basadas en la separación
angular es necesario previamente ordenar los puntos de interés según su ángulo con el objeto
palma, y por ello los puntos m se han identificado de esta manera, comenzando por el de
menor valor.
distancias lp ángulos αp
m5 m5
m4 m4
m3 m3
lp5
lp3
lp4 m2 m2
m1 m1
m6 m6
lp2
lp6 lp1 αp4
αp5 αp3
αp2
αp6 αp1
Figura 4.17: Distancia lp y ángulo αp de la línea que une cada punto de interés m con la
posición de la palma de la mano
111
4.2. Identificación y localización de objetos
Por su parte, el propósito de las reglas de separación angular es evitar que un mismo dedo,
que pudiera dar lugar a dos puntos de interés mi y mi+1 resultantes de convoluciones con
plantillas distintas —la supresión de los valores en un área alrededor del máximo local descrita
en el apartado 4.2.3 impide que sean de la misma plantilla—, sea estimado como dos dedos
diferentes. Sus índices deben ser i e i + 1 porque, por tratarse de puntos que corresponden
al mismo dedo, inevitablemente van a ser consecutivos al ordenarlos por su ángulo αp . La
Tabla 4.4 recoge los valores mínimos de separación que deben cumplirse entre los ángulos αpi
y αp i+1 . Como se observa, los valores dependen de la plantilla que ha originado el punto de
interés. La lectura de la tabla informa, por ejemplo, de que entre los ángulos con la palma
de dos puntos de interés consecutivos que correspondan ambos a la plantilla PA debe haber
al menos 14,3◦ de separación, o que entre los ángulos con la palma de dos puntos de interés
consecutivos debe haber al menos 39,8◦ de separación si el primero de ellos se deriva de la
plantilla PD y el segundo de la plantilla PA ; si no se cumple la condición, se estima que ambos
puntos pertenecen al mismo dedo y se eliminará aquél cuyo valor de convolución sea menor.
Las combinaciones para las que no se indica ningún valor no pueden producirse, por el propio
diseño de las plantillas y la ordenación de los puntos según el ángulo con la palma, o no se han
producido en las imágenes utilizadas para el diseño del algoritmo. Su detección conduciría a
actuar sobre la segmentación de la imagen de entrada.
El resultado de la aplicación de las restricciones indicadas en las Tablas 4.2, 4.3 y 4.4 a
los valores v, lp y αp de los puntos de interés es la reducción de éstos a un conjunto de objetos
dedo d̂i en la imagen. A partir de ellos, se determina el gesto, o si no lo hay, mediante el
procesamiento que se describe a continuación.
112
4.2. Identificación y localización de objetos
distancia lp ángulo αp
Tabla 4.2: Valores mínimo y máximo posibles para los valores lp y αp de cada
punto de interés, en función de la plantilla que los origina
plantilla PA
plantilla PB
punto mi
plantilla PA PB PC PD
Tabla 4.4: Separación angular mínima de los ángulos αp de los puntos de interés
mi y mi+1
113
4.3. Características para el reconocimiento
derivados de su relación con otros objetos dedo, que a su vez son de dos tipos:
• los que describen la posición relativa entre objetos dedo:
◦ distancia li d : longitud de la línea que une el objeto d̂i con el objeto d̂i+1 .
◦ ángulo αi d : ángulo con respecto a la horizontal de la línea que une el objeto
d̂i con el objeto d̂i+1 .
• los que evalúan la posición del objeto en la imagen segmentada:
◦ tasa si c : porcentaje de píxeles de la silueta de la mano en un área 5×5 situada
en el centro de la línea que une las posiciones de los objetos d̂i y d̂i+1 , estando
el área orientada en la dirección de dicha línea.
◦ tasa si 1 : porcentaje de píxeles de la silueta de la mano en un área rectangular
3 × 5 situada y orientada en la dirección de la línea que une d̂i con d̂i+1 , con
su centro en una posición de la línea tal que d̂i se encuentre en el perímetro
del rectángulo.
◦ tasa si 2 : porcentaje de píxeles de la silueta de la mano en un área rectangular
3 × 5 situada y orientada en la dirección de la línea que une d̂i con d̂i+1 , con
su centro en una posición de la línea tal que d̂i+1 se encuentre en el perímetro
del rectángulo.
114
4.3. Características para el reconocimiento
dˆ3
v3 dˆ3 s 2c
s3t dˆ2 s22
α2d
v2 s2t l 2d
s21 s12
dˆ2 s1c
l1d
dˆ1 α1d
l3p v1 s 1t s11
l2p
l 1p dˆ1
a) b)
Característica Descripción
Tabla 4.5: Características descriptivas del objeto d̂i extraídas de la imagen de la silueta de la
mano
115
4.3. Características para el reconocimiento
Para definir los modelos de los gestos se han analizado los valores de las características
de cada objeto dedo detectado en las imágenes de entrenamiento de cada uno de los gestos
considerados y en base a los datos obtenidos se ha establecido un conjunto de reglas. Son
las etapas extracción de características y formación de hipótesis del esquema simplificado del
proceso mostrado en la Figura 4.1. Se han llevado a cabo en el marco del proceso iterativo
ya mencionado en la explicación de las etapas previas, el cual, finalmente, ha conducido
a la definición de las características y al ajuste coordinado de los diferentes parámetros
involucrados.
Para cada imagen de cada uno de los gestos, se han calculado las características de cada
objeto dedo. El análisis estadístico de estos datos ha permitido relacionar cada dedo y cada
gesto con un conjunto propio de valores de las características. En este análisis se han estable-
cido 6 zonas diferentes para los valores de las características, cada una de ellas definida por
el rango de percentiles indicado en la Tabla 4.6 y asociada a un grado de confianza de la
representatividad del valor. La zona 1 corresponde a los valores que se encuentran entre el
percentil 25 y el percentil 75. La zona 2 considera un rango de percentiles ligeramente mayor,
el inferior de 20 y y el superior de 80, englobando más valores y situándose en ella aquéllos
que se encuentren en este rango y que no satisfagan la condición de pertenencia a la zona
1. Con las zonas 3, 4, 5 y 6 se aumenta progresivamente el rango de percentiles hasta los
percentiles 0 y 100, que incluye todos los valores que presenta la característica en las imá-
genes de entrenamiento. A esta última zona 6 se asocian los valores que se encuentran entre
el máximo y el mínimo y que no cumplen las condiciones de ninguna de las zonas anteriores.
zona 1 2 3 4 5 6
percentiles [25 75] [20 80] [15 85] [10 90] [5 95] [0 100]
A modo de ejemplo, la Figura 4.19 muestra los diagramas de caja resultantes de la apli-
cación de los percentiles de cada zona a los datos αp de los objetos dedo producidos por la
convolución con la plantilla PA que se asocian al dedo índice d1 . Se aprecia en la figura cómo
el rango de valores se va incrementando en cada zona, hasta incluir todo el rango de valores
de los datos obtenidos de las imágenes de entrenamiento.
Los datos utilizados para la Figura 4.19 son los de los objetos dedo obtenidos con la
plantilla PA que se estima que corresponden al dedo índice d1 en todos los gestos en los que
se emplea este dedo. Para obtenerlos, es necesario relacionar los objetos dedo d̂i con los dedos
dj de la mano: los primeros son resultado del proceso de identificación de objetos y, como se
indicó en el apartado 4.2.4, están ordenados según el ángulo de la línea que une su posición
en la imagen con la de la palma; por su parte, los segundos están identificados como se indicó
116
4.4. Modelo de los gestos
90
86,73
8 86,73
86 86,73 86,73 86,73 86,73
85 85,36
80 80,54
78,69
75 75,96
74,18
72,75
71,57
70
68,2 68,2 68,2 68,2 68,2 68,2
65
64,23 63,43
62,62 61,91
60 60,97
Figura 4.19: Diagramas de caja resultantes de la aplicación de los percentiles de cada zona a
los valores αp del dedo índice d1 obtenidos con la plantilla PA
en la Figura 4.4. Esto implica una transformación de d̂i en los dedos estimados dj en la que
la correspondencia depende, obviamente, del gesto. Por ejemplo, para un gesto que utilice
3 dedos, el proceso de identificación de objetos dedo, si funciona correctamente, dará como
resultado el conjunto de objetos dedo d̂ = {dˆ1 , dˆ2 , dˆ3 }. Sin embargo, no tienen por qué ser
los dedos estimados d = {d1 , d2 , d3 }. Esta asociación sí puede producirse, pero corresponde
únicamente a Gesto 6. Si la imagen en la que se han identificado los tres objetos dedo muestra
Gesto 3, dˆ1 es d5 , dˆ2 es d1 y dˆ3 es d2 ; si la imagen en la que se han identificado los tres objetos
dedo muestra Gesto 8, dˆ1 es d1 , dˆ2 es d3 y dˆ3 es d4 .
En el análisis de los valores de las características extraídos de las imágenes de entre-
namiento se ha tenido en cuenta cuáles son comunes a qué gestos, y en función de ello se
han agrupado los datos de las características resultantes de las imágenes de aquellos gestos
para los cuales tales características no son relevantes en su diferenciación. En el caso de la
Figura 4.19, el ángulo αp del dedo d1 se ha considerado independiente de que se haya obtenido
de una imagen que contenga Gesto 1, Gesto 4 o de cualquier otro que utilice d1 . Por esta
razón, los diagramas de caja se calculan de los valores αp de todos los d̂i que se asocian a d1
y que se hayan producido con la plantilla PA .
A este respecto, cada característica tiene su propia situación. Por ejemplo, los rangos de
valores para la distancia ld del dedo d1 —es decir, la longitud de la línea que une el dedo
índice con el siguiente dedo— son diferentes si se trata de Gesto 2, en el que el dedo siguiente
es el dedo corazón d2 , que si se trata de Gesto 8, en el que el dedo siguiente es el dedo anular
d3 , o si se trata de Gesto u, en el que el dedo siguiente es el meñique d4 . La Figura 4.20
muestra los diagramas de caja para los percentiles de cada zona de la característica ld del
dedo d1 cuando el siguiente dedo es d2 (Figura 4.20a) y cuando el siguiente dedo es el d3
(Figura 4.20b).
117
4.4. Modelo de los gestos
25
20 20,35
19,65 19,65 19,65 19,65 19,65 19,65
18,72 19,13 19,41
18,44 18,25
17,26
16,12 15,78 15,78 15,78 15,78 15,78 15,78
15 15,1
14,32 14,32 13,93
13,92
13,34 13,02 13,02
12,2
11,7 11,7 11,7 11,7 11,7 11,7 11 11 11 11 11 11
10,44 10,3 10,2 9,85
10
9,49
8,06 8,06 8,06 8,06 8,06 8,06
5
zona 1 zona 2 zona 3 zona 4 zona 5 zona 6 zona 1 zona 2 zona 3 zona 4 zona 5 zona 6
a) b)
Figura 4.20: Diagramas de caja resultantes de la aplicación de los percentiles de cada zona a
los valores ld del dedo d1 obtenidos a partir de la convolución de las imágenes
de entrenamiento con la plantilla PA : a) en gestos que utilizan los dedos índice y
corazón; b) en gestos que utilizan los dedos índice y anular, y no el dedo corazón
imágenes de entrenamiento del gesto, es decir, que estén, al menos, en la zona de confianza 6
de la Tabla 4.6. El segundo nivel es el cálculo de una puntuación global de la imagen, como
estimador de su similitud con el gesto.
los valores de las características c1−9 de dˆ1 , asociado en este gesto al dedo índice, deben
encontrarse dentro del rango de valores de la fila correspondiente a la zona 6 del dedo d1
los valores de las características c1−4 de dˆ2 , asociado en este gesto al dedo meñique,
deben encontrarse dentro del rango de valores de la fila correspondiente a la zona 6 del
dedo d4 de la plantilla PA o de la plantilla PB , según la que haya originado dˆ2 .
118
4.4. Modelo de los gestos
Gesto 1
Plantilla PA
dedo zona c1 c2 c3 c4
Gesto i
Plantilla PA
dedo zona c1 c2 c3 c4
Gesto j
Plantilla PB
dedo zona c1 c2 c3 c4
119
4.4. Modelo de los gestos
Gesto p
Plantilla PA
dedo zona c1 c2 c3 c4
Plantilla PC
dedo zona c1 c2 c3 c4
Plantilla PD
dedo zona c1 c2 c3 c4
120
4.4. Modelo de los gestos
Gesto 2
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
Gesto u
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [23,8 27,8] [191,4 198,2] [0 0] [64 93] [38 72]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [22,4 28,3] [190,0 201,2] [0 0] [54 93] [32 79]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [20,0 30,1] [189,3 202,6] [0 0] [48 98] [28 90]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [18,7 31,3] [186,8 203,7] [0 0] [47 100] [21 92]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [14,7 32,0] [166,9 204,2] [0 33] [31 100] [13 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 36,1] [143,1 204,2] [0 56] [7 100] [6 100]
Plantilla PB
dedo zona c1 c2 c3 c4
121
4.4. Modelo de los gestos
Gesto L
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [84 97] [83 90] [22,0 23,4] [26,4 30,1] [21,7 23,4] [113,0 119,5] [4 9] [93 100] [90 100]
2 [82 101] [81 91] [20,9 24,1] [24,3 33,8] [21,2 23,9] [112,9 120,3] [4 1] [92 100] [82 100]
3 [80 109] [80 94] [19,5 24,8] [19,2 37,1] [20,5 24,5] [111,8 122,5] [3 16] [92 100] [79 100]
d5
4 [79 120] [79 96] [18,8 25,7] [18,3 42,6] [20,1 25,1] [110,3 125,2] [1 16] [86 100] [78 100]
5 [76 122] [78 98] [18,4 26,0] [17,0 45,4] [19,2 25,7] [108,6 127,0] [0 16] [80 100] [77 100]
6 [75 129] [76 100] [18,1 26,6] [14,6 46,7] [18,8 25,7] [106,9 127,9] [0 20] [79 100] [77 100]
Plantilla PC
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [80 99] [55 61] [24,4 26,4] [15,2 31,6] [22,5 27,5] [114,4 123,7] [0 0] [60 85] [100 100]
2 [77 102] [54 62] [24,1 27,0] [10,1 32,8] [21,8 28,6] [112,2 126,3] [0 1] [59 86] [94 100]
3 [73 107] [52 63] [23,7 27,6] [8,9 36,0] [20,9 29,1] [110,4 127,3] [0 4] [50 90] [87 100]
d5
4 [64 109] [47 66] [22,7 28,2] [6,6 41,2] [18,5 29,4] [106,5 128,6] [0 4] [46 93] [81 100]
5 [62 113] [35 75] [22,0 29,3] [3,7 43,8] [17,3 32,0] [100,4 130,9] [0 11] [21 92] [76 100]
6 [58 116] [29 91] [21,2 29,7] [−1,2 45,1] [16,3 34,5] [100,0 135,2] [0 12] [0 100] [69 100]
Plantilla PD
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [113 125] [60 73] [28,9 31,9] [−8,1 −5,4] [38,3 43,0] [103,0 114,1] [0 0] [100 100] [90 97]
2 [108 128] [58 76] [28,3 32,0] [−9,2 −4,3] [37,6 43,3] [102,6 116,0] [0 0] [100 100] [88 99]
3 [106 130] [57 81] [27,5 32,7] [−11,0 −3,6] [36,9 43,6] [103,8 117,3] [0 0] [100 100] [87 100]
d5
4 [103 133] [52 86] [26,2 33,3] [−11,6 −3,3] [36,1 44,9] [102,0 119,3] [0 0] [100 100] [86 100]
5 [99 134] [50 89] [25,9 33,8] [−12,7 2,0] [34,0 45,4] [100,8 123,6] [0 0] [100 100] [86 100]
6 [90 137] [49 95] [25,0 34,6] [−14,1 11,6] [30,9 45,4] [98,2 125,5] [0 0] [86 100] [83 100]
122
4.4. Modelo de los gestos
Gesto 3
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
1 [84 97] [83 90] [22,0 23,4] [26,4 30,1] [21,7 23,4] [113,0 119,5] [4 9] [93 100] [90 100]
2 [82 101] [81 91] [20,9 24,1] [24,3 33,8] [21,2 23,9] [112,9 120,3] [4 1] [92 100] [82 100]
3 [80 109] [80 94] [19,5 24,8] [19,2 37,1] [20,5 24,5] [111,8 122,5] [3 16] [92 100] [79 100]
d5
4 [79 120] [79 96] [18,8 25,7] [18,3 42,6] [20,1 25,1] [110,3 125,2] [1 16] [86 100] [78 100]
5 [76 122] [78 98] [18,4 26,0] [17,0 45,4] [19,2 25,7] [108,6 127,0] [0 16] [80 100] [77 100]
6 [75 129] [76 100] [18,1 26,6] [14,6 46,7] [18,8 25,7] [106,9 127,9] [0 20] [79 100] [77 100]
Plantilla PC
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [80 99] [55 61] [24,4 26,4] [15,2 31,6] [22,5 27,5] [114,4 123,7] [0 0] [60 85] [100 100]
2 [77 102] [54 62] [24,1 27,0] [10,1 32,8] [21,8 28,6] [112,2 126,3] [0 1] [59 86] [94 100]
3 [73 107] [52 63] [23,7 27,6] [8,9 36,0] [20,9 29,1] [110,4 127,3] [0 4] [50 90] [87 100]
d5
4 [64 109] [47 66] [22,7 28,2] [6,6 41,2] [18,5 29,4] [106,5 128,6] [0 4] [46 93] [81 100]
5 [62 113] [35 75] [22,0 29,3] [3,7 43,8] [17,3 32,0] [100,4 130,9] [0 11] [21 92] [76 100]
6 [58 116] [29 91] [21,2 29,7] [−1,2 45,1] [16,3 34,5] [100,0 135,2] [0 12] [0 100] [69 100]
Plantilla PD
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [113 125] [60 73] [28,9 31,9] [−8,1 −5,4] [38,3 43,0] [103,0 114,1] [0 0] [100 100] [90 97]
2 [108 128] [58 76] [28,3 32,0] [−9,2 −4,3] [37,6 43,3] [102,6 116,0] [0 0] [100 100] [88 99]
3 [106 130] [57 81] [27,5 32,7] [−11,0 −3,6] [36,9 43,6] [103,8 117,3] [0 0] [100 100] [87 100]
d5
4 [103 133] [52 86] [26,2 33,3] [−11,6 −3,3] [36,1 44,9] [102,0 119,3] [0 0] [100 100] [86 100]
5 [99 134] [50 89] [25,9 33,8] [−12,7 2,0] [34,0 45,4] [100,8 123,6] [0 0] [100 100] [86 100]
6 [90 137] [49 95] [25,0 34,6] [−14,1 11,6] [30,9 45,4] [98,2 125,5] [0 0] [86 100] [83 100]
123
4.4. Modelo de los gestos
Gesto c
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [23,8 27,8] [191,4 198,2] [0 0] [64 93] [38 72]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [22,4 28,3] [190,0 201,2] [0 0] [54 93] [32 79]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [20,0 30,1] [189,3 202,6] [0 0] [48 98] [28 90]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [18,7 31,3] [186,8 203,7] [0 0] [47 100] [21 92]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [14,7 32,0] [166,9 204,2] [0 33] [31 100] [13 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 36,1] [143,1 204,2] [0 56] [7 100] [6 100]
1 [84 97] [83 90] [22,0 23,4] [26,4 30,1] [21,7 23,4] [113,0 119,5] [4 9] [93 100] [90 100]
2 [82 101] [81 91] [20,9 24,1] [24,3 33,8] [21,2 23,9] [112,9 120,3] [4 1] [92 100] [82 100]
3 [80 109] [80 94] [19,5 24,8] [19,2 37,1] [20,5 24,5] [111,8 122,5] [3 16] [92 100] [79 100]
d5
4 [79 120] [79 96] [18,8 25,7] [18,3 42,6] [20,1 25,1] [110,3 125,2] [1 16] [86 100] [78 100]
5 [76 122] [78 98] [18,4 26,0] [17,0 45,4] [19,2 25,7] [108,6 127,0] [0 16] [80 100] [77 100]
6 [75 129] [76 100] [18,1 26,6] [14,6 46,7] [18,8 25,7] [106,9 127,9] [0 20] [79 100] [77 100]
Plantilla PB
dedo zona c1 c2 c3 c4
Plantilla PC
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [80 99] [55 61] [24,4 26,4] [15,2 31,6] [22,5 27,5] [114,4 123,7] [0 0] [60 85] [100 100]
2 [77 102] [54 62] [24,1 27,0] [10,1 32,8] [21,8 28,6] [112,2 126,3] [0 1] [59 86] [94 100]
3 [73 107] [52 63] [23,7 27,6] [8,9 36,0] [20,9 29,1] [110,4 127,3] [0 4] [50 90] [87 100]
d5
4 [64 109] [47 66] [22,7 28,2] [6,6 41,2] [18,5 29,4] [106,5 128,6] [0 4] [46 93] [81 100]
5 [62 113] [35 75] [22,0 29,3] [3,7 43,8] [17,3 32,0] [100,4 130,9] [0 11] [21 92] [76 100]
6 [58 116] [29 91] [21,2 29,7] [−1,2 45,1] [16,3 34,5] [100,0 135,2] [0 12] [0 100] [69 100]
Plantilla PD
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [113 125] [60 73] [28,9 31,9] [−8,1 −5,4] [38,3 43,0] [103,0 114,1] [0 0] [100 100] [90 97]
2 [108 128] [58 76] [28,3 32,0] [−9,2 −4,3] [37,6 43,3] [102,6 116,0] [0 0] [100 100] [88 99]
3 [106 130] [57 81] [27,5 32,7] [−11,0 −3,6] [36,9 43,6] [103,8 117,3] [0 0] [100 100] [87 100]
d5
4 [103 133] [52 86] [26,2 33,3] [−11,6 −3,3] [36,1 44,9] [102,0 119,3] [0 0] [100 100] [86 100]
5 [99 134] [50 89] [25,9 33,8] [−12,7 2,0] [34,0 45,4] [100,8 123,6] [0 0] [100 100] [86 100]
6 [90 137] [49 95] [25,0 34,6] [−14,1 11,6] [30,9 45,4] [98,2 125,5] [0 0] [86 100] [83 100]
124
4.4. Modelo de los gestos
Gesto 4
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
1 [118 138] [80 86] [31,7 34,1] [82,6 89,7] [10,5 12,7] [179,6 198,9] [0 19] [67 100] [20 73]
2 [109 142] [77 88] [31,0 35,3] [81,4 90,8] [9,9 13,1] [176,7 201,8] [0 23] [64 100] [13 75]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7] [9,7 14,1] [174,2 204,0] [0 28] [59 100] [6 79]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7] [9,1 14,9] [170,5 206,6] [0 39] [50 100] [5 85]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5] [8,9 15,5] [155,7 213,5] [0 45] [41 100] [0 97]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7] [8,4 19,0] [145,0 218,7] [0 62] [27 100] [0 100]
1 [72 105] [67 79] [30,8 34,1] [102,7 107,1] [13,2 16,0] [213,4 230,2] [5 21] [90 100] [45 82]
2 [70 116] [50 81] [28,6 35,6] [100,4 107,8] [12,3 16,9] [209,5 233,3] [3 24] [86 100] [38 86]
3 [66 127] [44 82] [27,9 36,2] [98,0 108,6] [11,1 18,1] [203,9 237,9] [1 32] [77 100] [35 86]
d3
4 [64 136] [41 86] [25,6 37,1] [97,2 109,3] [9,9 19,7] [190,0 240,1] [1 35] [63 100] [16 87]
5 [60 139] [36 61] [24,4 37,8] [96,5 112,1] [9,4 20,6] [175,3 245,9] [0 41] [58 100] [6 97]
6 [55 144] [29 100] [22,1 38,6] [95,0 114,4] [9,1 21,5] [145,0 250,0] [0 48] [27 100] [0 100]
Plantilla PB
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [70 81] [58 65] [31,8 35,3] [112,8 117,7] [13,8 15,5] [239,7 246,8] [3 11] [78 89] [35 60]
2 [67 84] [56 67] [31,2 36,1] [111,0 118,5] [13,2 16,1] [237,7 248,9] [2 13] [77 90] [32 63]
3 [64 89] [53 72] [30,6 36,5] [110,4 120,7] [12,4 16,5] [232,0 251,9] [0 15] [76 94] [30 69]
d3
4 [63 96] [50 79] [30,0 37,9] [109,2 121,8] [11,2 16,9] [225,7 255,8] [0 23] [74 97] [28 78]
5 [61 99] [48 84] [29,3 38,4] [107,0 122,6] [10,0 17,6] [181,0 258,4] [0 29] [52 100] [20 89]
6 [59 102] [45 87] [27,1 39,2] [106,5 123,8] [9,1 18,2] [145,0 259,4] [0 48] [27 100] [20 100]
125
4.4. Modelo de los gestos
Gesto 5
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
1 [118 138] [80 86] [31,7 34,1] [82,6 89,7] [10,5 12,7] [179,6 198,9] [0 19] [67 100] [20 73]
2 [109 142] [77 88] [31,0 35,3] [81,4 90,8] [9,9 13,1] [176,7 201,8] [0 23] [64 100] [13 75]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7] [9,7 14,1] [174,2 204,0] [0 28] [59 100] [6 79]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7] [9,1 14,9] [170,5 206,6] [0 39] [50 100] [5 85]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5] [8,9 15,5] [155,7 213,5] [0 45] [41 100] [0 97]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7] [8,4 19,0] [145,0 218,7] [0 62] [27 100] [0 100]
1 [72 105] [67 79] [30,8 34,1] [102,7 107,1] [13,2 16,0] [213,4 230,2] [5 21] [90 100] [45 82]
2 [70 116] [50 81] [28,6 35,6] [100,4 107,8] [12,3 16,9] [209,5 233,3] [3 24] [86 100] [38 86]
3 [66 127] [44 82] [27,9 36,2] [98,0 108,6] [11,1 18,1] [203,9 237,9] [1 32] [77 100] [35 86]
d3
4 [64 136] [41 86] [25,6 37,1] [97,2 109,3] [9,9 19,7] [190,0 240,1] [1 35] [63 100] [16 87]
5 [60 139] [36 61] [24,4 37,8] [96,5 112,1] [9,4 20,6] [175,3 245,9] [0 41] [58 100] [6 97]
6 [55 144] [29 100] [22,1 38,6] [95,0 114,4] [9,1 21,5] [145,0 250,0] [0 48] [27 100] [0 100]
1 [84 97] [83 90] [22,0 23,4] [26,4 30,1] [21,7 23,4] [113,0 119,5] [4 9] [93 100] [90 100]
2 [82 101] [81 91] [20,9 24,1] [24,3 33,8] [21,2 23,9] [112,9 120,3] [4 1] [92 100] [82 100]
3 [80 109] [80 94] [19,5 24,8] [19,2 37,1] [20,5 24,5] [111,8 122,5] [3 16] [92 100] [79 100]
d5
4 [79 120] [79 96] [18,8 25,7] [18,3 42,6] [20,1 25,1] [110,3 125,2] [1 16] [86 100] [78 100]
5 [76 122] [78 98] [18,4 26,0] [17,0 45,4] [19,2 25,7] [108,6 127,0] [0 16] [80 100] [77 100]
6 [75 129] [76 100] [18,1 26,6] [14,6 46,7] [18,8 25,7] [106,9 127,9] [0 20] [79 100] [77 100]
Plantilla PB
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [70 81] [58 65] [31,8 35,3] [112,8 117,7] [13,8 15,5] [239,7 246,8] [3 11] [78 89] [35 60]
2 [67 84] [56 67] [31,2 36,1] [111,0 118,5] [13,2 16,1] [237,7 248,9] [2 13] [77 90] [32 63]
3 [64 89] [53 72] [30,6 36,5] [110,4 120,7] [12,4 16,5] [232,0 251,9] [0 15] [76 94] [30 69]
d3
4 [63 96] [50 79] [30,0 37,9] [109,2 121,8] [11,2 16,9] [225,7 255,8] [0 23] [74 97] [28 78]
5 [61 99] [48 84] [29,3 38,4] [107,0 122,6] [10,0 17,6] [181,0 258,4] [0 29] [52 100] [20 89]
6 [59 102] [45 87] [27,1 39,2] [106,5 123,8] [9,1 18,2] [145,0 259,4] [0 48] [27 100] [20 100]
126
4.4. Modelo de los gestos
Gesto 5 (continuación)
Plantilla PC
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [80 99] [55 61] [24,4 26,4] [15,2 31,6] [22,5 27,5] [114,4 123,7] [0 0] [60 85] [100 100]
2 [77 102] [54 62] [24,1 27,0] [10,1 32,8] [21,8 28,6] [112,2 126,3] [0 1] [59 86] [94 100]
3 [73 107] [52 63] [23,7 27,6] [8,9 36,0] [20,9 29,1] [110,4 127,3] [0 4] [50 90] [87 100]
d5
4 [64 109] [47 66] [22,7 28,2] [6,6 41,2] [18,5 29,4] [106,5 128,6] [0 4] [46 93] [81 100]
5 [62 113] [35 75] [22,0 29,3] [3,7 43,8] [17,3 32,0] [100,4 130,9] [0 11] [21 92] [76 100]
6 [58 116] [29 91] [21,2 29,7] [−1,2 45,1] [16,3 34,5] [100,0 135,2] [0 12] [0 100] [69 100]
Plantilla PD
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [113 125] [60 73] [28,9 31,9] [−8,1 −5,4] [38,3 43,0] [103,0 114,1] [0 0] [100 100] [90 97]
2 [108 128] [58 76] [28,3 32,0] [−9,2 −4,3] [37,6 43,3] [102,6 116,0] [0 0] [100 100] [88 99]
3 [106 130] [57 81] [27,5 32,7] [−11,0 −3,6] [36,9 43,6] [103,8 117,3] [0 0] [100 100] [87 100]
d5
4 [103 133] [52 86] [26,2 33,3] [−11,6 −3,3] [36,1 44,9] [102,0 119,3] [0 0] [100 100] [86 100]
5 [99 134] [50 89] [25,9 33,8] [−12,7 2,0] [34,0 45,4] [100,8 123,6] [0 0] [100 100] [86 100]
6 [90 137] [49 95] [25,0 34,6] [−14,1 11,6] [30,9 45,4] [98,2 125,5] [0 0] [86 100] [83 100]
127
4.4. Modelo de los gestos
Gesto 6
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
1 [118 138] [80 86] [31,7 34,1] [82,6 89,7] [10,5 12,7] [179,6 198,9] [0 19] [67 100] [20 73]
2 [109 142] [77 88] [31,0 35,3] [81,4 90,8] [9,9 13,1] [176,7 201,8] [0 23] [64 100] [13 75]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7] [9,7 14,1] [174,2 204,0] [0 28] [59 100] [6 79]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7] [9,1 14,9] [170,5 206,6] [0 39] [50 100] [5 85]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5] [8,9 15,5] [155,7 213,5] [0 45] [41 100] [0 97]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7] [8,4 19,0] [145,0 218,7] [0 62] [27 100] [0 100]
Plantilla PB
dedo zona c1 c2 c3 c4
128
4.4. Modelo de los gestos
Gesto 7
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [10,4 13,3] [162,1 169,7] [0 12] [60 73] [68 89]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [10,3 13,9] [160,0 171,3] [0 19] [53 79] [64 96]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [10,2 14,3] [156,7 172,7] [0 22] [47 89] [56 100]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [9,9 15,1] [153,0 177,6] [0 32] [41 95] [51 100]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [9,5 16,1] [147,5 180,8] [0 59] [25 100] [38 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [8,1 19,7] [138,1 187,1] [0 80] [0 100] [21 100]
1 [121 142] [80 86] [31,7 34,1] [82,6 89,7] [18,4 21,5] [212,3 221,2] [0 0] [87 100] [47 67]
2 [115 144] [77 88] [31,0 35,3] [81,4 90,8] [17,6 22,0] [211,5 221,9] [0 0] [84 100] [46 74]
3 [104 145] [75 91] [30,4 36,2] [80,6 91,7] [17,0 22,7] [209,9 223,0] [0 0] [78 100] [43 85]
d2
4 [96 152] [70 93] [29,2 37,3] [79,1 94,7] [16,7 23,7] [208,7 223,8] [0 20] [76 100] [37 89]
5 [85 156] [63 96] [28,0 40,6] [77,9 100,5] [11,7 24,9] [177,9 225,9] [0 34] [52 100] [14 97]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7] [9,0 25,5] [145,0 227,3] [0 62] [27 100] [0 100]
Plantilla PB
dedo zona c1 c2 c3 c4
129
4.4. Modelo de los gestos
Gesto 8
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [105 135] [78 86] [31,2 33,4] [64,2 71,6] [14,3 18,3] [176,8 187,6] [0 0] [63 87] [60 73]
2 [101 142] [76 87] [30,2 34,5] [63,4 72,8] [13,9 18,7] [174,4 189,6] [0 0] [61 91] [52 75]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2] [13,0 19,1] [170,1 192,9] [0 1] [47 100] [40 86]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0] [13,0 19,4] [165,4 194,0] [0 5] [45 100] [38 90]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7] [12,2 20,4] [157,9 198,0] [0 37] [26 100] [25 100]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7] [11,0 22,1] [143,1 202,6] [0 66] [0 100] [13 100]
1 [77 114] [67 79] [30,8 34,1] [102,7 107,1] [13,2 16,0] [213,4 230,2] [5 21] [90 100] [45 82]
2 [72 126] [50 81] [28,6 35,6] [100,4 107,8] [12,3 16,9] [209,5 233,3] [3 24] [86 100] [38 86]
3 [68 134] [44 82] [27,9 36,2] [98,0 108,6] [11,1 18,1] [203,9 237,9] [1 32] [77 100] [35 86]
d3
4 [64 139] [41 86] [25,6 37,1] [97,2 109,3] [9,9 19,7] [190,0 240,1] [1 35] [63 100] [16 87]
5 [62 140] [36 61] [24,4 37,8] [96,5 112,1] [9,4 20,6] [175,3 245,9] [0 41] [58 100] [6 97]
6 [55 144] [29 100] [22,1 38,6] [95,0 114,4] [9,1 21,5] [145,0 250,0] [0 48] [27 100] [0 100]
Plantilla PB
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [70 81] [58 65] [31,8 35,3] [112,8 117,7] [13,8 15,5] [239,7 246,8] [3 11] [78 89] [35 60]
2 [67 84] [56 67] [31,2 36,1] [111,0 118,5] [13,2 16,1] [237,7 248,9] [2 13] [77 90] [32 63]
3 [64 89] [53 72] [30,6 36,5] [110,4 120,7] [12,4 16,5] [232,0 251,9] [0 15] [76 94] [30 69]
d3
4 [63 96] [50 79] [30,0 37,9] [109,2 121,8] [11,2 16,9] [225,7 255,8] [0 23] [74 97] [28 78]
5 [61 99] [48 84] [29,3 38,4] [107,0 122,6] [10,0 17,6] [181,0 258,4] [0 29] [52 100] [20 89]
6 [59 102] [45 87] [27,1 39,2] [106,5 123,8] [9,1 18,2] [145,0 259,4] [0 48] [27 100] [20 100]
130
4.4. Modelo de los gestos
Gesto 9
Plantilla PA
dedo zona c1 c2 c3 c4 c5 c6 c7 c8 c9
1 [118 138] [80 86] [31,7 34,1] [82,6 89,7] [10,5 12,7] [179,6 198,9] [0 19] [67 100] [20 73]
2 [109 142] [77 88] [31,0 35,3] [81,4 90,8] [9,9 13,1] [176,7 201,8] [0 23] [64 100] [13 75]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7] [9,7 14,1] [174,2 204,0] [0 28] [59 100] [6 79]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7] [9,1 14,9] [170,5 206,6] [0 39] [50 100] [5 85]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5] [8,9 15,5] [155,7 213,5] [0 45] [41 100] [0 97]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7] [8,4 19,0] [145,0 218,7] [0 62] [27 100] [0 100]
1 [72 105] [67 79] [30,8 34,1] [102,7 107,1] [13,2 16,0] [213,4 230,2] [5 21] [90 100] [45 82]
2 [70 116] [50 81] [28,6 35,6] [100,4 107,8] [12,3 16,9] [209,5 233,3] [3 24] [86 100] [38 86]
3 [66 127] [44 82] [27,9 36,2] [98,0 108,6] [11,1 18,1] [203,9 237,9] [1 32] [77 100] [35 86]
d3
4 [64 136] [41 86] [25,6 37,1] [97,2 109,3] [9,9 19,7] [190,0 240,1] [1 35] [63 100] [16 87]
5 [60 139] [36 61] [24,4 37,8] [96,5 112,1] [9,4 20,6] [175,3 245,9] [0 41] [58 100] [6 97]
6 [55 144] [29 100] [22,1 38,6] [95,0 114,4] [9,1 21,5] [145,0 250,0] [0 48] [27 100] [0 100]
Plantilla PB
dedo zona c1 c2 c3 c4
1 [70 81] [58 65] [31,8 35,3] [112,8 117,7] [13,8 15,5] [239,7 246,8] [3 11] [78 89] [35 60]
2 [67 84] [56 67] [31,2 36,1] [111,0 118,5] [13,2 16,1] [237,7 248,9] [2 13] [77 90] [32 63]
3 [64 89] [53 72] [30,6 36,5] [110,4 120,7] [12,4 16,5] [232,0 251,9] [0 15] [76 94] [30 69]
d3
4 [63 96] [50 79] [30,0 37,9] [109,2 121,8] [11,2 16,9] [225,7 255,8] [0 23] [74 97] [28 78]
5 [61 99] [48 84] [29,3 38,4] [107,0 122,6] [10,0 17,6] [181,0 258,4] [0 29] [52 100] [20 89]
6 [59 102] [45 87] [27,1 39,2] [106,5 123,8] [9,1 18,2] [145,0 259,4] [0 48] [27 100] [20 100]
131
4.4. Modelo de los gestos
zona 1 2 3 4 5 6
percentiles [25 75] [20 80] [15 85] [10 90] [5 95] [0 100]
puntuación 10 8 6 4 2 1
Tabla 4.22: Puntuación asignada a los rangos de percentiles considerados para los valores de
las características
La puntuación global para un gesto se calcula como la suma ponderada de las puntuaciones
de todas las características, cada una de ellas con un peso función de su relevancia a la hora
de distinguir el gesto en cuestión de los demás. Esta propuesta se basa en que, para cada
gesto, las puntuaciones de las características de las imágenes del gesto tienen distribuciones
diferentes entre sí, y a su vez también diferentes a las de las imágenes que no contienen
el gesto. Por tanto, la capacidad de las características para diferenciar un gesto tienen un
impacto diferente según de qué gesto se trate.
La Figura 4.21 compara la distribución de las puntuaciones de las características c5 a
c9 del dedo d2 en gestos de 3 dedos. Cada subfigura muestra una característica, y en ella
hay tantos pares de diagramas de caja como gestos de 3 dedos. En cada par de diagramas
de caja, el de la izquierda corresponde a las puntuaciones de las imágenes que contienen el
gesto indicado y el de la derecha a las imágenes de los otros gestos. Las puntuaciones han
sido obtenidas utilizando los datos propios del gesto indicado. Observando en la figura los
132
4.4. Modelo de los gestos
pares de diagramas de caja de las características de un gesto, se aprecia, por medio de las
diferentes distribuciones de las puntuaciones, cómo, por ejemplo, para distinguir Gesto 3 es
más relevante la característica c6 que la c8 , que a su vez lo es más que la c9 , la c5 y la c7 . Por
su parte, observando el comportamiento de una determinada característica en los diferentes
gestos, se detecta que, por ejemplo, c7 es más relevante para distinguir Gesto 9, Gesto c y
Gesto 7 que Gesto 6 y Gesto 3.
Para la determinación del conjunto de pesos que ponderan la puntuación de las carac-
terísticas de cada dedo para obtener una puntuación global para cada gesto se ha analizado
la distribución de las puntuaciones, comparando las de las imágenes del gesto en cuestión con
las de las imágenes de otros gestos, y los histogramas de la puntuación global, tanto de las
obtenidas por las imágenes que corresponden al gesto como de las obtenidas por las imágenes
del conjunto de otros gestos.
La Figura 4.22 muestra visualmente la comparación de las distribuciones de las pun-
tuaciones de las características de los dedos implicados en el gesto 3. Se compone de tres
subfiguras, una para cada dedo en el gesto, en las que se recogen, en cada una, 9 pares de
diagramas de caja —4 pares en el último dedo, dado que las características relativas al dedo
siguiente no son aplicables—, uno para cada una de las características que forman parte del
cálculo de la puntuación de una imagen para un gesto. Estos diagramas de caja representan
información sobre la distribución de las puntuaciones, correspondiendo el de la izquierda de
cada par a las puntuaciones de las imágenes del gesto que se estudia (Gesto 3 en esta gráfica
de ejemplo) y el de la derecha a las puntuaciones de las imágenes de los otros gestos con los
que se realiza la comparación (en este caso, esos otros gestos son los restantes gestos de 3
dedos).
Por su parte, la Figura 4.23 muestra un ejemplo de los histogramas de las puntuaciones
obtenidas por las imágenes que contienen el gesto y por las imágenes que no contienen
el gesto. Cada barra centrada en el número n representa el porcentaje, indicado sobre la
correspondiente barra, de imágenes de cada tipo que obtienen una puntuación en el rango
[n − 0,5, n + 0,5], siendo 0 y 10 los límites inferior y superior, respectivamente.
El proceso de determinación de los pesos ha perseguido separar los histogramas de ambas
puntuaciones y minimizar su solapamiento, utilizando como referencia para su ajuste la in-
formación de la distribución de las puntuaciones de las características. El resultado de este
proceso son los pesos de la Tabla 4.23, donde se indica para cada gesto un conjunto de
9 × ndedos pesos pci , siendo ndedos el número de dedos implicados en el gesto. En cada gesto
sólo hay pesos para las características de los dedos que intervienen en el gesto. Además, las
características c5−9 , cuyo valor depende la posición del dedo siguiente, no son de aplicación
para el último dedo del gesto y por ello en tal caso no se indica ningún valor en la tabla.
Algunos pesos toman valor 0, lo cual quiere decir que esa característica de ese dedo no tiene
ninguna utilidad para distinguir ese gesto de los demás. La Tabla 4.23 no indica valores para
Gesto 4 y para Gesto 5. Esto es debido a que son los únicos gestos de 4 y 5 dedos, respecti-
vamente, considerados, y por tanto no es necesaria una puntuación. Tampoco se contempla
el cálculo de la puntuación para Gesto p dado que, aunque hay más gestos de un único dedo,
no es posible que se satisfagan simultáneamente los valores de la zona 6 de la Tabla 4.10 y los
de la Tablas 4.7 o 4.8, los otros dos gestos de un dedo para los que hay resultados asociados
a la plantilla PA . La Figura 4.24 muestra el cambio de los histogramas de las puntuaciones
consecuencia del ajuste de los pesos, desde una situación inicial en la que todos son iguales
hasta la producida por los pesos de la Tabla 4.23.
133
4.4. Modelo de los gestos
Característica d2 – c5
10 10 10 10 10 10 10 10 10 10 10
6 6 6 6 6 6
5
4 4 4 4 4
2,5
2 2 2 2
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0
Característica d2 – c6
10 10 10 10 10 10 10 10 10 10 10 10
8 8
6,5
6 6 6 6
5
4 4 4 4 4
2,5
2 2
1 1 1 1 1 1
0 0 0 0 0 0 0
Característica d2 – c7
10 10 10 10 10 10 10 10 10 10 10 10 10
8 8 8
7
6 6 6 6
4 4 4 4 4
2 2
1 1 1 1 1
0 0 0 0 0 0
Característica d2 – c8
10 10 10 10 10 10 10 10 10 10 10 10 10
9
8 8
6 6 6
4 4 4 4
2 2 2 2 2 2
1 1 1 1 1 1
0 0 0 0 0 0
Característica d2 – c9
10 10 10 10 10 10 10 10 10 10 10 10 10
8 8 8
6 6 6 6 6 6
5
4 4 4 4 4 4
2 2 2 2 2
1 1 1 1 1 1 1
0 0 0 0 0 0
Figura 4.21: Diagramas de caja de las puntuaciones de las características c5−9 de cada uno
de los gestos de 3 dedos en comparación con los demás. En cada par de dia-
gramas de un gesto, el de la izquierda corresponde a las puntuaciones de las
características de las imágenes del gesto y el de la derecha a las puntuaciones de
las características de las imágenes de los restantes gestos.
134
4.4. Modelo de los gestos
Gesto 3 – d5
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
9
8 8 8
7
6 6 6
4 4 4 4 4 4 4
2 2 2
1,5
1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
c1 c2 c3 c4 c5 c6 c7 c8 c9
Gesto 3 – d1
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
8 8
6 6 6 6 6
4 4 4 4 4 4 4 4 4 4 4
2 2
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0
c1 c2 c3 c4 c5 c6 c7 c8 c9
Gesto 3 – d2
10 10 10
1 10 10 10 10
1 10
8 8 8
6 6
4 4 4 4 4 44
2
1 1 1 1
0 0 0 0 0
c1 c2 c3 c4
Figura 4.22: Diagramas de caja de las puntuaciones de las características para los dedos
implicados en Gesto 3. El título de cada subfigura indica el dedo estimado. En
cada par de diagramas de caja, el de la izquierda corresponde a las imágenes del
gesto y el de la derecha a las imágenes de los restantes gestos.
43
32
25 23 27
16
6 10
5 3 5 4
1
0 1 2 3 4 5 6 7 8 9 10
Histograma Histograma
puntuaciones imágenes puntuaciones imágenes
de otros gestos del gesto
135
4.4. Modelo de los gestos
d1 d4 d4
pc1 23,5 pc1 13,8 p c1 36,4
pc2 5,9 pc2 17,3 p c2 27,2
pc3 35,3 pc3 31 pc3 18,2
pc4 35,3 pc4 37,9 pc4 18,2
d1 d2 d1 d5 d1 d4
pc1 4,3 5,7 pc1 7,9 5 p c1 5,1 5,1
pc2 5,7 7,1 pc2 8,2 5,2 p c2 0 3,4
pc3 11,4 11,6 pc3 10,8 5,5 p c3 10,2 11,9
pc4 8,6 11,4 pc4 11 5,5 p c4 6,7 13,6
pc5 11,4 pc5 5,9 p c5 16,9
pc6 10 pc6 5,6 p c6 20,3
pc7 0 pc7 9,8 p c7 3,4
pc8 7,1 pc8 9,8 pc8 0
pc9 5,7 pc9 9,8 pc9 3,4
d1 d2 d5 d1 d2 d3 d1 d2 d4
pc1 0 1,7 1,2 pc1 1,3 2,7 4 p c1 0 2,5 1,4
pc2 0 5 1,7 pc2 0 1,2 1,3 p c2 0 5,8 0
pc3 8,4 16,8 0 pc3 2,7 5,3 13,3 p c3 3,8 6,3 10,2
pc4 0 18,5 4,8 pc4 8 10,7 10,7 p c4 2,5 7,6 5,1
pc5 11,7 0 pc5 2,7 10,7 p c5 3,8 12,7
pc6 11,7 0 pc6 8 5,3 p c6 10,2 7,6
pc7 0 1,7 pc7 0 2,7 p c7 2,5 12,7
pc8 6,7 5 pc8 0 4 p c8 0,3 0
pc9 3,4 1,7 pc9 2,7 2,7 p c9 2,5 2,5
d1 d3 d4 d2 d3 d4 d1 d4 d5
pc1 5,8 6,7 1,1 pc1 3,8 0,9 7 p c1 1,9 1,5 1,5
pc2 0 2 0,9 pc2 4,4 4,5 7,3 p c2 4,3 0 4,6
pc3 1,5 11,4 11,7 pc3 3,6 1,8 10,9 p c3 7,5 11,9 4,6
pc4 0 11,7 11,9 pc4 8,2 9,1 11,1 p c4 5,8 11,9 11,9
pc5 8,6 8,8 pc5 4,2 7,3 p c5 9,2 4,4
pc6 8,8 2,9 pc6 7,3 0,5 p c6 11,9 1,3
pc7 2,9 0,8 pc7 0 3,6 p c7 0 0
pc8 0 0 pc8 0,9 0 p c8 5,8 0
pc9 1,6 0,9 pc9 0,9 2,7 p c9 0 0
Tabla 4.23: Pesos pci , en %, para las puntuaciones de las características de los dedos de cada
gesto para el cálculo de la puntuación global. Para cada gesto, se indican los pesos
para los dedos que lo forman. Para el último dedo de cada gesto, las características
pc5 a pc9 no son de aplicación y por ello no se incluyen. Por este mismo motivo, los
gestos que emplean un único dedo sólo tienen pesos para las puntuaciones de las
características pc1 a pc4 .
136
4.4. Modelo de los gestos
83
50
44
8 4 32 29 26
27 4 22 29
23 20 22 19 6 23 19 23 22 20
12 13 17 13 9 11
16 13 15 11 13 11 13 11 12 9
8
10 3 6 5 6 2 6
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto 1 Gesto 3
35 39 35 37 35 36
7 35
26 24 28 32 25 27 24 23
23 22
17 22 7
13 12 15 12 16 12
21
16 17 18
6 5 4 4 7 8 6 5 6
8
4 14 5 3 4
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto i Gesto 6
100 100
43
32 35 6 32
28 29
21 22 19 16 21
25 23 27 23 27
18 16 18 3
8 11 7 10 8 8 10 9
3 5 6
1 3 5 4 5 7 6
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto j Gesto 7
32 9 38 34 7
33 31 32 28 33 30
28 24 28 26 25 23
6 15 21 18 22 24 22 23
16 14 13 17 2 14 18
8 11 10 10 12 6 9 8 10
2 1 3 1 3
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto 2 Gesto 8
67
50 47
43 14
39 36 16 37
32 5 32 11 33 29
27 26 29 30 27
22
6 16 19 6
11 11 9 9 14 10
8 6 5 8
2 1 3 3 1
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto L Gesto 9
58
52
9
35 1733 38
31 30 33
27 27
24 21 20 24 20 24 21 20 20 24 19
12
17 15 15 14 18 16
6 7 9 10
2 3 3 4 3 3 5
11
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b a b
Gesto u Gesto c
Figura 4.24: Histogramas de las puntuaciones de los gestos. Se muestran dos pares de gráficas
para cada gesto. En cada par: la subfigura a representa los histogramas resultantes
del cálculo de la puntuación sin ponderar las características, es decir, todas con el
mismo peso en la puntuación global; la subfigura b representa los histogramas con
las puntuaciones ponderadas por los pesos de la Tabla 4.23. En cada subfigura, se
ha aplicado el criterio de colores indicado en la Figura 4.23 para los histogramas
de las puntuaciones de las imágenes del gesto y de las imágenes de otros gestos.
137
4.4. Modelo de los gestos
43
32 32
25 23 27 26 23 27
16 16 14 14 15
6 10 10
5 3 5 4 2 3 3 4
1 1 10
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b
35 6 4 32
29 32 27 31 25 23 27
23 27
18 3 3
7 6 9 6 7 6 9
5
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
c d
Figura 4.25: Impacto en los histogramas de las puntuaciones para Gesto 7 de la selección de
imágenes que no corresponden al gesto: a) sólo imágenes de gestos similares a
Gesto 7, todos los pesos iguales; b) imágenes de todos los gestos de 3 dedos,
todos los pesos iguales; c) sólo imágenes de gestos similares a Gesto 7, pesos con
los valores de la Tabla 4.23; d) imágenes de todos los gestos de 3 dedos, pesos
con los valores de la Tabla 4.23.
Los histogramas para las imágenes del gesto son, obviamente, iguales en las Figuras 4.25a
y 4.25c, y también en 4.25b y 4.25d, que a su vez son los resultados recogidos en la Figura 4.24
para Gesto 7; en todos los casos se trata de las mismas imágenes. Sin embargo, los de las imá-
genes que no corresponden al gesto son diferentes, apreciándose, con ambas configuraciones
de pesos, que las diferencias en la distribución de las puntuaciones son mayores cuando se
consideran todas las imágenes (Figuras 4.25b y 4.25d) que cuando sólo se consideran las imá-
genes más similares al gesto en cuestión (Figuras 4.25a y 4.25c). Las Figuras 4.26a-d realizan
el mismo estudio para Gesto 3, utilizando todas las imágenes de gestos de tres dedos en las
Figuras 4.26b y 4.26d, y sólo las correspondientes a Gesto c —el otro gesto de tres dedos que
utiliza el dedo pulgar— en las Figuras 4.26a y 4.26c.
138
4.4. Modelo de los gestos
44 12
35 9
32 29 26 29 26
23 22 6 8 23
11 13 15
6 8 5 5
3 2 2 3 3
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
a b
83
54
29 1 29
22 20 23 22 20
19
11 12 2 12
6 9 6 9 6
2 3
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
c d
Figura 4.26: Impacto en los histogramas de las puntuaciones para Gesto 3 de la selección de
imágenes que no corresponden al gesto: a) sólo imágenes de gestos similares a
Gesto 3, todos los pesos iguales; b) imágenes de todos los gestos de 3 dedos,
todos los pesos iguales; c) sólo imágenes de gestos similares a Gesto 3, pesos con
los valores de la Tabla 4.23; d) imágenes de todos los gestos de 3 dedos, pesos
con los valores de la Tabla 4.23.
Gesto 3 y Gesto c han sido analizados sin considerar Gesto 6, Gesto 7, Gesto 8 y
Gesto 9. Recíprocamente, Gesto 3 y Gesto c, no han sido considerados en el análisis de
Gesto 6, Gesto 7, Gesto 8 y Gesto 9
Gesto 2 y Gesto u se han analizado sin considerar Gesto L. Para Gesto L sí se han
considerado Gesto 2 y Gesto c
Gesto 1 y Gesto i se han analizado sin considerar Gesto j ni Gesto p. Para Gesto j sí se
han considerado Gesto 1 y Gesto i, no Gesto p.
139
4.5. Resultados y análisis
2 1 0,9
3 0,97
0,8
4 0,98 0,02
5 0,98 0,7
9 0,87
0,4
L 1
i 0,98 0,3
j 0,02 1
0,2
u 1
c 1 0,1
p 1
0
Figura 4.27: Matriz de confusión de los resultados de reconocimiento de los gestos de las
imágenes de entrenamiento
En el análisis de estos resultados se han identificado errores por dos causas diferentes:
No se detectan todos los dedos de la mano. Esto implica, inevitablemente, que el
gesto no se reconozca correctamente.
Se detectan todos los dedos de la mano, pero no se identifica el gesto correctamente.
Los primeros pueden ser producidos fundamentalmente por dos motivos. Por una parte, si
el tamaño de la silueta de la mano en la imagen o su inclinación están fuera de rango,
no se cumplirán las condiciones establecidas para los valores de los máximos o para las
relaciones con la posición del objeto palma, y uno o varios de los dedos no serán detectados.
Por otra parte, la separación entre dedos en la silueta de la imagen es fundamental para que
sean detectados como dedos diferentes; si no, aunque se detecten máximos diferentes en las
imágenes resultantes de las convoluciones, el proceso de filtrado de puntos de interés acabará
por estimar un único objeto dedo. Además, puede suceder que, localizándose todos los dedos
presentes en la imagen, el gesto se identifique de manera incorrecta o que no se identifique
ninguno. También en este caso el origen del error está en la separación entre dedos o en la
orientación de la mano. A su vez, es importante que los dedos, cuando están extendidos, se
sitúen en el plano de la palma; en caso contrario, la excesiva inclinación hacia adelante o
hacia atrás de los dedos puede producir un tamaño aparente en la imagen fuera de rango, y
que por ello se produzca algunos de los errores comentados. Las imágenes de la Figura 4.28
muestran diferentes ejemplos de estas situaciones.
140
4.5. Resultados y análisis
Figura 4.28: Ejemplos de configuraciones de la posición de la mano o los dedos en las que el
sistema no es capaz de reconocer correctamente el gesto
141
4.5. Resultados y análisis
En cada test, con cada individuo se han adquirido 30 imágenes de los gestos de un dedo
—Gesto 1, Gesto i, Gesto y y Gesto p—, 40 imágenes de los gestos de 2 dedos —Gesto 2,
Gesto L, Gesto u—, de Gesto 4 y de Gesto 5, y 50 imágenes de los gestos de 3 dedos —Gesto 3,
Gesto 6, Gesto 7, Gesto 8, Gesto 9 y Gesto c—. El proceso de adquisición de imágenes de la
mano se ha realizado en un entorno controlado, con iluminación constante y fondo de color
blanco. Con ello se ha simplificado y optimizado la generación de la silueta de la mano, la cual
es la entrada al algoritmo de reconocimiento. Se ha empleado la cámara Microsoft LifeCam
Studio, configurada para adquirir imágenes de tamaño 384×288 y con el ajuste de parámetros
que se recoge en la Tabla 4.24. Posteriormente, la imagen ha sido escalada al tamaño 128×96.
La imagen de la silueta de la mano ha sido obtenida segmentando la imagen de la cámara
según el resultado de la evaluación de las condiciones de la expresión 4.1, adaptadas de la
solución propuesta por [Peer et al.] para el reconocimiento del color de la piel en un entorno
de iluminación artificial utilizando el espacio de color RGB:
Se han considerado del color de la piel y por tanto pertenecientes a la mano, que se asume que
es el único objeto de color piel presente en la imagen, los píxeles que satisfacen las restricciones
indicadas.
Parámetro valor
Espacio de color RGB
Compensación de contraluz activada
Brillo 55
Contraste 5
manual
Exposición
−7
manual
Enfoque
2
Saturación 100
Nitidez 25
Zoom 0
manual
Balance de blancos
5800
Inclinación 0
Panorama 0
Durante la realización de los test se ha evidenciado que ninguno de los usuarios estaba
familiarizado con la posición de la mano para realizar Gesto 7, Gesto 8, Gesto 9, Gesto i,
Gesto j y Gesto c, es decir, ninguno de estos gestos era habitual para él o ella. De éstos,
Gesto i y Gesto j, los más sencillos, no han supuesto mayor problema. Los restantes, en
particular Gesto 7, Gesto 8 y Gesto 9, en los que la inclinación de los dedos y la distancia
entre dedos son especialmente relevantes para distinguir unos de otros, sí han dado lugar a
más confusión.
142
4.5. Resultados y análisis
2 1 2 1
3 0,86 3 1
4 1 4 1
5 0,88 5 1
6 1 0,16 0,08 6 1
Gesto estimado
Gesto estimado
7 1 0,26 0,12 7 1
8 0,58 0,24 8 1
9 0,56 9 1
L 1 L 0,83
i 1 i 1
j 1 j 1
u 1 u 1
c 1 c 1
p 1 p 1
2 1 2 1
3 0,88 3 1
4 1 0,10 4 1
5 1 5 1
6 1 6 1
Gesto estimado
Gesto estimado
7 1 0,06 0,24 7 1
9 0,62 9 0,94
L 0,88 0,06 L 1
i 1 i 1
j 1 j 1
u 0,02 1 u 1
c 0,94 c 1
p 1 p 1
2 1 2 1 0,04
3 0,88 3 1
4 1 4 1
5 1 5 1
6 1 0,06 6 1
Gesto estimado
Gesto estimado
7 1 0,12 7 1
8 1 0,08 8 1 0,06
9 0,74 9 0,82
L 1 0,12 L 1
i 1 i 1
j 1 j 1
u 0,94 u 0,08 1
c 0,88 c 1
p 1 p 1
143
4.5. Resultados y análisis
2 0,55 2 1
3 0,4 3 1
4 1 4 1
5 1 5 1
6 1 6 1
Gesto estimado
Gesto estimado
7 1 0,32 7 1 0,22
9 0,76 9 0,64
L 0,25 1 L 1
i 1 i 1
j 1 j 1
u 1 u 1 0,30
c 1 c 0,48
p 1 p 1
2 1 2 1
3 1 3 0,86
4 0,8 4 1
5 1 5 1
6 1 6 1 0,04
Gesto estimado
Gesto estimado
8 0,2 1 8 1 0,22
9 1 9 0,68
L 1 L 0,14 1
i 1 i 1
j 1 j 1
u 1 u 1
c 0,8 c 0,80
p 1 p 1
1 2 3 4 5 6 7 8 9 L i j u c p 1 2 3 4 5 6 7 8 9 L i j u c p
1 1 0,15 1 1
2 1 2 0,95 0,06
3 0,96 3 1
4 0,78 4 1
5 1 5 1
7
Gesto estimado
7 0,08 0,9 1
9 0,88 9 0,86
L 0,85 L 1
i 0,97 i 1
j 0,9 j 1
c 0,86 c 1
p 1 p 1
144
4.5. Resultados y análisis
2 1 2 1
3 0,5 3 1
4 1 4 0,93
5 1 5 1
6 1 6 1
Gesto estimado
Gesto estimado
9 0,64 9 0,86
L 1 L 1
i 1 i 1
j 1 j 1
u 1 u 1
c 0,34 1 c 0,88
p 0,87 p 1
2 1 2 1
3 0,66 3 0,72
4 1 4 0,98
5 1 5 0,98
6 1 6 0,10 1 0,04
Gesto estimado
Gesto estimado
9 0,62 9 0,88
L 1 L 0,98
i 1 i 1
j 1 j 1
u 1 u 1
p 0,93 p 1
1 2 3 4 5 6 7 8 9 L i j u c p 1 2 3 4 5 6 7 8 9 L i j u c p
1 1 1 1 0,07 0,05
2 0,83 2 1
3 0,74 3 0,68
4 1 4 1
5 0,93 5 1
7
Gesto estimado
L 1 0,23 L 0,93
i 0,97 i 1
j 1 j 1
u 0,13 1 u 0,95
c 0,77 c 0,94
p 1 p 1
145
4.5. Resultados y análisis
3 0,73 3 1
4 0,78 0,03 4 1
5 0,91 5 0,93
Gesto estimado
Gesto estimado
9 0,93 9 0,64
L 0,93 L 0,90
j 0,03 1 j 1
u 0,02 1 u 0,06 1
c 0,96 c 0,87
p 1 p 1
2 1 0,16 0,07 2 1
3 0,73 3 1
4 0,88 4 1
5 1 5 0,98
Gesto estimado
9 0,88 9 0,70
L 1 L 0,94
i 0,96 i 1
u 0,95 u 0,06 1
c 0,91 c 1
p 0,96 p 1
1 2 3 4 5 6 7 8 9 L i j u c p 1 2 3 4 5 6 7 8 9 L i j u c p
1 1 1 1 0,07
3 0,77 3 1
4 1 0,17 4 1 0,03
5 0,72 5 0,85
6 1 6 0,94 0,04
Gesto estimado
7
Gesto estimado
L 1 L 0,93 0,02
i 0,94 i 1
j 1 j 0,83
c 1 c 0,78
p 1 p 1
146
4.5. Resultados y análisis
La conclusión principal que se extrae de los resultados de los test de las matrices de con-
fusión de las Figuras 4.29, 4.30, 4.31 y 4.32 es que la solución propuesta es capaz de reconocer
los gestos. La probabilidad de acierto, condicionada por lo comentado de la familiarización
con el gesto por parte de los individuos, depende del gesto que se trate y de la facilidad que
la persona tenga para reproducirlo aunque no sea un gesto natural suyo. En este sentido, la
comparativa entre los resultados de test 1 y de test 2, en particular de los gestos para los que
se obtienen tasas más bajas en test 1, lleva a la conclusión de que una mínima práctica en la
forma de hacer cada gesto mejora los resultados.
Aunque, como muestra la evolución de las matrices de confusión de test 1 a test 2, para
algún individuo se ha hecho patente que sería deseable más práctica para familiarizarse con
algún gesto, el test 3 —no supervisado— se ha considerado adecuado para evaluar el compor-
tamiento del sistema cuando el usuario ya tiene una mínima experiencia previa. La Figura 4.33
muestra la tasa de reconocimiento de cada gesto para el conjunto de imágenes adquiridas du-
rante dicho test con todos los individuos, de nuevo normalizada para el número de imágenes
de cada gesto.
Gesto realizado
1 2 3 4 5 6 7 8 9 L i j u c p
3 0,878
4 0,974 0,025
5 0,938
7
Gesto estimado
9 0,018 0,753
L 0,964 0,046
i 0,985
j 0,966
c 0,905
p 1
Se presentan a continuación las conclusiones del análisis de los resultados del conjunto
de los test 3 para cada categoría. De manera complementaria, se indica también el posible
resultado cuando en la imagen la mano tiene una inclinación excesiva. Esta inclinación se
asume siempre hacia la izquierda de la imagen; la contraria, hacia la derecha, requiere una
postura forzada de la mano y/o el brazo hacia fuera del cuerpo y no se ha valorado.
En la tabla que se incluye para cada caso, GC representa el porcentaje de aciertos positivos
—la tasa de éxito—, es decir, de imágenes del gesto donde ha sido correctamente reconocido;
NGR es el porcentaje de imágenes donde el gesto no ha sido reconocido ni confundido con
otro; NGF es el porcentaje de falsos negativos, esto es, de imágenes del gesto en las que no
ha sido correctamente reconocido sino interpretado como otro gesto diferente; y, finalmente,
147
4.5. Resultados y análisis
NGP representa el porcentaje de falsos positivos, es decir, de imágenes de otros gestos en los
que ha sido erróneamente reconocido el gesto indicado. En estas dos últimas situaciones, se
indica el gesto con el que se produce el error. Obviamente, GC, NGR y NGF suman 100, dado
que comprenden todas las imágenes de un gesto. NGP corresponde a imágenes de otros gestos
y se incluye para recopilar en cada tabla toda la información sobre las posibles ocurrencias
de una gesto.
148
4.5. Resultados y análisis
GC NGR NGF
Gesto 2 Gesto 7 Gesto u
1% 1,25 % 0,75 %
Gesto 6 96 % 1%
NGP
Gesto 3 Gesto 7 Gesto 8 Gesto 9
149
4.5. Resultados y análisis
GC NGR NGF
Gesto 2 Gesto 6 Gesto 8
1,75 % 3,25 % 2,5 %
Gesto 7 92,5 % 0%
NGP
Gesto 6 Gesto 8 Gesto 9 Gesto c
1,25 % 2,25 % 5% 2%
GC NGR NGF
Gesto 6 Gesto 7 Gesto 9 Gesto u
3,25 % 2,25 % 1,75 % 2,25 %
Gesto 8 86,75 % 3,75 %
NGP
Gesto 4 Gesto 7 Gesto 9 Gesto c
150
4.5. Resultados y análisis
GC NGR NGF
Gesto 2 Gesto 6 Gesto 7 Gesto 8 Gesto u
0,5 % 2,5 % 5% 11,75 % 4%
Gesto 9 75,25 % 1%
NGP
Gesto 8
1,75 %
151
4.5. Resultados y análisis
GC NGR NGF
Gesto 1
2,25 %
Gesto u 97,75 % 0%
NGP
Gesto 2 Gesto 6 Gesto 8 Gesto 9 Gesto c
152
4.5. Resultados y análisis
153
PARTE II
Plataforma hardware
Habitualmente, la tasa de datos de entrada —el número de datos de entrada por unidad de
tiempo— de un sistema de procesamiento, sea o no un sistema embebido, no es la misma
que la de salida. En particular, en sistemas de vídeo la tasa de entrada está determinada
por el sensor de imagen, mientras que la de salida depende de la aplicación o viene fijada
por la configuración de visualización —tamaño e imágenes por segundo— de la secuencia de
imágenes de salida. Por otra parte, a menudo no es posible procesar inmediatamente el dato
que llega al sistema y a continuación permitir que se pierda sino que es necesario guardarlo
para utilizarlo en un instante posterior. En el caso de la convolución 2D, empleada en el
algoritmo descrito en el capítulo 4, un mismo dato de entrada es utilizado un número de
veces dado por el tamaño de la plantilla de coeficientes y, por lo tanto, debe ser posible
acceder a él mientras sea necesario. Ambas razones motivan la necesidad de implementar un
sistema de almacenamiento temporal (buffering) donde los datos son guardados cuando son
recibidos y de donde son leídos cuando es necesario. Con tal sistema queda asegurado que
no se pierden datos de entrada y que cualquiera de ellos estará disponible cuando lo precise
el sistema de procesamiento, el cual trabaja en flujo de datos a través de este buffer. En los
154
Parte II. Plataforma hardware
155
Parte II. Arquitectura propuesta
Arquitectura propuesta
156
Parte II. Arquitectura propuesta
157
5
Tabla 5.1: Estado de las principales opciones de configuración de las herramientas de síntesis
e implementación
Las opciones de diseño evaluadas y las configuraciones finalmente adoptadas tanto para
el sistema completo como para cada uno de los bloques de procesamiento que lo forman están
descritas en los siguientes apartados.
158
5.1. Conversiones a espacios de color
R 8
b OUT
U
G 8
RGB a YUV b OUT
V
B 8
b COEF
× ‐0,169
b COEF +
× ‐0,333
b COEF
+ b OUT
× 0,502 + cast REG
128
b COEF
× 0,502
b COEF
× ‐0,420 + b OUT
El esquema es una implementación directa de las ecuaciones, formada por los multipli-
cadores y sumadores necesarios para realizar las operaciones correspondientes. Adicional-
mente, los bloques cast previos a la salida realizan la reducción del número de bits al tamaño
deseado, empleando redondeo en la cuantización. Dado un tamaño de 8 bits para los datos
de entrada, la precisión del resultado del circuito de conversión depende del número de bits
159
5.1. Conversiones a espacios de color
utilizados para representar las constantes de multiplicación y del número de bits empleado
para representar los datos de salida de cada operación. Con respecto a esto último, todos
los multiplicadores y sumadores han sido configurados con la opción full precision que ofrece
XSG, la cual asigna a la salida del bloque el tamaño suficiente para representar su resultado
sin generar ningún error. Por tanto, la precisión del resultado de la conversión depende en
última instancia del tamaño bCOEF para representar las constantes por las que se multiplican
los valores de las componentes RGB y del tamaño bOUT para representar el resultado de sali-
da. En el primer caso, de los bCOEF bits, uno —el más significativo— corresponde a la parte
entera y el signo, y los restantes a la parte fraccionaria. En el segundo caso, de los bOUT bits,
8 —los más significativos— corresponden a la parte entera y los bOUTF restantes a la parte
fraccionaria. La Tabla 5.2 recoge el error producido por el circuito de conversión con respecto
a las ecuaciones, utilizando diferentes tamaños de bCOEF y de bOUTF . Para cada combinación,
se indica el valor absoluto del error en cada componente U y V, y el porcentaje que este error
representa sobre el rango de valores de cada una de ellas.
Los datos de la Tabla 5.2 revelan el efecto del tamaño de las constantes de multiplicación
y del tamaño de la parte fraccionaria del resultado. El primero de ellos es el de mayor peso.
Valores de bCOEF iguales o superiores a 10 dan lugar a resultados razonablemente aproximados
a los de las ecuaciones de conversión. El grado de aproximación está condicionado por el
valor de bOUTF , obviamente mayor cuanto más alto. Así, con bCOEF ≥ 18, la tasa de error
tiene un rango entre 0,34 % con bOUTF = 0 y menor de una centésima con bOUTF = 8. Este
comportamiento se mantiene, como se ha indicado, hasta bCOEF = 10, para el cual la tasa de
error en función de bOUTF se encuentra entre 0,42 % y 0,10 %. La tabla muestra, con resultados
para bOUTF = 20 en las configuraciones con bCOEF ≤ 16, que a partir de un determinado valor,
que a su vez está vinculado a bOUTF , su aumento apenas tiene incidencia en el resultado.
Con valores de bCOEF ≤ 9, las diferencias entre los resultados de las ecuaciones y los del
circuito que las implementa son más significativas y dan lugar a un comportamiento diferente
del algoritmo de clasificación basado en el modelo de color de piel descrito en este espacio
de color. En estos casos, el aumento de bOUTF conlleva cierta mejora, pero en ningún caso
compensa la falta de resolución de las constantes de multiplicación.
El tamaño en bits de los constantes y del resultado determina el número de recursos nece-
sarios para implementar el circuito digital que realiza la conversión. La Tabla 5.3 recoge el
número de LUTs y de flip-flops ocupados por configuraciones de la Tabla 5.2 seleccionadas
para evaluar el impacto de los valores de bCOEF y de bOUTF . Entre ellas se encuentran la con-
figuración mínima que da una tasa de error menor de una centésima (bCOEF = 18, bOUTF = 8),
y la mínima que da una tasa de error menor de 0,05 % (bCOEF = 12, bOUTF = 4). Como el
circuito del esquema es combinacional, únicamente son necesarios flip-flops para el registro
de las señales de salida; las señales de entrada se consideran procedentes de una etapa de
registros previa. Por lo tanto, el número de flip-flops depende exclusivamente del tamaño de
la salida bOUT = 8 + bOUTF . En la tabla se muestra el número total de flip-flops necesarios para
las dos salidas del circuito. Las LUTs son empleadas en los sumadores y en las multiplica-
ciones por constante, que han sido configuradas en XSG para ser implementadas mediante
RAM distribuida. Por ello, no se requiere ninguno de los bloques multiplicadores embebidos
en el layout de la FPGA.
Entre las conclusiones que se pueden extraer de los resultados que recoge la Tabla 5.3
destaca, en primer lugar, el reducido número de recursos necesarios en cualquier configuración.
Al mismo tiempo, se observa el mayor peso en el número de LUTs del tamaño de las constantes
160
5.1. Conversiones a espacios de color
161
5.1. Conversiones a espacios de color
de multiplicación. Esto es debido a que, al haberse configurado los sumadores como full
precision, su tamaño condiciona el de las señales a lo largo del árbol de sumadores. Sólo en
su etapa final se aprecia la influencia de una menor o mayor resolución de la salida.
Para la elección de la configuración que se integrará en el sistema completo, se ha evaluado
el modelo del color de la piel propuesto en el espacio de color YUV con los valores de U y
V generados por diferentes configuraciones de la Tabla 5.2. La definida por bCOEF = 12,
bOUTF = 4 es la mínima que produce exactamente el mismo resultado que la implementación
software, y por ello se ha considerado óptima, teniendo presentes los recursos necesarios
para su implementación hardware. Dado el reducido número de éstos, no se ha considerado
oportuno determinar la reducción que se pudiera obtener representando cada constante con
un tamaño individualizado ni evaluar el impacto de reducir el tamaño de los datos para
representar los resultados de las operaciones intermedias.
Junto con los recursos necesarios, el otro parámetro esencial que describe las prestaciones
del circuito es el periodo mínimo de la señal de reloj, que determina la frecuencia máxima de
funcionamiento. La segmentación del esquema de la Figura 5.1 permite reducir los caminos
combinacionales en el circuito y por tanto aumentar la frecuencia, con el coste de un mayor
número de registros. La Tabla 5.4 indica, para la configuración elegida bCOEF = 12 y bOUTF = 4,
el periodo mínimo de reloj Post-Place & Route y su coste, en cuanto a número de flip-flops
necesarios y en cuanto a ciclos de reloj de latencia, del esquema completamente combinacional
de la Figura 5.1 y de las 3 configuraciones de segmentación mostradas en la Figura 5.2. De
estos datos se desprende que es posible elevar un 40 % la frecuencia de reloj máxima con un
mínimo aumento del número de flip-flops y de la latencia.
162
5.1. Conversiones a espacios de color
+ + +
× ‐0,333 × ‐0,333 × ‐0,333
+ + +
× 0,502 + cast REG
× 0,502 + cast REG
× 0,502 + cast REG
128 128 128
+ + +
× ‐0,420 × ‐0,420 × ‐0,420
+ + +
× ‐0,082 + cast REG
× ‐0,082 + cast REG
× ‐0,082 + cast REG
128 128 128
12 4 ninguna 1 24 6,972
12 4 configuración 1 2 98 5,166
12 4 configuración 2 2 69 5,399
12 4 configuración 3 3 142 4,435
163
5.1. Conversiones a espacios de color
R 8
b OUT
I
G 8
RGB a YIQ b OUT
Q
B 8
b COEF
× 0,502
b COEF +
× ‐0,232
b COEF
+ b OUT
× ‐0,270 + cast REG
128
b COEF
× 0,204
b COEF
× ‐0,502 + b OUT
La Tabla 5.5 resume también el impacto de la segmentación interna del circuito empleando
las mismas configuraciones utilizadas para YUV y mostradas en la Figura 5.2. Tal y como
sucede en ese caso, un mínimo aumento del número de flip-flops y de la latencia permite
prácticamente duplicar la frecuencia de funcionamiento del circuito de conversión a YIQ.
12 5
LUTs Segmentación Latencia FFs Tmin (ns)
ninguna 1 26 7,178
configuración 1 2 106 5,163
356
configuración 2 2 72 4,070
configuración 3 3 152 3,830
164
5.1. Conversiones a espacios de color
R 8 b OUT
Y
G 8
RGB a YCbCr
b OUT
Cb
B 8 b OUT
Cr
b COEF
× 0,257
b COEF +
× 0,504
b COEF
+ b OUT
× 0,098 + cast REG
16
b COEF
× ‐0,148
b COEF +
× ‐0,291
b COEF
+ b OUT
× 0,439 + cast REG
128
b COEF
× 0,439
b COEF +
× ‐0,368
b COEF
+ b OUT
× ‐0,071 + cast REG
128
bCOEF bOUTF Yerror Yerror (%) Cb error Cb error (%) Cr error Cr error (%)
ninguna 1 36 6,841
configuración 1 2 152 5,342
485
configuración 2 2 101 4,798
configuración 3 3 216 4,061
165
5.1. Conversiones a espacios de color
166
5.1. Conversiones a espacios de color
establece como criterio que la tasa de error en cualquier componente sea menor o igual que
0,05 %. La configuración con once PEs, la mejor de todas las posibles con ese número de
elementos de procesamiento, da lugar a una tasa de error de 0,10 % y por tanto no se incluye
ninguna menor.
R 8 b OUT
Rn
G 8
RGB a RGBn
b OUT
Gn
B 8 b OUT
Bn
10 11
+ cast x
CORDIC
+ DIVIDER y
_ m.n
× 255
b OUT
x REG
9
y
cast z -l
x
CORDIC
DIVIDER y m.n b OUT
_ × 255
x REG
9
y
cast z -l
x
CORDIC
DIVIDER y
_ m.n b OUT
x × 255 REG
9 y
cast z -l
167
5.1. Conversiones a espacios de color
168
5.1. Conversiones a espacios de color
La Tabla 5.7 indica también la latencia asociada a cada configuración, la cual es función
de la latencia propia de cada elemento de procesamiento del CORDIC Divider, del tamaño
de sus datos internos nBits X,Y y de la latencia de su multiplicador interno. El core permite
especificar la latencia interna de cada elemento de procesamiento y la del multiplicador. Para
el estudio inicial se ha establecido una latencia de 1 ciclo en cada PE. La del multiplicador se
ha configurado al valor mínimo permitido si se emplean los bloques DSP48, 3 ciclos de reloj.
La Tabla 5.8 recoge el número de LUTs, flip-flops y bloques DSP48, utilizados éstos para
realizar la multiplicación interna en cada CORDIC Divider, ocupados por el circuito que
implementa la transformación de RGB a RGB normalizado, con diferentes configuraciones
seleccionadas de la Tabla 5.7. Se indica también el periodo mínimo de reloj Post-Place &
Route de cada una de ellas. Destaca, en primer lugar, la gran cantidad de recursos necesarios
para esta transformación en comparación con las descritas en apartados anteriores a YUV,
YIQ e YCb Cr , debido a la complejidad, ya comentada, del circuito necesario para realizar la
operación de división.
Obviamente, el número de elementos de procesamiento es un factor importante en el
tamaño del circuito, que se reduce entre el 4 % y 5 % por cada uno de ellos. Sin embargo, no
es el único relevante. La reducción, manteniendo el número de elementos de procesamiento,
de nBits X,Y F disminuye los recursos necesarios entre un 3 % y un 5 % aproximadamente por
bit de precisión. Por su parte, los datos de las configuraciones con PEs = 16 y nBits X,Y F = 12
revelan el poco peso en los resultados de implementación del tamaño de bOUTF , que se limita
a un número de LUTs irrelevante. Una determinada tasa de error se puede alcanzar mediante
diferentes configuraciones del número de elementos de procesamiento y el tamaño nBits X,Y F
de la parte fraccionaria de los datos internos. Los valores de la Tabla 5.8 indican diferencias
de hasta un 8 % en el número de recursos para una misma tasa de error.
Por su parte, los datos del periodo mínimo de reloj del circuito ponen de manifiesto su
relación con el número de bits de la parte fraccionaria de los datos internos, siendo menor
cuánto mayor nBits X,Y F . En cualquier caso, todos los circuitos presentan muy alta frecuencia
de funcionamiento debido a la segmentación entre etapas internas del core CORDIC.
El último de los pasos del algoritmo CORDIC para realizar la división, el responsable de
la corrección de coordenadas final, requiere el cálculo de una multiplicación. El core de XSG
permite configurar si esta multiplicación se realiza empleando los multiplicadores embebidos
incluidos en los bloques DSP48 o mediante un circuito implementado con recursos de propósito
general. La Tabla 5.9 compara los resultados de la implementación para la configuración
PEs = 12, nBits X,Y F = 12 y bOUTF = 3. Los recursos ocupados se incrementan entorno
al 50 % y el circuito es aproximadamente un 25 % más lento. Para esta comparativa se ha
mantenido el mismo valor de latencia interna del circuito multiplicador, establecido en 3 ciclos
de reloj, el mínimo valor permitido por el core utilizando el bloque DSP48.
Finalmente, se ha evaluado el impacto en los resultados de implementación de la latencia
de los elementos de procesamiento del CORDIC Divider. De nuevo para la configuración
con error inferior a 0,05 % que produce el circuito más pequeño, dada por PEs = 12,
nBits X,Y F = 12 y bOUTF = 3, la Tabla 5.10 recoge los datos para cuatro configuraciones
de latencia diferentes. Se comprueba cómo prescindir de la segmentación entre etapas del
CORDIC tiene un importante impacto negativo en la frecuencia de funcionamiento, mucho
mayor que el ahorro en el número de flip-flops ocupados.
169
5.1. Conversiones a espacios de color
nBits X,Y
PEs entera + fraccionaria
latencia l bOUTF RGBn error (%) LUTs FFs DSP48s Tmin (ns)
nBits X,Y
PEs entera + fraccionaria
latencia l bOUTF RGBn error (%) LUTs FFs DSP48s Tmin (ns)
170
5.1. Conversiones a espacios de color
nBits X,Y
PEs latencia PEs latencia l entera + fraccionaria
bOUTF LUTs FFs Tmin (ns)
171
5.1. Conversiones a espacios de color
Radix-2 High-Radix
bOF bOUTF RGBn error RGBn error (%) RGBn error RGBn error (%)
16 0,0078 0,00 % 0,002 0,00 %
8 0,0078 0,00 % 0,0039 0,00 %
4 0,0625 0,02 % 0,0625 0,02 %
16
2 0,25 0,10 % 0,25 0,10 %
1 0,5 0,20 % 0,5 0,20 %
0 1,0 0,39 % 1,0 0,39 %
172
5.1. Conversiones a espacios de color
Radix-2 High-Radix
RGBn error bOF bOUTF LUTs FFs l Tmin (ns) bOF bOUTF LUTs FFs BRAM DSP48s l Tmin (ns)
Atendiendo a los resultados del análisis de las opciones para implementar la transformación
RGB a RGB normalizado recopilados en las Tablas de los apartados 5.1.4.1 y 5.1.4.2, se ha
optado por el empleo del core Divider Generator Radix-2 con la configuración bOF = 12,
bOUTF = 4, que produce un error máximo del 0,05%.
173
5.2. Implementación de los modelos del color de piel
Tabla 5.13: Implementación del clasificador basado en el modelo de color de piel en RGB
normalizado: recursos ocupados, periodo mínimo de reloj Post-Place & Route y
latencia
Tabla 5.14: Implementación del clasificador basado en el modelo de color de piel en YCb Cr :
recursos ocupados, periodo mínimo de reloj Post-Place & Route y latencia
174
5.2. Implementación de los modelos del color de piel
RGBn
clasificador
Rn
Gn 1 Salida clasificador
Bn
nivel 4
REG a
1
b r1 RnGn × ‐1,125 ≥ a≥b
176
2,3 + REG b
ROM
4
+
REG a
1
× ‐1,18 ≤ a≤b
225
2,8 + REG b
REG a
1
130 b
≤ a≤b
REG a
1
67 b
≥ a≥b
REG a
1
b r1 RnBn × ‐1,026 ≥ a≥b
169
2,11 + REG b
1
ROM
2
+ REG
REG a
1
× ‐1,026 ≤ a≤b
194
2,11 + REG b
b r3 RnGn REG a
1
87 ≥ a≥b
ROM
4
+ b
1
b r3 RnBn REG a
88 a ≤ a≤b
4 a‐b b
ROM b
REG a
1
× 0,39 ≥ a≥b
1,13 + REG b
36
REG a
1
× ‐0,65 ≥ a≥b
107
2,13 + REG b
REG a
1
4 a‐b
ROM b
REG
b r5 RnGn
a
1
2
88 a
a‐b b
≤ a≤b
ROM b
REG a
1
49 b
≥ a≥b
Figura 5.6: Esquema de la implementación del clasificador basado en el modelo del color de
la piel en el espacio de color RGB normalizado
175
5.2. Implementación de los modelos del color de piel
YCbCr
clasificador
Y
Cb 1 Salida clasificador
Cr
nivel 4
REG a
1
× ‐3,14 ≥ a≥b
435
3,11 + REG b
REG a
1
× 2,52 a
a‐b REG b
≤ a≤b
2,9 b
70
REG a
1
× ‐2,86 ≤ a≤b
b r3 YCb
567 a
3,11 + REG b
6 a‐b
ROM b
REG a
1
× 7 a ≥ a≥b
b r4 YCb 3,0 b
a‐b REG b
826 a
7 a‐b
ROM b
REG a
1
≥ a≥b
b r5 YCb
a
× 6,69
3,11 b
a‐b REG b
786 a
7 a‐b
ROM b
REG
b r6 YCb
a
1
5
217 a
a‐b b
≤ a≤b
ROM b
REG a
1
97 b
≥ a≥b
REG a
1
× 3,36 a ≤ a≤b
b r1 YCr 3,11 b
a‐b REG b
247 a
6 a‐b
ROM b
REG a
1 1
× ‐5,13 ≤ a≤b
REG
4,11 + REG b
978
REG a
1
× ‐0,67 ≤ a≤b
1,13 + REG b
316
REG a
1
× 2,34 a
a‐b REG b
≥ a≥b
2,9 b
275
b r5 YCr REG a
1
54 ≥ a≥b
ROM 6 + b
REG a
1
126 b
≥ a≥b
REG a
1
× ‐1,06 ≤ a≤b
2,11 + REG b
290
REG a
1
× ‐1,15 ≥ a≥b
b r2 CbCr
269
2,10 + REG b
ROM 2 +
REG a
1
× 1,65 a
a‐b REG b
≤ a≤b
1,10 b
80
REG
b r4 CbCr
a
1
136 a ≤ a≤b
5 a‐b b
ROM b
REG a
1
162 b
≤ a≤b
YUV
clasificador
U
V 1 Salida clasificador
nivel 4
1 si U ≤ 134
REG a 0 en otro caso
1
b r1 134 a ≤ a≤b
5 a‐b b
ROM b
1 si V ≥ 132
REG a
0 en otro caso
1
b r2 132
≥ a≥b
ROM
4 + b
1 si U ≥ 1,34V – 115
REG a
0 en otro caso
1
× 1,34 a ≥ a≥b
1
REG
1 si U ≤ 1,35V – 47
REG a 0 en otro caso
1
× 1,35 a ≤ a≤b
b r4 47
b
ROM
5 +
1 si U ≥ -1,1V + 261
REG a
0 en otro caso
1
× ‐1,1 ≥ a≥b
2,11 + REG b
b r5 261
ROM
2 +
1 si U ≤ -1,1V + 300
REG a
0 en otro caso
1
× ‐1,1 ≤ a≤b
300
2,11 + REG b
Figura 5.8: Esquema de la implementación del clasificador basado en el modelo del color de
la piel en el espacio de color YUV
Tabla 5.15: Implementación del clasificador basado en el modelo de color de piel en YUV:
recursos ocupados, periodo mínimo de reloj Post-Place & Route y latencia
177
5.2. Implementación de los modelos del color de piel
YIQ
clasificador
I
Q 1 Salida clasificador
nivel 4
REG a
1
b r1 127
≥ a≥b
ROM 5 + b
REG a
1
≤ a≤b
171 b
REG a
1
b r3 118
≥ a≥b
ROM 3 + b
REG a
1 1
≤ a≤b
REG
145 b
REG a
1
× ‐2,55 ≤ a≤b
520
3,11
+ REG b
REG a
1
× ‐1,64 ≥ a≥b
2,11
+ REG b
b r6 342
ROM 4 +
REG a
1
× 1,03 ≤ a≤b
41
1,11
+ REG b
Figura 5.9: Esquema de la implementación del clasificador basado en el modelo del color de
la piel en el espacio de color YIQ.
Tabla 5.16: Implementación del clasificador basado en el modelo de color de piel en YIQ:
recursos ocupados, periodo mínimo de reloj Post-Place & Route y latencia.
178
5.3. Sistema completo para la implementación del reconocimiento del color de la piel
179
5.3. Sistema completo para la implementación del reconocimiento del color de la piel
R 8
G 8
Reconocimiento salida
B 8
color piel
1
algoritmo
reconocimento
ci 4 color piel
U 12
YUV 1
RGB a YUV retardo salida c1
V 12
clasificador
salida c2
4
nivel YUV
salida c3
salida c4
salida c5
Rn 12
Gn 12
RGBn 1 salida c6
RGB a RGBn clasificador
Bn 12
REG
8 salida c7
8 4
nivel RGBn
REG salida c8
REG
8
REG salida c9
salida c10
I 13 4
YIQ 1
salida c11
RGB a YIQ clasificador
retardo
Q 13
salida c12
4
nivel YIQ salida c13
salida c14
salida c15
Y 12
YCbCr salida c16
RGB a YCbCr Cb 12
clasificador
1
retardo
Cr 12
nivel YCbCr
4
REG Decodificador
Tabla 5.17: Implementación del algoritmo de reconocimiento del color de la piel: recursos
ocupados, periodo mínimo de reloj Post-Place & Route y latencia.
180
6
Implementación hardware de la
convolución bidimensional
181
6. Implementación hardware de la convolución 2D
i=− M
2
+1 j=− N
2
+1
Por tanto, para calcular el resultado de cada píxel son necesarias M × N multiplicaciones y
M × N − 1 sumas.
Aplicado al campo del procesamiento de vídeo, la Figura 6.1 muestra la carga computa-
cional que implica el procesamiento en tiempo real de diferentes configuraciones estándar. Por
ejemplo, para realizar la convolución en tiempo real de señales de vídeo de alta resolución HD
1280×720 a una tasa de 50 imágenes por segundo (frames per second, fps) son necesarias más
de 2,25 giga-operaciones por segundo (GOPs) con una máscara de 5 × 5; más de 20,68 GOPs
si la máscara es de 15 × 15. Claramente, el coste computacional aumenta exponencialmente
con el tamaño de la plantilla.
1000
Giga-operaciones por segundo
720×1280 50 fps
100 480×640 60 fps
10 288×352 30 fps
0,1
3 10 20 30 40 50
M
Por otra parte, para calcular cada O(y, x) son necesarios M × N datos de entrada, por
lo que la gestión del almacenamiento temporal de estos datos y su acceso también es una
cuestión importante que debe ser estudiada.
Históricamente, la ineficiencia de las CPUs para ejecutar tal cantidad de operaciones y
accesos a memoria ha restringido el tamaño de la plantilla. La transformación al dominio
de la frecuencia para calcular la convolución como la Transformada de Fourier (Fast Fourier
Transform, FFT) inversa del producto de las FFTs de la entrada y la plantilla implica una
considerable mejora en estas implementaciones software, pero es únicamente por medio de la
maximización del paralelismo de la ecuación (6.1) como se puede asegurar la más alta tasa
de procesamiento de datos (throughput) para aplicaciones con prestaciones temporales y de
consumo cada vez más exigentes. Las FPGAs ofrecen tal posibilidad.
1
Se ha seguido la notación de Matlab para designar los elementos de la matriz, en la que y indica la fila,
x la columna y ambos índices comienzan por el valor 1. La Figura 6.11 en el apartado 6.1.2 muestra el eje
asociado a cada variable.
182
6. Implementación hardware de la convolución 2D
En los últimos años, los dispositivos Field Programmable Gate Array (FPGA) han sido
la plataforma hardware mayoritariamente utilizada para acelerar el cálculo de la convolu-
ción 2D gracias a su paralelismo de grano fino y su reconfigurabilidad. La estructura interna
de las FPGAs las hace ideales para explotar el paralelismo a nivel de píxel inherente a los
algoritmos de procesamiento de imagen a bajo nivel —como es el caso de las funciones de
vecindad local como la que define la ecuación (6.1) de la convolución 2D—, el paralelismo
a nivel de instrucción por medio de segmentación de cauce y, al mismo tiempo, también el
paralelismo de más alto nivel para, por ejemplo, realizar múltiples convoluciones simultánea-
mente. De hecho, el procesamiento de imagen y vídeo a bajo nivel ha sido uno de los grandes
motores que han impulsado la Computación Reconfigurable desde principios de la década de
los 90 [Gokhale y Graham a].
Este contexto, con la convolución 2D incluida habitualmente en sistemas de procesamiento
con requisitos de velocidad y consumo cada día más exigentes sin estar resuelta su imple-
mentación eficiente, explica por qué es una cuestión que en la actualidad continúa susci-
tando considerable interés. La revisión bibliográfica revela propuestas de arquitecturas que
persiguen optimizar el compromiso entre el área y la rapidez [Cardells-Tormo y Molinet,
Torres y Arias], que ofrecen mayor flexibilidad a nivel de diseño y a nivel de operación
[Perri et al., Porter et al., Fons et al., Kalomiros y Lygouras, Mori et al. b] o que, más que
un único filtro, tratan la implementación de un conjunto de filtros 2D [Bouganis et al. b,
Sriram et al.]. Otros trabajos proponen reducir la complejidad de las operaciones o del alma-
cenamiento temporal de datos, bien implementando transformaciones para recodificar la
representación de los coeficientes [Bouganis et al. c, Benkrid y Belkacemi], bien analizan-
do las operaciones y el tamaño y resolución de los datos implicados [Bosi et al., Liang,
Xia et al.], bien la separabilidad de los filtros [Bouganis et al. c] o bien propiedades de los
coeficientes [Zhang y Asari]. Por otra parte, ciertas características de la convolución 2D,
como son el alto grado de paralelismo de las operaciones implicadas, su baja dependen-
cia de datos, la alta reusabilidad de los datos de entrada y la gran demanda de accesos
a memoria, hacen de ella un interesante caso de estudio en comparaciones de la imple-
mentación de algoritmos de procesamiento de imagen y vídeo sobre diferentes platafor-
mas [Asano et al., Cope et al., Pauwels et al., Russo et al., Fowers et al.].
En esta tesis se propone una arquitectura para el cálculo de la convolución 2D con plan-
tillas de tamaño medio-grande. Destinada inicialmente a la implementación del algoritmo de
reconocimiento del gesto de la mano descrito en el capítulo 4, sus prestaciones en términos
de recursos y de velocidad posibilitan el procesamiento de vídeo de alta resolución en tiempo
real. Es una solución independiente del valor de los coeficientes, que no tienen por qué ser
constantes ni satisfacer ninguna propiedad determinada. No se han aplicado simplificaciones
ad hoc en la implementación de las operaciones o del camino de datos, por lo que ofrece la
máxima flexibilidad. Se ha empleado una filosofía de diseño modular, siendo por ello posible la
implementación del cálculo de convoluciones para todo un rango de configuraciones: matrices
de entrada con datos codificados con bI bits y plantillas de tamaño M × N con coeficientes
de bCOEF bits. Los valores máximos de estos parámetros están únicamente acotados por el
tamaño del dispositivo FPGA utilizado como plataforma y por las restricciones temporales
de la aplicación. El apartado 6.1 está dedicado a la descripción de esta arquitectura.
Para proporcionar los datos necesarios al módulo de cálculo, se propone un nuevo esquema
para la implementación eficiente en FPGA de los buffers de línea que almacenan temporal-
mente los datos reutilizables entre operaciones de convolución sucesivas. Esta solución ofrece
183
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
mucha mayor flexibilidad que la utilizada tradicionalmente para optimizar el uso de los re-
cursos de memoria específicos de la FPGA, al mismo tiempo que mejora las prestaciones
temporales. Su descripción detallada se realiza en el apartado 6.2.
El apartado 6.3 resume las prestaciones del sistema completo propuesto para la imple-
mentación de la convolución 2D e incluye una comparativa con otras soluciones descritas en
la literatura, si bien, como se verá, no se han encontrado referencias a implementaciones de
semejante tamaño sobre ninguna plataforma hardware.
Para realizar las operaciones en las diferentes plataformas programables por software, este
sumatorio de productos se asocia directamente a una estructura de multiplicación y acumu-
lación (Multiply and Accumulate, MAC) que realiza las operaciones de manera secuencial.
CPUs, DSPs y GPUs incluyen en su arquitectura, con diferentes características y presta-
ciones, unidades MAC similares a la que de manera simplificada se muestra en la Figura 6.2.
Manteniendo al mínimo los recursos utilizados —apenas un multiplicador, un sumador y
un registro para acumular los resultados parciales— este esquema requiere N ciclos para
completar el cálculo de la salida del filtro en cada instante.
Para un gran número de aplicaciones en diferentes campos esta solución es válida porque
es posible realizar los N ciclos en la unidad MAC logrando las prestaciones temporales pre-
tendidas. Es el caso por ejemplo de muchos algoritmos de procesamiento de audio. En otras
184
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
+ Acumulador yn
hl
xn-l ×
aplicaciones, no obstante, la tasa de datos requerida o el propio tamaño del filtro pueden con-
llevar que el tiempo necesario para realizar las operaciones de manera secuencial sea excesivo,
incluso aunque sea optimizado utilizando técnicas de segmentación. La solución en estos casos
pasa por paralelizar el cálculo en varias unidades MAC y sumar los resultados parciales de
cada una de ellas. Sin embargo, las plataformas mencionadas tienen una estructura fija y por
tanto el grado de paralelismo alcanzable es limitado. Únicamente el hardware reconfigurable
ofrece las máximas posibilidades para extender todo lo posible el paralelismo de cualquier
algoritmo.
Las FPGAs permiten realizar las operaciones del sumatorio de productos mediante dos
tipos de recursos: utilizando recursos de propósito general —LUTs y flip-flops—, y utilizando
bloques específicos DSP slices incluidos en el layout de la FPGA. Los bloques DSP están
destinados a la implementación eficiente de algoritmos de procesamiento digital de señal
e integran, junto con otros componentes adicionales, un multiplicador, un sumador y un
acumulador formando una estructura MAC. La Figura 6.3a muestra el esquema simplificado
del DSP48 slice incluido en la familia Virtex-7 de Xilinx. El empleo de los bloques DSP para
realizar todas las operaciones del sumatorio de productos asegura la máxima velocidad de
cálculo frente a la implementación de multiplicaciones y sumas con recursos de propósito
general. La Figura 6.3b muestra una posible configuración de los DSP48 de Xilinx conectados
en cascada para realizar el sumatorio de cuatro productos utilizando los multiplicadores y
sumadores embebidos disponibles en ellos.
La gran mayoría de implementaciones de la convolución 2D en FPGA se basan en estos
bloques DSP para realizar las multiplicaciones, instanciando tantos en paralelo como mul-
tiplicadores sean necesarios. Aprovechando la lógica dedicada al acarreo rápido de los slices
de las FPGAs, las sumas son implementadas utilizando los recursos de propósito general, lo
que libera todos los bloques DSP para su uso en los multiplicadores. Sin embargo, conforme
aumenta el tamaño de la máscara, el número de multiplicadores necesarios crece exponencial-
mente, lo que limita el tamaño máximo de ésta u obliga a utilizar una FPGA mayor a costa
de incrementar considerablemente el coste por operación. En estas situaciones, la alternati-
va es el diseño de convolucionadores sin multiplicadores. Si bien la mayor parte del trabajo
en el diseño de filtros sin multiplicaciones se ha realizado en el dominio unidimensional, al-
gunos autores lo han extendido a la convolución 2D sustituyendo las multiplicaciones por
operaciones de suma y desplazamiento [Benkrid y Belkacemi] o trasladando los cálculos al
dominio logarítimico [Zhang y Asari]. La propuesta que se describe define una arquitectura
para calcular el sumatorio de productos sin multiplicadores basada en aritmética distribuida
y utilizando los recursos de propósito general de la FPGA.
185
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
ALU
Accumulator
+
× –
ALU
Accumulator
+
ALU + ALU
Accumulator Accumulator
+ =
× – +
ALU
Accumulator +/ –
+ = =
× –
+/ –
=
ALU
Accumulator
+
× –
ALU
Accumulator
+
× –
186
LUT LUT
4-entradas 4-entradas
dirección
Celda memoria
dirección
Celda memoria
1111 1 1111 1
1110 0 1110 0
1101 0 1101 0
1100 0 1100 1
a
1011 0 b 1011 0
1010 0 c 1010 1
a 1001 0 1001 1
b y 0 y 0
1000 1000
c
d 0111 0 0111 1
0110 0 0110 0
0101 0 0101 0
0100 0 0100 0
d
0011 0 0011 0
0010 0 0010 0
0001 0 0001 0
0000 0 0000 0
d d
c y c y
b b
a a
Figura 6.4: Implementación de diferentes funciones combinacionales en una LUT
Descartados
los flip-flops por cuestiones de optimización del espacio y del rutado, para la
implementación de esta tabla los dispositivos FPGA ofrecen dos posibilidades. Por un lado, del
concepto básico de LUT se deriva directamente que, siendo en definitiva celdas de memoria,
pueden ser utilizadas para configurar una memoria distribuida. La Figura 6.6 muestra
cómo. Típicamente, aunque en última instancia puedan quedar las LUTs más dispersas por
optimización del rutado, los algoritmos de las herramientas software que se encargan de la
implementación del circuito construyen una memoria de p bits de direcciones y b bits de
palabra con una matriz de LUTs con 2p−n filas y b columnas, siendo n el número de entradas
de una LUT. Tal distribución de los componentes que forman la memoria por el layout de la
FPGA motiva el calificativo de distribuida. Esta es la opción más eficiente cuando se trata
de implementar una o varias pequeñas memorias.
Cuando el tamaño de la memoria se hace algo mayor, en el orden de los Kbits, el aumento
exponencial del número de LUTs necesarias con la profundidad conlleva que esta solución se
vuelva ineficiente. El empleo de centenares de LUTs para implementar la memoria dificulta el
rutado y repercute en un mayor retardo combinacional para los buses de datos y direcciones,
lo cual se traduce en una limitación de velocidad para todo el sistema de procesamiento.
Además, se reduce el número de LUTs disponibles para lo que, en definitiva, es su finalidad:
implementar funciones lógicas. Para estas situaciones, muy frecuentes puesto que la memoria
es un componente básico en la inmensa mayoría de los sistemas digitales, y con la intención
de evitar el empleo de memoria externa que reduzca sensiblemente el ancho de banda, los
fabricantes (Xilinx AMD, Intel Altera, Actel, Atmel, Quicklogic y otros) incluyen en el layout
de la FPGA bloques de memoria RAM Síncrona (SRAM) desde hace más de una década. En
187
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Memoria
x3 x2 x1 x0 Celda memoria
dirección
0 ×h3 + 0 ×h2 + 0 ×h1 + 0 ×h0 = 0 0000
x0
y x1
x2
x3
las FPGAs de Xilinx estos bloques, denominados BlockRAM, son actualmente (en Virtex-7
con tecnología de 28nm) de 36 Kbits configurables con diferentes relaciones anchura por
profundidad.
Con estas alternativas, la elección de una u otra opción para la tabla que almacena los
resultados de la convolución está condicionada por el aumento exponencial de su tamaño con
N . Sin embargo, aunque este planteamiento básico es en teoría extensible a cualquier número
de coeficientes, en la práctica, su implementación deja de ser eficiente para pasar rápidamente
a ser inviable en una FPGA actual: para convoluciones con 20 coeficientes es necesaria una
memoria de 1M posiciones; una de 1G posiciones para 30 coeficientes. Sin embargo, la máxima
capacidad de memoria disponible en BlockRAM en el modelo de mayor tamaño en la reciente
Virtex-7 es de 68MB.
Para solventar esta limitación, el cálculo de la convolución de la ecuación (6.2) puede ser
descompuesto en paquetes de k datos y obtener el resultado final sumando los resultados de
cada una de estas convoluciones parciales o sub-convoluciones:
dX
k e k−1
N
yn = (6.3)
X 0
hkj+i xn−(kj+i)
j=0 i=0
con
hkj+i = 0 kj + i ≥ N (6.4)
0
si
188
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
blockRAM
LUT 4 entradas
siendo {m0 , m1 . . . mk−1 } los bits, de menos a más significativo, que codifican el valor de m:
k−1
m= mb 2b (6.8)
X
b=0
189
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
distribuidos en dlog2 (nROM )e etapas en cascada, con nSUM (i) sumadores en la etapa i ∈
[1, dlog2 (nROM )e]:
nROM
2(i−1)
nSUM (i) = (6.11)
2
Como opción por defecto, el árbol de sumadores ha sido diseñado totalmente segmentado
con registros en cada etapa para maximizar el paralelismo a nivel de instrucción y con ello
alcanzar la máxima velocidad, a expensas de un incremento en el número de flip-flops nece-
sarios y de la latencia. En el diseño de la arquitectura no se han contemplado optimizaciones
del camino de datos en el árbol de sumadores que puedan comprometer su flexibilidad para
manejar cualquier resolución de datos y coeficientes.
Las tablas ROM y el árbol de sumadores forman el módulo de cálculo de la convolución,
mostrado de manera simplificada en el esquema de la Figura 6.7.
ROM + yn
ROM
Figura 6.7: Esquema simplificado del módulo de convolución 1 × N : buffer de ventana unidi-
mensional y módulo de cálculo basado en tablas ROM
190
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
din
enable
yn
Etapas segmentación
Figura 6.8: Esquema del módulo básico para el cálculo de la convolución de una entrada
binaria con un filtro de 20 coeficientes y agrupamiento k = 4
191
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
i=− M
2
+1 j=− N
2
+1
Como representa gráficamente la Figura 6.9, se trata de un filtro local 2D en función del
cual el valor de cada elemento de la matriz resultante depende de una ventana de datos de
entrada y viene dado por el sumatorio de los productos de los datos en dicha ventana por los
de la matriz de coeficientes.
ventana de datos
Iy –1,x –1 Iy –1,x Iy –1,x +1
h 1, –1 h 1,0 h 1,1
máscara de coeficientes
Figura 6.9: Representación del procedimiento de cálculo de la convolución 2D: una máscara
de M × N coeficientes recorre los I(y, x) de la matriz de entrada situándose sobre
una ventana de M ×N datos centrada en cada I(y, x) para generar cada elemento
de la matriz resultante
o − N 2−1 , N 2−1 según N sea par o impar, respectivamente. En lo sucesivo se va a suponer que
h i
M y N son pares, como se recoge en la ecuación (6.12). En otro caso bastaría con considerar
el intervalo correspondiente.
En cualquier caso, la ecuación (6.12) es simplemente una extensión al espacio bidimen-
sional del caso unidimensional descrito en el apartado anterior. Por ello, el módulo para el
cálculo de la convolución se puede diseñar instanciando M módulos 1 × N , cada uno de ellos
192
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
din1 fila 1
en1
reset1
din2 fila 2
en2
reset2
din3 fila 3
en3
reset3 I(y,x)
O(y,x)
din4 fila 4
en4
reset4
din5 fila 5
en5
reset5
mSUM = M − 1 (6.13)
con i ∈ [1, dlog2 (M )e]. Todos los sumadores incluyen una etapa de segmentación.
193
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Al igual que en el caso unidimensional, los M buffers de ventana, que ahora forman un
buffer de ventana de tamaño M × N , contienen los datos que direccionan todas las memorias.
Cada buffer de ventana 1 × N es alimentando por su correspondiente buffer de línea, como
se detalla más adelante en el apartado 6.2.
La instanciación de M módulos 1 × N y el árbol de sumadores extienden al máximo el
paralelismo a nivel de iteración y posibilitan que las operaciones implicadas en el cálculo
de la convolución se realicen en paralelo en un único ciclo de reloj. En cada nuevo ciclo, la
convolución estará centrada en un nuevo dato I(y, x), el que esté guardado en el registro D N
2
de la fila f M .
2
Siendo totalmente válida esta extensión desde el caso unidimensional, es necesario, no
obstante, tener presente una diferencia fundamental: la naturaleza bidimensional de los datos
de entrada. Ésta implica que no sólo importa el valor de un dato en cada instante sino también
su posición en la matriz de entrada. Al tratarse de un filtrado local, el resultado depende del
dato sobre el que se centra la convolución y también de los anteriores y los posteriores. En
flujo continuo de datos, con el sentido indicado en la Figura 6.11, los datos se reciben por filas,
de arriba a abajo y de izquierda a derecha. Esto implica que el dato recibido inmediatamente
después del I(y, x) es el I(y, x + 1), el siguiente al I(y, Q) es el I(y + 1, 1), y el siguiente al
I(P, Q) es un nuevo I(1, 1) correspondiente a una nueva matriz de entrada. Sin embargo, en
el ámbito del procesamiento de imagen, el píxel I(y, Q) no se considera vecino del I(y + 1, 1),
ni el I(P, Q) lo es del I(1, 1) de la siguiente imagen. Se hace necesario, por tanto, establecer
algún tipo de procedimiento para evitar que en la proximidad de los bordes de la imagen las
operaciones se realicen sobre datos que no son los apropiados.
Figura 6.11: Sistema de referencia considerado para los elementos de la matriz de datos y
sentido del flujo de entrada
194
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Para hacer frente a esta problemática una solución empleada típicamente en implementa-
ciones software consiste en aumentar el tamaño de la matriz de entrada hasta una de dimen-
siones (P + M − 1) × (Q + N − 1) [González y Woods]. La Figura 6.12 muestra esta nueva
matriz I 0 . En ella, las zonas sombreadas representan las filas y columnas de datos añadidas
a la matriz original I para formar I 0 , que corresponden a los I(y, x) con x < 1, x > Q, y < 1
ó y > P implicados
en el cálculo de la convolución en cualquier elemento de I.
1,1 = I 1– M
I´ _ +1,1– N
_ +1
2 2
I 1,1
I P,Q
I´
P+M–1,Q+N–1 = I P + M
_ , Q + N
_
2 2
Figura 6.12: Extensión de la matriz de entrada para gestionar el cálculo en los bordes
Para dar valor a estos datos existen varias posibilidades, siendo las más habituales las
mostradas en la Figura 6.13: asignar un valor constante predeterminado (típicamente cero),
replicar el valor del dato en el borde más cercano, asignar el valor simétrico —como un
espejo— con respecto al borde o considerar la repetición circular de los datos. La solución
empleada en el algoritmo de reconocimiento es, como se indica en el apartado 4.2, la técnica
denominada zero padding, que consiste en considerar una extensión de la matriz de entrada
con valores constantes e iguales a cero ([Matlab Image Processing Toolbox]).
0 0 0 0 0 0 0 0 ... I 1,1 I 1,1 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 . . . I 3,3 I 3,2 I 3,1 I 3,1 I 3,2 I 3,3 I 3,4 I 3,5 . . . IP-2,Q-2 IP-2,Q-1 IP-2,Q IP-2,1 IP-2,2 IP-2,3 IP-2,4 IP-2,5 . . .
0 0 0 0 0 0 0 0 I 1,1 I 1,1 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 I 2,3 I 2,2 I 2,1 I 2,1 I 2,2 I 2,3 I 2,4 I 2,5 IP-1,Q-2 IP-1,Q-1 IP-1,Q IP-1,1 IP-1,2 IP-1,3 IP-1,4 IP-1,5
0 0 0 0 0 0 0 0 I 1,1 I 1,1 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 I 1,3 I 1,2 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 IP,Q-2 IP,Q-1 IP,Q IP,1 IP,2 IP,3 IP,4 IP,5
0 0 0 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 . . . I 1,1 I 1,1 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 . . . I 1,3 I 1,2 I 1,1 I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 . . . I1,Q-2 I1,Q-1 I1,1
1,Q
I 1,1 I 1,2 I 1,3 I 1,4 I 1,5 . . .
0 0 0 I 2,1 I 2,2 I 2,3 I 2,4 I 2,5 I 2,1 I 2,1 I 2,1 I 2,1 I 2,2 I 2,3 I 2,4 I 2,5 I 2,3 I 2,2 I 2,1 I 2,1 I 2,2 I 2,3 I 2,4 I 2,5 I2,Q-2 I2,Q-1 II2,1
2,Q
I 2,1 I 2,2 I 2,3 I 2,4 I 2,5
0 0 0 I 3,1 I 3,2 I 3,3 I 3,4 I 3,5 I 3,1 I 3,1 I 3,1 I 3,1 I 3,2 I 3,3 I 3,4 I 3,5 I 3,3 I 3,2 I 3,1 I 3,1 I 3,2 I 3,3 I 3,4 I 3,5 I3,Q-2 I3,Q-1 I3,1
3,Q
I 3,1 I 3,2 I 3,3 I 3,4 I 3,5
0 0 0 I 4,1 I 4,2 I 4,3 I 4,4 I 4,5 I 4,1 I 4,1 I 4,1 I 4,1 I 4,2 I 4,3 I 4,4 I 4,5 I 4,3 I 4,2 I 4,1 I 4,1 I 4,2 I 4,3 I 4,4 I 4,5 I4,Q-2 I4,Q-1 I4,Q I 4,1 I 4,2 I 4,3 I 4,4 I 4,5
0 0 0 I 5,1 I 5,2 I 5,3 I 5,4 I 5,5 I 5,1 I 5,1 I 5,1 I 5,1 I 5,2 I 5,3 I 5,4 I 5,5 I 5,3 I 5,2 I 5,1 I 5,1 I 5,2 I 5,3 I 5,4 I 5,5 I5,Q-2 I5,Q-1 I5,Q I 5,1 I 5,2 I 5,3 I 5,4 I 5,5
... .. .. .. .. .. .. .. .. ... .. ..
. . . . . . . . . .
En las implementaciones hardware, por su parte, apenas hay diseños que gestionen este
problema de los bordes. Aunque el flujo secuencial de datos implica que los cálculos en
los bordes de la imagen se realizan utilizando datos de posiciones de la entrada que no
195
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
corresponden con los índices de los sumatorios, el pequeño tamaño de las máscaras que se
emplean reduce el impacto en los resultados a lo imperceptible. Así, la solución de extensión
del tamaño de la entrada es sustituida por la definición de un área de interés (Region of
Interest, ROI): una sub-matriz de I, M filas y N columnas más pequeña que ella, en la que
los resultados
son válidos; fuera de esta región los resultados han sido calculados con datos
que no pertenecen a los términos de la convolución y en consecuencia son erróneos.
I M,N
_ _
2 2
Área de Interés
I P–M,Q
_ –N
_
2 2
Figura 6.14: Área de Interés de la matriz resultante de la convolución donde los valores son
válidos
Sin embargo, cuando las plantillas son de tamaño medio-grande, especialmente cuando la
relación entre el tamaño de la plantilla y el de la imagen no es pequeña, la ROI resultante
puede ser de dimensiones tan reducidas que el empleo de la convolución no sea de utilidad. En
el caso de la aplicación que se desarrolla en esta tesis, el tamaño de las diferentes plantillas, en
particular sus tamaños con respecto al de la imagen, hacen que la ROI sea aproximadamente
un 60 % del área de la imagen de entrada, es decir: los gestos deberían restringirse a un
área centrada de la imagen del 60 % del tamaño de ésta, no siendo utilizable todo lo que se
encuentre en el 40 % restante. Este recorte restringe de manera muy considerable el espacio de
trabajo válido del sistema de reconocimiento y no se ha considerado una solución aceptable.
Por lo tanto, se hace necesario gestionar el cálculo de la convolución en los bordes. Como la
aplicación directa de la técnica software de extensión de la entrada dista de ser eficiente, ya que
aumenta de manera innecesaria los recursos de memoria y el número de ciclos requeridos para
el cálculo de la convolución sobre la imagen, la solución hardware pasa por dos alternativas:
adaptar la función de filtrado o controlar el flujo de datos. La primera es equivalente a incluir
en el algoritmo —y por ello en el módulo— de cálculo condiciones que detecten cuando se
producen las situaciones de datos no válidos y las manejen, con operaciones específicas, de
manera adecuada. Es decir, se requiere comprobar los valores de la posición de los datos en
la matriz antes de realizar las operaciones. En software esta alternativa se considera poco
eficiente ya que sobrecarga el número de operaciones que deben realizarse por cada dato y
por ello se opta por la extensión de la matriz de entrada. En hardware, implica aumentar
la complejidad de la lógica de control del módulo de cálculo y su camino de datos. En la
propuesta de módulo de cálculo basado en aritmética distribuida no se ha considerado una
solución viable. La segunda opción supone modificar el buffer de ventana para que alimente
el módulo de cálculo con los valores oportunos en cada situación.
En esta tesis se ha desarrollado una solución hardware específica para la implementación
de la técnica de extensión con ceros. En ella se ha tenido presente que en hardware los bordes
horizontales, el superior y el inferior, se gestionan de manera diferente que los bordes verticales
a izquierda y derecha de la matriz de entrada. Como se puede observar en la Figura 6.12, los
196
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
primeros conllevan que varias filas deben valer cero, mientras que los segundos lo implican
para varias columnas. La diferencia en cuanto al control hardware entre uno y otro caso deriva
del sentido del flujo de datos. Como se muestra en la Figura 6.11, los datos se reciben por filas,
de arriba a abajo y de izquierda a derecha. Esto permite que para los bordes horizontales sea
suficiente con anular los resultados parciales de las filas correspondientes, lo cual es posible
por medio del control adecuado de la señal reseti de cada una de las instancias de los módulos
1×N . Sin embargo, para los bordes verticales el sentido del flujo de datos obliga a gestionar el
valor de los datos antes de ser considerados en las operaciones de cálculo de cada convolución.
Este control debe cumplir un doble propósito: por un lado, hacer nulo el valor que forma parte
de la dirección de la tabla ROM para aquellos componentes del buffer de ventana que en un
instante determinado corresponden a datos de la entrada que quedan fuera de la ventana
de datos aplicable; por otro, no perder los valores que deban anularse pero que vayan a ser
necesarios en el cálculo de convoluciones posteriores. Para satisfacer esta funcionalidad se ha
completado la estructura básica del módulo de cálculo de la convolución 1 × N descrita hasta
el momento con lógica adicional formada por una cadena de Ri flip-flops conectados en serie
y controlada por las señales resetD y resetI. Esta lógica y estas señales controlan los valores
de los datos anteriores y posteriores al elemento central que direccionan las tablas ROM. La
Figura 6.16 muestra el esquema completo del diseño para la convolución con una plantilla de
tamaño 1 × 20, en la que al diseño básico de la Figura 6.8 se ha añadido la lógica adicional.
En el caso general, cuando la convolución se centra en posiciones I(y, x) lo suficientemente
alejadas de los bordes de la entrada, las señales resetD y resetI permanecen desactivadas y los
valores del dato central, disponible en D N , de los N/2 valores posteriores, disponibles en din y
2
D[1, N −1] , y los N/2−1 valores anteriores, disponibles en D[ N +1,N −1] , determinan directamente
2 2
las direcciones de lectura de las memorias. Esta situación se mantiene sin cambios hasta que
la convolución se centra en I(y, Q − N/2 + 1), momento en el que el flujo continuo de datos
hace que el valor del dato din sea I(y + 1, 1). Como este dato no forma parte del cálculo
actual, la técnica de extensión con ceros pide anular su valor en la entrada de dirección
de la tabla ROM correspondiente. Para ello se activa la señal resetD, que por medio de
un inversor y una puerta AND hace cero cualquier valor presente en din . En las siguientes
convoluciones nuevos valores I(y + 1, x) que no pertenecen a la ventana de datos implicada en
el cálculo se propagan por el buffer de ventana. Para que no alteren el resultado, se mantiene
activado resetD, que ya no sólo anula el valor en din sino que, al extenderse por la cadena
Ri , va haciendo lo propio con los valores de los sucesivos Di por medio de las respectivas
puertas NOT y AND. En el instante en el que la convolución se centra en I(y, Q) todos los
valores de los registros D[1, N −1] deben valer cero, para lo cual resetD debe haber permanecido
2
activada. En el instante siguiente la convolución se centra en I(y + 1, 1) y la situación cambia
completamente: ahora es necesario disponer de los valores posteriores y anular los anteriores.
Para ello, resetD es desactivada, lo que permite recuperar din , y se activa resetI, que resetea
los Ri para recuperar los D[1, N −1] y también resetea los D[ N +1,N −1] para anular su valor.
2 2
Estos últimos se hacen cero de manera definitiva ya que no vuelven a ser necesarios para
ningún cálculo en la línea y + 1. Esta funcionalidad queda reflejada en el diagrama de estados
de la Figura 6.15.
De manera genérica, y siguiendo con el caso de N par, esta lógica adicional requiere
N/2 − 1 flip-flops. La entrada del primer flip-flop R1 es la señal resetD, que es activada
para las convoluciones en coordenada x ∈ [Q − N/2 + 1, Q] y desactivada para el resto. La
entrada del flip-flop Ri+1 es la salida del Ri . Todos los Ri comparten la misma señal de reset
síncrono resetI, que es activada únicamente cuando la coordenada del dato sobre el que se
realiza la convolución es x = Q. La señal resetI está conectada también a la entrada de reset
197
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
x <Q–N+1
2
S1: resetD = ‘0’
S1 x =Q–N+1
2 resetI = ‘0’
Q–N+1 < x <Q
2 S2: resetD = ‘1’
x=0
S2 resetI = ‘0’
S3: resetD = ‘0’
S3 x=Q
resetI = ‘1’
Figura 6.15: Diagrama de estados funcional de la generación de las señales del control de
bordes
síncrono de los flip-flops D[ N +1,N −1] . Además, son necesarias N/2 puertas lógicas AND y
2
otras tantas puertas NOT. Las salidas de las AND son las líneas del bus de direcciones de las
tablas ROM que realizan las sub-convoluciones con los valores en los elementos del buffer de
ventana que corresponden a datos posteriores al central. Una puerta AND tiene una de sus
entradas conectada a la señal din y la otra, a través de una puerta NOT, a la señal resetD.
Las restantes puertas AND tienen una entrada conectada a la salida de los flip-flops D[1, N −1]
2
y la otra, a través también de las correspondientes NOT, a la salida de los R[1, N −1] .
2
din
enable
reset
yn
resetD
resetI
xn
Etapas segmentación
Figura 6.16: Esquema del módulo para el cálculo de la convolución de una entrada binaria
con un filtro de 20 coeficientes y factor de agrupamiento k = 4
Esta solución [Toledo-Moreo et al.] implementa la técnica de extensión con ceros con un
coste hardware mínimo y sin ciclos de reloj extra. Para la configuración de la Figura 6.16, se
explica a continuación su funcionamiento detallado por medio de un ejemplo.
198
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
199
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
t31
t30
t29
t28
t27
t26
t25
t24
t23
t22
t21
t20
t19
t18
t17
t16
t15
t14
t13
t12
t11
t10
t9
t8
t7
t6
t5
t4
t3
t2
t1
t0
Figura 6.17: Ejemplo de la evolución del estado de los elementos del buffer de ventana, de las
señales de dirección de las tablas ROM (ROMn bm corresponde al bit bm de la
tabla ROM n) y de los señales de control de la lógica de bordes, en el esquema
de la Figura 6.16, para una imagen de 60 píxeles de ancho y una convolución
1 × 20
200
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
x <Q–N+1
2 resetD = ‘0’
resetI = ‘0’
S1
S3
resetD consigue hacer cero el valor de ROM1 b0 , el bit menos significativo de la dirección de
la primera ROM, sin perder el valor de din . Es el estado S2 del diagrama de estados funcional
de la Figura 6.19.
S1 x =Q–N+1
2
S3 resetD = ‘1’
resetI = ‘0’
En el instante siguiente t10 la convolución se centra en el dato I(y, 52) y ahora son din
y D0 los que contienen valores utilizados en los dos últimos términos del sumatorio que no
pertenecen a la línea de la imagen sobre la que se encuentra la ventana sino que en realidad
son los píxeles de la línea siguiente I(y + 1, 2) e I(y + 1, 1) respectivamente. Estos valores
deben ser anulados antes de direccionar la memoria ROM, pero sigue sin ser viable resetear
sus respectivos flip-flops porque van a formar parte de los cálculos en la línea siguiente. En
lugar de esto, mantener activada resetD vuelve a anular ROM1 b0 asociada a din al mismo que
tiempo que la salida de R1 , el primer flip-flop de la cadena Ri que ahora toma el valor ‘1’ que
en el instante anterior tuvo resetD, hace nulo ROM1 b1 que llega al bit de ROM1 asociado a
D1 . Se permanece por tanto en el estado S2.
De esta manera, manteniendo activada resetD mientras se va extendiendo por los Ri de
manera paralela y sincronizada con el avance de los datos por los Di , se van anulando los
valores adecuados para los sucesivos instantes, que cada vez corresponden a más flip-flops
conforme la convolución se acerca el borde de la imagen. En el instante t18 la convolución se
centra en I(y, 60) y tiene lugar el caso extremo de la Figura 6.20. En él, todos los valores en
posiciones a la derecha del dato central —correspondientes a datos posteriores a dicho dato
central presentes en din y en los registros D1 a D9 del buffer de ventana— deben ser anulados.
En este punto, la Figura 6.17 muestra que tanto resetD como todos los Ri toman valor ‘1’.
201
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Figura 6.20: Ejemplo de control de operaciones en los bordes de la imagen: instante t18
S1
S3
x=Q resetD = ‘0’
resetI = ‘1’
Figura 6.21: Ejemplo de control de operaciones en los bordes de la imagen: instante t19
Por otra parte, también hay que recuperar los valores en din y en los flip-flops D9 a D1
con los datos de I(y + 1, 2) a I(y + 1, 11) que ahora sí son utilizados en el cálculo. Para ello
deben desactivarse las señales que a través de las funciones AND han anulado su valor en los
instantes anteriores, lo cual se consigue devolviendo resetD a nivel lógico bajo y reiniciando
los Ri con resetI.
A partir de este momento resetD y resetI vuelven a permanecer desactivadas, hasta que
se produzca en la línea y + 1 una situación análoga a la del instante t9 , donde comenzará de
nuevo el proceso descrito.
202
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
el sumatorio del producto de N coeficientes por N datos, ambos números enteros sin signo,
viene dado por:
N −1 N −1 I −1
bX
yn = hl xn−l = x(n−l)b 2b (6.16)
X X
hl
l=0 l=0 b=0
que puede ordenarse redistribuyendo el orden de los sumatorios como:
I −1
bX N −1
yn = 2 (6.17)
X
b
hl x(n−l)b
b=0 l=0
203
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
resultados parciales de cada bit de acuerdo con su peso, siendo necesarios bI ciclos de reloj
para generar cada resultado. La señal load controla la carga/desplazamiento de los registros
de desplazamiento de manera tal que en cada periodo de bI ciclos de reloj la carga se produce
en el primero de ellos para lograr el avance de los datos a lo largo del buffer de ventana
y los restantes bI − 1 ciclos tiene lugar el desplazamiento hacia la derecha de los bits de
cada dato dentro del propio registro. La realimentación de carga serie de cada registro de
desplazamiento, con el bit de salida de menor peso q0 conectado al de entrada de mayor peso
dbI −1 , permite operar de manera serie sobre todos los bits y posteriormente transmitir el dato
al siguiente registro por medio del esquema de conexión que se muestra con más detalle en
la Figura 6.23.
entrada datos
load
enable
reset
yn
resetD
resetI
xn
Etapas segmentación
Figura 6.22: Esquema de la estructura serie para una configuración 1 × 10 y datos de bI bits
204
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Qi Qi[0,n-1:1] Q i+ 1
clk
load
load Qi
enable
reset bi
b i+ 1
Q i+ 1
bi
b i+ 1
b0 b1 b2 b3
Bit bi en la dirección de
la Tabla ROM
Figura 6.23: Estructura serie para datos de bI bits: conexión de datos en la cadena de registros
de desplazamiento que forman el buffer de ventana y cronograma de ejemplo para
datos de 4 bits
205
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
1 × 10 bI bits fila 1
din1
Etapas segmentación
load
en1
reset1
resetD
resetI
O(y,x)
din2
1 × 10 bI bits fila 2
en2
reset2
din3
1 × 10 bI bits fila 3
en3
reset3
din4
1 × 10 bI bits fila 4
en4
reset4
din5
1 × 10 bI bits fila 5
en5
reset5
Etapas segmentación
Figura 6.24: Esquema de la estructura serie para una configuración 5 × 10 y datos de bI bits
206
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
en 1-M
reset 1-M
din 1-M(1)
O(y,x)
din 1-M(2)
din 1-M(3)
Etapas segmentación
El número de LUTs necesarias para los sumadores depende de cuantos son necesarios,
del tamaño de los datos de entrada y de si la operación es con signo o sin signo. Para
calcular el resultado en cada fila 1 × N a partir de los resultados parciales almacenados en
las tablas ROM, el número de niveles y de sumadores en cada nivel está determinado por
las expresiones (6.10) y (6.11) del apartado 6.1.1. El tamaño de los datos de entrada a los
sumadores en el primer nivel es de bROM bits y va incrementándose con cada suma parcial,
de manera que en cada etapa el tamaño es (bROM + i − 1) bits, siendo i la etapa en el rango
[1, dlog2 nROM e]. De manera análoga, el tamaño del árbol que suma los resultados de las M
filas viene dado por las expresiones (6.13) y (6.14) del apartado 6.1.2. Los datos de entrada
al primer nivel son de (bROM + dlog2 nROM e) bits, para representar el valor máximo que puede
obtenerse en cada fila. En cada etapa j, estando j en el rango [1, dlog2 M e], este tamaño se
incrementa en (j − 1) bits.
El número de LUTs necesario para implementar un sumador de b bits ha sido estimado
utilizando System Generator for DSP (XSG) de Xilinx y se muestra en la Figura 6.26 para
sumadores sin signo y con signo. Se observa que, gracias a la lógica de acarreo rápido incluida
por el fabricante en el diseño de los slices de las FPGAs, para datos sin signo son necesarias
únicamente tantas LUTs como bits tienen las entradas; una más si se trata de números con
signo.
De acuerdo con lo anterior, para operaciones sin signo el número de LUTs estimado para
implementar los sumadores es:
dlog2X
nROM e
LUTsSUM =M nSUM (i) · (bROM + i − 1) +
i=1
207
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
25
Datos con signo
20
Datos sin signo
Número de LUTs
15
10
5
1
1 5 10 15 20
b
Figura 6.26: Número de LUTs para la implementación de sumadores con y sin signo, en
función del número de bits b de las entradas
dlog2 M e (6.21)
+ mSUM (j)·(bROM +dlog2 nROM e+ j − 1)
X
j=1
Para operaciones con signo la estimación es similar, simplemente, como indica la Figu-
ra 6.26, cada sumador con signo requiere un LUT más.
El consumo de LUTs de la arquitectura se completa con la lógica incluida en el buffer de
ventana para el control de bordes, que requiere:
N
LUTsbordes =M +1 (6.22)
2
dlog2X
nROM e
nROM
FFsSUM = M · (bROM+i) +
i=1
2i
(6.24)
dlog2 M e
M
+ · (bROM + dlog2 nROM e + j)
X
j=1
2j
La Figura 6.27 muestra los diferentes niveles de la jerarquía del diseño, indicando el
tamaño de los datos a lo largo del camino de datos, para una configuración 30 × 30 con
entrada binaria, coeficientes de 2 bits y agrupamiento k = 4 (bROM = 4).
Estas estimaciones de recursos se representan gráficamente en la Figura 6.28 para dife-
rentes tamaños del parámetro k en FPGAs con LUTs de 4 entradas y de 6 entradas corres-
pondientes, respectivamente, a Xilinx Virtex-4 (y familias anteriores) y a Virtex-5 (y familias
posteriores). En ambas gráficas se aprecia con claridad que el menor consumo de LUTs se
obtiene cuando se hace coincidir k con el número de entradas de una LUT. Esto es debido
208
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
7 Módulo 30 × 30
1 x 30
8
fila 1 +
Módulo 1× 30 1 x 30
9
4 fila 2 +
Buffer ventana 1×30 ROM 1 1 x 30
fila 3 +
5
4 + 1 x 30
10
1 fila 4 +
1 x 30
ROM 2 fila 5 +
1 x 30
6 fila 6 +
+
1 x 30
fila 7 +
1 x 30
ROM 3 11
fila 8 +
1 x 30
+ fila 9 +
1 x 30
fila 10 +
ROM 4
1 x 30
fila 11 +
7
+ 1 x 30
fila 12 +
1 x 30
ROM 5 fila 13 +
1 x 30
+
fila1 4 +
1 x 30
fila1 5 +
ROM 6 1 x 30 12
fila 16 +
1 x 30
+ fila 17 +
1 x 30
fila 18 +
ROM 7
1 x 30
fila 19 +
+ 1 x 30
0
fila 20 +
1 x 30
ROM 8 fila 21 +
1 x 30
fila 22 +
1 x 30
fila 23 +
1 x 30
+
4 fila 24
1 x 30
fila 25 +
1 x 30
LUT
LUT
LUT
LUT
fila 26 +
Tabla ROM 1 x 30
fila 27 +
k=4, bCOEF=2 1 x 30 +
fila 28
1 x 30
4
fila 29 + z-1
1 x 30
fila 30
Figura 6.27: Niveles de jerarquía del diseño y tamaño del camino de datos para una configu-
ración 30 × 30 con entrada binaria y coeficientes de 2 bits, siendo k = 4
a la preponderancia del término que estima el número de las LUTs necesarias para la imple-
mentación de las memorias distribuidas que calculan las sub-convoluciones. En el caso de
los flip-flops, el término con mayor importancia es el que estima los necesarios para la seg-
mentación de los árboles de sumadores. Al aumentar k estos árboles tienen menos ramas y
etapas, por lo que es menor el consumo de flip-flops para segmentarlos. Sin embargo, en las
gráficas se observa también que cuando k coincide con el número de entradas de una LUT los
consumos de LUTs y flip-flops prácticamente se emparejan, algo que no sucede en ninguna
otra configuración, y además lo hacen para el mínimo consumo de LUTs. Esto es significativo
porque, debido a la relación 1:1 de estos dos tipos de recursos de propósito general en los
slices de las FPGA, se simplifica el proceso de rutado y con ello se obtienen mejores presta-
ciones temporales. Por estos dos factores —el consumo mínimo de LUTs y la simplificación
209
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
del rutado asociada al emparejamiento de recursos— se considera que la solución óptima para
el factor de agrupamiento k es que su valor sea igual al número de entradas de las LUTs del
dispositivo.
35 35
30 30
25 25
Número de recursos
20 20
15 15
10 10
5 5
0 0
2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10
k k
LUTs FFs
Figura 6.28: Estimación del número de LUTs y flip-flops necesarios en función de k para datos
de 1 bit y plantillas M × M de 4 bits en FPGAs con LUTs de 4 y 6 entradas
El impacto del parámetro k en el tamaño de palabra bROM de las tablas ROM es conse-
cuencia de que, para un tamaño dado de datos y coeficientes, cuantos más datos y coeficientes
estén involucrados en el sumatorio de productos mayor podrá ser el resultado. Para no perder
información, el número de bits de palabra debe ajustarse para poder representar el mayor
valor posible. La Figura 6.29 muestra dicha evolución de bROM en función de k, recogida en
la ecuación (6.9), para coeficientes de 4 bits.
Para datos de entrada de bI bits, el peor escenario desde el punto de vista de los recursos
necesarios viene dado por la implementación totalmente paralela. En ella, como se detalla en
el apartado 6.1.4, son necesarias bI instancias del módulo de 1 bit y un árbol de sumadores
de dlog2 bI e niveles y bI SUM (i) sumadores cada uno de ellos:
bI
2(i−1)
bI SUM (i) = (6.25)
2
210
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
10
bROM
7
2 3 4 5 6 7 8 9 10
k
i=1
El árbol de sumadores, al igual que los que forman parte del módulo con entrada binaria,
se ha considerado totalmente segmentado. Se emplean por tanto dlog2 bI e etapas de registros
cada una de ellas con bI FF registros:
bI
bI FF (i) = (6.28)
2i
i=1
211
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
10
Tabla ROM
k=4, bCOEF=8
Módulo 30 × 30
Módulo 1 × 30
10 13
4
1 18 Módulo 30 × 30 8bits
…
30
18
20
18 19
23
13
18 20
22
18 21
28
18 22
24
18 23
27
18 24
Buffer ventana 1×30
26
18 25
Figura 6.30: Niveles de jerarquía del diseño y tamaño del camino de datos para la estructura
paralela de una configuración 30 × 30 con coeficientes de 8 bits y datos de 8 bits
212
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
máquinas de estados de altas prestaciones o FIFOs, o para formar grandes tablas de búsqueda
o ROMs [BlockRAM datasheet, Xilinx]. En la familia Virtex-4, cada BlockRAM es de 18 Kbits
y puede ser configurada con diferentes relaciones de profundidad p y anchura b: 4K×4, 2K×9,
1K×18 y 512×36.
La estimación del número de BlockRAMs necesarias para construir las tablas ROM que
almacenan los resultados de las convoluciones debe tener presente estas diferentes relaciones
p × b. El número de bits del bus de direcciones de la tabla determina el valor óptimo del
parámetro k, como para LUTs de diferente número de entradas demuestra el estudio resumido
en los datos de la Figura 6.28. Para las configuraciones de BlockRAM disponibles, los valores
posibles se recogen en la Tabla 6.1.
Al mismo tiempo, debe tenerse presente que cada dirección de memoria debe guardar
cualquier posible resultado de k datos por k coeficientes. Considerando, como se planteó
inicialmente en el desarrollo realizado en el apartado 6.1.1, que la entrada es de 1 bit, la
anchura de la tabla ROM depende del valor máximo de los coeficientes y de k por medio de:
213
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
20×20 20×20
30×30 30×30
2000
900
50×50 50×50
800
700
600
FX140
500
BlockRAM
400
FX100
LX200
SX55
300 LX160
FX60 LX100
200 SX35 LX80
LX60
FX40
100
SX25
LX40
FX20 LX25
LX15
FX12
0
0 50000 100000 150000 200000
Familia LX FamiliaFFs
SX Familia FX
LUTs,
Figura
6.31: Recursos estimados para las implementaciones de las tablas en LUTs y en
BlockRAM, sobre el espacio de recursos de propósito general y BlockRAM en
dispositivos Virtex-4
configuraciones más grandes evaluadas, 30 × 30 y 50 × 50 con datos y coeficientes de 8 bits,
necesitan
más BlockRAM que la disponible
en la familia Virtex-4. Se concluye, por tanto, que
la implementación de las tablas es más eficiente con memoria distribuida que con BlockRAM
desde el punto de vista de los recursos necesarios. El comportamiento temporal de una y
otra opción es muy similar. El tiempo de acceso a los datos tanto de la memoria construida
con BlockRAM como de la formada con RAM distribuida situa la frecuencia máxima en 400
MHz para la gama más lenta de Virtex-4. Por la tanto, este factor no tiene repercusión en la
decisión.
214
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
Tabla 6.2: Estado de las principales opciones de configuración de las herramientas de síntesis
e implementación
Tabla 6.3: Espacios de configuración de la síntesis del diseño considerados para el análisis de
los resultados de implementación
La Tabla 6.4 muestra las estimaciones de recursos para diferentes tamaños y las compara con
los resultados obtenidos con las tres configuraciones de síntesis mencionadas, para datos de
entrada de un bit.
Los datos de la configuración op1 de la Tabla 6.4 validan las expresiones de estimación de
recursos. La tasa de error en el número de LUTs es 1,6 % para 20 × 20, de 1 % para 30 × 30 y
de 0,6 % para 50 × 50. En general, la diferencia se reduce, tendiendo a cero, según aumenta
215
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
M ×N 1 × 20 2 × 20 5 × 20 20 × 20
Est 62 132 362 1429
op1 57 123 338 1345
Flip-flops op2 57 114 302 1174
op3 53 106 275 1085
Est 50 107 281 1149
op1 49 105 276 1130
LUTs op2 49 105 276 1129
op3 53 113 303 1218
M ×N 1 × 30 2 × 30 5 × 30 30 × 30
Est 82 172 462 2726
op1 80 169 453 2694
Flip-flops op2 80 155 397 2288
op3 80 155 390 2288
Est 80 167 431 2628
op1 79 165 426 2600
LUTs op2 79 165 426 2599
op3 79 165 433 2599
M ×N 1 × 50 2 × 50 5 × 50 50 × 50
Est 154 317 828 8220
op1 149 308 804 8161
Flip-flops op2 149 284 708 7201
op3 145 276 680 6911
Est 136 280 175 7338
op1 135 278 708 7290
LUTs op2 135 278 708 7289
op3 139 286 736 7581
Tabla 6.4: Estimación y recursos reales ocupados por la implementación de diferentes tamaños
M × N del módulo de convolución 2D, en función de las opciones de síntesis
consideradas, para datos de entrada de 1 bit y coeficientes de 2 bits
216
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
conlleva, evidentemente, ninguna diferencia en los datos de la tabla, pero para cualquier M
mayor que uno la herramienta de síntesis detecta que es posible utilizar una única cadena
Ri común a todas las filas. Esta opción no tiene efecto alguno sobre el número de LUTs: las
dedicadas al control de bordes reciben datos de entrada propios de cada fila y no se pueden
compartir. El impacto de esta optimización sobre el periodo mínimo de reloj se analiza más
adelante.
Por su parte, la habilitación de la opción Shift Register Extraction en la opción op3
hace que se sustituyan por LUTs configuradas como Shift Register LUTs los flip-flops que
implementan los registros que equilibran el retardo de los datos por las diferentes ramas del
árbol de sumadores. Como muestra la Figura 6.32, el número de estos registros depende de
la estructura del árbol. Los módulos 1 × 20 y 1 × 50 sí necesitan estos registros y por ello la
configuración op3 intercambia flip-flops por LUTs —en la Tabla 6.4, el incremento de LUTs
coincide exactamente con la reducción de flip-flops—, mientras que el módulo 1 × 30 no los
necesita y por ello op3 no conlleva ningún cambio. Esta optimización es extensible al árbol
de sumadores de M módulos 1 × N .
Figura 6.32: Registros para equilibrar el retardo a lo largo de los caminos de datos en el árbol
de sumadores de módulos 1 × N
Respecto a las prestaciones temporales, la Tabla 6.5 recoge los periodos mínimos de reloj
proporcionados por la herramienta de análisis de tiempo Post-Place&Route para los tamaños
20 × 20, 30 × 30 y 50 × 50, y las tres configuraciones de opciones de síntesis consideradas. Los
valores demuestran la alta velocidad de procesamiento de la solución propuesta. Puesto que
todas las operaciones se han implementando con el máximo paralelismo y ocurren en un único
ciclo de reloj, es posible realizar la convolución de un dato de un bit con una plantilla 20 × 20
de coeficientes de dos bits en 4,15 ns, lo que supone más de 240 millones de convoluciones
por segundo, asumiendo flujo continuo de datos de entrada y que no hay limitación alguna
de ancho de banda de la entrada de datos al módulo de cálculo. Para 50 × 50, las operaciones
tardan 5,01 ns y por tanto se realizan cerca de 200 millones de convoluciones por segundo, que
conllevan casi 1 Tera-operaciones por segundo. Para imágenes de tamaño 640 × 480 píxeles,
es posible realizar la convolución de 649 imágenes en un segundo.
217
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
M ×N 20 × 20 30 × 30 50 × 50
op1 4,15 4,18 5,01
Tmin (ns) op2 4,59 4,65 5,89
op3 4,37 4,65 5,10
218
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
103
8 LUTs 5,5
4 4,5
2 4
0 3,5
15 20 25 30 35 40 45 50 15 20 25 30 35 40 45 50
M M
LUTs Flip-flops
3 LUTs 6 12
2 Flip-flops 4 Flip-flops 8
1 2 4
0 0 0
4 6 8 10 4 6 8 10 4 6 8 10
bROM bROM bROM
Dados bROM bits, los resultados de implementación son independientes del formato de
los números, enteros o punto fijo, que estos bits representan. La herramienta XSG permite
definir datos en punto fijo especificando el número total de bits del dato y la posición de la
coma decimal. Es decisión del diseñador hardware determinar bROM y repartir estos bits en
parte entera y decimal de manera que se pueda representar cualquier posible resultado con
la precisión requerida por la aplicación. En el modelo, los operadores aritméticos han sido
instanciados con precisión completa, por lo que está garantizada la representación sin error
del valor resultante de cualquier posible operación sobre las sub-convoluciones realizadas por
las tablas ROM.
La implementación del módulo de cálculo para datos de entrada de bI bits ofrece el amplio
abanico de posibilidades descrito en el apartado 6.1.4, siendo uno de los extremos el proce-
samiento totalmente serie de los bits del dato de entrada y el otro una solución totalmente
paralela. La Tabla 6.6 recoge los recursos y el periodo mínimo Post-place&Route con datos
219
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
5 5 5
4 4 4
de 8 bits para ambos casos de convoluciones 20 × 20, 30 × 30 y 50 × 50. Los coeficientes consi-
derados también son de 8 bits. Las opciones de las herramientas de síntesis y de Place&Route
son las indicadas en la Tabla 6.2 con la configuración op3.
serie paralela
20 × 20 30 × 30 50 × 50 20 × 20 30 × 30 50 × 50
Flip-flops 4738 10268 28828 15305 31303 89496
LUTs 4 entradas 5839 12811 35264 20233 42547 120992
Tmin (ns) 5,10 5,39 5,89 5,23 5,66 6,15
Tabla 6.6: Recursos ocupados y periodo mínimo de reloj para la implementación de convolu-
ciones de los tamaños indicados con datos de entrada de 8 bits y coeficientes de 8
bits (bROM = 10)
En la solución paralela, las operaciones sobre todos los bits de todos los datos se realizan
al mismo tiempo y el resultado se obtiene en un único ciclo de reloj, con la latencia indicada
en la ecuación 6.18. Para ello, son necesarios aproximadamente bI veces más recursos que en
el caso de entrada binaria, como para coeficientes de 2 bits de resolución ponen de manifiesto
los datos de la Tabla 6.7. Los datos para el entrada de 1 bit son los recogidos en la Tabla 6.4
del apartado 6.1.7.1. Este incremento de recursos dificulta el rutado y reduce la velocidad de
procesamiento, pero el paralelismo y la segmentación de la arquitectura permiten alcanzar
un throughput muy elevado.
1 bit 8 bits
20 × 20 30 × 30 50 × 50 20 × 20 30 × 30 50 × 50
Flip-flops 1218 2599 7581 10369 21829 60782
LUTs 4 entradas 1085 2288 6911 9638 19917 56114
Tmin (ns) 4,37 4,65 5,1 4,57 5,54 6,02
Tabla 6.7: Recursos ocupados y periodo mínimo de reloj para la implementación paralela de
convoluciones de los tamaños indicados con datos de entrada de 1bit y 8 bits, con
coeficientes de 2 bits (bROM = 4)
220
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D
La Figura 6.36 indica los recursos ocupados y el periodo mínimo de reloj para la imple-
mentación paralela de la convolución de una entrada de 8 bits con plantillas desde 15 × 15
hasta 50 × 50 coeficientes de 8 bits. Como en el caso de entrada de 1 bit, los recursos de
M1 × M1 a M2 × M2 aumentan aproximadamente en una relación (M2 /M1 )2 y se duplican
cada incremento de 1,4 en el tamaño de la plantilla, mientras que el periodo mínimo sólo se
incrementa un 25 % de 15 × 15 a 50 × 50.
Los datos de periodo mínimo de reloj de la Tabla 6.6 y de la Figura 6.36 revelan que es
posible realizar el cálculo de la convolución 2D de vídeo con resolución 640 × 480 píxeles de
8 bits con plantillas de hasta 50 × 50 coeficientes de 8 bits a 529 imágenes por segundo; si
el tamaño de imagen es 1280 × 720, a 176 imágenes por segundo; si el tamaño de imagen es
1920 × 1080, a 78 imágenes por segundo.
103 LUTs
125 6
75 5
50 4,5
25 4
0 3,5
15 20 25 30 35 40 45 50 15 20 25 30 35 40 45 50
M M
Figura 6.36: Recursos ocupados y periodo mínimo de reloj para la implementación paralela
de la convolución de una entrada de 8 bits con plantillas desde 15 × 15 hasta
50 × 50 coeficientes de 8 bits
Por su parte, la solución serie minimiza el consumo de recursos a costa de necesitar bI ciclos
de reloj adicionales para realizar una convolución, con la latencia indicada en la ecuación 6.19.
Los circuitos para las convoluciones de la Tabla 6.6 ocupan aproximadamente un 70 % menos
espacio que las equivalentes paralelas y 2,5 veces más que las de datos de entrada de un bit.
El periodo mínimo de reloj, que ahora no determina la velocidad de procesamiento de datos
sino de cada bit, es ligeramente menor gracias a la menor complejidad del rutado. Con los
datos de la tabla, es posible realizar el cálculo de la convolución 2D con plantillas de hasta
50 × 50 coeficientes de 8 bits y vídeo de 640 × 480 píxeles de 8 bits a 69 imágenes por segundo,
23 imágenes por segundo para 1280 × 720, y 10 imágenes por segundo para 1920 × 1080.
El comportamiento de los resultados de recursos y tiempo frente a la resolución de los
coeficientes se muestra en las gráficas de la Figura 6.37 para la convolución 30 × 30 paralela.
Como en el caso de la entrada binaria, el paralelismo y la segmentación absorben el impacto
del aumento del tamaño de los coeficientes por medio de un incremento del número de recursos
prácticamente lineal.
Más alla de las configuraciones particulares consideradas en este análisis, la modularidad
de la arquitectura propuesta para el cálculo de la convolución 2D hace posible su particula-
rización a cualquier tamaño de plantilla, resolución de datos y resolución de coeficientes.
221
6.2. Buffering de datos
103
50 6.5
222
6.2. Buffering de datos
Datos reutilizables
Iy,x
La Figura 6.39 muestra el esquema simplificado de una arquitectura genérica con esta
solución para una configuración 3 × 3. El controlador de lectura de datos debe funcionar M
veces más rápido que el módulo de cálculo para acceder en memoria a los M datos nuevos.
Un demultiplexor 1 a M , manejado por el controlador de lectura, los presenta en las filas
correspondientes del buffer de ventana.
La reutilización de datos entre operaciones de convolución se puede aplicar también a nivel
vertical, es decir, a operaciones centradas en datos de líneas consecutivas. Como muestra la
Figura 6.40, (M −1)·N de los M ·N datos implicados en la convolución centrada en I(y +1, x)
5
Por claridad de las figuras, en este apartado se considera que M y N son impares. Para el caso par las
expresiones son análogas y están indicadas en el apartado 6.1.2
223
6.2. Buffering de datos
buffer de ventana
frame grabber
Memoria externa Iy +1,x +1 Iy +1,x Iy +1,x –1
…
Iy –1,x +1
Iy ,x +1 Iy ,x Iy ,x –1
… … …
Iy –1,x +1 Iy –1,x Iy –1,x –1
Iy ,x +1
… … …
Controlador
Iy +1,x +1
lectura
…
Figura 6.39: Esquema simplificado de arquitectura basada en la reusabilidad de los datos en
cálculos sucesivos a nivel horizontal
fueron empleados previamente en la convolución centrada en I(y, x). Para poder disponer de
ellos sin volver a acceder a la memoria externa, se pueden utilizar M − 1 buffers para guardar
los Q datos de cada una de las filas. A estos buffers se les denomina buffers de línea.
Iy,x
224
6.2. Buffering de datos
P ×Q
ventana de datos
Datos en los buffers de línea
frame grabber
Memoria externa
buffer de ventana
din
buffer de línea 2
Iy ,x +2 Iy ,x +1 Iy ,x Iy ,x –1 Iy ,x –2
buffer de línea 4
Iy –2 ,x +2 Iy –2 ,x +1 Iy –2,x Iy –2,x –1 Iy –2,x –2
operación y la siguiente. El buffer de línea se comporta como una caché L2, externa al núcleo
procesador, que contiene datos leídos de la memoria principal —el frame grabber—reutilizables
a más largo plazo que proporciona a la caché L1 cuando son requeridos.
225
6.2. Buffering de datos
buffer de línea
BlockRAM
Din Iy,1 Dout
Iy,2
Iy,3
…
Iy,x
…
Iy,Q
contador A
Figura 6.42: Esquema simplificado de la estructura interna típica de un buffer de línea basado
en BlockRAM
LX200
300 LX160
LX100
BlockRAM
LX80
200
LX60
100 LX40
LX25 M=50
LX15 40
20 30
3 10
0
0 50000 100000 150000 200000 250000
FFs
226
6.2. Buffering de datos
de buffers, esta falta de flexibilidad para adaptarse al tamaño y la resolución deseados impli-
ca una necesidad de bloques BlockRAM claramente sobredimensionada e ineficiente. Aun
siendo la aplicación descrita un caso extremo, esta problemática es habitual en el diseño de
aplicaciones de procesamiento de imagen. Para algunos tamaños y resoluciones de entrada
existen relaciones que se adaptan mejor, pero en última instancia no depende del diseñador
sino de las características particulares de la aplicación. Por ejemplo, para proporcionar un
esquema FB a su sistema de reconocimiento de objetos basado en visión optimizando el uso
de BlockRAM, [Cao et al.] proponen una solución en la que los buffers de línea no almacenan
los datos de entrada sino resultados intermedios: cuatro mapas integrales de 9 bits cada
uno de ellos. Opta con ello por una solución muy específica que, aplicada de manera general,
restaría flexibilidad a la implementación ya que los datos de entrada no están disponibles para
cualquier otro procesamiento. En el caso de nuestra aplicación, no sería posible convolucionar
los datos de entrada con varias plantillas diferentes en paralelo.
Buscando optimizar el uso de la memoria interna minimizando a su vez el número de
accesos a memoria externa, [Yu y Leeser] proponen un esquema que denominan block buffering
en el que un buffer R×S, siendo R ≥ M y S ≥ N , almacena los datos para procesar (R−M +
1) × (S − N + 1) ventanas sin cargar ningún dato nuevo desde memoria principal. Mientras el
módulo de cálculo realiza estas operaciones, es posible cargar los datos del siguiente bloque
R × S. El número medio de accesos a memoria externa viene dado por:
R×S
(6.32)
(R − M + 1) × (S − N + 1)
datos por operación y por tanto el tamaño del buffer R × S permite ajustar el balance entre
consumo de recursos internos y accesos a memoria externa.
De manera similar, [Xia et al.] proponen un esquema que denominan buffer parcial multi-
ventana (MWPB, Multi Window Partial Buffering) como solución intermedia entre los es-
quemas PB y FB para alcanzar un compromiso entre el ancho de banda de memoria externa
necesario y el consumo de recursos internos. Con flujo de datos en sentido vertical (por colum-
nas), un buffer de (M + N − 1) × N registros proporciona (M + N − 1) datos en paralelo al
módulo de cálculo. El ancho de banda de memoria necesario se reduce a (M +N −1)/N datos
por ciclo de operación, lo que para plantillas cuadradas M = N implica aproximadamente
dos accesos a memoria por operación. Como contrapartida, la forma en la que se presentan
los datos requiere un diseño más complejo del módulo de cálculo para que pueda gestionar
la forma en la que recibe los datos y los datos de salida ya no tienen un formato progresivo
sino en zig-zag.
Ambos trabajos justifican la utilidad de su propuesta considerando que los buffers de línea
se implementan con flip-flops y descartando el empleo de bloques específicos de memoria. No
obstante, estos bloques existen en todas las familias de dispositivos FPGA actuales y, como
evidencia la Figura 6.43, constituyen una opción mucho más eficiente.
En esta tesis se propone una solución para el uso eficiente de los bloques BlockRAM en la
implementación de los buffers de línea. Destinada inicialmente al sistema FB de la convolución
2D de imágenes binarias empleada en el algoritmo descrito en el capítulo 4, es extensible a
datos de entrada de bI bits de resolución utilizando una aproximación distribuida como la
propuesta en el apartado 6.1.4 para el módulo de cálculo de la convolución. En lugar de la
configuración directa del esquema de la Figura 6.42, en el que cada dirección del buffer de
línea corresponde a una dirección de BlockRAM, un esquema basado en realimentación con
desplazamiento se encarga de almacenar datos de 1 bit de diferentes líneas de la entrada en una
misma dirección de memoria. La Figura 6.44 muestra este nuevo esquema. Una BlockRAM
227
6.2. Buffering de datos
b buffers de línea
din 1 1
MSB MSB
BlockRAM
b
Ib,1 Ib -1,1 … I1,1 b líneas 1 bit
b
Ib,2 Ib -1,2 … I1,2
LSB LSB
Ib,3 Ib -1,3 … I1,3
…
Ib,x Ib -1,x … I1,x
…
Ib,Q Ib -1,Q … I1,Q
contador
buffer de línea b
buffer de línea 2
buffer de línea 1
228
6.2. Buffering de datos
t1 t2 t3
IM-2,x IM-3,x IM-4,x … IM,x IM-1,x IM-2,x … I2,x IM+1,x IM,x IM-1,x … I3,x
t(M-2)Q+1 IM-2,Q IM-3,Q IM-4,Q … t(M-1)Q+x IM-1,Q IM-2,Q IM-3,Q … I1,Q tMQ+x IM,Q IM-1,Q IM-2,Q … I2,Q
Figura 6.45: Evolución del estado de los buffers de línea en el esquema propuesto
Las figuras 6.46a, 6.46b y 6.46c ejemplifican para una convolución 5 × 5 el estado de su
sistema FB, compuesto por un buffer de ventana con cinco filas de cuatro registros en cascada
en cada una de ellas y un bloque BlockRAM de Q posiciones de memoria y 4 bits de anchura.
En el ciclo en el que la convolución se centra en I(7, 5) mostrado en la primera Figu-
ra 6.46a, el contador que controla las direcciones de lectura/escritura de la BlockRAM ha
apuntado a la dirección 7. En el flanco activo de reloj se ha producido el desplazamiento
hacia la derecha de los bits de la palabra en dicha dirección y al mismo tiempo la escritura de
I(9, 7) en su más significativo. Debido a la configuración de la BlockRAM con la opción Read
Before Write, el dato leído contiene los valores antes de la escritura I(8, 7), I(7, 7), I(6, 7),
I(5, 7) que, de acuerdo con sus posiciones en la palabra de memoria, se reparten por las líneas
del buffer de ventana. Estos datos, junto con el propio dato de entrada I(9, 7) presente en
la primera línea del buffer de ventana, forman la columna y − (N − 1)/2 de la ventana de
datos del cálculo. Con el desplazamiento a la derecha del dato en la palabra de memoria,
I(5, 7) abandona la cadena de buffers de línea, permaneciendo únicamente en la última línea
del buffer de ventana para las siguientes cuatro operaciones de convolución. En el ciclo si-
guiente, mostrado en la Figura 6.46b, la convolución se centra en I(7, 6) y el dato de entrada
es I(9, 8). El contador que controla la dirección de la BlockRAM ha apuntado a la posición
8 y los datos han avanzado una etapa en el buffer de ventana. De nuevo, el valor leído de la
BlockRAM corresponde a la columna y − (N − 1)/2 de la ventana de datos, en este caso con
los datos I(8, 8), I(7, 8), I(6, 8) e I(5, 8). En la escritura, los tres primeros se han desplazado
a la derecha en la palabra de memoria e I(9, 8) ha ocupado el bit más significativo. El dato
I(5, 8) desaparece del último buffer de línea. Q ciclos más tarde la convolución se centra en
229
6.2. Buffering de datos
buffer de ventana
I9,7
buffers de línea I9,7 I9,6 I9,5 I9,4 I9,3
buffer de ventana
I9,8
buffers de línea I9,8 I9,7 I9,6 I9,5 I9,4
buffer de ventana
I10,7
buffers de línea I10,7 I10,6 I10,5 I10,4 I10,3
Figura 6.46: Ejemplo de estado de los buffers de línea en la solución propuesta para convolu-
ción 5 × 5
230
6.2. Buffering de datos
I(8, 5) y el dato de entrada es I(10, 7). La Figura 6.46c muestra como los datos han avanzado
una línea en el buffer de ventana con respecto a la Figura 6.46a gracias al cambio de buffer de
línea al que equivale el desplazamiento hacia la derecha en cada escritura en la BlockRAM.
Si el número de buffers de línea que requiere la plantilla es mayor que la anchura b
de la BlockRAM, pueden conectarse en serie tantas como sean necesarias. La Figura 6.47
lo muestra para el caso de dos bloques. Cada uno de ellos conserva su propio esquema de
realimentación y desplazamiento explicado anteriormente. La entrada de datos del primero
procede de memoria externa, mientras que la entrada de datos del segundo es el bit menos
significativo del bus de datos de salida del primero. Ambas comparten el bus de direcciones.
din 1 BlockRAM
IM -1,1 … IM -b -1,1
IM -1,2 … IM -b -1,2
IM -1,3 … IM -b -1,3
IM -1,x … IM -b -1,x
IM -1,Q … IM -b -1,Q
M -1 líneas
BlockRAM
IM -b -2,1 … I1,1
IM -b -2,2 … I1,2
IM -b -2,3 … I1,3
IM -b -2,x … I1,x
Figura 6.47: Esquema de conexión de varios bloques BlockRAM para formar un sistema de
buffers de líneas con la solución propuesta
Esta solución para la implementación de buffers de línea con BlockRAM se puede extender
a datos de entrada de bI bits adoptando un esquema distribuido formado por bI instancias
de la estructura presentada. Cada instancia está asociada a un bit del dato de entrada, todas
comparten el bus de direcciones y sus líneas de datos son independientes. La Figura 6.48
muestra el esquema para datos de entrada de 4 bits. Como se observa en las gráficas de
ocupación del apartado siguiente, los recursos necesarios aumentan linealmente con bI .
Esta estructura distribuida optimizada para los buffers de línea se complementa per-
fectamente con la configuración, también distribuida, del módulo de cálculo descrito en el
apartado 6.1.
231
6.2. Buffering de datos
din
buffer de línea 1
buffer de línea 2
buffer de línea b
…
Buffer línea 1
Buffer línea b
Figura 6.48: Ejemplo: Esquema simplificado de buffers de línea para datos de 4 bits basado
en la optimización propuesta
232
6.2. Buffering de datos
50 bI =1 50 bI =4
Número de BlockRAM
40 40
30 30
20 20
10 10
5 10 20 30 40 50 5 10 20 30 40 50
M M
50 50
10 10
5 10 20 30 40 50 5 10 20 30 40 50
M M
100 100
50 50
10 10
5 10 20 30 40 50 5 10 20 30 40 50
M M
233
6.2. Buffering de datos
Tabla 6.9: Estado de las principales opciones de configuración de las herramientas de sínte-
sis e implementación en el estudio de las prestaciones temporales de la solución
propuesta para la implementación de los buffers de línea
234
6.2. Buffering de datos
5,5 5,5
5 5
4,5 4,5
4 4
3,5 3,5
3 3
5 10 15 20 25 30 35 40 45 50 5 10 15 20 25 30 35 40 45 50
M M
Figura 6.50: Impacto en el periodo mínimo de reloj Post-Place&Route de una etapa de seg-
mentación en el camino de salida en la implementación de M −1 buffers de línea,
con M ∈ [3, 50], líneas de Q = 1024 posiciones y datos de entrada de bI = 8
bits, para la solución estándar y la optimización propuesta
Periodo mínimo de reloj (ns)
5 5
4,5 4,5
4 4
3,5 3,5
5 10 15 20 25 30 35 40 45 50 5 10 15 20 25 30 35 40 45 50
M M
Periodo mínimo de reloj (ns)
5 5
4,5 4,5
4 4
3,5 3,5
5 10 15 20 25 30 35 40 45 50 5 10 15 20 25 30 35 40 45 50
M M
235
6.3. Sistema completo para la implementación de la convolución 2D
5
bI = 16
4,5 bI = 8
4 bI = 4
bI = 1
3,5
5 10 15 20 25 30 35 40 45 50
Figura 6.52: Impacto de la resolución de los datos de entrada en el periodo mínimo de reloj
Post-Place&Route de la implementación optimizada de M − 1 buffers de línea,
con M ∈ [3, 50] y líneas de Q = 1024 posiciones
Para la aplicación descrita en el capítulo 4, el diseño optimizado del buffer de línea permite
maximizar el uso de la anchura de palabra de la BlockRAM ajustando su relación p × b
a 512 × 36, y por tanto sólo es necesario utilizar uno de estos bloques de memoria para
implementar los 30 buffers de línea necesarios para la convolución con la plantilla de mayor
tamaño, 31 × 31.
El reducido tamaño de la imagen con la que se realiza la convolución podría motivar que,
de manera muy particular en este caso, el empleo de flip-flops fuera una alternativa viable para
la implementación de los buffers de línea. La Figura 6.53 representa el consumo de BlockRAM
frente al de flip-flops para la solución propuesta y la estándar para imágenes binarias de
128 píxeles de ancho sobre el espacio de recursos de la FPGA xc4VLX15. Se observa que,
efectivamente, la implementación del buffer de línea con flip-flops consume porcentualmente
menos recursos que hacerlo con BlockRAM y la solución estándar, pero no con la solución
propuesta, que apenas consume hasta 4 % de BlockRAM frente al 45 % de flip-flops de la
alternativa.
Debe tenerse presente, además, el gran consumo de flip-flops por parte del buffer de ven-
tana y de la segmentación de los árboles de sumadores del módulo de cálculo de la convolución
2D, no incluido en la gráfica y que hace más conveniente aun el empleo de BlockRAM para
los buffers de línea buscando un equilibrio en el consumo de recursos.
236
6.3. Sistema completo para la implementación de la convolución 2D
50
50 LX15
45
40
40
35
30
BlockRAM
30
25
20
20
15
10
10
5 10 20 30 40 50
0
0 5000 10000
FFs
Figura 6.53: Número de bloques BlockRAM con la solución estándar y la propuesta frente
a número de flip-flops necesarios para implementar los buffers de línea, para
M ∈ [3, 50] y líneas de 128 posiciones de 1 bit, representados sobre el espacio de
recursos de la FPGA XC4VLX15
237
6.3. Sistema completo para la implementación de la convolución 2D
Módulo 30 × 30 1 bit
Tabla ROM
Módulo 1 × 30
buffer de ventana
din(0)
1 × 30
buffers de línea
1 × 30 O(y,x)
1 × 30
…
1 × 30
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
LUT
0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
ROM ROM ROM ROM ROM ROM ROM
8 8 8 8 8 8 8
…
din(1) din(2)
0
din(3) din(4) din(5)
din din(6) din(7)
7
Figura 6.54: Esquema simplificado del sistema completo para la convolución de una entrada
de 8 bits con una plantilla de 30 × 30 coeficientes de 8 bits
238
6.3. Sistema completo para la implementación de la convolución 2D
La Figura 6.55 muestra la evolución con el tamaño de ventana M × M del periodo míni-
mo del sistema completo de la convolución 2D de una entrada binaria con coeficientes de dos
bits y lo compara con el obtenido en el apartado 6.1.7.1 de la implementación únicamente
del módulo de cálculo. Para el sistema completo, el periodo es considerablemente mayor y
da lugar a un circuito hasta un 50 % más lento en el peor caso de tamaño considerado. Sin
embargo, el análisis temporal Post-Place&Route revela que el camino crítico se encuentra sis-
temáticamente en la conexión de los bloques BlockRAM con los flip-flops de entrada al buffer
de ventana incluido en el módulo de cálculo. Es el comportamiento analizado en el aparta-
do 6.2.1.1 de prestaciones temporales del esquema de buffering. Por medio de la segmentación
de estos caminos combinacionales es posible mejorar drásticamente el periodo mínimo de reloj
hasta el punto, como también muestra la Figura 6.55, de mejorar las prestaciones temporales
del diseño que sólo considera el módulo de cálculo.
8
7,5
Periodo mínimo de reloj (ns)
7
Sistema completo con segmentación
6,5
Sistema completo sin segmentación
6
Módulo de cálculo
5,5
5
4,5
4
3,5
15 20 25 30 35 40 45 50
Figura 6.55: Periodo mínimo de reloj de la implementación del módulo de cálculo y del sistema
completo para la convolución de una entrada binaria con una plantilla M × M
de coeficientes de 2 bits
La Figura 6.56 muestra la evolución del periodo mínimo para una entrada de datos de
8 bits con coeficientes también de 8 bits en función del tamaño M × M de la plantilla, y la
compara con los resultados obtenidos para el módulo de cálculo con el mismo tamaño de datos
y coeficientes. Como con la configuración de entrada binaria, se ha considerado una etapa de
segmentación entre buffers de línea y buffer de ventana del módulo de cálculo. En este caso,
el sistema completo no llega a mejorar los tiempos del módulo de cálculo, pero los resultados
son muy similares y se alcanza en el peor caso —para el mayor tamaño— una frecuencia de
funcionamiento de más de 160 MHz que, como ya se indicó en el apartado 6.1.7.2, posibilita
realizar el cálculo de la convolución 2D con vídeo 1080HD a una velocidad de más de 60
imágenes por segundo.
6.3.1.1. Latencia
239
6.3. Sistema completo para la implementación de la convolución 2D
6,5
5,5
5
Sistema completo con segmentación
4,5
Módulo de cálculo
4
3,5
15 20 25 30 35 40 45 50
Figura 6.56: Periodo mínimo de reloj de la implementación del módulo de cálculo y del sistema
completo para la convolución de una entrada de 8 bits con una plantilla M × M
de coeficientes de 8 bits
1080HD y una plantilla 50 × 50. De ellos, 284 µs son los necesarios para guardar en los
buffers de línea y ventana los datos con los que trabaja el módulo de cálculo, por lo que la
latencia propia del cálculo de las operaciones es apenas de 90 ns. En cualquier caso, el valor
de latencia del sistema completo se sitúa muy por debajo de la latencia del sistema visual
humano [Mansfield] y es imperceptible.
M N N
Latencia = Q −1 +1+ − 1 + log2 + dlog2 (M )e + dlog2 (bI )e (6.33)
2 2 k
240
6.3. Sistema completo para la implementación de la convolución 2D
Para los diseños que utilizan multiplicadores embebidos se ha asumido que los datos y los coeficientes
son de 18 bits si el trabajo no indica de manera explícita otra resolución.
‘-’ Valor no reportado.
†
Aproximación con pérdidas de filtros para reducir las operaciones.
‡
Tiempo reportado por la herramienta de Síntesis, no por la herramienta de Place&Route.
‡†
Limitado a plantillas de coeficientes con simetría por cuadrantes y datos 10 bits en formato logarítmico.
‡‡
Presenta un throughput de 296 Ms/s gracias a la computación paralela de tres convoluciones 11×11. Sin
embargo, su implementación requiere casi cuatro veces más multiplicadores embebidos de los disponibles
en el mayor dispositivo de la familia Virtex-4 de Xilinx que utilizan. Con el fin de compararlo, se ha
considerado el throughput de una única convolución multiplexada en el tiempo.
‡‡†
Implementación basada en bloques DSP48 (ver Figura 6.3 en el apartado 6.1). 22 × 22 es el mayor
tamaño de plantilla cuadrada que puede ser implementado en la FPGA XC4VXS55, el dispositivo con
más bloques DSP (512) de la familia Virtex-4 de Xilinx.
241
6.3. Sistema completo para la implementación de la convolución 2D
En primer lugar, debe destacarse que no se ha encontrado trabajo que presente resultados
para un tamaño de plantilla de las dimensiones consideradas en esta tesis. [Zhang y Asari]
describen una arquitectura para la cual presentan resultados hasta 22 × 22, específica para
plantillas con coeficientes simétricos por cuadrantes —propiedad que los autores reconocen
como básica para obtener sus prestaciones— y que requiere la conversión de datos al dominio
logarítmico para evitar implementar multiplicadores. Frente a ella, la arquitectura propues-
ta no requiere que se satisfaga propiedad alguna en los coeficientes ni tampoco conlleva los
errores de precisión que implica la conversión logarítmica. En cuanto a las prestaciones, las
obtenidas en la implementación de la solución presentada sobre un dispositivo de la familia
Virtex-II demuestran que es casi el doble de rápida que la de [Zhang y Asari], como recoge
la Tabla 6.11. Como contrapartida, la ocupación de recursos de propósito general (slices) es
aproximadamente un 30 % mayor. Es oportuno destacar también que nuestra propuesta mejo-
ra las prestaciones temporales de las restantes implementaciones de tamaño medio recopiladas
en la Tabla 6.11. [Farabet et al.] y [Wong et al. b] ofrecen una tasa de procesamiento ligera-
mente mayor para 7 × 7 y 7 × 5 respectivamente, pero esta mejora no es significativa y en
cualquier caso se trata de tamaños reducidos de plantilla que quedan lejos del objeto de la
arquitectura descrita.
Por su parte, comparada con una implementación directa basada en bloques DSP48,
la solución presentada ofrece una doble ventaja: por un lado, ofrece mejores prestaciones
temporales; por otro, no tiene la limitación que el número de bloques DSP impone al tamaño
de la convolución. El dispositivo XC4VXS55, la FPGA con más bloques DSP de la familia
Virtex-4 de Xilinx, incluye 512 de éstos y por tanto no puede implementar convoluciones 2D
basadas en ellos mayores de 22 × 22.
El gran desarrollo de la capacidad de cómputo de las unidades de procesamiento gráfico
(Graphics Processing Units, GPUs) en los últimos años ha cambiado la escena de la compu-
tación de altas prestaciones y el procesamiento en tiempo real. A pesar de la dificultad de
comparar de manera adecuada FPGAs y GPUs debido a los continuos cambios en la tecnología
y las estrategias de marketing de los fabricantes de ambas plataformas, algunos investigadores
están desarrollando trabajo en ese sentido. En ese campo, la convolución 2D en particular
es considerada como un algoritmo interesante de banco de pruebas debido a su alto grado
de paralelismo, la dependencia de datos y los elevados requisitos de acceso a memoria. En
el estudio comparativo de [Cope et al.] se pone de manifiesto que la FPGA Virtex-4 ofrece
mayor velocidad de procesamiento que la GPU GeForce7900 GTX para convoluciones a partir
del tamaño 4 × 4. Atendiendo a sus resultados, nuestra implementación es más de tres veces
más rápida que la basada en esa GPU para el tamaño 11×11. No proporciona resultados para
convoluciones mayores pero, teniendo en cuenta el comportamiento que describe para la GPU
con el incremento del tamaño de la plantilla, el factor de mejora es prácticamente exponencial.
Considerando GPUs más recientes, [Pauwels et al.] concluye que los dispositivos FPGA son
más adecuados que la GPU GeForce GTX580 para implementar bancos de filtros de Gabor
de tamaño 11×11. Una ventaja clave a favor de las FPGAs es la posibilidad de elegir el grado
de paralelismo así como de adaptar completamente el camino de datos. Nuestra arquitectura
aprovecha esta característica no sólo para el cálculo de las operaciones sino también para
el almacenamiento temporal de los datos sobre los que se opera, con lo que supera uno de
los principales problemas de las GPUs: el ancho de banda de acceso a memoria. Además,
la menor frecuencia de reloj y el menor consumo implican que las FPGAs ofrecen mejores
relaciones GOPS/watio, lo cual es un factor importante a tener en cuenta en el desarrollo de
sistemas embebidos. Más allá del caso particular de la convolución 2D, que podría adaptarse
242
6.3. Sistema completo para la implementación de la convolución 2D
mejor a las características de las FPGAs, el análisis realizado por [Fletcher et al.] pone de
relieve que las FPGAs mejoran las prestaciones de las GPUs de alta gama de Nvidia incluso
en aplicaciones cuyo modelo de ejecución está indicado para la arquitectura GPU.
243
7
Conclusiones
y líneas de trabajo futuro
244
7. Conclusiones
Por su parte, el propósito del trabajo realizado en el ámbito del diseño digital es acelerar
la ejecución de las tareas que forman el sistema de reconocimiento, con el fin de lograr la
rapidez de respuesta que asegure la naturalidad que el sistema debe tener. Por su arquitectura
y capacidad para la paralelización a diferentes niveles, los dispositivos FPGA se han consi-
derado la plataforma adecuada para la implementación. En este marco, se ha diseñado y
validado un sistema digital que ejecuta todas las tareas de procesamiento del sistema de
reconocimiento. Sus dos principales etapas desde el punto de vista de la relevancia para
el funcionamiento en tiempo real —el reconocimiento del color de la piel y la convolución
bidimensional— son descritas con detalle, motivadas y evaluadas en los capítulos 5 y 6.
Los resultados obtenidos para las soluciones presentadas, incluidos en los correspondientes
capítulos, demuestran la viabilidad de la implementación hardware y el cumplimiento de los
objetivos de tiempo.
Las principales aportaciones del trabajo se pueden resumir en los siguientes puntos:
245
7. Conclusiones
Se ha diseñado una solución para la implementación hardware sobre FPGA del algo-
ritmo propuesto para la segmentación según el color de la piel, analizando con detalle
el impacto en los resultados de clasificación y en los de implementación —en términos
de recursos y comportamiento temporal de los circuitos— de los parámetros de confi-
guración de los diferentes módulos que lo forman, de la resolución de los coeficientes
y de diferentes niveles de segmentación del camino de datos. Como parte relevante
del proceso de diseño, se ha estudiado la conversión desde el espacio de color RGB al
espacio de color RGB normalizado, la cual, por incluir en su cálculo la operación de
división, es la más compleja de las incluidas en el algoritmo de reconocimiento desde
el punto de vista de su implementación en FPGA. En este sentido, los resultados
presentados sirven de referencia para caracterizar el circuito digital que realiza dicha
conversión y optimizar la configuración de sus parámetros.
246
7. Conclusiones
El trabajo realizado en esta tesis abre múltiples líneas de trabajo futuro en los dos ámbitos
en los que se ha desarrollado, algunas de las cuales se mencionan a continuación.
En lo que respecta al sistema de reconocimiento, el enorme auge de las técnicas de apren-
dizaje profundo está desplazando a técnicas de procesamiento más tradicionales. No obstante,
éstas siguen siendo de utilidad por dos motivos fundamentales: extraen información, ofrecen
flexibilidad y control sobre su funcionamiento, y su menor coste computacional facilita el
uso generalizado; y, empleadas en combinación con las nuevas técnicas, pueden formar parte
de soluciones mixtas en las que actúen como elementos coprocesadores que complementen
y a la par alivien la complejidad global del sistema. Desde este planteamiento y centrán-
donos en la solución propuesta, aumentar la invarianza al tamaño y a la orientación de la
mano sería una mejora relevante del sistema. Para ello, podría contemplarse la definición de
nuevas características derivadas de la convolución o combinarse con métodos para detectar
y describir la silueta de la mano. También es de interés, manteniendo presente la restric-
ción inicial de no utilizar técnicas activas de visión ni incorporar a la mano elementos de
ningún tipo, complementar la segmentación basada en el color de la piel con información de
segmentación basada en la distancia empleando técnicas de visión estereoscópica. De hecho,
esta línea se inició durante el desarrollo de esta tesis, estudiándose y evaluándose la imple-
mentación en FPGA de algoritmos de correspondencia para estimación de profundidad en
la escena [Colodro-Conde et al.]. La configuración y calibración del sistema de visión, y las
características del procesamiento de datos y de su implementación hardware condujeron a la
conclusión de que se trata de un trabajo de la envergadura suficiente como para llevarse a
cabo de manera separada al de esta tesis.
247
7. Conclusiones
248
7.1. Publicaciones derivadas de la tesis
Artículos en revista
249
7.1. Publicaciones derivadas de la tesis
250
Bibliografía
[Aggarwal y Ryoo] Aggarwal, J. K. y Ryoo, M. S., (2011). Human activity analysis: A review.
ACM Computing Surveys, vol. 43, no 3, pag. 16.
[Albiol et al.] Albiol, A., Torres, L. y Delp, E., (2001). Optimum color spaces for skin detec-
tion. Proc. Int. Conference on Image Processing, pags. 122–124.
[Armstrong et al.] Armstrong, D. F., Stokoe, W. C. y Wilcox, S. E., (1995). Gesture and the
Nature of Language. Cambridge University Press.
[Asano et al.] Asano, S., Maruyama, T. y Yamaguchi, Y., (2009). Performance comparison of
fpga, gpu and cpu in image processing. International Conference on Field Programmable
Logic and Applications (FPL), pags. 126–131.
[Bailey a] Bailey, D. G., (2011). Design for embedded image processing in FPGA. John Wiley
and sons.
[Bailey b] Bailey, D. G., (2011). Design for embedded image processing on FPGAs. John
Wiley & Sons.
[Ballard, Dana H] Ballard, Dana H, (1981). Generalizing the Hough transform to detect
arbitrary shapes. Pattern Recognition, vol. 13, no 2, pags. 111–122.
[Bankman] Bankman, I. N., (2000). Handbook of Medical Imaging: Processing and Analysis
Management. Elsevier Academic Press.
[Bay et al.] Bay, H., Ess, A., Tuytelaars, T. y Van Gool, L., (2008). Speeded-up robust
features (SURF). Computer vision and image understanding, vol. 110, no 3, pags.
346–359.
[Belongie et al.] Belongie, S., Malik, J. y Puzicha, J., (2002). Shape matching and object
recognition using shape contexts. IEEE Trans. on Pattern Analysis and Machine In-
telligence, vol. 24, no 4, pags. 509–522.
[Berman y Stern] Berman, S. y Stern, H., (2012). Sensors for gesture recognition systems.
IEEE Trans. on Systems, Man, and Cybernetics, vol. 42, no 3, pags. 277–290.
251
Bibliografía
[Bhuyan et al.] Bhuyan, M., Kumar, D. A., MacDorman, K. F. y Iwahori, Y., (2014). A
novel set of features for continuous hand gesture recognition. Journal on Multimodal
User Interfaces, vol. 8, no 4, pags. 333–343.
[Black y Jepson] Black, M. J. y Jepson, A. D., (1998). A probabilistic framework for match-
ing temporal trajectories: Condensation-based recognition of gestures and expressions.
European Conference on Computer Vision. Springer, pags. 909–924.
[Bosi et al.] Bosi, B., Bois, G. y Savaria, Y., (1999). Reconfigurable pipelined 2-D convolvers
for fast digital signal processing. IEEE Transactions on Very Larga Scale Integration
(VLSI) Systems, vol. 7, no 3, pags. 299–308.
[Bouganis et al. a] Bouganis, C., Cheung, P. y Constantinides, G., (2005). A novel 2D filter
design methodology for heterogeneous devices. Int. Conf. on Field Custom Computing
Machines (FCCM), pags. 13–22.
[Bouganis et al. b] Bouganis, C., Cheung, P. y Constantinides, G., (2005). Heterogenity ex-
ploration for multiple 2D filter designs. Int. Conf. on Field Programmable Logic and
Applications (FPL), pags. 263–268.
[Bouganis et al. c] Bouganis, C., Park, S., Constantinides, G. y Cheung, P., (2009). Synthesis
and optimization of 2D filter designs for heterogeneous FPGAs. ACM Transactions on
Reconfigurable Technology and Systems, vol. 1, no 4, pags. 24:1–24:28.
[Brahnam et al.] Brahnam, S., Jain, L. C., Nanni, L. y Lumini, A., (2014). Local binary
patterns: new variants and applications. Springer.
[Brand y Mason] Brand, J. y Mason, J., (2000). A comparative assessment of three ap-
proaches to pixel-level human skin detection. Proc. IEEE Int. Conference on Pattern
Recognition, pags. 1056–1059.
[Brown] Brown, J., (2016). Anthropology based computing: putting the human in Human-
Computer Interaction. Springer.
[Brunelli] Brunelli, R., (2009). Template Matching Techniques in Computer Vision: Theory
and Practice. Wiley Publishing.
[Burrus] Burrus, C., (1977). Digital filter structures described by distributed arithmetic.
IEEE Transactions on Circuits and Systems (CAS), vol. 24, no 12, pags. 674–680.
[Cao et al.] Cao, T. P., Elton, D. y Deng, G., (2012). Fast buffering for FPGA implementation
of vision-based object recognition systems. Journal of Real-Time Image Processing,
vol. 7, no 3, pags. 173–183.
[Card et al.] Card, S. K., Newell, A. y Moran, T. P., (1983). The Psychology of Human-
Computer Interaction. L. Erlbaum Associates Inc.
252
Bibliografía
[Chai y Ngan] Chai, D. y Ngan, K., (1999). Face segmentation using skin-color map in video-
phone applications. IEEE Transactions on Circuits and Systems for Video Technology,
vol. 9, no 4, pags. 551–564.
[Chen et al.] Chen, L., Wei, H. y Ferryman, J., (2013). A survey of human motion analysis
using depth imagery. Pattern Recognition Letters, vol. 34, no 15, pags. 1995–2006.
[Chen y Qi] Chen, W. y Qi, F., (2004). Tracking of facial region in color video sequences using
an improved narrow band algorithm. Int. Conf. on Signal Processing, pags. 889–892.
[Cootes et al. a] Cootes, T. F., Edwards, G. J., Taylor, C. J. et al., (2001). Active appearance
models. IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 23, no 6,
pags. 681–685.
[Cootes et al. b] Cootes, T. F., Taylor, C. J., Cooper, D. H. y Graham, J., (1995). Active
shape models-their training and application. Computer Vision and Image Understand-
ing, vol. 61, no 1, pags. 38–59.
[Cope et al.] Cope, B., Cheung, P., Luk, W. y Howes, L., (2010). Performance comparison
of graphics processors to reconfigurable logic: a case study. IEEE Transactions on
Computers, vol. 59, no 4, pags. 433–448.
[Dalal y Triggs] Dalal, N. y Triggs, B., (2005). Histograms of oriented gradients for human
detection. Proc. IEEE Computer Society Conference on Computer Vision and Pattern
Recognition (CVPR), pags. 886–893.
[Davies] Davies, E., (2005). Machine Vision. Theory, algorithms and practicalities. Elsevier.
[de Dios y Garcia] de Dios, J. y Garcia, N., (2003). Face detection based on a new color
space ycgcr. Proc. IEEE Int. Conf on Image Processing, pags. 909–912.
[Divider Generator v5.1] Divider Generator v5.1, (2016). LogiCORE IP Product Guide, Xil-
inx.
[D’Orazio et al.] D’Orazio, T., Marani, R., Reno, V. y Cicirelli, G., (2016). Recent trends
in gesture recognition: how depth data has improved classical approaches. Image and
Vision Computing.
[Duda et al.] Duda, R. O., Hart, P. E. y Stork, D. G., (2000). Pattern Classification (3rd
Edition). Wiley-Interscience.
[Erol et al.] Erol, A., Bebis, G., Nicolescu, M., Boyle, R. D. y Twombly, X., (2007). Vision-
based hand pose estimation: A review. Computer Vision and Image Understanding,
vol. 108, no 1-2, pags. 52–73.
[Face and Skin Detection Database] Face and Skin Detection Database, (1962). asdf. US
Patent 3,069,654.
253
Bibliografía
[Farabet et al.] Farabet, C., Poulet, C., Han, J. y LeCun, Y., (2009). CNP: an FPGA-based
processor for convolutional networks. Int. Conf. on Field Programmable Logic and
Applications (FPL), pags. 32–37.
[Fawcett] Fawcett, T., (2004). Roc graphs: Notes and practical considerations for researchers.
[Fletcher et al.] Fletcher, C., Lebedev, I., Asadi, N., Burke, D. y Wawrzynek, J., (2011).
Bridging the GPGU-FPGA efficiency gap. ACM/SIGDA Int. Symp. on Field Pro-
grammable Gate Arrays, pags. 119–122.
[Fons et al.] Fons, F., Fons, M. y Cantó, E., (2011). Run-time self-reconfigurable 2D convolver
for adaptive image processing. Microelectronics Journal, vol. 42, pags. 204–217.
[Fowers et al.] Fowers, J., Brown, G., Wernsing, J. y Stitt, G., (2013). A performance and
energy comparison of convolution on gpus, fpgas, and multicore processors. ACM Trans.
Archit. Code Optim., vol. 9, no 4, pags. 25:1–25:21.
[Freeman y Roth] Freeman, W. T. y Roth, M., (1995). Orientation histograms for hand
gesture recognition. Int Workshop on Automatic Face and Gesture Recognition, pags.
296–301.
[García y Tziritas] García, C. y Tziritas, G., (2003). Face detection using quantized skin
color regions merging and wavelet packet analysis. IEEE Transactions on Multimedia,
vol. 1, no 3, pags. 264–277.
[Gavrila] Gavrila, D., (1999). The visual analysis of human movement: a survey. Computer
Vision and Image Understanding, vol. 73, no 1, pags. 82–98.
[Ghosh y Ari] Ghosh, D. K. y Ari, S., (2016). On an algorithm for vision-based hand gesture
recognition. Signal, Image and Video Processing, vol. 10, no 4, pags. 655–662.
[Goel et al.] Goel, M., Whitmire, E., Mariakakis, A., Saponas, T., Joshi, N., Morris, D.,
Guenter, B., Gavriliu, M., Borriello, G. y Patel, S. N., (2015). Hypercam: Hyperspec-
tral imaging for ubiquitous computing applications. Proc. ACM International Joint
Conference on Pervasive and Ubiquitous Computing. ACM, pags. 145–156.
[Gómez] Gómez, G., (2002). On selecting colour components for skin detection. Proc. Int.
Conference on Pattern Recognition, pags. 961–964.
[Gómez y Morales] Gómez, G. y Morales, E. F., (2002). Automatic feature construction and
a simple rule induction algorithm for skin detection. Proc. ICML Workshop on Machine
Learning in Computer Vision, pags. 31–38.
254
Bibliografía
[González y Woods] González, R. y Woods, R., (2008). Digital Image Processing, 3 a ed.
Addison-Wesley.
[Gunn] Gunn, S., (1999). On the discrete representation of the Laplacian of Gaussian. Pattern
recognition, vol. 32, pags. 1463–1472.
[Habili et al.] Habili, N., Chew, C. y Moini, A., (2004). Segmentation of the face and hands
in sign language video sequences using color and motion cues. IEEE Transactions on
Circuits and Systems for Video Technology, vol. 14, no 8, pags. 1086–1096.
[He et al.] He, X., Liu, Z. y Zhou, J., (2003). Real-time human face detection in color image.
Proc. Int. Conference on Machine Learning and Cybernetics, pags. 2915–2920.
[Helander et al.] Helander, M. G., Landauer, T. K. y Prabhu, P. V., eds., (1997). Handbook
of Human-Computer Interaction. Elsevier Science Inc., 2a edición.
[Hough] Hough, P., (1962). Method and means for recognizing complex patterns. US Patent
3,069,654.
[Hsieh et al.] Hsieh, I., Fan, K. y Lin, C., (2002). A statistic approach to the detection
of human faces in color nature scene. Pattern Recognition, vol. 35, pags. 1583–1596.
Elsevier Science.
[Hsu et al.] Hsu, R.-L., Abdel-Mottaleb, M. y Jain, A. K., (2002). Face detection in color
images. IEEE Transaction on Pattern Analysis and Machine Intelligence, vol. 24, no 5,
pags. 696–706.
[Hu] Hu, M.-K., (1962). Visual pattern recognition by moment invariants. IRE transactions
on information theory, vol. 8, no 2, pags. 179–187.
[Jack] Jack, K., (2005). Video Demystified: A Handbook for the Digital Engineer. Newnes.
[Jain et al. a] Jain, A. K., Zhong, Y. y Lakshmanan, S., (1996). Object matching using de-
formable templates. IEEE Transactions on Pattern Analysis and Machine Intelligence,
vol. 18, no 3, pags. 267–278.
[Jain et al. b] Jain, R., Kasturi, R. y Schunck, B., (1995). Machine Vision. McGraw-Hill.
[Jain et al. c] Jain, R., Kasturi, R. y Schunck, B. G., (1995). Machine vision. McGraw-Hill
New York.
[Jayaram et al.] Jayaram, S., Schmugge, S., Shin, M. C. y Tsap, L. V., (2004). Effect of
colorspace transformation, the illuminance component, and color modeling on skin de-
tection. Proc. of IEEE Computer Society Conference on Computer Vision and Pattern
Recognition, pags. 813–818.
[Jiang et al.] Jiang, H., Wachs, J. P. y Duerstock, B. S., (2016). An optimized real-time
hands gesture recognition based interface for individuals with upper-level spinal cord
injuries. Journal Real-Time Image Processing, vol. 11, no 2, pags. 301–314.
[Jones y Rehg] Jones, M. J. y Rehg, J. M., (1999). Statistical color models with application
to skin detection. Int. IEEE Computer Society Conference on Computer Vision and
Pattern Recognition, pags. 274–280.
255
Bibliografía
[Jordao et al.] Jordao, L., Perrone, M., Costeira, J. y Santos-Victor, J., (1999). Active face
and feature tracking. Proc. Int. Conference on Image Analysis and Processing, pags.
572–576.
[Karam] Karam, M., (2009). A Framework for Gesture-based Human Computer Interactions.
VDM Verlag.
[Kass et al.] Kass, M., Witkin, A. y Terzopoulos, D., (1988). Snakes: Active contour models.
International Journal of Computer Vision, vol. 1, no 4, pags. 321–331.
[Ke y Sukthankar] Ke, Y. y Sukthankar, R., (2004). PCA-SIFT: A more distinctive rep-
resentation for local image descriptors. Proc. IEEE Computer Society Conference on
Computer Vision and Pattern Recognition (CVPR), pags. II–506–II–513.
[Kendon] Kendon, A., (2004). Gesture: Visible action as utterance. Cambridge University
Press.
[Kendon et al.] Kendon, A., Sebeok, T. A. y Umiker-Sebeok, J., (1981). Nonverbal communi-
cation, interaction and gesture: selections from Semiotica, vol. 41. Walter de Gruyter.
[Kisačanin et al.] Kisačanin, B., Pavlović, V. y Huang, T. S., (2005). Real-Time Vision for
Human-Computer Interaction. Springer.
[Kjeldsen y Kender] Kjeldsen, R. y Kender, J., (1996). Finding skin in color images. Proc.
Int. Conf. on Automatic Face and Gesture Recognition, pags. 312–317.
[Knapp et al.] Knapp, M. L., Hall, J. A. y Horgan, T. G., (2013). Nonverbal communication
in human interaction. Cengage Learning.
[Kölsch et al.] Kölsch, M., Turk, M., Hollerer, T. y Chainey, J., (2004). Vision-based inter-
faces for mobility. Proc. Int. Conf. on Mobile and Ubiquitous Systems, pags. 86–94.
[Kurata et al.] Kurata, T., Okuma, T., Kourogi, M. y Sakaue, K., (2001). The hand mouse:
Gmm hand-color classification and mean shift tracking. Proc. IEEE ICCV Workshop
on Recognition, Analysis, and Tracking of Faces and Gestures in Real-Time Systems,
pags. 119–124.
[Liang] Liang, X., (2003). Mapping of generalized template matching onto reconfigurable
computers. IEEE Transactions on Very Large Scale Integration (VLSI) Systems,
vol. 11, no 3, pags. 485–498.
[Liu y Yang] Liu, J. y Yang, Y., (1994). Multiresolution color image segmentation. IEEE
Transactions on Pattern Analysis and Machine Intelligence, vol. 16, no 7, pags. 689–700.
256
Bibliografía
[Liu y Kehtarnavaz] Liu, K. y Kehtarnavaz, N., (2016). Real-time robust vision-based hand
gesture recognition using stereo images. Journal Real-Time Image Processing, vol. 11,
no 1, pags. 201–209.
[Liu y Fujimura] Liu, X. y Fujimura, K., (2004). Hand gesture recognition using depth da-
ta. Proc. IEEE International Conference on Automatic Face and Gesture Recognition.
IEEE, pags. 529–534.
[Lowe b] Lowe, D. G., (1999). Object recognition from local scale-invariant features. Proc.
IEEE Int. Conference on Computer Vision, pags. 1150–1157.
[Lowe a] Lowe, D. G., (2004). Distinctive image features from scale-invariant keypoints.
International Journal of Computer Vision, vol. 60, no 2, pags. 91–110.
[Mansfield] Mansfield, R. J. W., (1973). Latency functions in human vision. Vision research,
vol. 13, no 12, pags. 2219–2234.
[Martínez et al. a] Martínez, J., Toledo, F., Fernández, E. y Ferrández, J., (2008). A
retinomorphic architecture based on discrete-time cellular neural networks using re-
configurable computing. Neurocomputing, vol. 71, no 4, pags. 766–775.
[Matlab Image Processing Toolbox] Matlab Image Processing Toolbox, (2012). http://www.
mathworks.es.
[McNeill b] McNeill, D., (1992). Hand and Mind: What Gestures Reveals about Thought.
Chicago University Press.
[McNeill c] McNeill, D., (2000). Language and Gesture. Cambridge University Press.
[Meyer-Baese] Meyer-Baese, U., (2007). Digital Signal Processing with Field Programmable
Gate Arrays, 3Âa ed.. Springer.
[Mitra y Acharya] Mitra, S. y Acharya, T., (2007). Gesture recognition: a survey. IEEE
Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews),
vol. 37, no 3, pags. 311–324.
[Moeslund et al.] Moeslund, T. B., Hilton, A. y Krüger, V., (2006). A survey of advances in
vision-based human motion capture and analysis. Computer Vision and Image Under-
standing, vol. 104, no 2, pags. 90–126.
257
Bibliografía
[Mori et al. a] Mori, G., Belongie, S. y Malik, J., (2005). Efficient shape matching using
shape contexts. IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 27,
no 11, pags. 1832–1837.
[Mori et al. b] Mori, J., Sánchez-Ferreira, C., Muñoz, D., Llanos, C. y Berger, P., (2011).
An unified approach for convolution-based image filtering on reconfigurable systems.
Southern Conf. on Programmable Logic (SPL), pags. 63–68.
[Newell y Card] Newell, A. y Card, S. K., (1985). The prospects for psychological science in
human-computer interaction. Human-Computer Interaction, vol. 1, no 3, pags. 209–242.
[Ngan y Li] Ngan, K. y Li, H., (2011). Video segmentation and its applications. Springer.
[Nixon y Aguado a] Nixon, M. y Aguado, A., (2008). Feature extraction and Image Process-
ing. Newnes.
[Nixon y Aguado b] Nixon, M. S. y Aguado, A. S., (2012). Feature extraction & image pro-
cessing for computer vision. Academic Press.
[Norman] Norman, D. A., (2010). Natural user interfaces are not natural. Interactions,
vol. 17, no 3, pags. 6–10.
[Ohn-Bar y Trivedi] Ohn-Bar, E. y Trivedi, M., (2013). In-vehicle hand activity recognition
using integration of regions. IEEE Symposium on Intelligent Vehicles. IEEE, pags.
1034–1039.
[Ojala et al.] Ojala, T., Pietikäinen, M. y Harwood, D., (1996). A comparative study of tex-
ture measures with classification based on featured distributions. Pattern recognition,
vol. 29, no 1, pags. 51–59.
[Park y Yoon] Park, J. y Yoon, Y.-L., (2006). LED-glove based interactions in multi-modal
displays for teleconferencing. Int. Conference on Artificial Reality and Telexistence,
pags. 395–399.
[Pauwels et al.] Pauwels, K., Tomasi, M., Díaz, J., Rosa, E. y Van Hulle, M., (2011). A
comparison of FPGA and GPU for real time phase-based optical flow, stereo and local
image features. IEEE Transactions on Computers, vol. 61, no 7, pags. 999–1012.
[Pavlović et al.] Pavlović, V., Sharma, R. y Huang, T., (1997). Visual interpretation of hand
gestures for human-computer interaction: A review. IEEE Trans. on Pattern Analysis
and Machine Intelligence, vol. 19, no 7, pags. 677–695.
[Peer et al.] Peer, P., Kovac, J. y Solina, F., (2003). Human skin colour clustering for face
detection. Proc. International Conference on “Computer as a Tool”, EUROCON , pags.
144–148.
[Perri et al.] Perri, S., Lanuzza, M., Corsonello, P. y Cocorullo, G., (2005). A high-
performance fully reconfigurable FPGA-based 2D convolution processor. Micropro-
cessor and Microsystems, vol. 29, no 8-9, pags. 381–391.
258
Bibliografía
[Phung et al.] Phung, S., Bouzerdoum, A. y Chai, D., (2005). Skin segmentation using color
pixel classification: analysis and comparison. IEEE Transactions on Pattern Analysis
and Machine Intelligence, vol. 27, no 1, pags. 148–154. IEEE Computer Society.
[Piekarski et al.] Piekarski, W., Smith, R., Wigley, G., Thomas, B. y Kearney, D., (2004).
Mobile hand tracking using fpgas for low powered augmented reality. International
Symposium on Wearable Computers. IEEE, pags. 190–191.
[Pisharady y Saerbeck] Pisharady, P. y Saerbeck, M., (2015). Recent methods and databas-
es in vision-based hand gesture recognition: a review. Computer Vision and Image
Understanding, vol. 141, pags. 152–165.
[Poppe] Poppe, R., (2007). Vision-based human motion analysis: An overview. Computer
Vision and Image Understanding, vol. 108, no 1-2, pags. 4–18.
[Porter et al.] Porter, R., Frigo, J., Gokhale, M., Wolinski, C., Charot, F. y Wagner, C.,
(2006). A run-time reconfigurable parametric architecture for local neighborhood image
processing. Euromicro Conference on Digital System Design, pags. 107–115.
[Potter et al.] Potter, R., Weldon, L. y Shneirderman, B., (1988). Improving the accuracy of
touch screens: an experimental evaluation of three strategies. Proc. SIGCHI Conference
on Human Factors in Computing Systems, pags. 27–32.
[Premaratne] Premaratne, P., (2014). Human Computer Interaction Using Hand Gestures.
Springer.
[Premaratne et al.] Premaratne, P., Yang, S., Vial, P. y Ifthikar, Z., (2017). Centroid tracking
based dynamic hand gesture recognition using discrete hidden markov models. Neuro-
computing, vol. 228, pags. 79 – 83.
[Quek et al.] Quek, F., McNeill, D., Bryll, R., Duncan, S., Ma, X.-F., Kirbas, C., McCullough,
K. E. y Ansari, R., (2002). Multimodal human discourse: Gesture and speech. ACM
Trans. on Computer-Human Interaction, vol. 9, no 3, pags. 171–193.
[Quek] Quek, F. K. H., (1994). Toward a vision-based hand gesture interface. Proc. Confer-
ence on Virtual Reality Software and Technology, pags. 17–31.
[Rautaray y Agrawal] Rautaray, S. y Agrawal, A., (2015). Vision based hand gesture recog-
nition for human computer interaction: a survey. Artificial Intelligence Review, vol. 43,
no 1, pags. 1–54.
[Rehg y Kanade] Rehg, J. M. y Kanade, T., (1994). Digiteyes: vision-based hand tracking
for human-computer interaction. Proc. IEEE Workshop on Motion of Non-Rigid and
Articulated Objects, pags. 16–22.
[Russo et al.] Russo, L., Pedrino, E., Kato, E. y Roda, V., (2012). Image convolution pro-
cessing: A gpu versus fpga comparison. Southern Conference on Programmable Logic
(SPL), pags. 1–6.
259
Bibliografía
[Sahami Shirazi et al.] Sahami Shirazi, A., Abdelrahman, Y., Henze, N., Schneegass, S.,
Khalilbeigi, M. y Schmidt, A., (2014). Exploiting thermal reflection for interactive sys-
tems. Proc ACM Conference on Human Factors in Computing Systems. ACM, pags.
3483–3492.
[Sankaradas et al.] Sankaradas, M., Jakkula, V., Cadambi, S., Chakradhar, S., Durdanovic,
I., Cosatto, E. y Graf, H., (2009). A massively parallel coprocessor for Convolutional
Neural Networks. IEEE Int. Conf. on Application-specific Systems, Architectures and
Processors (ASAP), pags. 53–60.
[Shao et al.] Shao, L., Han, J., Kohli, P. y Zhang, Z., (2014). Computer vision and machine
learning with RGB-D sensors. Springer.
[Shin et al.] Shin, M., Chang, K. y Tsap, L., (2002). Does colorspace transformation make
any difference on skin detection? Proc. Int. Workshop on Applications of Computer
Vision, pags. 275–279.
[Sigal et al.] Sigal, L., Sclaroff, S. y Athitsos, V., (2003). Skin color-based video segmentation
under time-varying illumination. IEEE Transactions on Pattern Analysis and Machine
Intelligence, vol. 26, no 7, pags. 862–877.
[Singha et al.] Singha, J., Roy, A. y Laskar, R. H., (2016). Dynamic hand gesture recognition
using vision-based approach for human-computer interaction. Neural Computing and
Applications, pags. 1–13.
[Smeulders et al.] Smeulders, A. W., Chu, D. M., Cucchiara, R., Calderara, S., Dehghan, A.
y Shah, M., (2014). Visual tracking: An experimental survey. IEEE Transactions on
Pattern Analysis and Machine Intelligence, vol. 36, no 7, pags. 1442–1468.
[Sobottka y Pitas] Sobottka, K. y Pitas, I., (1996). Extraction of facial regions and features
using color and shape information. Proc. Int. Conference on Pattern Recognition, pags.
421–425.
[Soontranon et al.] Soontranon, N., Aramvith, S. y Chalidaghongse, T., (2004). Face and
hands localization and tracking for sign language recognition. Proc. Int. Symposium on
Communications and Information Techonologies, pags. 1246–1251.
[Soriano et al. b] Soriano, M., Martinkauppi, B., Huovinen, S. y Laaksonen, M., (2000). Skin
detection in video under changing illumination conditions. Proc. Int. Conference on
Pattern Recognition, pags. 839–842.
[Soriano et al. a] Soriano, M., Martinkauppi, B., Huovinen, S. y Laaksonen, M., (2003).
Adaptive skin color modeling using the skin locus for selecting training pixels. Pat-
tern Recognition, vol. 36, no 3, pags. 681–690. Elsevier Science.
[Sriram et al.] Sriram, V., Cox, D., Tsoi, K. y Luk, W., (2010). Towards an embedded
biologically-inspired machine vision processor. Int. Conf. on Field-Programmable Tech-
nology (FPT), pags. 273–278.
260
Bibliografía
[Starck y Murtagh] Starck, J. y Murtagh, F., (2002). Handbook of Astronomical Data Anal-
ysis. Elsevier.
[Suarez y Murphy] Suarez, J. y Murphy, R. R., (2012). Hand gesture recognition with depth
images: a review. IEEE Int. Symposium on Robot and Human Interactive Communi-
cation. IEEE, pags. 411–417.
[System Generator for DSP, Xilinx] System Generator for DSP, Xilinx, (2016). http://www.
xilinx.es.
[Szeliski] Szeliski, R., (2010). Computer Vision: Algorithms and Applications. Springer-Verlag
New York, Inc.
[Teague] Teague, M. R., (1980). Image analysis via the general theory of moments. Journal
of the Optical Society of America, vol. 70, no 8, pags. 920–930.
[Terrillon et al.] Terrillon, J., Shirazi, M., Fukamachi, H. y Akamatsu, S., (2000). Compara-
tive performance of different skin chrominance models and chrominance spaces for the
automatic detection of human faces in color images. Proc. Int. Conference on Automatic
Face and Gesture Recognition, pags. 54–61.
[Thippur et al.] Thippur, A., Ek, C. H. y Kjellström, H., (2013). Inferring hand pose: A
comparative study of visual shape features. IEEE Int. Conference and Workshops on
Automatic Face and Gesture Recognition. IEEE, pags. 1–8.
[Thorpe et al.] Thorpe, S., Fize, D. y Marlot, C., (1996). Speed of processing in the human
visual system. Nature, vol. 381, no 6582, pags. 520–522.
[Tomaz et al.] Tomaz, F., Candeias, T. y Shahbazkia, H., (2004). Fast and accurate skin
segmentation in color images. Proc. Conference on Computer and Robot Vision, pags.
180–187.
[Torres y Arias] Torres, C. y Arias, M., (2005). FPGA-based configurable systolic architec-
ture for window-based image processing. EURASIP Journal on Applied Signal Process-
ing, pags. 1024–1034.
[Veelaert y Teelen] Veelaert, P. y Teelen, K., (2009). Adaptive and optimal difference oper-
ators in image processing. Pattern Recognition, vol. 42, pags. 2317–2326.
[Vezhnevets et al.] Vezhnevets, V., Sazonov, V. y Andreeva, A., (2003). A survey on pixel-
based skin color detection techniques. Proc. Int. Conference on the Computer Graphics
and Vision, pags. 85–92.
[Viola y Jones] Viola, P. y Jones, M., (2001). Rapid object detection using a boosted cascade
of simple features. Proc. IEEE Computer Society Conference on Computer Vision and
Pattern Recognition (CVPR), pags. 511–518.
261
Bibliografía
[Wachs et al.] Wachs, J. P., Kolsch, M., Stern, H. y Edan, Y., (2011). Vision-based hand-
gesture applications. Communication of the ACM , vol. 54, no 2, pags. 60–71.
[Wang y He] Wang, L. y He, D., (1990). Texture classification using texture spectrum. Pat-
tern Recognition, vol. 23, pags. 905–910.
[Wang y Popović] Wang, R. Y. y Popović, J., (2009). Real-time hand-tracking with a color
glove. ACM Transactions on Graphics, vol. 28. ACM, pag. 63.
[Wang et al.] Wang, X., Han, T. X. y Yan, S., (2009). An HOG-LBP human detector with
partial occlusion handling. IEEE Int. Conference on Computer Vision, pags. 32–39.
[Wang y Yuan] Wang, Y. y Yuan, B., (2001). A novel approach for human face detection from
color images under complex background. Pattern Recognition, vol. 34, pags. 1983–1992.
Elsevier Science.
[Wark y Sridharan] Wark, T. y Sridharan, S., (1998). A syntactic approach to automatic lip
feature extraction for speaker identification. Proc. IEEE Int. Conference on Accoustics,
Speech and Signal Processing, pags. 3693–3696.
[Weinland et al.] Weinland, D., Ronfard, R. y Boyer, E., (2011). A survey of vision-based
methods for action representation, segmentation and recognition. Computer Vision and
Image Understanding, vol. 115, no 2, pags. 224–241.
[White] White, S., (1989). Applications of distributed arithmetic to digital signal proccesing:
a tutorial review. IEEE Acoustics, Speech and Signal Processing Magazine, vol. 6, no 3,
pags. 4–19.
[Wimmer et al.] Wimmer, M., Radig, B. y Beetz, M., (2006). A person and context specific
approach for skin color classification. Proc. Int. Conference on Pattern Recognition,
pags. 39–42.
[Wong et al. a] Wong, K., Lam, K. y Siu, W., (2003). A robust scheme for live detection of
human faces in color images. Signal Processing: Image Communication, vol. 18, pags.
103–114. Elsevier Science.
[Wong et al. b] Wong, S., Jasiunas, M. y Kearney, D., (2005). Fast 2D convolution using
reconfigurable hardware. Int. Symp. on Signal Processing and its Applications, pags.
791–794.
[Wu y Kang] Wu, G. y Kang, W., (2016). Robust fingertip detection in a complex environ-
ment. IEEE Transactions on Multimedia, vol. 18, no 6, pags. 978–987.
[Wu y Ai] Wu, Y.-W. y Ai, X.-Y., (2008). Face detection in color images using adaboost
algorithm based on skin color information. Int. Workshop on Knowledge Discovery and
Data Mining, pags. 339–342.
[Xia et al.] Xia, M., Zhang, H. y Hu, G., (2007). A Multiwindow Partial Buffering Scheme for
FPGA-Based 2-D Convolvers. IEEE Transactions on Circuits and Systems II: Express
Briefs, vol. 54, no 2, pags. 200–204.
[Xiong et al.] Xiong, Y., Fang, B. y Quek;, F., (2006). Extraction of hand gestures with
adaptive skin color models and its applications to meeting analysis. Proc. IEEE Int.
Symposium on Multimedia, pags. 647–651.
262
Bibliografía
[Xu y Zhu] Xu, Z. y Zhu, M., (2006). Color-based skin detection: survey and evaluation.
Proc. Int. Conference on Multi-Media Modelling, pags. 143–152.
[Yang y Ahuja a] Yang, M. y Ahuja, N., (1999). Gaussian mixture model for human skin
color and its application in image and video databases. Proc. SPIE Conf. on Storage
and Retrieval for Image and Video Databases, pags. 458–466.
[Yang y Ahuja b] Yang, M.-H. y Ahuja, N., (1998). Detecting human faces in color images.
Proc. IEEE Int. Conf. on Image Processing, pags. 127–130.
[Yao y Fu] Yao, Y. y Fu, Y., (2014). Contour model-based hand-gesture recognition using
the kinect sensor. IEEE Transactions on Circuits and Systems for Video Technology,
vol. 24, no 11, pags. 1935–1944.
[Yu y Leeser] Yu, H. y Leeser, M., (2006). Automatic sliding window operation optimization
for FPGA-based computing boards. IEEE Symposium on Field-Programmable Custom
Computing Machines (FCCM), pags. 76–88.
[Zarit et al.] Zarit, B., Super, B. y Quek, F., (1999). Comparison of five color models in
skin pixel classification. Proc. Int. Workshop on Recognition, Analysis, and Tracking
of Faces and Gestures in Real-Time Systems, pags. 58–63.
[Zhang y Asari] Zhang, M. y Asari, V., (2007). An efficient multiplier-less architecture for 2-
D convolution with quadrant symmetric kernels. Integration the VLSI Journal, vol. 40,
pags. 490–502.
[Zhang et al.] Zhang, X., Yang, Y.-H., Han, Z., Wang, H. y Gao, C., (2013). Object class
detection: A survey. ACM Computing Surveys., vol. 46, no 1, pags. 10:1–10:53.
[Zhang] Zhang, Z., (2012). Microsoft Kinect sensor and its effect. IEEE Multimedia, pags.
4–10.
[Zhou et al.] Zhou, Y., Jiang, G. y Yaorong, L., (2016). A novel finger and hand pose esti-
mation technique for real time hand gesture recognition. Patter Recognition, vol. 49,
pags. 102–114.
[Zhu et al.] Zhu, H., Zhou, S., Wang, J. y Yin, Z., (2007). An algorithm of pornographic
image detection. Proc. Int. Conference on Image and Graphics, ICIG, pags. 801–804.
263
The End