Está en la página 1de 277

PROGRAMA DE DOCTORADO EN TECNOLOGÍAS INDUSTRIALES

TESIS DOCTORAL

DISEÑO E IMPLEMENTACIÓN EN HARDWARE RECONFIGURABLE DE


UN SISTEMA DE RECONOCIMIENTO DE GESTOS DE LA MANO
BASADO EN VISIÓN POR COMPUTADOR

Presentada por Francisco Javier Toledo Moreo para optar al


grado de Doctor
por la Universidad Politécnica de Cartagena

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 la vida____ que me ha dado tanto____

a mi madre y mi padre

a Marina, Nuria y Javier


Camino, GRACIAS.
Resumen
En esta tesis se proponen un sistema para el reconocimiento de gestos de la mano basado en
visión por computador y el diseño de su implementación hardware.
El propósito del reconocimiento de gestos es proporcionar a una computadora la capa-
cidad de detectar gestos realizados por una persona. Esta tarea, innata para el ser humano,
ha resultado ser compleja y difícil de automatizar. Entre las diferentes aproximaciones al
problema, una de las principales líneas de trabajo es el empleo de visión por computador.
El desarrollo de las técnicas de procesamiento en visión por computador ha proporcionado
herramientas para que sistemas basados en microprocesadores analicen imágenes adquiridas
por cámaras e intenten extraer de ellas información que resulte de interés para cualquier
aplicación. Analizado desde esta perspectiva, el reconocimiento de los gestos de la mano es
un problema de reconocimiento de objetos, campo en el que se distinguen dos niveles: de
instancia, cuando se busca un objeto específico, una persona concreta; y de categoría, cuando
se pretende reconocer cualquier instancia de un tipo de objeto. Este segundo nivel persigue,
definida una colección de categorías de objetos y dada una imagen, determinar si hay algún
objeto de una categoría presente en ella. En particular, en esta tesis la categoría es un gesto,
definido por una determinada posición y orientación de la mano y por la configuración de los
dedos.
En este marco, se ha definido una colección de categorías —una biblioteca de gestos—
que se pretende reconocer y, con tal objetivo, se ha desarrollado un conjunto de etapas de
procesamiento y algoritmos que conforman el sistema de reconocimiento de gestos de la mano.
En primer lugar, se pretende separar la mano del resto de la imagen. Para ello, se propone un
algoritmo de reconocimiento del color de la piel, basado en modelos construidos en diferentes
espacios de color. Desarrollado con el propósito mencionado, puede resultar de interés en
cualquiera de las numerosas aplicaciones en las que se lleva a cabo segmentación de imágenes
basada en el color de la piel.
Una vez segmentada la imagen, se propone detectar la mano y reconocer el gesto identi-
ficando sus partes elementales —palma y dedos— por medio de la convolución bidimensional
de la imagen segmentada con un conjunto de plantillas definidas con tal fin. A partir del
análisis de la información resultante de las convoluciones de estas plantillas con las imágenes
de una base de datos de gestos creada con este propósito, se ha construido un modelo para
cada uno de los gestos de la biblioteca. En el proceso de desarrollo de las diferentes etapas, la
metodología de diseño ha buscado favorecer la modularidad y la escalabilidad suficiente como
para posibilitar la actualización de la biblioteca de gestos y la adaptación del funcionamiento
global del sistema a diversas aplicaciones.
Para proporcionar al usuario una experiencia satisfactoria en el manejo del sistema de
reconocimiento es imprescindible que la interacción se realice con la mayor naturalidad. Esto
requiere que el usuario perciba que el sistema responde de manera inmediata a sus acciones,
lo cual implica que la rapidez de respuesta del sistema sea una prestación clave.
Con el propósito de optimizar las prestaciones temporales de la ejecución de los algoritmos
de procesamiento, se han propuesto soluciones para su implementación en hardware recon-
figurable. Los dispositivos FPGA son una plataforma muy adecuada para acelerar algoritmos
de alta carga computacional. Su estructura interna los hace ideales para explotar el parale-
lismo a nivel de píxel inherente a los algoritmos de procesamiento de imagen de bajo nivel,
también el paralelismo a nivel de instrucción por medio de la segmentación de cauce y, al
mismo tiempo, el paralelismo a más alto nivel para ejecutar simultáneamente distintas opera-
ciones. Por todo ello, las FPGA son la plataforma hardware adecuada para la implementación
de nuestro sistema.
Empleando dispositivos y herramientas de Xilinx R
, se ha diseñado, implementado y vali-
dado un sistema digital que ejecuta las tareas de procesamiento involucradas en el reco-
nocimiento de los gestos, en el marco de una arquitectura híbrida hardware/software. El
criterio de particionado 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 embebidos, 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. Por su parte, las tareas a nivel de imagen, en el orden de los
milisegundos, conviene que se ejecuten en software.
Dentro del sistema digital diseñado, en esta tesis se desarrollan soluciones para la imple-
mentación hardware de las dos tareas a nivel de píxel más relevantes: la segmentación según
el color de la piel y la convolución bidimensional. En particular, para la convolución, que es
la etapa con mayor carga computacional, se proponen arquitecturas tanto para la realización
de las operaciones implicadas en su cálculo como para el almacenamiento temporal de los
datos.
Los resultados obtenidos en las diferentes campañas de test demuestran tanto la bondad
de la solución propuesta al problema planteado como la viabilidad de su implementación por
medio de los dispositivos FPGA.
Abstract
In this thesis, a system for hand gesture recognition based on computer vision and the design
of its hardware implementation are proposed.
The purpose of gesture recognition is to provide a computer with the ability to detect
gestures made by a person. This task, innate to humans, has proven to be complex and
difficult to automate. Among the different approaches to the problem, one of the main lines
of work is the use of computer vision.
The development of computer vision processing techniques has provided tools for micro-
processor–based systems to analyze images acquired by cameras and try to extract from them
information of interest for any application. Analyzed from this perspective, hand gesture
recognition is an object recognition problem, a field in which two levels can be distinguished:
instance level, when looking for a specific object, a specific person; and category level, when
trying to recognize any instance of a type of object. This second level aims, when a collection
of object categories is defined and given an image, to determine if there is any object of a
category present in it. In particular, in this thesis the category is a gesture, defined by a
certain position and orientation of the hand and by the configuration of the fingers. In this
framework, a collection of categories —a gesture library— that is intended to be recognized
has been defined and, with such an objective, a set of processing steps and algorithms that
make up the hand gesture recognition system has been developed.
First, it is intended to separate the hand from the rest of the image. For this purpose, a
skin color recognition algorithm is proposed, based on models built in different color spaces.
Developed for the aforementioned purpose, it may be of interest in any of the numerous
applications where skin color–based image segmentation is carried out.
Once the image is segmented, it is proposed to detect the hand and recognize the gesture
by identifying its elementary parts—palm and fingers—by means of two–dimensional convo-
lution of the segmented image with a set of templates defined for that purpose. From the
analysis of the information resulting from the convolutions of these templates with the images
of a gesture database, a model has been constructed for each of the gestures in the library. In
the development process of the different stages, the design methodology has sought to favor
modularity and scalability sufficient to enable the updating of the gesture library and the
adaptation of the overall functioning of the system to different applications.
In order to provide the user with a satisfactory experience in the operation of the recog-
nition system, it is essential that the interaction is carried out as naturally as possible. This
requires that the user perceives that the system responds immediately to his or her actions,
which implies that the speed of the system’s response is a key performance indicator.
In order to optimize the temporal performance of the execution of processing algorithms,
solutions based on reconfigurable hardware were explored. FPGA devices are a suitable plat-
form for accelerating computationally intensive algorithms. Their internal structure makes
them ideal for exploiting the pixel–level parallelism inherent in low–level image processing
algorithms, also instruction–level parallelism through pipeline segmentation and, at the same
time, higher–level parallelism for the simultaneous execution of different operations. For all
these reasons, FPGAs are the proper hardware platform for the implementation of our system.
Using Xilinx R
devices and tools, we have designed, implemented, and validated a digital
system that executes the processing tasks involved in gesture recognition, in the framework of
a hybrid hardware/software architecture. The partitioning criterion has been the time scale
of the tasks, in which two levels are distinguished: pixel level and image level. For resolutions
and image sensors typical of embedded systems, the algorithms that operate on pixel values
do so on the order of nanoseconds. Their home domain is hardware, where it is possible to
exploit the parallelism of operations and the flexibility of the FPGA architecture to achieve
real–time processing. On the other hand, image–level tasks, in the order of milliseconds,
should be executed in software.
Within the designed digital system, this thesis develops solutions for the hardware im-
plementation of the two most relevant pixel–level tasks: skin color segmentation and two–
dimensional convolution. In particular, for convolution, which is the most computationally
intensive step, architectures are proposed both for the performance of the operations involved
in its computation and for the temporal storage of the data.
The results obtained in the different test campaigns demonstrate both the goodness of the
proposed solution to the computer vision problem and the feasibility of its implementation
by means of FPGA devices.
Índice general

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

2. Reconocimiento de gestos de la mano basado en visión 16


2.1. Técnicas de visión para el reconocimiento de gestos de la mano 16
2.1.1. Modelado espacial del gesto 17
2.1.1.1. Extracción de características 19
2.1.1.2. Segmentación 25
Segmentación basada en el color 26
Segmentación basada en la distancia 27
Segmentación basada en el movimiento 27
2.1.1.3. Clasificación: generación del modelo y reconocimiento 28
2.1.2. Modelado temporal del gesto 30
2.1.3. Tendencias en sistemas HGR basados en visión 31
2.2. Propuesta de sistema 33
2.2.1. Propuesta de algoritmos de procesamiento 33
2.2.2. Propuesta de arquitectura 35
2.3. Estructura del documento 37

PARTE I 38

3. Reconocimiento del color de la piel 39


3.1. Espacios de color 40
3.2. Modelización del color de la piel 47
3.3. Propuesta de modelo del color de la piel 58
3.3.1. Base de datos de imágenes 60

i
Índice general

3.3.2. Diseño de un modelo basado en la definición explícita del color de piel 62


3.3.3. Estudio de espacios de color y propuesta de modelos 71
3.3.3.1. Modelo de piel propuesto en el espacio de color
RGB normalizado 74
3.3.3.2. Modelo de piel propuesto en el espacio de color YCb Cr 77
3.3.3.3. Modelo de piel propuesto en el espacio de color YUV 80
3.3.3.4. Modelo de piel propuesto en el espacio de color YIQ 83
3.3.3.5. Modelo de piel propuesto en el espacio de color TSL 86
3.3.3.6. Combinaciones lógicas de clasificadores 89
3.3.4. Algoritmo propuesto para el reconocimiento del color de la piel 90
3.3.4.1. Resultados 92

4. Reconocimiento del gesto de la mano 98


4.1. Biblioteca de gestos 99
4.2. Identificación y localización de objetos 101
4.2.1. Identificación de posibles objetos tipo dedo 102
4.2.2. Identificación de posibles objetos tipo palma 106
4.2.3. Estimación de puntos de interés 107
4.2.4. Estimación de objetos 108
4.3. Características para el reconocimiento 114
4.4. Modelo de los gestos 117
4.4.1. Restricciones y valores por zonas de las características 118
4.4.2. Cálculo de la puntuación de similitud con un gesto 132
4.5. Resultados y análisis 140

PARTE II 154
Plataforma hardware 154
Arquitectura propuesta 156

5. Implementación del algoritmo de reconocimiento del color de la piel 158


5.1. Conversiones a espacios de color 159
5.1.1. Conversión de RGB a YUV 159
5.1.2. Conversión de RGB a YIQ 163
5.1.3. Conversión de RGB a YCb Cr 165
5.1.4. Conversión de RGB a RGB normalizado 166
5.1.4.1. Conversión de RGB a RGB normalizado con
CORDIC Divider 166

ii
Índice general

5.1.4.2. Conversión de RGB a RGB normalizado con


IP Divider Generator 171
5.1.4.3. Solución para la conversión de RGB a RGB normalizado 173
5.2. Implementación de los modelos del color de piel 174
5.3. Sistema completo para la implementación del reconocimiento
del color de la piel 179

6. Implementación hardware de la convolución bidimensional 181


6.1. Descripción de la arquitectura para el cálculo de la convolución 2D 184
6.1.1. Arquitectura básica para convolución 1×N con entrada binaria 184
6.1.2. Arquitectura básica para una convolución de tamaño M ×N 192
6.1.3. Implementación del control de las operaciones en los bordes 194
6.1.3.1. Explicación detallada del funcionamiento de la lógica para
el control de bordes: ejemplo para N = 20 y Q = 60 199
6.1.4. Extensión para entradas de bI bits 203
6.1.5. Latencia del módulo de cálculo 205
6.1.6. Estimación de los recursos necesarios 206
6.1.6.1. Estudio de la implementación de tablas ROM
con BlockRAM 212
6.1.7. Resultados de la implementación 214
6.1.7.1. Resultados para datos de entrada de 1 bit 215
6.1.7.2. Resultados para datos de entrada de 8 bits 219
6.1.7.3. Estudio de la segmentación 222
6.2. Buffering de datos 222
6.2.1. Implementación optimizada de los buffers de línea en FPGA 225
6.2.1.1. Recursos consumidos y prestaciones temporales 232
6.2.1.2. Caso particular: buffering para aplicación propuesta de
reconocimiento de los gestos de la mano 236
6.3. Sistema completo para la implementación de la convolución 2D 236
6.3.1. Recursos consumidos y prestaciones temporales 237
6.3.1.1. Latencia 239
6.3.2. Análisis comparativo 240

7. Conclusiones y líneas de trabajo futuro 244


7.1. Publicaciones derivadas de la tesis 249

Bibliografía 251

iii
Listado of acrónimos más utilizados

AUC Area Under the Curve, área bajo la curva

FF flip-flop

FPGA Field-Programmable Gate Array

GC Tasa de aciertos positivos, en el reconocimiento de gestos de la mano

HCI Human-Computer Interface

HGR Hand Gesture Recognition, reconocimiento de gestos de la mano

LUT Look-up Table, tabla de búsqueda

NGF Tasa de falsos negativos, en el reconocimiento de gestos de la mano

NGP Tasa de falsos positivos, en el reconocimiento de gestos de la mano

NGR Tasa de casos no reconocidos, en el reconocimiento de gestos de la mano

NSF Tasa de falsos negativos, en el reconocimiento del color de la piel

ROC Receiver Operating Characteristics, características operativas del receptor

SC Tasa de aciertos positivos, en el reconocimiento del color de la piel

XSG Xilinx System Generator for DSP


1

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

la era de la Interfaz de Línea de Comandos (CLI, Command-Line Interface). La presentación


del 8010 Star Information System de Xerox, conocido como Xerox Star, marca el comienzo
de la era de las interfaces gráficas (GUI, Graphic User Interface). En ésta, la interacción
consiste, además de la funcionalidad ampliada del teclado, en la manipulación de objetos
gráficos tales como ventanas e iconos por medio de un dispositivo, típicamente un ratón,
que permite apuntar sobre dichos objetos en una pantalla. Xerox Star fue el primer sistema
comercial que incorporó una interfaz gráfica basada en ventanas e iconos, el concepto What
You See Is What You Get, carpetas, un ratón de dos botones, correo electrónico y otras
tecnologías que se convirtieron posteriormente en estándares en los ordenadores personales.

HAL 9000
Naturalidad

Interfaz Natural de Usuario NUI

Interfaz Gráfica de Usuario GUI

Interfaz de Línea de Comandos CLI

50s 60s 70s 80s 90s 00s 10s 20s

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.

La evolución de las prestaciones de los componentes, la diversificación de las plataformas


de procesamiento y el desarrollo de tecnologías de conectividad, tanto cableadas como ina-
lámbricas, han dado lugar a una revolución en la que estamos plenamente inmersos. No se
trata únicamente de ordenadores sino de teléfonos, televisores, coches, etc. La ubicuidad
de los sistemas digitales basados en microprocesadores posibilita —incluso obliga a ello—
interactuar con plataformas o aplicaciones donde puede que ratón y teclado ya no sean de
utilidad o ni siquiera viables, donde puede que ya no haya una pantalla con ventanas e iconos,
en las que no resulta amigable ni eficaz emplear botones y ruedas de desplazamiento para
seleccionar a través de menús de varios niveles una funcionalidad cada día más amplia.
La presentación a nivel mundial en 2007 de la tecnología multi-touch de Apple en su
teléfono iPhone se ha tomado como fecha de referencia del comienzo de la era de las Interfaces
de Interacción Natural (NUI, Natural User Interface) en la Figura 1.1. El fin que motiva las
NUIs es el de hacer transparente la interfaz al usuario, que la interacción con la computadora,

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.

1.1. Comunicación basada en los gestos de la mano


La postura corporal, el movimiento de la cabeza, la expresión facial, los ojos, el movimiento
y posición de las manos; el cuerpo humano es una compleja y poderosa herramienta de
comunicación. Se estima que entre el 60 % y el 90 % de la comunicación entre personas es no
verbal ([Knapp et al.]).
En particular, las manos se pueden mover con expresividad y rapidez. No sólo se emplean
continuamente para interactuar con los objetos que nos rodean sino que, mientras el resto del
cuerpo transmite fundamentalmente el estado emocional, la postura o el movimiento de las
manos pueden contener también significado lingüístico. El uso de las manos es absolutamente
natural en la interacción entre seres humanos, son una forma básica de comunicación. Por
ello, entre todos los instrumentos del lenguaje corporal, los gestos de las manos son los que
mayor interés suscitan en la búsqueda de una interacción más intuitiva, más creativa y más
natural con las computadoras ([Karam]).
El Sketchpad propuesto por [Sutherland] puede considerarse como la primera aproxi-
mación a la interacción con las computadoras basada en gestos de la mano. Utilizando un
lápiz de luz, un usuario podía crear y manejar objetos en una —la pionera— interfaz gráfica.
Posteriormente, las manos se convirtieron, a través de teclado y ratón, en los dispositivos
estándar de manejo de las computadoras. En la actualidad, la diversidad de dispositivos
basados en microprocesadores ha conllevado la evolución de la interacción al toque directo
sobre una pantalla táctil. El siguiente paso en la búsqueda de la naturalidad es liberar al
usuario no sólo de ratón y teclado sino también del contacto físico con la computadora, al
mismo tiempo que se persigue poder utilizar la riqueza de la comunicación gestual.
Entre los numerosos ámbitos de aplicación del empleo de los gestos de la mano se pueden
enumerar, sin ánimo de ser exhaustivo, la Realidad Virtual y la Realidad Aumentada, solu-
ciones de tecnología adaptativa, la Educación, la Robótica, el control de maquinaria, el manejo

3
1.1. Comunicación basada en los gestos de la mano

de vehículos, domótica, sistemas de seguridad, manejo de aplicaciones de escritorio en orde-


nadores personales, tablets y teléfonos, entretenimiento, juegos y un largo etcétera con un
denominador común: eliminar barreras tecnológicas.

1.1.1. Definición y tipos de gestos de la mano


La importancia de los gestos en la comunicación ha motivado su estudio desde disciplinas
como la Lingüística, la Psicología y la Antropología, y con ello una variedad de definiciones
con diferentes enfoques y matices. Por ejemplo, [Armstrong et al., p. 43] define un gesto como
«a functional unit, an equivalence class of coordinated movements that achieve some end», o
para Kendon en [McNeill c, p. 49] los gestos son «the range of visible bodily actions that are,
more or less, generally regarded as part of a person’s willing expression». Desde la perspectiva
de HCI y de su interés como interfaz en un sistema basado en microprocesador, un gesto se
puede definir como «la postura y, en su caso, el movimiento de una parte del cuerpo a través
de los cuales se transmite información», en la línea de las acepciones generales que para gesto
y gesture recogen el Diccionario de la Real Academia Española de la Lengua y el Merriam
Webster Dictionary, respectivamente.
Estudiados desde diferentes disciplinas, diferentes clasificaciones han sido propuestas para
los gestos de la mano. Desde una perspectiva psicolingüística, Adam Kendon, un pionero de
la investigación en los gestos y la interacción ([Kendon et al.] y [Kendon], entre muchos desta-
cados trabajos), distingue, en el desarrollo de un marco general para la comprensión de los
gestos, los gestos que son independientes del discurso —gestos autónomos— de los que sí están
asociados a él. Entre estos últimos establece, según como sea de necesaria la comunicación
oral para intepretarlos, diferentes categorías, que se pueden organizar en lo que [McNeill b]
denomina Continuo de Kendon. Representado en la Figura 1.2, el Continuo de Kendon abarca
desde los movimientos informales y espontáneos que acompañan al discurso, la gesticulación,
hasta los movimientos formales y estandarizados de un Lenguage de Gestos —Lenguaje de
Signos—. Entre estos extremos se sitúan los gestos enmarcados en el discurso (speech-framed,
también denominados language-like), similares a la gesticulación pero integrados gramatical-
mente en el discurso como unidades sintácticas, con mayor peso en el significado de las frases;
pantomimas, en las que el gesto de la mano imita acciones u objetos y puede entenderse
sin necesidad de palabras; y los símbolos (emblems), que son aquéllos con una representación
estandarizada y previamente codificada de un significado inequívoco que habitualmente susti-
tuyen al discurso, como si se tratara de palabras no pronunciadas. Los símbolos suelen ser
también específicos de un contexto cultural. A lo largo del Continuo de Kendon, la necesidad
del discurso oral para transmitir información con los gestos se van reduciendo en la medida
en que los gestos van ganando valor lingüístico y perdiendo espontaneidad.

Gesticulation Language-like gestures Emblems Pantomimes Sign languages

Figura 1.2: Representación del Continuo de Kendon ([McNeill b])

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

Mimetic Deictic Referential Modalizing

Specific Generic Metonymic

Figura 1.3: Taxonomía de gestos de la mano propuesta por [Quek]

5
1.1. Comunicación basada en los gestos de la mano

Hand/Arm movements

Gestures Unintentional movements

Manipulative Communicative

Acts Symbols

Mimetic Deictic Referential Modalizing

Figura 1.4: Taxonomía de gestos de la mano para HCI propuesta por [Pavlović et al.]

Posteriormente, [Karam y Schraefel], tras detectar en la bibliografía de las Ciencias de la


Computación una carencia de uniformidad en los términos, proponen una taxonomía dise-
ñada con el propósito de presentar una perspectiva unificada de los gestos como técnica
para la interacción de las personas con las computadoras. En ella consideran las cuatro cate-
gorías recogidas en la Figura 1.5. La categoría estilos de gestos está basada en las propuestas
de [Quek et al.] y enmarcada en el Continuo de Kendon, considerando tres tipos de gestos
entre la gesticulación y lenguajes de signos: gestos deícticos, manipulativos y semafóricos.

HCI basada en gestos

Campos Tecnología Respuesta Estilos


aplicación empleada del sistema Gestos

Gesticulación

Perceptivo No Perceptivo Deícticos

Guantes sensorizados Semafóricos


Visión
Mandos de control remoto Manipulativos
otros
Pantallas táctiles Lenguaje de Gestos

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.

1.2. Sistemas para reconocimiento de gestos de la mano


El objetivo del Reconocimiento de Gestos es proporcionar a una computadora la capacidad de
detectar e interpretar de manera autónoma gestos realizados por una persona. Estas tareas,
innatas para el ser humano —en mayor o menor medida según su grado de relación con el
discurso oral, como se explica en el apartado 1.1.1—, han resultado ser considerablemente
complejas y difíciles de automatizar y requieren, para el modelado espacial y temporal de
los gestos, el empleo de muy diversas técnicas de reconocimiento de patrones, análisis del
movimiento, aprendizaje autónomo y de muchos otros campos.
Un sistema de Reconocimiento de Gestos de la Mano (Hand Gesture Recognition, HGR) es
un sistema digital basado en microprocesador que capta información y a partir de ella ejecuta
algoritmos de procesamiento con tal propósito. El sistema queda definido por las soluciones
de configuración adoptadas y por las características que presenta en cuatro ejes principales:
la tecnología de sensorización empleada, la funcionalidad, la plataforma que le da soporte y el
contexto de uso. La Figura 1.6 recoge las principales categorías y alternativas. Estas soluciones
y características están dirigidas a proporcionar al usuario una experiencia satisfactoria en el
uso de la interfaz, en el marco propio de cada aplicación. Para ello deben atenerse, en unos
parámetros específicos para dicha aplicación pero aplicables de manera genérica a cualquier
sistema, a una serie de requisitos. La rapidez de respuesta del sistema —el tiempo que tarda
en ejecutarse la acción desde que se realiza el gesto al que está asociada—, la precisión
—el nivel de error tolerable por el usuario en el reconocimiento del gesto realizado—, y
la robustez —repetitividad y flexibilidad para identificar realizaciones de un mismo gesto
aunque se presenten distintas ante el sistema— son esenciales. El grado de comodidad del
sistema, su durabilidad y mantenimiento, la curva de aprendizaje —cómo de intuitivo es su
funcionamiento—, el nivel de concentración necesario para manejarlo, las características del
vocabulario de gestos implementado o, naturalmente, el precio son también importantes para
la experiencia del usuario y la popularización del sistema.
Como cualquier otro sistema de control que actúa en función de la información que recibe
de su entorno, un sistema de reconocimiento de gestos de la mano debe emplear algún tipo de
dispositivo que capture el gesto: uno o varios sensores que actúan de intermediarios entre la
realización del gesto y el sistema digital basado en microprocesador que realizará una acción
determinada en respuesta a ese gesto. El propósito de este sensor es obtener información rele-
vante que permita detectar e identificar el gesto con la mayor eficacia y precisión, información
que debe poder conducir, en última instancia, a estimar los parámetros que definen un gesto:
la configuración o secuencia de configuraciones de la mano, determinada por su orientación,
la posición de los dedos, los ángulos, etc., y por la velocidad de su movimiento.

7
1.2. Sistemas para reconocimiento de gestos de la mano

Tipo de gestos
Vocabulario

Modelo temporal (Estático/Dinámico)

Modelo espacial (2D/3D)

Funcionalidad
Ámbito de operación (Interior/Exterior)

Sistema Dinámica del entorno (Estático/Dinámico)


Tecnología sensora Contexto
HGR de uso
Iluminación (Variable/Controlada)
Acústico
Restricciones
Electromagnético Plataforma
sensorial
Electromecánico
Ubicación Número de sensores
Óptico

En el usuario Remoto Sensor único Multisensorial

Homogénea Heterogénea

Figura 1.6: Características y alternativas de configuración de un sistema de reconocimiento


de gestos de la mano

Atendiendo al principio de funcionamiento, las principales categorías de sensores son acús-


ticos, electromagnéticos, electromecánicos y ópticos. Los acústicos emplean señales de ultra-
sonidos para, por medio de la medida del tiempo de vuelo (Time of Flight, ToF), determinar la
posición de la mano. Existen soluciones comerciales (por ejemplo la de EllipticLabs enfocada
a teléfonos móviles), pero la baja velocidad de respuesta y la habitual limitación de precisión
de este tipo de sensores debida a posibles reflexiones de la señal hacen que su ámbito de
aplicación sea muy reducido.
La interacción con un campo electromagnético posibilita detectar y seguir objetos que
incorporen un elemento adecuado para generar dicha interacción. La fuerza del campo que el
sistema debe crear y la intensidad de la interacción determinan el rango de funcionamiento,
la precisión y la robustez, aunque, por su propia naturaleza, son sensibles a interferencias
electromagnéticas. Esta tecnología se ha utilizado en el desarrollo de soluciones HCI, como
por ejemplo las ofrecidas por Polhemus. La tecnología GestICr , patentada por Microchip
Technology Inc., elimina la necesidad de situar sensores en la mano creando un campo eléctrico
cercano en el que la componente magnética es prácticamente nula, y que permite detectar
gestos de la mano de un usuario —objetos conductivos en general— en un rango de distancia
de 20 centímetros.
Los sensores electromécanicos son ampliamente utilizados en instrumentos —guantes
sensorizados y mandos de control remoto— manejados por un usuario con el propósito de
interactuar con una computadora mediante los gestos de la mano. El popular mando de control
remoto de la consola Wii de Nintendo, el Wii Remote, está basado en un acelerómetro de 3

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

En esta misma configuración en la que el usuario lleva sensores incorporados en la mano,


se encuadran el ya mencionado Wii Remote y el PlayStation Move, la solución equivalente
de Sony para Play Station 3. Ambos mandos de consola incluyen sensores inerciales para
detectar y estimar su movimiento. Ambos emplean, además, técnicas activas de visión para
el seguimiento de la posición del mando y para estimar la distancia a la que se encuentra
el mando y, por tanto, el usuario: Wii Remote utiliza un sensor de infrarrojos para captar
las señales enviadas desde dos grupos de LEDs infrarrojos situados en la estación base; Play
Move incluye en una esfera situada en su parte superior LEDs RGB cuya luz, de un color
que se ajusta dinámica y automáticamente para diferenciarse del entorno, es captada por una
cámara conectada a la consola.
Guantes y mandos comparten el uso de sensores mecánicos que proporcionan, de manera
más o menos explícita, información sobre el movimiento y la posición en cada instante de la
mano y, en particular en el caso de los guantes, la configuración de los dedos. Son los sensores
de flexión e inerciales los que actualmente ofrecen la mayor precisión para capturar con la
mayor facilidad un gesto y son, por ello, los guantes sensorizados la herramienta más efectiva
para construir soluciones HCI basadas en la mano.
Sin embargo, el propio guante, que sea imprescindible cargar con una estructura que
soporte los sensores para que realicen el movimiento acompañando a la mano y/o los dedos
es precisamente su gran hándicap. El empleo del guante conlleva la necesidad de configuración
y de adaptación a su manejo, pérdida de comodidad, limitaciones en las situaciones de uso; en
definitiva—y sin considerar el coste— el guante sensorizado supone una barrera tecnológica
y los sistemas no son tan naturales como se anhela. Esto ha supuesto que en la práctica,
y aunque la solución adoptada está en gran medida condicionada por el contexto de uso,
estas tecnologías queden reducidas a ámbitos muy concretos. El Proyecto Digits de Microsoft
Research busca liberar la mano de guantes y mandos, y aumentar la libertad de movimiento
del usuario, colocando en la muñeca una cámara y un anillo de LEDs, ambos en el rango
infrarrojo del espectro. A partir de la información de la cámara, un software es capaz de
estimar la postura de la mano en tres dimensiones. Sin embargo, de nuevo, las dudas sobre
su comodidad, precisión y robustez hacen que, al menos hasta la fecha, Digits no se haya
convertido en un producto comercial.
Mientras, el campo de investigación sigue buscando soluciones. Y en él, la principal línea de
trabajo es la de desarrollo de sistemas basados en visión. En las técnicas de visión artificial
se intuye el potencial para dar a las computadoras la capacidad de identificar personas y
reconocer sus acciones, para construir interfaces de comunicación que liberen de cualquier
dispositivo al usuario.

1.3. Reconocimiento de gestos de la mano basado en visión


por computador
La evolución de las tecnologías de sensores de imagen ha universalizado la presencia de
cámaras en prácticamente cualquier dispositivo. En paralelo, el desarrollo de las técnicas de
Visión por Computador ha proporcionado herramientas para que sistemas basados en micro-
procesadores analicen imágenes adquiridas por cámaras e intenten extraer de ellas información
que resulte de interés para cualquier aplicación. La Visión por Computador o Visión Arti-
ficial es una disciplina científica que no ha dejado de ganar popularidad en las dos últimas
décadas y que está hoy en día presente en una enorme cantidad de campos. Su objetivo último

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

Figura 1.7: Configuración básica de un sistema genérico basado en visión

Analizado desde la perspectiva de la Visión por Computador, el reconocimiento de los


gestos de la mano es en primer lugar un problema de detección de un objeto: dada una base
de datos de objetos y dada una imagen, se trata de determinar si alguno de los objetos está
presente en ella. En particular, el objeto es la mano en un determinado estado gestual definido
por su posición, orientación y por la configuración de sus dedos. El gesto puede ser, además,
dinámico, si su realización conlleva que el estado de la mano cambie, o estático, si el estado
permanece relativamente inmóvil durante el tiempo de realización del gesto. Esto implica, en
cualquier caso, la necesidad de realizar un seguimiento de la mano durante una secuencia de
imágenes y en cada una de ellas estimar cuál es su estado. Entonces, es posible clasificar el

12
1.4. Objetivos de la tesis

gesto: es la identificación de una secuencia predeterminada de configuraciones de la mano lo


que permite reconocer un gesto. A alto nivel, las tareas implicadas en el reconocimiento son
las indicadas en el diagrama de la Figura 1.8.

Detección Seguimiento Clasificación

Figura 1.8: Tareas implicadas en el reconocimiento de gestos de la mano basado en visión

Desafortunadamente, estas tareas de detección y reconocimiento mediante visión han


resultado ser de mucha mayor complejidad que en los guantes sensorizados. La información
directa sobre el movimiento de la mano y la posición de los dedos aportada en los guantes por
sensores inerciales y de flexión, se reduce ahora a estimaciones realizadas sobre características
extraídas de las imágenes. La mayor accesibilidad y libertad de uso son a expensas, al menos
hasta el momento, de unas menores fiabilidad y precisión. La solución, no en particular de
los gestos de la mano sino al problema de detección y seguimiento de objetos en general,
constituye en la actualidad uno de los grandes retos de la Visión por Computador.
La investigación en reconocimiento de objetos distingue dos niveles: de instancia, cuando
se busca un objeto específico, una persona concreta; y de categoría, cuando se pretende
reconocer cualquier instancia de un tipo de objeto. Este último nivel, innato para el ser
humano y al que aspira el reconocimiento de los gestos, ha resultado ser extraordinariamente
difícil de replicar, y tras años de evolución es probablemente el mayor desafío de la Visión
por Computador ([Zhang et al.]).

1.4. Objetivos de la tesis


El objetivo de esta tesis es el desarrollo de un sistema de reconocimiento de gestos
de la mano basado en visión. Buscando la mayor libertad de uso, la configuración del
sistema está centrada en el usuario, quien portará una cámara que capturará el movimiento
de sus manos. Se aspira a lograr un funcionamiento robusto y preciso en un entorno no
controlado, por lo que no se contempla establecer restricciones de movimiento ni controlar
la iluminación. Tampoco se considera el empleo de técnicas activas de visión ni de elementos
pasivos incorporados a la mano del usuario.
La rapidez de respuesta es, junto a precisión y robustez, una prestación clave. El estudio
de [Thorpe et al.] concluye que el tiempo que el sistema visual humano tarda en reconocer
un objeto es aproximadamente de 150 milisegundos. Al mismo tiempo, es referencia el expe-
rimento recogido por [Card et al.] que revela que un usuario considera que existe causalidad
inmediata de dos eventos si el tiempo transcurrido entre ellos es menor de 50 milisegundos,
lo cual implica que la reacción a una acción debe suceder menos de 50 milisegundos después
de ésta para que se perciba como una consecuencia natural. Para ello, y con el propósito
de optimizar las prestaciones temporales de la ejecución de los algoritmos de procesamien-
to de imagen y vídeo que se desarrollen, el objetivo general de la tesis incluye el diseño
de las arquitecturas hardware que implementen en hardware reconfigurable los
algoritmos propuestos. Los dispositivos FPGA son una plataforma muy adecuada para
acelerar algoritmos de alta carga computacional y construir sistema de cómputo embebidos.
En particular, el procesamiento de imagen y vídeo ha sido uno de los grandes motores que
han impulsado la Computación Reconfigurable ([Gokhale y Graham b, Bailey b]).

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:

Los algoritmos de procesamiento de imagen y vídeo que se propongan deben permitir


reconocer un vocabulario de gestos con precisión y fiabilidad. Para ello debe construirse
un modelo de los gestos y decidir qué características se van a extraer de las imágenes
para servir como descriptores de la información presente en ellas relevante para nuestro
propósito. Debe diseñarse a su vez un algoritmo de clasificación que, contrastando la
información de la biblioteca de gestos con los valores de los descriptores en las imágenes,
determine la realización o no de alguno de los gestos. Una etapa inicial fundamental es
la recopilación y etiquetado de una base de datos apropiada.

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.

El sistema debe habilitar el acceso del usuario a opciones de configuración y la posi-


bilidad de proporcionarle información continua sobre el resultado del proceso de reco-
nocimiento, de acuerdo con el hecho, demostrado por ejemplo por [Potter et al.] para
las pantallas táctiles, de que proporcionar al usuario una realimentación de la inter-
pretación que el sistema hace de la interacción mejora significativamente la experiencia
de manejo y contribuye considerablemente a reducir la tasa de error.

Los algoritmos desarrollados deben ser implantados en una plataforma de procesamiento


de vídeo basada en FPGA y ofrecer funcionamiento en tiempo real, entendiendo por tal
una rapidez de respuesta que garantice que el manejo del sistema sea percibido como
natural por el usuario, en el sentido expresado anteriormente. Las arquitecturas que se
diseñen para la implementación de los algoritmos deben atender a los criterios de modu-
laridad y versatilidad ya mencionados. La plataforma debe soportar la funcionalidad
necesaria para validar el funcionamiento del sistema de reconocimiento de gestos de la
mano basado en visión que se desarrolle.

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

de investigación de la Universidad Politécnica de Cartagena. En 2016, fue reconocido como


Grupo de Excelencia de la Región de Murcia por la Fundación Séneca, Agencia de Ciencia y
Tecnología de la Región de Murcia.

15
2

Reconocimiento de gestos de la mano


basado en visión

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.

2.1. Técnicas de visión para el reconocimiento de gestos de la


mano
El gran interés en los sistemas HGR para la interacción con las computadoras reside en
que los gestos son naturales para el ser humano. Sin embargo, son precisa y únicamente
eso: naturales para el ser humano, realizados por personas para ser entendidos por personas.
Desafortunadamente, las computadoras no tienen nuestra habilidad para interpretarlos, hay
que programarlas para ello. Es necesario describir, de una forma que una computadora pueda
manejar, qué es un gesto. Es necesario, en definitiva, modelar los gestos.
[Pavlović et al.] representa el proceso Producción–Percepción Visual del gesto por medio
del diagrama que se reproduce en la Figura 2.1. El gesto G se origina como un concepto mental
que es ejecutado mediante el movimiento H de la mano y/o el brazo y percibido en forma
de información visual V en un proceso a lo largo del cual se producen las transformaciones
THG , que genera H a partir de G, y TVH , que describe cómo se forma V dado H. Descrito

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.

Gesturer produces Observer perceives

Gesture Hand/Arm Visual


(the mental concept of)
THG movement TVH Images

G H V

Figura 2.1: Representación del proceso de Producción y Percepción Visual de gestos


propuesta por [Pavlović et al.]

Un sistema HGR basado en visión se construye a partir de la adopción de las soluciones


para modelar los gestos que se pretenden reconocer. Para poder completar las etapas impli-
cadas en el proceso de reconocimiento de la Figura 1.8, el modelado de los gestos debe
realizarse tanto en el dominio espacial como en el dominio temporal. El modelado espacial
describe las posturas de la mano —su estado gestual— y posibilita identificarlas en una
imagen; el modelado temporal describe la evolución del estado gestual en el tiempo y posibilita
reconocer la dinámica de los gestos en una secuencia de imágenes. Todo ello debe realizarse,
obviamente, a partir de la información disponible para la computadora, que en los sistemas
de visión es la proporcionada por uno o varios sensores de imagen, o la que de ella se puede
extraer. Los siguientes apartados están dedicados a las técnicas de visión empleadas con estos
propósitos.

2.1.1. Modelado espacial del gesto


La bibliografía en reconocimiento de gestos mayoritariamente clasifica en dos los tipos de
aproximaciones para construir los modelos: basadas en una representación tridimensional
de la mano y basadas en la apariencia. Vistos desde la perspectiva de las transformaciones
propuesta por [Pavlović et al.], la primera aproximación es una solución al problema del
reconocimiento en dos pasos, utilizando un modelo 3D de la mano para tratar primero de
obtener una estimación Ĥ de su postura y movimiento, y con ello a continuación inferir
el gesto. La segunda prescinde de este modelo tridimensional y persigue reconocer el gesto
directamente desde la apariencia de la mano en las imágenes.
El modelado 3D de la mano representa de manera explícita la mano y sus pará-
metros, como recoge la Figura 2.2, son típicamente la palma de la mano, la longitud de los
dedos, los ángulos de las articulaciones, etc. Desde que [Rehg y Kanade], ampliamente consi-
derada la primera referencia al respecto, propusieran el empleo de un modelo 3D de la mano,
esta solución no ha dejado de evolucionar empujada en gran medida por la industria de la
animación digital, que ha motivado el desarrollo de modelos tridimensionales extremadamente
realistas generalmente construidos con superficies 3D basadas en algoritmos matemáticos
como NURBS (Non-Uniform Rational B-Spline). Definido el modelo de la mano, el procedi-
miento de reconocimiento consiste en tratar de determinar si alguna de sus configuraciones

17
2.1. Técnicas de visión para el reconocimiento de gestos de la mano

Modelado del gesto

Basado en 3D Basado en apariencia

Palma de la mano
Características SIFT HOG
Falanges de Haar
Articulaciones
Shape Context Características
geométricas silueta

Figura 2.2: Tipos de modelos de la mano y sus parámetros1

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.

(a) Modelo volumétrico con texturas (b) Modelo geométrico

Figura 2.3: Tipos de modelos 3D de la mano

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

comentados a continuación en el apartado 2.1.1.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

Imagen Extracción Estimación Estado gestual


Segmentación Clasificación
características parámetros

Figura 2.4: Esquema de las tareas implicadas en la etapa de detección de la configuración de


la mano en un sistema de reconocimiento de gestos basado en visión

La extracción de características compacta y traduce la imagen a un vector de caracterís-


ticas o descriptores de la imagen, orientadas a reconocer los gestos —objetos— deseados. En
los sistemas basados en un modelo tridimensional de la mano, los valores en la imagen de los
parámetros del modelo son calculados a partir de estas características en la tarea Estimación
de parámetros. En los sistemas basados en apariencia, la solución habitual es que el modelo
consista directamente en las características de la imagen, que precisamente son extraídas
persiguiendo la descripción de los gestos más robusta y eficiente posible. De esta manera las
características se convierten en los descriptores de los gestos y la tarea de estimación de los
parámetros está implícita en el propio proceso de extracción de características.

2.1.1.1. Extracción de características

Una característica (feature) es, desde el punto de vista de la Clasificación de Patrones,


cualquier atributo de un patrón que pueda ser relevante para describirlo e identificarlo. El
propósito del proceso de extracción de características es encontrar un conjunto de estos atri-
butos que permitan definir de manera inequívoca un patrón. En un sistema basado en visión,
la fuente de información de donde extraer las características son las imágenes proporcionadas
por uno o varios sensores de imagen. La complejidad del problema de reconocimiento de obje-
tos radica en gran medida en la dificultad de encontrar estas características en las imágenes,
ya que los objetos están sujetos tanto a variaciones de apariencia como a variaciones propias
del objeto. Un mismo objeto aparecerá en las imágenes en cualquier posición, orientación o
tamaño, y presentará diferentes aspectos según la iluminación o la perspectiva. Además, los
diferentes objetos que se incluyen dentro de una categoría tendrán variaciones en su forma,
tamaño o color. En este contexto, el conjunto de características ideal será aquél lo sufi-
cientemente flexible como para filtrar todas estas variaciones y reconocer un objeto a pesar
de ellas, pero al mismo tiempo lo suficientemente robusto como para discriminar objetos
de diferente tipo. En la práctica, es necesario encontrar un compromiso entre la necesidad
de generalizar patrones de la misma clase y la necesidad de discriminar patrones de clases

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.

(a) Imagen (b) Contorno de la mano (c) Silueta de la mano

Figura 2.5: Ejemplo de contorno y silueta de la mano

De manera genérica, las técnicas de reconocimiento de objetos basadas en la forma


intentan describir su estructura global a partir de los dos tipos básicos de representación
mostrados en la Figura 2.5: basadas en el contorno y basadas en la silueta. Ambas son muy
relevantes en reconocimiento de objetos.

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

El empleo de Template Matching basado en la silueta también está muy extendido. La


silueta del objeto o de cualquiera de sus regiones de interés se emplea como patrón, plantilla
o template bidimensional de tamaño m × n que se compara con un área del mismo tamaño
centrada en cada uno de los píxeles de la imagen. La propia plantilla es el descriptor del objeto.
La comparación se lleva a cabo utilizando diversas funciones de distancia o correspondencia,
y el resultado, una nueva imagen del mismo tamaño que la original en la que el valor de cada
punto es un estimador del grado de similitud entre la plantilla y los píxeles en el área de la
imagen original centrada en ese píxel, sirve para detectar la presencia y posición del objeto
en la imagen.

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.

Segmentación basada en el color


El color de la imagen, más allá de ser imprescindible para poder mostrar fielmente la realidad,
resulta de gran interés para su análisis en aquellas aplicaciones en las que los objetos, o al
menos partes de ellos, tengan una configuración de color determinada. Con el propósito de
sacar partido de ello, la segmentación basada en color persigue crear regiones agrupando
píxeles que tengan un color homogéneo, definido éste en alguno de los múltiples espacios de
color, propuestos atendiendo a diferentes criterios, existentes para representarlo y entre los
cuales RGB es simplemente uno más. Desafortunadamente para el desarrollo de soluciones,
la señal de color que llega a un sensor de imagen —como a un usuario— presenta una enorme
dependencia de la iluminación, de sombras, de reflejos y de toda una serie de factores que en
la práctica conducen a que un color pueda ser percibido de maneras muy diferentes y que, en
definitiva, convierten la segmentación basada en el color en un problema de gran complejidad.
No obstante, en los sistemas de reconocimiento de gestos de la mano sí está extendido
el preprocesamiento mediante la segmentación basada en color a través de dos alternativas:
añadiendo a la mano, típicamente mediante un guante, marcas con un determinado patrón
de color; y modelando el color de la piel. La primera aproximación es una solución híbrida
de guante sensorizado y sistema de visión, una simplificación del primero para su integración
en el segundo. El guante ya no es la plataforma sensora, con lo cual los inconvenientes que
esta configuración lleva aparejados, comentados en el capítulo 1, pierden peso de manera
significativa, sino que se emplea para aliviar y mejorar las tareas de procesamiento de imagen
facilitando la detección y el seguimiento de la mano mediante la asignación, por ejemplo, de un
color diferente para cada dedo y otro para la palma de la mano. Con esta finalidad, existen dos
tipos básicos de configuraciones: activas, en las que el guante puede incorporar una o varias
fuentes de luz, como LEDs de colores o infrarrojos (p.ej. [Park y Yoon]); y pasivas, en las que
simplemente presenta marcas de colores o reflectores (p.ej. [Piekarski et al., Wang y Popović]
—la Figura 2.6 muestra el guante empleado por estos últimos—). De manera formal, esta
solución puede ser vista como una rebaja en la tarea de reconocimiento, establecida en el
capítulo 1 en el nivel de categoría, al nivel de instancia, ya que el problema se reduce a
reconocer exactamente un objeto concreto: un guante con marcas u otros distintivos previa-
mente definido.

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).

(a) Imagen (b) Segmentación basada (c) Segmentación basada


en el color de la piel en la profundidad

Figura 2.7: Segmentación de la mano basada en el color de la piel (b) y en la profundidad (c)

Segmentación basada en la distancia


Conocer la distancia en la escena añade información muy valiosa al análisis bidimensional de
las imágenes captadas por una cámara. Las técnicas de Range Imaging proporcionan, basán-
dose en sistemas de visión estereoscópica o en cámaras RGB-D y visión activa (comentadas
en el capítulo 1), información sobre la distancia al sensor de cada píxel de la imagen. La
segmentación basada en la distancia genera una nueva representación de la escena en la que
ésta queda dividida en regiones según la distancia, considerando como parte de la misma
región todo píxel que se encuentra a una distancia determinada (Figura 2.7c). Este mapa
de profundidad resulta de gran utilidad para distinguir objetos que se encuentren en planos
diferentes de la escena e incluso puede permitir disociar objetos que no sean separables de
otra manera. La complementariedad del color y de la profundidad, ya sea integrados en la
generación de la imagen por una cámara de profundidad o posteriormente mediante algorit-
mos de procesamiento, abre un camino de posibilidades para afrontar algunos de los grandes
desafíos de la Visión por Computador (ver p.ej. [Shao et al.]).
Tanto la aparición de Kinect como la evolución de los algoritmos de visión estereoscópica
—y de las prestaciones de los sistemas de cómputo que los ejecuten— han otorgado gran
relevancia en los últimos años al empleo de la información de distancia en el análisis del movi-
miento del cuerpo humano (ver p.ej. [Chen et al., D’Orazio et al.]) y en particular en el reco-
nocimiento de los gestos de la mano (ver p.ej. [Suarez y Murphy], [Pisharady y Saerbeck]).
Es habitual que, por la configuración del sistema, las manos se sitúen en su propio plano y en
consecuencia sean más fáciles de extraer del fondo de la imagen empleando el mapa de profun-
didad. Además, la segmentación basada en distancia posibilita estimar qué se encuentra al
alcance de las manos y con ello controlar la interacción con objetos.

27
2.1. Técnicas de visión para el reconocimiento de gestos de la mano

Segmentación basada en el movimiento


Una imagen es una captura instantánea de una escena. Con la información de intensidad,
color y profundidad que de ella se pueda extraer, los algoritmos correspondientes generan una
imagen segmentada asociada a ella. Esta imagen segmentada es propia de la imagen captada,
y, en lo que respecta a las técnicas empleadas, no guarda ninguna relación con la segmentada
en el instante anterior y con la que se segmente en el instante siguiente. En un sistema de
procesamiento de vídeo, sin embargo, emplear únicamente estas técnicas de segmentación
espacial implica no utilizar parte de la información disponible: la evolución de la escena a lo
largo de la secuencia de imágenes. A través de su análisis, es posible detectar cambios entre
frames y con ello estimar cómo se produce el movimiento. Es posible, por tanto, realizar
una segmentación temporal que agrupe regiones de una imagen según su cambio de posición
y de esta manera, asumiendo que se producen movimientos relativos entre ellos, detectar y
localizar objetos mediante segmentación basada en movimiento.
La detección de movimiento es la tarea de detectar el cambio en las posiciones relativas
de un objeto y lo que le rodea, bien porque se haya movido el objeto, bien porque se haya
movido el resto de la escena, o bien porque se hayan movido ambos. La dificultad del problema
está determinada por los condicionantes de la aplicación: si la cámara es fija y el fondo
inmóvil, para detectar el movimiento de un objeto simplemente es necesario comparar dos
frames consecutivos; si el objeto, el resto de la escena y la cámara son móviles, la tarea
resulta de mucha mayor complejidad y se emplean métodos basados en flujo óptico, que
estiman las velocidades aparentes de los objetos y su distribución en la imagen (p.ej. [Davies,
Nixon y Aguado b]).
En sistemas HGR la información de movimiento puede ser de gran utilidad para detectar
la mano de la persona que realiza el gesto, siendo generalmente razonable asumir que se
mueve más que la propia persona y que el fondo, o que lo haga más cerca de la cámara. Las
características propias del movimiento de la mano, un objeto muy articulado y con varios
grados de libertad, pueden servir además para diferenciar la mano de otros objetos.

Naturalmente, estas soluciones pueden ser combinadas. La gran dificultad de la segmentación


se explica en parte porque una sola fuente de información no tiene por qué ser suficiente para
reconocer los objetos. No es desde luego el caso de nuestro sistema visual cuya habilidad es,
en definitiva, la que en última instancia se aspira a replicar. Sin embargo, el potencial de las
soluciones multi-modales todavía no ha sido completamente desarrollado.

2.1.1.3. Clasificación: generación del modelo y reconocimiento

El proceso de extracción de características, precedido en su caso por la segmentación, traslada


la imagen a un nuevo espacio, el espacio de descriptores, en el que queda representada por
el conjunto de los valores de los descriptores o vector de características. La clasificación es la
tarea de agrupar los vectores de este espacio de descriptores en regiones que correspondan
a los objetos, con una región para cada tipo de objeto. Su propósito es asociar un vector
a alguno de los objetos, de asignarle una etiqueta que lo identifique, o de descartar que se
trata de cualquiera de ellos. Esta tarea se lleva a cabo en dos niveles: en la generación de los
modelos, durante la fase de desarrollo del sistema; y en la identificación de los objetos, en
particular de la postura de la mano en sistemas HGR, cuando el sistema está operativo.
Durante el diseño de la aplicación, los vectores de descriptores extraídos de las imágenes
de entrenamiento son utilizados para construir el modelo. Los parámetros de éste, como
se explicó en el apartado 2.1.1, derivan de los descriptores en los modelos tridimensionales

28
2.1. Técnicas de visión para el reconocimiento de gestos de la mano

y son directamente los propios descriptores en los modelos basados en apariencia. En la


fase de entrenamiento, cada uno de los vectores descriptores obtenidos de cada una de las
imágenes de un conjunto que contenga una representación suficientemente significativa de
los gestos que se pretende reconocer —la base de datos de entrenamiento— son utilizados
para generar la biblioteca de modelos de los gestos mediante un proceso de clasificación
supervisado. Se trata de establecer relaciones entre el gesto y un conjunto de valores de
los descriptores que deben corresponder de manera inequívoca a ese gesto. La Figura 2.8
refleja el proceso de generación de la biblioteca que alberga los modelos de los gestos. La
selección de características condiciona el proceso, pudiendo simplificarlo si son adecuadas o
llegar incluso a hacerlo imposible en caso contrario. Como representa el diagrama, se trata
de un proceso dinámico en el que las características están conectadas con la formación y la
verificación de propuestas de modelos, condicionándolas y al mismo tiempo sometidas a ellas.
En consecuencia, la frontera conceptual entre extracción de características y clasificación
es en cierto modo arbitraria, y queda establecida más por razones prácticas que teóricas
([Duda et al.]).

Biblioteca
Modelos de Gestos

Imágenes Localización Estimación Formación Verificación


Segmentación
entrenamiento características parámetros Hipótesis Hipótesis

Figura 2.8: Proceso de generación de los 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]).

2.1.2. Modelado temporal del gesto


Desde la perspectiva de su evolución temporal, los gestos se dividen en estáticos y dinámicos.
En las posturas o gestos estáticos, la posición de la mano y la configuración de los dedos no
cambian durante el tiempo que dura el gesto. No se produce movimiento, al menos no un
movimiento significativo, y la información que transmiten se basa exclusivamente en dicha
posición y configuración. En los gestos dinámicos, la posición de la mano y la configuración de
los dedos sí cambian durante la realización del gesto. La información que transmite el gesto
no depende únicamente de la configuración, sino también de cómo ésta cambia en el tiempo.
Para el reconocimiento de gestos dinámicos es necesario, por tanto, modelar su dimensión
temporal, que se desarrolla en lo que [McNeill a] denomina gesture phrase y que consiste de
manera genérica en una estructura con tres fases: preparación, trazo (stroke) y retracción. La
preparación son los movimientos previos que llevan la mano a la posición y configuración de
comienzo del gesto. El trazo es el gesto propiamente dicho, la fase en la que se transmite el
significado. De las tres, el trazo es la única fase obligatoria, en el sentido de que sin ella el
gesto no tiene lugar. En la retracción, finalmente, la mano vuelve a una posición de descanso.
Ésta, no obstante, no tiene por qué ser la posición de partida de la fase de preparación.
Desde la perspectiva de la Visión por Computador, el modelo temporal implica afrontar
tres problemas: reconocer el comienzo de la fase central, el trazo, que es la relevante en
un sistema HCI; identificar la trayectoria que describe el gesto, y gestionar los tiempos que
marcan la ejecución del movimiento. La posición de partida de la mano en el comienzo del
gesto, su posición final, las posibles pausas que puedan realizarse entre las fases del gesto,
la trayectoria que la mano describe en el espacio o el tiempo que tarda en realizarse esa
trayectoria no tienen por qué coincidir en la realización de un mismo gesto y, en consecuencia,
los tres problemas están sujetos a gran variabilidad. Esta variabilidad, inherente a su carácter
natural, es lo que lleva a [Pavlović et al.] a definir un gesto como un proceso estocástico, dado
que dos realizaciones del mismo gesto nunca producirán, ni siquiera producidos por la misma
persona, la misma información en las imágenes. Por tanto, un sistema HGR debe considerar
información espacio-temporal de cualquier gesto dinámico y presentar, de manera análoga
a las propiedades invariantes indicadas en el apartado 2.1.1.1, invarianza al instante en el
que se inicie el gesto e invarianza a la escala temporal en la que se desarrolla su realización.
En la gestión e interpretación de esta información puede tenerse en cuenta, por ejemplo, que
sólo ciertas posturas son plausibles en relación a la postura actual y las anteriores, o que
en movimientos amplios de la mano el movimiento individual de los dedos no es relevante
mientras que cuando es importante el movimiento relativo de los dedos el gesto no incluye el
movimiento de la mano ([Gavrila]).

30
2.1. Técnicas de visión para el reconocimiento de gestos de la mano

Para identificar la trayectoria que dibuja en el espacio un gesto es habitual emplear


técnicas de seguimiento de objetos, cuyo objetivo es establecer la correspondencia entre carac-
terísticas de imágenes de frames consecutivos para conocer su posición en cada uno de los
que forman la secuencia de vídeo. De utilidad en un gran número de aplicaciones, entre ellas
HCI, el Seguimiento de Objetos (Video Tracking) es otra de las grandes áreas de interés en los
últimos años en Visión por Computador y un gran número de métodos han sido propuestos
(ver p.ej. [Smeulders et al.]). La elección está condicionada por el método de segmentación y
las características extraídas de las imágenes. Métodos basados en el color como CAMShift, en
flujo óptico como el algoritmo de Kanade-Lucas-Tomasi, en contornos como Condensation,
o más genéricos para modelado de sistemas dinámicos como el filtro de Kalman o los filtros
de partículas (particle filtering) han sido utilizados en sistemas HGR. No obstante, si la
detección y extracción de características es lo suficientemente rápida respecto a la velocidad
del movimiento, ésta misma puede servir como método de tracking.
Una vez el sistema dispone de la secuencia temporal de valores de los descriptores es
posible identificar el gesto dinámico. El Procesamiento Digital de Señales ofrece numerosas
técnicas para afrontar el problema de reconocimiento en el dominio temporal, algunas muy
estudiadas para otro gran campo de interés de HCI: el Reconocimiento del Habla. En-
tre ellas, las más extendidas en la literatura de reconocimiento de gestos dinámicos de la
mano son los Modelos Ocultos de Markov (Hidden Markov Models, HMM), el Alineamien-
to Temporal Dinámico (Dynamic Time Warping, DTW), las Máquinas de Estados Finitos
(Finite State Machines, FSM) y técnicas de Soft Computing como las Redes Neuronales
Artificiales o la Lógica Borrosa. Numerosas revisiones incluyen referencias a trabajos dedi-
cados al reconocimiento de gestos de la mano que emplean estas técnicas, destacando en-
tre ellas las de [Pavlović et al., Suarez y Murphy, Mitra y Acharya, Pisharady y Saerbeck,
Rautaray y Agrawal].

2.1.3. Tendencias en sistemas HGR basados en visión


A pesar de los muchos y muy relevantes avances en las áreas implicadas, los sistemas de
reconocimiento de gestos de la mano no ofrecen prestaciones equiparables a las que hicieron de
ratón y teclado el interfaz universal. Fiabilidad, versatilidad, rapidez de respuesta o facilidad
de uso son aspectos pendientes, y hacer de la mano la herramienta multipropósito definitiva
([Quek et al.]) para la comunicación con las computadoras sigue siendo en la actualidad un
gran desafío para la Visión por Computador.
Numerosos trabajos descriptivos y varias revisiones del estado del arte han sido ya referen-
ciados en los diferentes apartados de este capítulo. Para una primera aproximación al proble-
ma, probablemente sea [Premaratne] quien ofrece una revisión más detallada de la evolución
de los sistemas HGR basados en visión. Entre los trabajos más recientes, [Jiang et al.] pre-
sentan un interfaz basado en los gestos de la mano para facilitar la interacción a personas con
lesiones en la parte superior de la médula espinal. En su propuesta, construida sobre Kinect,
la imagen es segmentada por profundidad —considera que el usuario está en primer plano—
y por el color de la piel mediante un tabla de probabilidad construida con histogramas en
el espacio de color HSV. Distancia y color son integrados en un filtro de partículas que se
encarga del seguimiento de las manos y la cara, con un filtro para cada uno de ellos. Para
el reconocimiento de gestos dinámicos utilizan DTW y el algoritmo Condensation, éste en el
marco propuesto por [Black y Jepson] para su aplicación al reconocimiento del movimiento de
personas. La implementación en un PC con procesador i3-3220 y con tarjeta gráfica HD2500
procesa 22 imágenes de 640 × 480 píxeles por segundo. [Ghosh y Ari] proponen un algoritmo

31
2.1. Técnicas de visión para el reconocimiento de gestos de la mano

para reconocimiento de gestos estáticos basado en un descriptor formado por la combinación


de las características Localized Contour Sequence —basadas en el algoritmo detector de bordes
de Canny— y de parámetros geométricos de un conjunto de bloques en los que se divide el
rectángulo que encierra la imagen segmentada con un modelo explícito del color de la piel
en el espacio de color YCb Cr y rotada sobre el eje del componente principal de la imagen
resultante. El clasificador es una red neuronal de función de base radial. Programado en
Matlab, el algoritmo tarda un tiempo medio de 0, 333 segundos para clasificar una imagen de
320 × 240 píxeles ejecutado en un PC con procesador i5 a 3,2 GHz. [Liu y Kehtarnavaz] em-
plean una aproximación basada en reglas para combinar información de profundidad obtenida
de un sistema de visión estereoscópico con el resultado de la segmentación según un modelo
paramétrico GMM del color de la piel construido en una fase de calibración —requiere por
tanto recalibración al cambiar las condiciones de iluminación o el usuario— en las crominan-
cias Cb Cr . Los gestos dinámicos son modelados utilizando CAMShift sobre la componente de
saturación H en el espacio de color HSV para el seguimiento, y el algoritmo DTW para la
clasificación. Implementado en un PC a 2,1 GHz, procesa 31 imágenes de 640×480 píxeles por
segundo. [Wu y Kang] también emplean un modelo, en este caso explícito, del color de la piel
en las crominancias Cb Cr propuesto por [Chai y Ngan] para, combinándolo con la estimación
del flujo óptico en cada píxel (dense optical flow), detectar la mano en un algoritmo de detec-
ción de las puntas de los dedos. La localización de los dedos se realiza empleando información
geométrica a partir del contorno de la mano en la imagen segmentada. El mismo modelo
del color de la piel es utilizado por [Singha et al.], donde la imagen segmentada es combina-
da con el algoritmo three-frame differencing de estimación de movimiento para detectar la
mano. Los autores utilizan el método KLT para su seguimiento y para el reconocimiento un
clasificador que integra una red neuronal artificial, una SVM y un algoritmo KNN. También
[Yao y Fu] emplea el modelo de [Chai y Ngan] para reconocer la piel, en este caso combinado
con la información de profundidad que proporciona el sensor de Kinect para identificar la
mano en la escena. La configuración de la postura de la mano la determinan analizando la
curvatura local de la silueta obtenida y utilizan un filtro de Kalman para el seguimiento de
trayectoria del centro de la palma de la mano. Empleando también Cb y Cr pero con unos
rangos de valores más estrechos para definir el modelo de piel, [Premaratne et al.] aplican
HMM para el reconocimiento de gestos a partir de la trayectoria del centroide de la imagen
segmentada. Para eliminar objetos indeseados, filtran la imagen generada por el modelo de
piel aplicando restricciones al tamaño de las regiones. Una umbralización en los valores de
Cb Cr , combinada con otra en los valores de S y V del espacio HSV, es el modelo del color de
la piel empleado para segmentar la imagen en la propuesta de [Bhuyan et al.]. Identificada
la mano como el objeto del color de la piel de mayor tamaño, proponen unas características
geométricas para describir la trayectoria del centroide de dicho objeto, y el empleo de Campos
Aleatorios Condicionales para reconocer el gesto en base a esas características. Para registrar
la actividad de las manos de un conductor al volante, [Ohn-Bar y Trivedi] emplean Kinect y
proponen una solución de múltiples descriptores calculando una versión modificada de HOG,
el descriptor GIST —basado en convoluciones de la imagen con filtros de Gabor—, valores
estadísticos globales de la imagen—media, mediana y varianza— , e información geométrica
de las regiones resultantes de la segmentación con un modelo del color de la piel en el espacio
Lab. La integración de esta información es realizada por dos niveles de SVMs. [Zhou et al.]
proponen un modelo morfológico de los dedos de la mano construido sobre la silueta extraída
con el algoritmo de Canny para la detección de bordes aplicado sobre la imagen segmenta-
da con el modelo de color de la piel propuesto por [Jones y Rehg]. Estableciendo una serie
de restricciones para la escena —fondo, iluminación, distancia—, la implementación en un
Pentium Core 2 Duo procesa 15 imágenes de 320 × 240 píxeles por segundo.

32
2.2. Propuesta de sistema

2.2. Propuesta de sistema para reconocimiento de gestos de


la mano basado en visión
Tal y como fue presentado en el capítulo 1, el objetivo global de esta tesis es reconocer gestos
de la mano mediante técnicas de visión en un entorno dinámico y sin restricciones en el
marco de una aplicación móvil. El sistema que lo implemente, por ello, debe atenerse a una
configuración portátil (wearable). Para alcanzar el mayor grado de simplicidad del equipo
que deba portar el usuario, se descarta el empleo de técnicas de visión activa así como de
guantes u otros dispositivos activos o pasivos: la mano del usuario estará desnuda. Es un
requisito fundamental la ejecución de todas las tareas implicadas en tiempo real, es decir,
que el retardo entre la realización del gesto y la acción de respuesta del sistema asociada a
él no sea perceptible por el usuario. Se adopta como planteamiento de partida un sistema de
visión centrado en el usuario, en primera persona, y se contempla el reconocimiento de gestos
semafóricos estáticos.
Para dar respuesta a estos objetivos, nuestra propuesta de sistema de reconocimiento de
los gestos de la mano basado en visión se define en dos dominios: el del procesamiento y el
de la arquitectura. Corresponden al primero las técnicas y algoritmos que llevan a cabo las
tareas de detección, seguimiento y clasificación de los gestos; al segundo, las soluciones para la
implementación en una plataforma hardware basada en FPGA. Evidentemente, las decisiones
adoptadas en ambos dominios están interrelacionadas, como se irá viendo a lo largo de los
capítulos que las describen.

2.2.1. Propuesta de algoritmos de procesamiento


La Figura 2.9 muestra, atendiendo al esquema genérico de tareas implicadas en el reco-
nocimiento de la Figura 2.4, las etapas de alto nivel que componen nuestra propuesta:
segmentación basada en el color de la piel, detección mediante correspondencia de patrones
de las partes de la mano y un clasificador basado en reglas.
La primera etapa es la segmentación basada en el color de la piel. El reconocimiento
del color de la piel es de interés en numerosas aplicaciones, desde el indexado de bases de
datos hasta el filtrado de contenidos. En sistemas HGR, su relevancia ha sido puesta de
manifiesto en las revisiones citadas a lo largo del capítulo y en el estado del arte más reciente
recogido en el apartado 2.1.3. No obstante, la segmentación basada en color es una técnica
fuertemente dependiente de la aplicación. Buscando hacer frente a la variabilidad del color de
la piel, tanto intrínseca como extrínseca debida a cambios en las condiciones de iluminación,
desarrollamos un modelo del color de la piel.
Una vez segmentada la imagen, se busca reconocer la postura de la mano identificando
sus partes elementales —palma y dedos— por medio de la técnica de Template matching
basada en la convolución bidimensional. La convolución es una herramienta matemática
básica en una variedad de campos. En procesamiento de imagen, convolucionar una imagen
con una máscara m×n es un método ampliamente utilizado para filtrar o extraer información
en numerosas aplicaciones. Con la idea básica de proyectar patrones de objetos sobre una
imagen, la correspondencia de patrones o Template matching es un técnica de gran interés
en Visión por Computador ([Brunelli]). Si la plantilla —máscara— representa la forma de un
objeto, el resultado de su convolución con la imagen aporta información sobre la presencia
de dicho objeto en la imagen. Aplicando esta idea a la identificación de posturas de la mano,
hemos definido plantillas que representan la palma de la mano y los dedos.

33
2.2. Propuesta de sistema

Basada en un modelo explícito propuesto


Segmentación para el color de la piel construido en
diferentes espacios de color.

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

Basada en reglas, evalúa los valores de


los parámetros descriptores en cada
Clasificación imagen y decide sobre la presencia o
no de alguno de los gestos de la mano
incluidos en la biblioteca.

Figura 2.9: Etapas de alto nivel que definen el sistema de procesamiento

34
2.2. Propuesta de sistema

Hemos adoptado, por tanto, un modelo espacial de la mano basado en la apariencia


en el que los gestos de la mano están descritos por parámetros derivados del resultado de
las convoluciones y de la imagen segmentada. Un clasificador basado en reglas evalúa
los valores de estos parámetros en cada imagen para decidir sobre la presencia o no de una
postura de la mano en la imagen. El empleo de template matching mediante la convolución
2D con las plantillas aporta modularidad en el diseño del clasificador basado en reglas; la
combinación de ambos proporciona flexibilidad y escalabilidad.
Con el propósito de mantener la modularidad y escalabilidad, hemos empleado una
Máquina de Estados Finitos para modelar el comportamiento temporal. Con una
FSM, la dinámica del gesto se describe como una secuencia ordenada de estados posturales:
cada estado representa una postura, mantenida durante un determinado tiempo, tras el cual
se produce la transición a un nuevo estado postural válido.

2.2.2. Propuesta de arquitectura


El sistema debe conjugar dos características fundamentales: procesamiento de imagen en
tiempo real y portabilidad. Con el propósito de construir un sistema de cómputo embebido
capaz de procesar imágenes con la suficiente rapidez se ha empleado hardware reconfigurable.
La popularización de los dispositivos Field Programmable Gate Array (FPGA) a comien-
zos del siglo XXI ha dado lugar al nacimiento de lo que se conoce como Computación
Reconfigurable. Si bien las primeras generaciones de FPGA fueron bastante limitadas en
sus capacidades, en la actualidad las más modernas tecnologías de fabricación de circuitos
integrados permiten disponer de dispositivos no sólo con millones de puertas de lógica pro-
gramable, sino también con recursos hardware específicos y con una amplísima gama de
soluciones de conectividad, haciendo todo ello posible el diseño de complejos y potentes sis-
temas en un único chip —lo que se conoce como concepto System On a Chip (SOC)— y
permitiendo un gran salto hacia delante en la capacidad para procesar datos a mayor veloci-
dad y con menor coste. El hardware reconfigurable ofrece un compromiso entre la solución
de máxima especialización de los circuitos integrados de aplicación específica (ASIC) y la
generalidad de los procesadores de propósito general (GPP), combinando el alto nivel de
prestaciones de los ASICs con las características de flexibilidad que confieren los GPPs. A
semejanza de los ASICs, el empleo de dispositivos FPGA implica implementación hardware, y
por tanto paralelismo y elevada capacidad de procesamiento digital; a semejanza de los GPPs,
proporciona reconfigurabilidad, y en consecuencia flexibilidad y rapidez de prototipado. La
clave de las FPGA radica en que la flexibilidad se sustenta sobre el propio hardware, en
lugar de sobre una arquitectura fija capaz de ejecutar diferentes programas software. Los
dispositivos FPGA permiten acelerar la ejecución de algoritmos de alta carga computacional
gracias a su paralelismo de grano fino y su reconfigurabilidad. La estructura interna de las
FPGA las hace ideales para explotar el paralelismo a nivel de píxel inherente a los algoritmos
de procesamiento de imagen de bajo nivel, también el paralelismo a nivel de instrucción por
medio de la segmentación de cauce y, al mismo tiempo, el paralelismo a más alto nivel para,
por ejemplo, ejecutar simultáneamente las operaciones de diferentes algoritmos. De hecho,
el procesamiento de imagen y vídeo ha sido uno de los grandes motores que han impulsado
la Computación Reconfigurable ([Gokhale y Graham b, Bailey b]). Además, su flexibilidad
permite implementar no sólo coprocesadores de propósito específico, sino también interfaces,
controladores, lógica de interconexión e incluso microprocesadores, posibilitando el codiseño
eficiente hardware/software.

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

2.3. Estructura del documento


De acuerdo con los dos ámbitos en los que se desarrolla nuestra propuesta, este documento
ha sido estructurado en dos partes.
La Parte I está dedicada a las soluciones de procesamiento adoptadas. En ella, el capítulo 3
está dedicado al modelado del color de la piel y en él se realizan una revisión del estado
del arte, la descripción del modelo y de su proceso constructivo, y la evaluación de sus
resultados. A continuación, el capítulo 4 detalla y evalúa la propuesta de procesamiento para
el reconocimiento de la mano, describiendo el proceso de template matching y el sistema
basado reglas.
La Parte II está dedicada a la implementación hardware. Contiene en primer lugar una
breve descripción de la plataforma hardware desarrollada, que incluye el frame grabber y
el sistema digital para la generación de menús de texto para información e interacción. A
continuación, se centra en las dos principales contribuciones de esta tesis en el ámbito de
la implementación del sistema. El capítulo 5 describe y analiza la implementación completa
del algoritmo de reconocimiento del color de la piel definido en el capítulo 3, incluyendo las
conversiones entre espacios de color necesarias, cada uno de los modelos y la combinación de
ellos que conforma el algoritmo propuesto. El capítulo 6 está dedicado a la implementación
de la convolución bidimensional, la tarea de procesamiento de mayor coste computacional de
las que forman parte del sistema de reconocimiento de gestos. En él se motivan, describen y
evalúan las soluciones propuestas tanto para la realización de las operaciones que requiere su
cálculo como para la gestión del almacenamiento temporal de los datos implicados.
El capítulo 7 resume las principales contribuciones de la tesis y plantea las líneas de
trabajo futuro.

37
PARTE I

La primera parte de este documento comprende la descripción de los algoritmos de proce-


samiento propuestos para el reconocimiento de los gestos de la mano. Está estructurada en
dos capítulos, dedicado cada uno de ellos a una de las dos principales etapas en las que se
divide el procesamiento. El primero de ellos, el capítulo 3, trata el modelado del color de la
piel, y describe y evalúa el algoritmo propuesto para la segmentación de imagénes; el segundo,
el capítulo 4, trata la extracción de información de la imagen segmentada y la construcción
de los modelos de los gestos, describiendo las diferentes etapas de procesamiento propuestas
para el reconocimiento de una biblioteca de gestos y evaluando los resultados obtenidos.

38
3

Reconocimiento del color de la piel

La información de color en una imagen puede resultar de gran interés en el reconocimiento de


una categoría de objetos si éstos, o al menos una parte de ellos, tienen una configuración de
color determinada. En la piel humana1 se da esta circunstancia en un grado suficientemente
significativo como para que se considere relevante y por ello se conoce como reconocimiento
del color de la piel al proceso que pretende identificar la piel a partir de su color utilizando
técnicas de procesamiento de imagen.
El planteamiento de la tarea ya permite intuir su complejidad: se busca identificar una
categoría de objetos —la piel— utilizando como única fuente de información una de sus
propiedades —su color—. Sin embargo, como es evidente, no existen realmente uno o varios
color carne: ni la piel tiene siempre el mismo color ni hay uno o varios colores que sólo puedan
corresponder a la piel. Más bien al contrario, el color de la piel presenta per se, aun dentro de
una misma categoría en su clasificación de colores, gran variabilidad, como refleja la Figura 3.1
extraída del proyecto Humanæ. Esta variabilidad, además, se ve considerablemente afectada
por la iluminación que recibe. No obstante esta complejidad, el interés que suscita en un gran
número de campos de aplicaciones hace que el reconocimiento del color de la piel sea objeto
de estudio desde hace años.
Este capítulo está dedicado al reconocimiento del color de la piel. Con el propósito de
establecer el estado del arte en el campo, se realiza en primer lugar una revisión de las
técnicas que el estudio de la bibliografía revela como más relevantes. En ellas se distinguen
dos cuestiones principales: los espacios de color y la modelización del color de la piel. A
continuación, se describe el proceso de construcción del modelo propuesto, que conduce a las
expresiones y parámetros que lo definen. Finalmente, se presentan los resultados obtenidos.

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

3.1. Espacios de color


Un espacio de color es una representación matemática del color, un conjunto de variables
que permiten describir cualquier color. Lejos de existir una única representación, la finalidad
de la aplicación que recibe la información de color y el desarrollo de la tecnología propia
de cada campo han dado lugar a una gran cantidad de modelos de representación del color.
La enorme expansión de los ordenadores personales popularizó el espacio de color RGB,
pero no es la única opción. Por ejemplo, ya antes de tal generalización de la informática a
nivel de usuario, los estándares de vídeo analógico compuesto para televisión PAL y NTSC
utilizaban los espacios YUV y YIQ para transmitir la información de color. Posteriormente,
y relacionado con las nociones de tonalidad, saturación y brillo que son más intuitivas y
cercanas a la forma en la que el ser humano interpreta el color, surgen lo que se conoce como
espacios de color perceptuales, mayoritariamente utilizados en programas software de ajuste
y retoque fotográfico. Profundizando en el campo de la percepción, los espacios propuestos
por la Comisión Internacional de la Iluminación pretenden modelar las características de la
respuesta del ojo humano. Existen, por tanto, diferentes modelos para definir un color, cada
uno de ellos con ventajas e inconvenientes.
A pesar de que en el campo de la segmentación de imágenes existe la creencia generalizada
de que no hay un espacio de color que sea óptimo para todas las imágenes [Liu y Yang], en el
marco específico del reconocimiento del color de la piel la elección del espacio de color es la
primera decisión. La mayoría de los trabajos en este campo consideran que RGB, el espacio
de color habitual para el almacenamiento y la representación de imágenes, es poco adecuado
para identificar la piel, ya que no facilita la identificación de propiedades características de
su color como pueden ser las crominancias o la tonalidad. La búsqueda de la descripción
de color más adecuada ha motivado el uso de muchos de los espacios de color existentes e
incluso la propuesta de espacios ad hoc. A continuación se describen brevemente, sin intención
de realizar la revisión exhaustiva que puede encontrarse en la bibliografía específica para el
estudio del color, los espacios de color más utilizados para la identificación del color de la piel.
Se incluyen las relaciones de transformación desde RGB a aquéllos que han sido utilizados en
el desarrollo de esta tesis.

40
3.1. Espacios de color

Espacios de color RGB y RGB normalizado


Sin duda, el espacio de color más conocido y extendido hoy en día es el RGB, formado por los
tres colores primarios aditivos: rojo, verde y azul. La Figura 3.2 representa gráficamente el
modelo de color. El hecho de que la pantalla de los monitores CRT esté compuesta de puntos
de fósforo rojo, verde y azul, cuya combinación en diferentes intensidades permite visualizar
cualquier color, popularizó enormemente el espacio RGB.

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

Espacios de color perceptuales


Los porcentajes de rojo, verde y azul presentes en un color determinado no son algo familiar
al ser humano. Para describir o modificar un color nos resulta mucho más intuitivo referirnos
a su tonalidad, el grado de saturación o el nivel de brillo. Con el fin de facilitar la interacción
con los colores, se han definido los espacios de color HSV y HSI, que, por pretender acercar
la descripción del color a nuestra percepción, se denominan perceptuales.
En el espacio de color HSV, también denominado HSB, la componente H (Hue) es la
tonalidad e indica el color dominante, es decir, la propiedad de un color que diferencia,
por ejemplo, rojo y verde. Como muestra el modelo del espacio de color representado en
la Figura 3.3, H toma valores entre 0o y 360o , correspondiendo cada valor a un color: los
primarios rojo, verde y azul se sitúan en 0o , 120o y 240o respectivamente. La componente
S (Saturation) es la saturación, propiedad que mide la intensidad de un color con respecto
al brillo y diferencia, por ejemplo, rojo y rosa. En la representación gráfica del modelo de
la Figura 3.3, la saturación S es la distancia del color al eje de brillo blanco-negro y toma
valores entre 0 y 100 %. Cuanto menor es la saturación de un color mayor es su porcentaje
de gris (con más o menos negro según el brillo) y menor el del color de la tonalidad. La
componente V (Value) —también denominada B (Brightness)— es el valor o el brillo del
color, la propiedad que diferencia el blanco del negro, y toma valor entre 0 y 100 %. El valor
cero corresponde al vértice de la pirámide de la Figura 3.3 e implica color negro, cualesquiera
que sean los valores de tonalidad y saturación; el valor máximo sitúa el color en la base de
la pirámide y corresponde a colores sin negro con más o menos blanco, según la saturación.
Cuando saturación y brillo toman los valores máximos, es decir no hay ni blanco ni negro,
el color es puro. Para suavizar o añadir blanco a un color se disminuye la saturación sin
modificar el brillo, para oscurecerlo o añadir negro se disminuye el brillo sin modificar la
saturación. Las ecuaciones (3.2) indican la transformación de RGB a HSV. Las variables
max y min son respectivamente los valores máximo y mínimo del conjunto formado por las
componentes {R, G, B}.

Verde Amarillo

Cian Blanco Rojo

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

Espacios de color basados en luminancia y crominancias


La existencia en el sistema visual humano de canales distintos para adquirir y procesar las
informaciones de brillo y color, y la necesidad de optimizar la cantidad de información trans-
mitida en un sistema de televisión, motivaron el desarrollo de espacios de color basados en la
luminancia y en diferencias de color. Entre ellos, los más extendidos son YUV, YIQ e YCb Cr .
YUV es el espacio de color utilizado por los formatos estándar de vídeo compuesto PAL,
NTSC y SECAM. La componente Y es la luminancia y las componentes de crominancia
U y V contienen la información de color, calculada restando la luminancia a los valores de
azul y rojo, respectivamente. La bibliografía en este campo recoge diferentes ecuaciones de
transformación para obtener los valores de las componentes YUV a partir de RGB, según el
formato de vídeo. La expresión (3.4) recoge las consideradas estándar.
0, 299 0, 587 0, 114
     
Y R
 U  = −0, 147 −0, 289 0, 436 ·  G (3.4)
     
V 0, 615 −0, 515 −0, 1 B

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

El espacio de color YIQ es una variación de YUV utilizada en el estándar NTSC de


televisión. La componente I corresponde a In-phase y la Q a Quadrature, que hacen referencia
al método de modulación de amplitud en cuadratura utilizado. La expresión (3.6) contiene
la transformación básica a YIQ desde RGB.

0, 299 0, 587 0, 114


     
Y R
 I  = 0, 596 −0, 275 −0, 321 ·  G (3.6)
     
Q 0, 212 −0, 523 0, 311 B

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

El espacio YCb Cr es una versión escalada y desplazada de YUV propuesta en la recomen-


dación ITU-R BT601. Tampoco en este caso es única la transformación desde RGB, sino que
está definida por diferentes estándares. Las empleadas en esta tesis son las recomendadas
para sistemas basados en computador ([Jack]), en el que los valores RGB están en el rango
[0, 255], y a su vez son las que implementa la función de transformación incluida en el entorno
de computación Matlab. Están recogidas en la expresión (3.8).

0, 257 0, 504 0, 098 16


       
Y R
C = −0, 148 −0, 291 0, 439 · G + 128 (3.8)
       
 b      
Cr 0, 439 −0, 368 −0, 071 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

Espacios de color de CIE


La Comisión Internacional de la Iluminación (Commission Internationale de l’Eclairage, CIE)
propone una familia de espacios de color asociados a la sensación de color percibida por el ojo
humano. Esta percepción de color es estimada experimentalmente a partir de la respuesta de
las células fotoreceptoras del ojo y puede ser representada por medio de tres parámetros que
CIE denomina tri-estímulo, siendo por tanto un espacio de color cualquier método que asocie
valores del tri-estímulo a cada color. CIE propone como referencia el espacio de color XYZ,
definido de manera tal que cualquier color perceptible por el ser humano puede ser descrito
con valores positivos del tri-estímulo XYZ. Las componentes X, Y y Z no corresponden a
colores reales sino que se trata de parámetros derivados de colores primarios. La Figura 3.5
muestra el diagrama de cromaticidad de CIE-XYZ, construido con los valores normalizados
x e y obtenidos dividiendo X e Y por la suma de las tres componentes.

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

Figura 3.5: Diagrama de cromaticidad del espacio de color CIE

Persiguiendo la uniformidad perceptual del espacio de color, es decir, que la distancia


entre dos colores en un espacio esté lo más correlacionada posible con la que los diferencia en
la percepción de un observador, CIE propone los espacios CIE-LAB y CIE-LUV. La principal
diferencia entre ellos es la forma de realizar la adaptación cromática, necesaria para lograr
dicha uniformidad, en función del punto de blanco.
Siendo el color de la piel más un concepto asociado a la percepción humana que a una
propiedad física, la representación del color similar a la sensitividad de la visión humana
puede contribuir a mejorar el reconocimiento del color de la piel. Con esta intención, la
aproximación de estos espacios CIE a la percepción humana ha dado pie a la propuesta y
la evaluación de diferentes clasificadores (p.ej. [Yang y Ahuja b, Terrillon et al., Zarit et al.,
Phung et al., Jayaram et al., Xu y Zhu]).

Espacios de color específicos para el reconocimiento de la piel


La ausencia de un espacio de color que conduzca a resultados de reconocimiento claramente
superiores al resto ha llevado a algunos autores a proponer espacios de color con este propósito
específico.

46
3.2. Modelización del color de la piel

En la línea de los espacios perceptuales, [Terrillon et al.] proponen el espacio normalizado


TSL. La componente T (Tint) corresponde a la tinta, propiedad similar a la tonalidad en la
que también se considera la cantidad de blanco, la componente S (Saturation) es la saturación
y la componente L (Luminance) es la luminosidad. Los valores de las componentes TSL se
obtienen desde RGB normalizado por medio de las ecuaciones (3.9):

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

L = 0,299R + 0,587G + 0,114B

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.

65,481 128,553 24,966 16


       
Y R
C = −81,085 112 −30,915 · G + 128 (3.10)
       
 g      
Cr 112 −93,768 −18,214 B 128

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.

3.2. Modelización del color de la piel


En cualquiera de los espacios de color, la elaboración de un modelo de la distribución del color
de la piel parte de datos empíricos obtenidos de un conjunto de imágenes que conforman lo
que se denomina base de datos de entrenamiento. Esta base de datos de entrenamiento es una
recopilación más o menos exhaustiva de imágenes en las que está presente la piel humana, cada
una de ellas asociada, tal y como muestra la Figura 3.6, a una imagen segmentada manual-
mente en la que se han identificado los píxeles correspondientes a la piel. Estas imágenes de
entrenamiento constituyen la única fuente de información sobre la que se construye el modelo
en la inmensa mayoría de las propuestas existentes en la literatura.

47
3.2. Modelización del color de la piel

(a) Imagen original (b) Imagen segmentada

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.

Definición explícita de la región de color piel


Uno de los métodos más directos y utilizados para modelar el color de la piel humana es la
definición explícita de un conjunto de restricciones en un espacio de color. El punto de partida
de estas soluciones es la comprobación experimental de que la variedad de colores de la piel
se agrupan en una región dentro de un espacio de color. La definición explícita consiste por
tanto en un conjunto de ecuaciones en las componentes de ese espacio de color que delimitan
dicha región o cluster, y la decisión sobre la pertenencia o no a la piel de un determinado
color se realiza evaluando tales ecuaciones en los valores que presentan estas componentes.
Las ecuaciones se derivan de la representación gráfica de los histogramas 2D ó 3D construidos
con los datos de entrenamiento, que típicamente presentan el aspecto de la Figura 3.7, donde
se muestra la distribución obtenida en [García y Tziritas] para el espacio de color YCb Cr y
su proyección sobre el plano Cb Cr . La simplicidad y la facilidad de implementación de este
método ha atraído y sigue atrayendo a muchos investigadores en este campo.
Existe el convencimiento generalizado de que la forma del cluster y su calidad, entendi-
da ésta como la facilidad que ofrece para la definición explícita del color de la piel y por
tanto para optimizar el reconocimiento, dependen del espacio de color utilizado. Ambas ra-
zones explican la gran variedad de soluciones propuestas en la bibliografía. Para el espacio
RGB, [Wark y Sridharan] han comprobado que los colores de la piel contienen un nivel signi-
ficativo de rojo, y emplea la relación R/G entre los valores de las componentes rojo y verde
para discriminar entre piel y no piel. [Brand y Mason] extienden este idea a las relaciones
R/B y G/B de las componentes rojo y verde con la azul. RGB es también el espacio en el
que [Peer et al.] definen restricciones en los valores y en las relaciones de las componentes
para modelar la piel, con expresiones distintas según la iluminación:

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

Figura 3.7: Ejemplo de representación gráfica de histograma 2D mostrando las líneas


que delimitan de manera explícita el área definida por el color de la piel
([García y Tziritas])

iluminación uniforme diurna


R > 95 ∧ G > 40 ∧ B > 20 ∧
R>G ∧ R>B ∧
(3.11)
|R − G| > 15 ∧
max{R, G, B} − min{R, G, B} > 15

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:

(R < 180 ∧ G < 180 ∧ B > 160) ∨


(R < 180 ∧ G > 160 ∧ B < 180) ∨
(R < 100 ∧ G < 100 ∧ B < 100) ∨
(G > 150 ∧ B < 90) ∨
G > 200 ∨
R + G > 400 ∨ (3.13)
B
> 0,4 ∨
R+G+B
G
> 0,4 ∨
R+G+B
(R < 102 ∧ G ∈ (100, 140) ∧ B ∈ (110, 160))

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:

(H ∈ (1, 28) ∧ S ∈ (13, 110) ∧ I > 40) ∨


(H ∈ (332, 360) ∧ S ∈ (13, 110) ∧ I > 40) ∨ (3.14)
(H ∈ (309, 331) ∧ S ∈ (13, 75) ∧ I > 40)

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

[García y Tziritas] definen también restricciones para ser piel en el subespacio Cb Cr :

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

estando θ1 , θ2 , θ3 y θ4 definidas por:

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

[Soriano et al. b] proponen particularizar la definición explícita de los colores de la piel


para la cámara utilizada. En el espacio Rn Gn definen el área de colores de piel, lo que
denominan skin locus, por medio de las ecuaciones:
g < −1,8423r2 + 1,5294r + 0,0422 ∧
g > −0,7279r2 + 0,6066r + 0,1766 ∧ (3.20)
(r − 0,33)2 + (g − 0,33)2 > 0,004
A diferencia de las soluciones anteriores, estas restricciones no clasifican los colores como piel
o no, sino que determinan qué colores se consideran a la hora de actualizar el histograma
encargado de decidir si un color es piel. Se trata, por tanto, de una combinación de la definición
explícita de reglas con un método no-paramétrico que pretende lograr independencia de las
condiciones de iluminación. La misma idea, con valores constantes diferentes por tratarse de
una cámara diferente, es descrita en [Soriano et al. a].

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

donde x es el valor del color en el espacio de color correspondiente, µ la media y Σ la matriz


de covarianza:
1X n
µ= cj (3.22)
n j=1

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]

definir el número i de gaussianas adecuado: un número alto facilita la generalización de los


datos de entrenamiento, pero puede conducir a overfitting y aumenta la carga computacional.
Los resultados disponibles en la bibliografía relacionan el número de gaussianas con el tamaño
de la base de datos y con el espacio de color utilizado. El algoritmo Expectation-Maximization
es el más empleado para ajustar el modelo a partir de los datos de entrada.
La capacidad de generalización con relativamente pocos datos de entrenamiento y el limi-
tado uso de recursos de memoria necesarios para la implementación del clasificador han moti-
vado muchos trabajos basados en esta aproximación en diferentes espacios de color, tanto con
una única gaussiana (p.ej. [Yang y Ahuja b, UV de CIE-LUV], [Xiong et al., Rn Gn de RGB
normalizado], [Wu y Ai, [Cb Cr ]) como con un sumatorio de gaussianas (p.ej. [Yang y Ahuja a,
2 funciones, CIE-LUV], [Jones y Rehg, 16 funciones, RGB], [Terrillon et al., crominancias en
9 espacios de color], [Kurata et al., 1 función para el modelo de piel y 5 para el de no piel,
HS], [Xu y Zhu, 2–16 funciones, 14 espacios de color].
Una alternativa al modelado gaussiano es la simplificación del cálculo de la probabilidad
de (3.21) a la expresión:
P (x) = (x − µ)T Σ−1 (x − µ) (3.25)
que corresponde al cuadrado de la distancia de Mahalanobis. Un color es considerado piel
si el resultado al evaluar (3.25) es inferior a un determinado umbral, lo cual equivale a que
dicho color se encuentre dentro de una elipse si se trata de un subespacio 2D, típicamente las
crominancias (p.ej., [Soontranon et al., Cb Cr ], [Habili et al., Cb Cr ]) o dentro de un elipsoide
en un espacio de color 3D (p.ej. [Wimmer et al., nRGB], [Hsu et al., espacio propio obtenido
por transformación no lineal de YCb Cr ]).
Con la intención de incluir la información de los colores no clasificados como piel en los
datos de entrenamiento en la estimación de la probabilidad, [Phung et al.] modelan de la
misma forma también la distribución de no-piel y considera piel un color que satisfaga:

(x − µ)T Σ−1 (x − µ) − (x − µ¬ )T Σ−1


¬ (x − µ¬ ) ≤ σ (3.26)

siendo µ¬ el vector media de la distribución de no-piel y Σ¬ la de matriz de covarianza.

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

de la complejidad de la distribución, por lo que no es necesario hacer presuposiciones sobre


las formas de tales densidades o distribuciones. Las principales ventajas de estos métodos son
su sencillez y la rapidez de la clasificación. Como contrapartida, se requiere gran cantidad de
datos de entrenamiento.
La solución más habitual consiste en utilizar el histograma construido con los datos de
entrenamiento como instrumento para asignar una probabilidad de ser piel a un determina-
do color. En la propuesta más sencilla ([Brand y Mason, Zarit et al.]), el histograma de los
colores clasificados piel es directamente interpretado como una tabla de búsqueda en la que la
dirección es la combinación de valores de las componentes del color y el dato en tal dirección
es su probabilidad de ser piel. Por tanto, la probabilidad de que un color c sea piel viene dada
por:
piel[c]
Ppiel (c) = (3.27)
T
donde piel[c] es el valor de c en el histograma, es decir, el número de veces que el color c
ha sido clasificado como piel en las imágenes de entrenamiento, y T es la suma de todos los
valores del histograma y se utiliza para normalizar la distribución. Esta tabla de búsqueda
con los valores del histograma normalizados se suele denominar Mapa de Probabilidad de
Piel (Skin Probability Map, SPM).
Partiendo del histograma de la piel en HS de HSV, [Chen y Qi] generan una nueva imagen
B(x, y) por medio de:
B(x, y) = 1 − e−R(H(x,y),S(x,y)) (3.28)
con:
M (i, j)
 
R(i, j) = min ,1 (3.29)
I(i, j)
siendo M (H, S) el histograma de piel e I(H, S) el histograma completo, y x e y las coorde-
nadas de cada píxel de la imagen de entrada. En esta nueva imagen las zonas de color piel
son homogéneas y se resalta el contraste con objetos de otros colores.
[Soriano et al. a] emplean una solución intermedia entre los dos anteriores y simplemente
dividen el histograma de piel por el de la imagen completa, con la intención de penalizar a
los colores que no siempre pertenecen a la piel. El espacio de color en este caso es Rn Gn de
RGB normalizado.
Con el mismo propósito de penalizar a los colores que están menos asociados al color de
la piel, [Kjeldsen y Kender] calculan en HSI un color predicate a partir de los histogramas de
piel y de no-piel. Para ello, cuando un color pertenece a la piel se incrementa su valor y el de
los colores vecinos en el color predicate según una distribución gaussiana, decrementándose
según una gaussiana más estrecha si no pertenece a la piel. Con esto, un color se considera
piel si su valor asociado, que puede ser positivo o negativo, supera un determinado umbral.
Una combinación de las propuestas anteriores, en la que la clasificación se basa en una
tabla de búsqueda generada dividiendo los histogramas normalizados de piel y no-piel, es,
con diferencia, la solución más extendida y evaluada entre todos los métodos no-paramétricos
(p. ej. [Jones y Rehg, Sigal et al., Kölsch et al.]). El valor Ppiel (c) en (3.27) es en realidad
la probabilidad condicional P (c|piel), es decir, la probabilidad de que, dado un color que
pertenece a la piel, este sea el color c. Sin embargo, para clasificar un color como piel es más
apropiado emplear la probabilidad de que dado un color c éste pertenezca a la piel, lo cual
corresponde a la expresión P (piel|c). Ambas probabilidades están relacionadas por la regla
de Bayes por medio de:
P (c|piel)P (piel)
P (piel|c) = (3.30)
P (c|piel)P (piel)) + P (c|¬piel)P (¬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)

De acuerdo con (3.30), esta relación viene definida por:

P (piel|c) P (c|piel)P (piel)


= (3.34)
P (¬piel|c) P (c|¬piel)P (¬piel)

por lo que (3.33) puede ser reescrita como:

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)

En esta aproximación el clasificador vuelve a ser una tabla de búsqueda, un SPM, en el


que ahora cada dirección almacena la relación entre los valores de los histogramas de piel
y no-piel normalizados. [Zarit et al.] compara el método de la tabla de búsqueda calculada
únicamente con el histograma de piel normalizado con esta aproximación basada en Bayes en
cinco espacios de color, obteniendo claramente mejores resultados con este último método.

El diseño de un algoritmo de clasificación basado en histogramas requiere resolver dos


cuestiones: el espacio de color y la resolución del histograma. Al igual que en los modelos de
definición explícita, se han utilizado gran cantidad de espacios de color para construir SPMs.
Sin embargo, la mayoría de los estudios comparativos realizados no detectan un impacto

55
3.2. Modelización del color de la piel

de la adopción de uno en particular en los resultados. [Sigal et al.] sí encuentra mejores


resultados en HSV que en RGB normalizado, pero [Zarit et al.], que amplia la comparación a
RGB normalizado, HSV, YCb Cr y CIE-LAB, afirma que la clasificación puede realizarse en
cualquiera, ya que todos ellos dan resultados muy parecidos. [Phung et al.], donde se utilizan
los mismos espacios con la diferencia de RGB en lugar de RGB normalizado, mantiene la
misma conclusión.
Para analizar la influencia de la componente de iluminación, [Phung et al.] también evalúan
los planos de crominancia Rn Gn , HS, Cb Cr y AB, obteniendo peores tasas de acierto en
comparación con los espacios 3D completos y, en este caso sí, diferencias entre los planos
evaluados, con mejores datos para Cb Cr . En [Xu y Zhu] se alcanzan conclusiones similares
respecto a la iluminación tras evaluar 14 espacios de color 3D y sus correspondientes planos
de crominancia, mientras [Jayaram et al.] coincide en la influencia negativa de emplear sólo
crominancias y sí detecta un impacto de la elección del espacio de color, aunque afirma que
no es consistente.
Por su parte, la resolución del histograma hace referencia a cuantos valores son posibles
para cada componente de color y viene determinada por el número de bits empleados para
codificarlos. Las resoluciones propuestas o estudiadas en la bibliografía van desde los 8 bits
por color, lo que conlleva un histograma con 2563 entradas, hasta los 3 bits por color de
un mucho más reducido histograma con 83 entradas. Utilizar la resolución más alta no tiene
por qué conducir a los mejores resultados de reconocimiento. Más bien al contrario, existe la
creencia ([Jones y Rehg, Gómez]) de que la reducción de la resolución ayuda a generalizar y
compactar el histograma, compensando de este modo la incapacidad de interpolación intrín-
seca al modelado no-paramétrico. Además, es necesario valorar no sólo las tasas de acierto en
la clasificación, sino también los requisitos de memoria asociados a la utilización de histogra-
mas con muchas entradas y la viabilidad de su implementación. A pesar de existir diferentes
formatos de codificación para los datos de color ofrecidos por los dispositivos de captura
de vídeo (4:2:2, 6:5:5, etc.), no se conoce ningún trabajo con un número de bits diferente
para cada componente de color. El estudio de la influencia de la iluminación se limita, como
se ha comentado anteriormente, a eliminar la componente correspondiente y construir un
histograma 2D.
El primer estudio detallado sobre el tamaño del histograma lo realizan [Jones y Rehg]. En
el espacio RGB y mediante curvas ROC, los autores encuentran que la mejor resolución es
la de 32 valores por componente de color. En [Jayaram et al.], donde se presentan resultados
obtenidos con histogramas en 9 espacios de color, se insiste en esta idea pero la relaciona
con el espacio de color, ya que las tasas de acierto más altas corresponden a histogramas de
tamaño 32 en dos de los espacios de color. Los otros siete presentan su mejor comportamiento
con tamaños 64 y 128; ninguno de ellos con 256, es más, este tamaño puede incluso dar peores
resultados que 8.
Sin embargo, éstas no son las conclusiones del estudio realizado en [Phung et al.], donde,
para 4 histogramas 3D, se comprueba que los mejores resultados corresponden a las resolu-
ciones más altas. Los autores achacan esta divergencia a la representatividad de los datos de
entrenamiento, y demuestran que histogramas de 32 valores por componente pueden llegar
a comportarse mejor que los de 256 si se reduce lo suficiente el tamaño de la base de datos
utilizada para construirlos. Debe tenerse en cuenta además el diferente criterio de evaluación
empleado en los trabajos: [Jayaram et al.] sólo valora los porcentajes de aciertos positivos,
mientras que [Phung et al.] compara curvas ROC, en las que junto al porcentaje de aciertos
positivos se considera también el porcentaje de falsos positivos. En este último análisis se de-
muestra también que el comportamiento de los tamaños 256, 128 y 64 es bastante parecido,

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.

Otros métodos no paramétricos

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

un modelo gaussiano simples en YCb Cr combinando las distribuciones de piel y no piel de


acuerdo con (3.26), el modelo gaussiano múltiple propuesto en [Jones y Rehg] y una red
neuronal del tipo perceptrón multicapa. Del análisis de las curvas ROC y de los porcentajes
de clasificación se desprende que el SPM y la red neuronal, con un comportamiento muy
similar, son superiores al resto.
A diferencia de [Xu y Zhu], en el que la comparativa de los espacios de color es indepen-
diente de la de los modelos, [Jayaram et al.] estudian el impacto conjunto en la clasificación
de la elección del espacio de color y del modelo de la distribución del color de la piel. Para
ello construye dos modelos, uno gaussiano y otro basado en histogramas, en nueve espacios
de color, considerando tanto las tres componentes de cada uno como los respectivos sub-
espacios 2D eliminando la componente de iluminación. Las conclusiones revelan que, sin ser
un comportamiento consistente, la transformación del espacio de color mejora la detección
en algunas situaciones; la eliminación de la iluminación empeora, de manera considerable en
la gran mayoría de las pruebas, los resultados, y que el modelado no-paramétrico basado en
histogramas consigue muchos mejores porcentajes de clasificación que el modelo gaussiano.
Las mejores tasas de acierto del estudio se producen en los espacios de color SCT, HSI y
CIE-LAB con histogramas 3D. La comparación con [Shin et al.] lleva a los autores a afirmar
que la separabilidad de los clusters de piel y la calidad de la clasificación no siempre están
relacionadas.
La revisión de estos trabajos no aporta ninguna conclusión definitiva sobre si existe un
espacio de color ideal para el reconocimiento de la piel. Incluso [Albiol et al.] rechazan que tal
espacio ideal exista y defienden, desde un punto de vista teórico, que es posible encontrar un
clasificador de piel óptimo con las mismas prestaciones en cualquier espacio de color, probado
que existan transformaciones reversibles entre los mismos. Por esta misma razón, y en esto sí
coincide con los anteriores estudios comparativos, los clasificadores que no tienen en cuenta la
componente de iluminación ofrecen peores resultados, ya que las transformaciones de espacios
de color 3D a espacios 2D no son reversibles.
En cuanto al tipo de modelo del color de la piel, del análisis de las comparativas men-
cionadas se puede concluir que el modelado no-paramétrico construido con los histogramas
de piel y no piel de acuerdo con la aproximación de Bayes presenta el mejor comportamiento.
Sin embargo, más allá de las diferencias en cuanto al tamaño recomendable del histogra-
ma recogidas en el apartado dedicado al modelado no paramétrico, este método únicamente
parece mejor cuando se dispone de una base de imágenes con decenas de millones de datos
de entrenamiento, tal y como se afirma en la revisión más reciente de [Kakumanu et al.].

3.3. Propuesta de modelo del color de la piel


El reconocimiento del color de la piel en una imagen es, de manera genérica, un problema de
clasificación binaria en el que los píxeles que la forman se etiquetan como pertenecientes a
una de dos clases posibles: Piel o No-Piel. Como se trata de identificar el color de la piel, la
clase Piel se asocia con el resultado positivo de la clasificación y la No-Piel con el resultado
negativo. Con estas dos clases, son posibles únicamente cuatro resultados en el proceso de
clasificación:

Acierto positivo: el resultado de la clasificación y el valor real coinciden y ambos son


positivos, es decir, un píxel previamente etiquetado como Piel es clasificado como tal.

58
3.3. Propuesta de modelo del color de la piel

Acierto negativo: el resultado de la clasificación y el valor real coinciden y ambos son


negativos, es decir, un píxel previamente etiquetado como No-Piel es clasificado como
tal.

Falso positivo: el resultado de la clasificación y el valor real no coinciden, ocurriendo


que un píxel previamente etiquetado como No-piel es clasificado como Piel.

Falso negativo: el resultado de la clasificación y el valor real no coinciden, ocurriendo


que un píxel previamente etiquetado como Piel es clasificado como No-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:

no aciertos positivos no aciertos negativos


SC = NSC =
Npiel N¬piel
no falsos negativos no falsos positivos
SF = NSF =
Npiel N¬piel

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

Acierto positivo Falso positivo


Clase estimada

Piel
(SC) (NSF )

Falso negativo Acierto Negativo


No-piel
(SF ) (NSC)

Tabla 3.1: Matriz de confusión representando los posibles resultados de clasificación en el


problema de reconocimiento de la piel

Para desarrollar y analizar clasificadores se utilizan los porcentajes SC y NSF para


construir gráficos ROC. Los gráficos de Características Operativas del Receptor (Receiver
Operating Characteristics, ROC) son una herramienta para visualizar, organizar y seleccionar
clasificadores de acuerdo a sus resultados [Fawcett]. Representan de manera gráfica la relación
entre las tasas de aciertos positivos y de falsos positivos, de modo que permiten reconocer con

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

Tasa de falsos positivos NSF

Figura 3.9: Ejemplo de gráfico ROC

3.3.1. Base de datos de imágenes


Para definir y evaluar el modelo del color de la piel se ha construido una base de datos de
imágenes específicamente para esta tesis. Está formada por 500 imágenes de 352 × 288 píxeles
en las que aparece una mano en la postura que se muestra en los ejemplos de la Figura 3.10.
En este trabajo, el reconocimiento del color de la piel es un medio para detectar la postura
de la mano y por ello se ha realizado esta compilación de imágenes propia.
Las imágenes que forman la base de datos presentan la mano de una persona en situaciones
con diferente iluminación y fondo, en las que aparecen objetos de color similar a la piel como
cartón o varias tonalidades de madera. Las imágenes han sido adquiridas con cámaras web
configuradas con balance de blancos automático. Cada imagen ha sido etiquetada manual-
mente para obtener el ground truth, distinguiendo tres categorías de píxeles: Piel, No-Piel y
No-Clasificado, ésta última para aquéllos cuyo color es demasiado ambiguo para ser clasificado
como una u otra, y que ha sido típicamente empleada cuando el píxel parece formar parte
de la mano pero su color, por la exposición en la captura de la imagen, es muy blanco o
muy oscuro. En las imágenes de ejemplo de la Figura 3.11, los píxeles Piel de la imagen
clasificada están asociados al blanco, los No-Piel al negro y los No-Clasificado al gris. De los
más de 50 millones de píxeles que contiene la base de datos, el 11,98 % corresponden a Piel,
87,93 % a No-Piel y apenas un 0,09 % ha sido etiquetado como No-Clasificado. La mitad de

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.

Figura 3.11: Ejemplo de imagen original y segmentada de la base de datos recopilada

No existe un acuerdo generalizado en la bibliografía sobre la base o bases de datos a uti-


lizar. Numerosos autores utilizan su base de datos particular, lo que dificulta la comparación
directa de resultados entre los trabajos, pero por otra parte la recopilación de imágenes de la
web suscita dudas sobre las características de color, que es la información clave para reconocer
la piel, de las imágenes [Gómez]. Teniendo presente lo anterior, para validar los resultados
de la solución que se propone se ha empleado una selección de imágenes de la base de datos
FSD. La base de datos Face and Skin Detection (FSD) [Face and Skin Detection Database],
también conocida como ECU, es ampliamente utilizada como referencia a partir del traba-
jo [Phung et al.]. Creada para desarrollar la investigación en segmentación basada en el color
de la piel y en reconocimiento de caras, contiene 4000 imágenes en color y tres conjuntos de
datos: el de las imágenes originales, el de las imágenes segmentadas según el color de la piel
y el de las imágenes segmentadas para la detección de la cara; la diferencia entre estos dos
últimos radica en que el primero incluye todas las partes del cuerpo visibles y el segundo sólo
la cara. Las imágenes que recopila, obtenidas de la web, se sitúan en muy diferentes escenas
tanto interiores como exteriores, por lo que el background en el que se encuentra la persona
—y en nuestro caso el objeto piel— y la iluminación son muy variados. En las 4000 imágenes
que la forman están representadas paletas cromáticas que corresponden a los diferentes fo-

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.

Figura 3.12: Imágenes de ejemplo de la selección realizada en la base de datos ECU

3.3.2. Diseño de un modelo basado en la definición explícita del color de


la piel
Un modelo explícito del color de la piel consiste en un conjunto de restricciones que delimitan
la región o cluster que el color de la piel forma en un determinado espacio de color. Su diseño
parte del análisis de la representación gráfica de los histogramas de piel construidos con la
información de cuantas veces cada combinación posible en un espacio de color ha sido etique-
tada como Piel en las imágenes de entrenamiento. Visualmente, este histograma representa
un volumen, puesto que habitualmente son tres las componentes que definen un espacio de
color. Para fijar las restricciones que delimiten el cluster de la clase Piel, el histograma 3D se
proyecta, tal y como representa la Figura 3.13, en cada uno de los planos para obtener tres
histogramas 2D en cada uno de los cuales los colores de los píxeles correspondientes a Piel
da forma a un área.
Sobre estos planos que contienen los histogramas 2D del color de la piel se definen una serie
de ecuaciones que delimitan dicha área. En esta tesis se han empleado rectas para describir
estas ecuaciones, expresadas en la forma general y = ax + b, donde x e y son los valores
de las componentes de color que correspondan y a y b son los parámetros de la recta. La
Figura 3.14 muestra cómo las rectas de las ecuaciones de la expresión (3.38) encierran el
cluster que en el plano {Rn ,Gn } del espacio RGB normalizado forman los pares de valores de

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

estas componentes que corresponden a colores etiquetados manualmente como pertenecientes


a la clase Piel. La coordenada x corresponde a la componente Gn y la coordenada y a la
componente Rn .
r2 r5 r6
150

140 r1 : y > −1,13x + 180


130
r4 r2 : y < −1,18x + 220
120 r1
r3 : y > 91
(3.38)
110 r4 : y < 125
Rn

100
r5 : x > 76
r3
90
r6 : x < 89
80

70
50 60 70 80 90 100 110

Gn

Figura 3.14: Histograma 2D de los píxeles eti-


quetados como piel en el plano {Rn ,Gn } del
espacio de color RGB normalizado

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

Imagen entrada RGB

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

Con el propósito de dotar de mayor flexibilidad al reconocimiento de la piel, en esta tesis


el parámetro b de la ecuación de la recta ha sido considerado dinámicamente ajustable, de
manera que no se trata de un valor constante sino de una variable que puede tomar un
rango de valores precalculados durante la fase de construcción del modelo. Las variaciones
del parámetro b implican hacer mayor o menor el subespacio de color que es considerado
como perteneciente a la piel, lo cual corresponde gráficamente a ensanchar o estrechar el
área encerrada entre las rectas. Ensanchar esta área hace que sean más las combinaciones
de color que se clasifican como Piel, aumentando por tanto el número de aciertos positivos
y mejorando SC. Sin embargo, también aumenta el número de falsos positivos y con ello
empeora NSF. Por su parte, estrechar el área hace más exigentes las restricciones y reduce el
número de combinaciones de color que se consideran Piel, lo cual implica una reducción de
los falsos positivos y la mejora de NSF, pero también una reducción de los aciertos positivos
y con ello el empeoramiento de SC.

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

50 60 70 80 90 100 110 0 0,2 0,4 0,6 0,8 1


Gn NSF
(b) (c) (d)
r2 r5 r6
150 1
140
0,8 C2
130 r4
120 r1 0,6
110
100 0,4
r3
90
0,2
80
70 0
SC
Rn

50 60 70 80 90 100 110 0 0,2 0,4 0,6 0,8 1


Gn NSF
(e) (f) (g)
r2 r5 r6
150 1
140
0,8
130 r1
120 r4 C3
0,6
110
100 0,4
r3
90
0,2
80
70 0
SC
Rn

50 60 70 80 90 100 110 0 0,2 0,4 0,6 0,8 1


Gn NSF
(h) (i) (j)

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

La Figura 3.16 muestra tres configuraciones posibles de clasificadores basados en el modelo


definido por medio de las rectas de la expresión (3.38) en el plano {Rn,Gn} de RGB norma-
lizado mostrado anteriormente en la Figura 3.15. Las subfiguras 3.16b, 3.16e y 3.16h reflejan
la modificación de b en los histogramas 2D en el sentido de un estrechamiento progresivo del
cluster de piel, haciendo cada configuración más exigente; las subfiguras 3.16c, 3.16f y 3.16i
son las imágenes de salida de cada clasificador para la imagen de entrada de 3.16a; y las
subfiguras 3.16d, 3.16g y 3.16j situan los pares (SC, NSF ) asociados a cada uno de ellos en una
gráfica ROC. Las imágenes de salida y las gráficas ROC representan visual y analíticamente
el comportamiento de cada configuración. Las asociadas a las restricciones de 3.16b, donde
se define el área de colores de piel más ancha, reflejan cómo se reconoce correctamente un
porcentaje muy alto de píxeles Piel y la tasa SC es muy alta, con el coste, como se aprecia
en la subfigura 3.16c, de etiquetar como Piel un número considerable de píxeles que no lo son
y, por tanto, la correspondiente tasa NSF también alta. Conforme el área se estrecha en las
subfiguras 3.16e y 3.16h, el número de píxeles erróneamente etiquetados como Piel se reduce,
a expensas de dejar de reconocer píxeles que sí son de piel, lo que supone un desplazamiento
hacia la izquierda y hacia abajo del par (SC, NSF ) en sus gráficas ROC.

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

Tasa de falsos positivos NSF

Figura 3.17: Curva ROC formada por las tres configuraciones del ejemplo de la Figura 3.16

Con lo anterior, un modelo de piel ya no forma un único clasificador sino un conjunto


de clasificadores que, en función de los valores de los parámetros b de las rectas, pueden ir
modificando el resultado del reconocimiento del color de la piel de acuerdo con el compor-
tamiento de la gráfica ROC que, como muestra la Figura 3.17, es ahora una curva formada
por los pares (SC, NSF ) de cada uno de los clasificadores. Como se ha visto, la mejoría de los
aciertos positivos implica, necesariamente, el empeoramiento de los falsos positivos y vice-
versa, pero, gracias a la capacidad de ajuste a través del ensanchamiento o estrechamiento del
cluster de piel, es posible adaptar el comportamiento del clasificador. Los modelos explícitos
de la piel descritos en la bibliografía no permiten esta adaptación —son estáticos— u ofrecen
un rango mínimo. Frente a ellos, la solución propuesta en esta tesis es dinámica y permite
mejorar el reconocimiento ajustando la clasificación a cambios en las condiciones ambientales
o a diferentes tonalidades de piel.
La posibilidad de desplazar de manera independiente cada una de las restricciones sobre
el histograma 2D confiere una gran libertad a la hora de ensanchar o estrechar el cluster que
se considera piel, produciéndose efectos muy diferentes según la restricción modificada. Para
analizar el impacto de la modificación de cada restricción se han empleado las curvas ROC. El

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

Gráficas de 333x333 pixeles en matlab

Curva ROC restricción 1 Curva ROC restricción 2


1 1

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

Curva ROC restricción 3 Curva ROC restricción 4


1 1

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

Curva ROC restricción 5 Curva ROC restricción 6


1 1

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

120 120 0,6


r1 r1
80 b =b -15 80 b =b -15 0,4
1 1

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

120 r1 120 r1 0,6


b2=b -5 b2=b -5
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

160 160 0,8


Cb3
r1 r1
120 b3=b +10 120 b3=b +10 0,6

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

160 r 160 r 0,8


1 1
b4=b +20 b4=b +20
120 120 0,6

80 80 0,4

Cb4
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
r1 r1
b5=b +50 b5=b +50 0,8
160 160

120 120 0,6

80 80 0,4

40 40 0,2
Cb5
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

Figura 3.19: Análisis del comportamiento independiente de las restricciones propuestas en el


plano {Rn Gn }: restricción r1

69
3.3. Propuesta de modelo del color de la piel

200 200 1
Cb1
160 160 0,8

120 b1=b -20 120 b1=b -20 0,6


r2 r2

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

120 120 0,6


b2=b +5 b2=b +5
80 r2 80 r2 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

160 160 0,8

120 120 0,6


Cb3
b3=b +20 b3=b +20
80 r2 80 r2 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

160 160 0,8

120 120 0,6

80 b4=b +30 80 b4=b +30 0,4


r2 r2
40 40 0,2
Cb4
0 0 0
SC
Rn

0
Rn

40 60 80 100 120 40 60 80 100 120 0,2 0,4 0,6 0,8 1


Gn Gn NSF

200 200 1

160 160 0,8

120 120 0,6

80 80 0,4
b5=b +45 b5=b +45
r2 r2
40 40 0,2
Cb5
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

Figura 3.20: Análisis del comportamiento independiente de las restricciones propuestas en el


plano {Rn Gn }: restricción r2

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

3.3.3. Estudio de espacios de color y propuesta de modelos


De manera intrínseca a la descripción de los colores por un espacio de color, el cluster que
forman los asociados a la piel en cada uno de ellos es diferente. Uno de los focos de atención en
este campo es determinar si existe un espacio de color especialmente indicado para la tarea de
reconocimiento de la piel. En la revisión bibliográfica realizada en el apartado 3.2 se incluyen
soluciones propuestas en diferentes espacios de color. Siguiendo el procedimiento descrito en
el apartado 3.3.2, se ha estudiado el diseño de clasificadores en RGB, RGB normalizado,
HSV, YCb Cr , YIQ, YUV y TSL. Este tipo de solución para el modelado tiene sentido si los
valores de las componentes asociadas al color de la piel se concentran en un área relativamente
reducida del histograma 2D, especialmente en comparación con el histograma completo. Es
deseable, además, que formen una región compacta. Ambos factores determinan en primera
instancia la idoneidad de un espacio de color para construir un modelo explícito.
De los espacios de color estudiados, tras un primer análisis, se han descartado RGB y HSV.
La Figura 3.21 muestra los tres planos de los histogramas de piel y completos en RGB. Se
observa que los clusters de piel abarcan gran parte de cada uno de los planos y también que se
extienden por gran parte de las áreas que forman los histogramas completos. Esto es debido a

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

200 200 2000

150 150 1500


R

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

150 1500 150

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

200 200 200

150 150 150

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

200 200 200

150 150 150


H
H

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

3.3.3.1. Modelo de piel propuesto en el espacio de color RGB normalizado

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.

Histograma completo Histograma piel

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

Modelo del color de piel RGB normalizado

Ecuaciones

Histograma piel Rn Gn Histograma piel Rn Bn Histograma piel Gn Bn

r1 : Rn ≥ −1,125Gn + 176 r1 : Rn ≥ −1,026Bn + 169 r1 : Gn ≥ 0,39Bn + 36


r2 : Rn ≤ −1,18Gn + 225 r2 : Rn ≤ −1,026Bn + 193 r2 : Gn ≥ −0,65Bn + 107
r3 : Rn ≥ 87 r3 : Bn ≤ 88 r3 : Gn ≤ −0,82Bn + 154
r4 : Rn ≤ 130 r4 : Gn ≥ 67 r4 : Bn ≥ 49
r5 : Gn ≤ 88

Rango de valores del parámetro b

Plano Rn Gn Plano Rn Bn Plano Gn Bn


r1 r2 r3 r4 r5 r1 r2 r3 r4 r1 r2 r3 r4
nivel 1 0 0 0 0 0 0 0 0 0 0 0 0 0
nivel 2 6 0 4 0 1 0 0 0 0 0 0 4 0
nivel 3 6 0 6 0 2 2 0 6 0 0 0 4 0
nivel 4 6 0 8 0 2 2 0 6 0 0 0 4 0
nivel 5 6 0 9 0 2 2 0 6 0 0 0 8 0
nivel 6 9 0 10 0 2 2 0 8 0 0 0 9 0
nivel 7 9 0 11 0 2 2 0 8 0 0 0 10 0
nivel 8 9 0 12 0 2 2 0 8 0 0 0 11 0
nivel 9 12 0 13 0 2 2 0 11 0 0 0 11 0

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

Modelo del color de piel RGB normalizado

Resultados con base datos entrenamiento

SC NSF curva ROC


nivel 1 99,18 19,24 1

nivel 2 95,68 11,34


0,9
nivel 3 90,42 9,47
nivel 4 85,69 8,35 0,8

nivel 5 80,80 7,63


0,7
nivel 6 75,67 7,08
nivel 7 71,07 6,65 0,6

nivel 8 65,89 6,23


0,5
nivel 9 61,24 5,96
0,4

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

Resultados con base datos test

SC NSF curva ROC


nivel 1 93,90 14,45 1

nivel 2 86,85 8,04


0,9
nivel 3 80,81 6,25
nivel 4 75,96 5,69 0,8

nivel 5 72,07 5,23


0,7
nivel 6 67,86 4,88
nivel 7 64,09 4,59 0,6

nivel 8 59,93 4,29


0,5
nivel 9 57,72 4,14
0,4
SC

niveles 1-9 89,11 7,08 NSF


0 0,1 0,2 0,3 0,4 0,5 0,6

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

3.3.3.2. Modelo de piel propuesto en el espacio de color YCb Cr

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.

Histograma completo Histograma piel

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

Modelo del color de piel YCb Cr

Ecuaciones

Histograma piel YCb Histograma piel YCr Histograma piel Cb Cr

r1 : Y ≥ −3,14 Cb + 435 r1 : Y ≤ 3,36 Cr − 247 r1 : Cb ≤ −1,06 Cr + 290


r2 : Y ≤ 2,52 Cb − 70 r2 : Y ≤ −5,13 Cr + 978 r2 : Cb ≥ −1,15 Cr + 269
r3 : Y ≤ −2,86 Cb + 567 r3 : Y ≤ −0,67 Cr + 316 r3 : Cb ≤ 1,65 Cr − 80
r4 : Y ≥ 7 Cb − 826 r4 : Y ≥ 2,34 Cr − 275 r4 : Cb ≤ 136
r5 : Y ≥ 6,69 Cb − 786 r5 : Y ≥ 54 r5 : Cr ≤ 162
r6 : Y ≤ 217 r6 : Cr ≥ 126
r7 : Cb ≥ 97

Rango de valores del parámetro b

Plano YCb Plano YCr Plano Cb Cr


r1 r2 r3 r4 r5 r6 r7 r1 r2 r3 r4 r5 r6 r1 r2 r3 r4 r5
nivel 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nivel 2 0 0 0 32 0 0 0 11 0 0 0 9 0 0 3 0 0 0
nivel 3 0 0 17 32 0 13 0 35 0 0 0 15 0 0 3 0 0 0
nivel 4 0 0 17 32 0 13 0 43 0 0 0 25 0 0 3 0 0 0
nivel 5 0 0 34 52 0 26 0 43 0 0 0 25 0 0 3 0 8 0
nivel 6 0 0 34 52 68 26 0 43 0 0 0 25 0 0 3 0 12 0
nivel 7 0 0 34 73 68 26 0 43 0 0 0 38 0 0 3 0 12 0
nivel 8 0 0 34 91 68 26 0 43 0 0 0 38 0 0 3 0 12 0
nivel 9 0 0 34 91 68 26 0 43 0 0 0 38 0 0 3 0 16 0

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

Modelo del color de piel YCb Cr

Resultados con base datos entrenamiento

SC NSF curva ROC


nivel 1 99,07 23,44 1

nivel 2 95,22 15,17


0,9
nivel 3 90,27 11,52
nivel 4 85,26 9,34 0,8

nivel 5 81,07 7,83


0,7
nivel 6 75,55 5,41
nivel 7 70,49 4,5 0,6

nivel 8 66,95 3,71


0,5
nivel 9 60,60 2,71
0,4

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

Resultados con base datos test

SC NSF curva ROC


nivel 1 92,55 19,79 1

nivel 2 88,11 12,08


0,9
nivel 3 82,02 9,50
nivel 4 76,20 7,84 0,8

nivel 5 74,10 6,24


0,7
nivel 6 69,07 3,96
nivel 7 63,22 3,51 0,6

nivel 8 60,04 3,03


0,5
nivel 9 54,97 2,41
0,4
SC

niveles 1-9 80,43 5,40 NSF


0 0,1 0,2 0,3 0,4 0,5 0,6

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

3.3.3.3. Modelo de piel propuesto en el espacio de color YUV

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.

Histograma completo Histograma piel

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

Modelo del color de piel YUV

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

Rango de valores del parámetro b

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

Modelo del color de piel YUV

Resultados con base datos entrenamiento

SC NSF curva ROC


nivel 1 99,05 14,25 1

nivel 2 95,19 7,72


0,9
nivel 3 90,18 6,08
nivel 4 85,21 5,07 0,8

nivel 5 80,32 4,54


0,7
nivel 6 75,74 4,08
nivel 7 70,29 3,50 0,6

nivel 8 65,75 3,19


0,5
nivel 9 60,96 2,67
0,4

niveles 1-9 92,20 4,94 SC


0 0,1 0,2 0,3 0,4 0,5 0,6
NSF

AUC
Aw1 90,67
AF 95,19

Resultados con base datos test

SC NSF curva ROC


nivel 1 92,80 10,45 1

nivel 2 84,36 5,50


0,9
nivel 3 78,35 4,53
nivel 4 73,26 3,88 0,8

nivel 5 69,73 3,50


0,7
nivel 6 66,60 3,17
nivel 7 61,39 2,66 0,6

nivel 8 57,96 2,51


0,5
nivel 9 55,07 2,16
0,4
SC

niveles 1-9 86,40 4,70 NSF


0 0,1 0,2 0,3 0,4 0,5 0,6

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

3.3.3.4. Modelo de piel propuesto en el espacio de color YIQ

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.

Histograma completo Histograma piel

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

Modelo del color de piel YIQ

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

Rango de valores del parámetro b

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

Modelo del color de piel YIQ

Resultados con base datos entrenamiento

SC NSF curva ROC


nivel 1 99,03 12,49 1

nivel 2 95,11 7,89


0,9
nivel 3 90,30 6,02
nivel 4 85,10 5,17 0,8

nivel 5 80,73 4,59


0,7
nivel 6 75,06 4,04
nivel 7 70,34 3,67 0,6

nivel 8 65,94 3,39


0,5
nivel 9 60,43 3,05
0,4

niveles 1-9 92,68 5,47 SC


0 0,1 0,2 0,3 0,4 0,5 0,6
NSF

AUC
Aw1 90,52
AF 94,98

Resultados con base datos test

SC NSF curva ROC


nivel 1 92,27 8,88 1

nivel 2 85,31 5,40


0,9
nivel 3 78,72 4,25
nivel 4 73,85 3,64 0,8

nivel 5 70,50 3,24


0,7
nivel 6 65,40 2,82
nivel 7 61,94 2,50 0,6

nivel 8 58,39 2,28


0,5
nivel 9 53,46 1,97
0,4
SC

niveles 1-9 87,91 5,12 NSF


0 0,1 0,2 0,3 0,4 0,5 0,6

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

3.3.3.5. Modelo de piel propuesto en el espacio de color TSL

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.

Histograma completo Histograma piel

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

Modelo del color de piel en TSL

Ecuaciones

Histograma piel TS Histograma piel TL Histograma piel SL

r1 : T ≤ 6,5S + 148 r1 : T ≤ 0,65L + 134 r1 : S ≤ 0,0175L + 5,7


r2 : T ≤ −5,44S + 192 r2 : T ≥ −0,86L + 185 r2 : S ≤ 0,08L + 0,6
r3 : S ≤9 r3 : T ≥ −0,09L + 131 r3 : L ≥ 44
r4 : T ≤ 173 r4 : T ≥ 0,41L + 26 r4 : L ≤ 236
r5 : T ≤ 0,3L + 129

Rango de valores del parámetro b

Plano TS Plano TL Plano SL


r1 r2 r3 r4 r5 r1 r2 r3 r4 r1 r2 r3 r4
nivel 1 0 0 0 0 0 0 0 0 0 0 0 0 0
nivel 2 0 0 1 0 0 0 1 0 0 0 0 10 0
nivel 3 0 0 3 0 0 6 4 0 0 0 2 30 0
nivel 4 0 0 3 7 0 6 4 0 7 4 4 30 0
nivel 5 0 0 3 12 0 19 4 0 12 4 4 39 0
nivel 6 0 12 3 12 0 28 7 0 12 4 4 39 0
nivel 7 0 12 3 12 0 35 7 0 12 4 6 49 0
nivel 8 0 12 3 12 0 42 7 0 12 4 6 58 0
nivel 9 0 12 3 12 0 48 7 0 12 4 7 58 0

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

Modelo del color de piel TSL

Resultados con base datos entrenamiento

SC NSF curva ROC


nivel 1 99,08 42,08 1

nivel 2 95,01 8,09 0,9


nivel 3 90,04 5,25
nivel 4 85,01 3,87 0,8

nivel 5 80,03 3,10


0,7
nivel 6 75,37 2,39
nivel 7 70,47 1,79 0,6

nivel 8 65,27 1,40


0,5
nivel 9 60,28 1,16
0,4

niveles 1-9 88,18 2,62 SC


0 0,1 0,2 0,3 0,4 0,5 0,6
NSF

AUC
Aw1 89,30
AF 95,27

Resultados con base datos test

SC NSF curva ROC


nivel 1 90,31 46,27 1

nivel 2 85,43 5,20


0,9
nivel 3 78,38 3,60
nivel 4 72,73 2,91 0,8

nivel 5 68,19 2,55


0,7
nivel 6 61,81 1,94
nivel 7 56,49 1,62 0,6

nivel 8 50,91 1,37


0,5
nivel 9 46,15 1,18
0,4
SC

niveles 1-9 82,33 3,22 NSF


0 0,1 0,2 0,3 0,4 0,5 0,6

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

3.3.3.6. Combinaciones lógicas de clasificadores

El resultado de cada uno de los clasificadores presentados en el apartado anterior es una


imagen binaria donde un píxel con valor 1 corresponde a un píxel de la imagen de entrada
cuyo color ha sido clasificado como Piel, y un píxel con valor 0 corresponde a un píxel de la
imagen de entrada cuyo color ha sido clasificado como No-Piel. Con el propósito de analizar
la complementariedad de estos clasificadores definidos en diferentes espacios de color, se han
evaluado las funciones lógicas AND y OR de sus imágenes resultantes. La combinación lógica AND
de dos clasificadores da como resultado una imagen binaria en la que sólo toman valor 1 —son
etiquetados como Piel— aquellos píxeles cuyos colores han sido considerados Piel en ambos
clasificadores; la combinación lógica OR da como resultado una imagen binaria en la que toman
valor 1 aquellos píxeles que han sido considerados Piel en cualquier de los dos clasificadores.
La combinación lógica AND da lugar por tanto a un nuevo clasificador más exigente, en el que,
por tener que cumplirse las restricciones de los dos clasificadores implicados, la tasa de aciertos
positivos es peor —más baja— que en éstos de manera individual y la de falsos positivos es
mejor —más baja—. Por su parte, la combinación lógica OR se traduce en un clasificador
menos exigente en el que la tasa de aciertos positivos es mejor que la de los clasificadores
individuales y la tasa de falsos positivos es peor. La Figura 3.28 muestra visualmente el
impacto de ambas combinaciones lógicas. En el contexto de la aplicación, la evaluación de
otras funciones lógicas como NAND o XOR carece de sentido.

Salida clasificador 1 Salida clasificador 2 Función lógica AND

a) Combinación lógica AND de las imágenes de salida de dos clasificadores

Salida clasificador 1 Salida clasificador 2 Función lógica OR

b) Combinación lógica OR de las imágenes de salida de dos clasificadores

Figura 3.28: Ejemplo del resultado de las combinaciones lógicas AND y OR de dos clasificadores

La consideración de estas combinaciones aumenta exponencialmente el espacio de clasifi-


cadores objeto de nuestro estudio. Habiéndose definido modelos en 5 espacios de color, que
se traducen en 9 clasificadores —niveles— cada uno, más las C5,2 combinaciones AND de cada
una de las 9 configuraciones de cada uno de ellos, más otras tantas combinaciones OR: 1665

89
3.3. Propuesta de modelo del color de la piel

configuraciones diferentes. En el apartado siguiente se presenta la configuración que se pro-


pone como algoritmo de reconocimiento del color de la piel y se describe el procedimiento
seguido para determinarla.

3.3.4. Algoritmo propuesto para el reconocimiento del color de la piel


En esta tesis se propone un algoritmo para el reconocimiento de la piel que evalúa un conjunto
de clasificadores basados en modelos explícitos del color de la piel definidos en diferentes es-
pacios de color. Este conjunto de clasificadores ha sido seleccionado entre todos los analizados
en el espacio de configuraciones descrito, persiguiendo proporcionar la mayor flexibilidad a
la tarea de reconocimiento y con ello responder de manera adecuada a diferentes condiciones
ambientales o a variaciones de color dentro de las tonalidades de piel contempladas.
Para determinar la configuración finalmente propuesta, se ha mantenido la idea de los nive-
les de la tasa SC de la Tabla 3.2. Para cada nivel, se han evaluado todas las configuraciones
posibles y, entre ellas, se han preseleccionado aquéllas que producen imágenes segmentadas
suficientemente parecidas, de acuerdo con un umbral establecido con este propósito, a la
clasificada manualmente. El grado de similitud ha sido evaluado por medio de la correlación
bidimensional.
La información obtenida se puede representar visualmente por medio de mapas como los
de la Figura 3.29. En el mapa de correspondencias de la Figura 3.29a, en el que el eje x
representa el espacio de clasificadores considerado y el eje y el conjunto de imágenes de la
base de datos de entrenamiento, cada celda indica si el clasificador se encuentra entre los
que satisfacen el mencionado umbral —sombreada en negro en tal caso; en blanco en caso
contrario— para cada imagen. Por su parte, el mapa de calor de la Figura 3.29b refleja el
número de veces que cada combinación de dos clasificadores ha sido seleccionada.
El resultado de este procedimiento es una lista de clasificadores que generan los mejores
resultados en cada nivel. Al mismo tiempo, se ha analizado la complementariedad de los
preseleccionados, persiguiendo formar un conjunto de clasificadores que produzcan los mejores
resultados no sólo sobre la mayor cantidad de imágenes, sino también sobre la mayor cantidad
de imágenes de características diferentes. Se ha tratado con esto de evitar que el algoritmo esté
formado exclusivamente por clasificadores que produzcan resultados muy buenos en imágenes
con determinadas características (tonalidad, iluminación, etc.), y que por ello puedan copar
la lista de los más preseleccionados en el conjunto de las imágenes, pero que no sean capaces
de reconocer el color de la piel en otras imágenes.
Como conclusión de este estudio, se propone un algoritmo formado por los 16 clasifi-
cadores listados en la Tabla 3.13. Su configuración queda determinada en las Tablas 3.3, 3.5,
3.7, y 3.9. La lista está ordenada de acuerdo con la tasa de aciertos positivos en el conjunto de
imágenes de entrenamiento. El número de clasificadores que forman el algoritmo, 16, está aco-
tado por la pretensión, recogida entre los objetivos de esta tesis descritos en el apartado 1.4,
de funcionamiento en tiempo real. En particular, por la referencia límite de 50 milisegundos
que pueden transcurrir entre dos acciones para que una persona considere la segunda como
consecuencia natural de la primera. En el capítulo 5, dedicado a la implementación del sis-
tema, se detallan las características del sistema y las prestaciones temporales que conducen
a la elección de este número de clasificadores para constituir el algoritmo.

90
3.3. Propuesta de modelo del color de la piel

Imágenes

Espacio de clasificadores

(a) Ejemplo de mapa de correspondencia entre imágenes de la base de


entrenamiento y 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

(b) Ejemplo de mapa de calor de la relevancia de un clasificador

Figura 3.29: Herramientas gráficas de representación de la relevancia de los clasificadores en


el diseño del algoritmo de reconocimiento del color de la piel

91
3.3. Propuesta de modelo del color de la piel

Algoritmo propuesto

Clasificador Modelo Nivel comb. Lógica Modelo Nivel

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

Entrenamiento Test ECU

SC NSF SC NSF SC NSF


c1 99,59 14,39 97,44 9,92 94,39 29,94
c2 98,48 10,24 95,21 6,13 87,51 13,97
c3 96,15 5,81 91,50 3,33 83,06 10,70
c4 94,97 5,28 89,32 2,88 81,63 9,48
c5 92,62 4,47 87,04 2,51 79,05 7,72
c6 89,56 4,45 83,05 2,71 89,82 12,88
c7 86,58 3,94 80,50 2,15 80,59 7,69
c8 84,82 2,91 77,97 1,73 78,18 6,06
c9 81,70 2,82 74,19 1,86 77,96 6,39
c10 78,47 2,40 71,41 1,61 75,02 5,18
c11 75,19 3,01 69,58 1,98 85,49 9,42
c12 71,21 2,27 66,20 1,33 73,84 4,81
c13 66,69 2,07 62,91 1,30 68,76 4,34
c14 61,07 1,94 57,32 0,99 72,55 4,12
c15 52,42 1,73 51,30 1,02 63,92 3,46
c16 47,78 0.99 45,21 0,68 59,66 2,24

c1−16 92,82 2,66 91,75 2,43 88,14 5,26

AUC AUC AUC


Aw1 94,16 92,13 79,82
AF 97,34 95,87 89,60

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

Curva ROC – clasificadores Curva ROC – algoritmo


1 1 c1
c1-2
0,9
c1-3

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

(a) Base de datos de entrenamiento

Curva ROC – clasificadores Curva ROC – algoritmo


1 1

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

(b) Base de datos de test

Curva ROC – clasificadores Curva ROC – algoritmo


1 1

0,9

0,8 0,95 c1

0,7

0,6 0,9 c1-2

0,5 c1-16 c1-3

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

(c) Base de datos ECU

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

Base de datos entrenamiento Base de datos test


1 1

0,95 Modelo nRGB


0,95
Algoritmo
Modelo YIQ Algoritmo
Modelo YUV
0,9 0,9 Modelo nRGB
Modelo TSL
Modelo YCbCr Modelo YIQ

Modelo YUV
0,85 0,85
Modelo TSL

0,8 0,8 Modelo YCbCr


SC

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

0,7 [Jones y Rehg]

SC
[Peer et al.]
0,6
[Gómez y Morales]
0,5
[Chai y Ngan]

0,4 [García y Tziritas]


0 0,1 0,2 0,3 0,4
NSF [Sobottka y Pitas]
a) Base de datos de entrenamiento [Soriano et al.]

[Wang y Yuan]
Curva ROC
1 [Zhu et al.]

0,9 [Pramaratne et al.]

0,8

0,7
SC

0,6

0,5

0,4
0 0,1 0,2 0,3 0,4
NSF

b) Base de datos de test

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

c) Base de datos ECU

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

Reconocimiento del gesto de la mano

Se describen en este capítulo el conjunto de tareas que componen la propuesta de algoritmo


de reconocimiento de gestos de la mano. Se parte para ello de la imagen segmentada generada
por el algoritmo de reconocimiento del color de la piel descrito en el apartado 3.3, de la que se
va a extraer información que conduzca a la identificación de los objetos de interés presentes
en la imagen. Si bien en el contexto global de la propuesta de reconocimiento de gestos de
la mano basada en visión por computador de esta tesis se entiende por objeto, tal y como
se ha definido en el apartado 1.3, la mano en un determinado estado gestual, en el contexto
particular de este capítulo se profundiza en el detalle de la información en la imagen y con
objeto se hace referencia a los dedos y a la palma de la mano. Hay, por tanto, dos tipos de
objetos: objetos dedo y objetos palma.
El procedimiento de detección de los objetos que conforman un determinado gesto está
basado en la convolución bidimensional de la imagen segmentada con diferentes plantillas PA ,
PB , ... PN , que representan la silueta de los posibles objetos que, si está presente el gesto,
deberían aparecer en ella. Los resultados de estas operaciones de convolución, las imágenes
IPA , IPB , ... IPN , contienen información sobre el grado de similitud de la imagen con las
siluetas de las plantillas, indicando los valores máximos de las imágenes resultantes donde
la similitud es mayor y los mínimos donde la similitud es menor. El estudio de los valores
máximos conduce, mediante el proceso iterativo representado en el esquema de Figura 4.1
—adaptado del de la Figura 2.8 del apartado 2.1.1.3 para resumir las principales tareas
implicadas— a la estimación de unos objetos d̂i y a la determinación de un conjunto de i
vectores de j características cij cuyos valores, considerados tanto de manera individual como
integral, estiman qué gesto Ĝ, si lo hay, está presente en una imagen. Este proceso iterativo de
construcción de los modelos está supervisado por el gesto G y los dedos di que efectivamente
hay en la imagen segmentada, y abarca todos las tareas implicadas: desde la determinación
del número de plantillas, de los valores de los elementos de cada una de ellas —esto es, de las
siluetas de los objetos—, el proceso de búsqueda de los máximos de las convoluciones y la de
determinación de sus valores umbrales que resulta en la estimación de unos puntos de interés
de la imagen, hasta la especificación de las características extraídas de los dedos estimados
en la imagen y la determinación de restricciones y el cálculo de una puntuación de similitud
con un gesto.

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

Figura 4.1: Proceso de generación de los modelos de los gestos propuesto

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.

4.1. Biblioteca de gestos


La biblioteca de gestos está formada por el conjunto de gestos que se pretende reconocer,
todos ellos posturas relativamente naturales de la mano y fáciles de reproducir. La Figura 4.2
muestra imágenes de ejemplo de cada uno de ellos.
Para el diseño del algoritmo de reconocimiento se ha recopilado una base de datos de
imágenes de entrenamiento. Está formada por 100 imágenes de cada gesto, realizados con la
mano derecha y vista palmar, con variaciones fundamentalmente en la inclinación lateral de
los dedos y la separación entre ellos, en la rotación de la muñeca —manteniéndose relativa-
mente frontal a la cámara— y en la distancia a la cámara. Esto último, junto con el propio
tamaño de la mano, determinan el tamaño de la mano en la imagen. La Figura 4.3 muestra el
rango de tamaños de la mano en las imágenes de entrenamiento, como porcentaje del tamaño
de la imagen. Obviamente, hay más margen para resaltar diferencias entre imágenes en los
gestos que implican a más dedos; las imágenes de los gestos que implican a menos dedos son,
inevitablemente, más parecidas entre sí. Como consecuencia del tamaño de las plantillas que

99
4.1. Biblioteca de gestos

Gesto 1 Gesto 2 Gesto 3

Gesto 4 Gesto 5 Gesto 6

Gesto 7 Gesto 8 Gesto 9

Gesto L Gesto i Gesto j

Gesto u Gesto c Gesto p

Figura 4.2: Imágenes de ejemplo de los gestos considerados

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

Como se aprecia claramente en la Figura 4.2 el número de dedos que intervienen en el


gesto no es información suficiente para identificarlo, si no que también es necesario saber qué
dedos son. Por ello, en el desarrollo del proceso que se describe en los siguientes apartados se
ha asignado a los dedos de la mano las etiquetas que se muestran en la Figura 4.4.

d2
d3 d1
d4

d5

Figura 4.4: Etiquetas asignadas a los dedos de la mano en el proceso de reconocimiento

4.2. Identificación y localización de objetos


El proceso de identificación de los objetos de interés que aparecen en una imagen está basado
en la convolución bidimensional de la imagen segmentada con diferentes plantillas diseñadas
con tal propósito. Como se mencionó en el apartado 2.1.1.1, la técnica de template matching
es una solución para detectar la presencia y posición de objetos en una imagen, comparando
un patrón o plantilla de tamaño m × n, que es el descriptor del objeto, con un área del mismo
tamaño centrada en cada uno de los píxeles de la imagen. El resultado de la convolución de
la imagen con la plantilla es una imagen del mismo tamaño que la original en la que el valor
de cada píxel es un estimador del grado de similitud entre la plantilla y el área de la imagen
original centrada en ese píxel.
Se ha empleado la solución zero padding para asignar valor 0 a los elementos necesarios
para el cálculo de la convolución que realmente no existen en la imagen. En el apartado 6.1.3,
donde se explica la propuesta para gestionar esta situación en la implementación hardware,

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.

4.2.1. Identificación de posibles objetos tipo dedo


El proceso de determinación de los valores de las plantillas parte de la idea básica de que en la
imagen de la silueta del objeto únicamente aparecen, por su propia definición, el objeto, de un
color uniforme, y el fondo, por lo que la silueta se puede representar empleando únicamente
dos valores: unos y ceros, respectivamente. Atendiendo a esto, la Figura 4.5 muestra una
plantilla de tamaño 26 × 7, denominada A1 , para la silueta de un dedo en posición vertical,
una imagen de entrada y la imagen resultante de la convolución bidimensional de la imagen
de entrada con dicha plantilla. Esta última se muestra con dos escalas de colores diferentes
para los valores de los píxeles: la de la izquierda con una escala ajustada al rango de los
valores de la imagen; la de la derecha con una escala común a las imágenes de este tipo que se
muestran a lo largo de este apartado, y cuyo propósito es facilitar la visualización del impacto
del tamaño y de los valores de la plantilla en el resultado de la convolución, manteniendo
la coherencia de los valores entre las imágenes de las diferentes figuras. Entre la imagen de
entrada y la primera de las imágenes resultantes de la convolución se ha incluido la plantilla,
representada con la misma escala que ellas.
175 127
100
1 2 3 4 5 6 7 150
75
26

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

Plantilla A1 Imagen Imagen convolución Imagen convolución

Figura 4.5: Identificación de los objetos dedo mediante convolución: plantilla A1 , imagen de
entrada e imagen resultante de la convolución

De la información que proporciona la Figura 4.5, la principal conclusión que se puede


extraer es que la convolución de la plantilla A1 con la imagen de entrada no es útil para
identificar y localizar los dedos de la mano: si bien sí puede ayudar a distinguir los dedos d1
y d2 de los restantes, no sirve en ningún caso para distinguir dichos dedos de la palma de la
mano. De hecho, es en la palma de la mano dónde se encuentran los píxeles de mayor valor
de la imagen resultado de la convolución.
La Figura 4.6 muestra la plantilla A2 y el resultado de la convolución con la misma
imagen de entrada. La plantilla A2 es una ampliación a tamaño 31 × 13 de la plantilla A1
en la que se ha incluido más fondo, es decir, más píxeles con valor 0, para comprobar si esto

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

Plantilla A2 Imagen Imagen convolución Imagen convolución

Figura 4.6: Identificación de los objetos dedo mediante convolución: plantilla A2 , imagen de
entrada e imagen resultante de la convolución

Por su parte, la Figura 4.7 muestra la plantilla A3 y el resultado de la correspondiente


convolución. En este caso, se mantiene el tamaño 31 × 13 de la plantilla A2 pero se aumenta
el tamaño de la silueta. Como se puede ver en la escala de colores de la imagen resultante de
la convolución, el mayor número de elementos con valor 1 en la plantilla conlleva el aumento
de los valores de la imagen, pero los máximos no se sitúan en los dedos sino en la palma
de la mano. La comparación de las imágenes con escala de colores común de las Figuras 4.6
y 4.7 refleja la mayor dificultad con esta última para identificar los dedos y la imposibilidad
de separarlos de la palma.
240 127
1 2 3 4 5 6 7 8 9 10 11 12 13

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

Plantilla A3 Imagen Imagen convolución Imagen convolución

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

entrada de las figuras anteriores, la imagen resultante de la convolución y, en este caso, la


imagen resultante de la diferencia de esta última convolución con la de la Figura 4.5, la cual
es la correspondiente a los resultados de la convolución con la plantilla A1 .
127 0
100
1 2 3 4 5 6 7
–1
26
75
1
25

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

Plantilla A4 Imagen Imagen convolución diferencia con


Imagen convolución Figura 4.5

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

En las imágenes de la convolución no se aprecia pero la imagen diferencia incluida en la


Figura 4.8 sí refleja, y por ello se incluye, que el resultado obtenido con las plantillas A1 y
A4 , ambas de 26 × 7, es diferente y que las diferencias se concentran principalmente en la
palma de la mano, siendo −6 el valor de la mayor diferencia, que corresponde precisamente
con el número de elementos del fondo en la plantilla que dibuja la silueta del dedo en ambas
plantillas y cuyo valor ha cambiado de 0 en A1 a −1 en A4 .
En la Figura 4.9 se muestra el resultado de extender esta idea de asignar valor −1 a los
elementos del fondo a la plantilla A2 , generando la plantilla A5 , también de tamaño 31 × 13.
De nuevo en este caso, la comparación de la imagen resultante de la convolución con la de la
plantilla A2 en la Figura 4.6, muestra que las mayores diferencias se concentran en la palma
de la mano, siendo el rango de valores de la diferencia entre ambas imágenes mucho mayor,
dado que hay muchos más elementos de fondo que han cambiado de 0 a −1 en esta plantilla.
El resultado de la convolución de la plantilla A5 con la imagen de entrada permite identificar
los dedos d1 y d2 , que quedan claramente diferenciados de la palma de mano en la imagen
de la Figura 4.9.
127 0
1 2 3 4 5 6 7 8 9 10 11 12 13

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

Plantilla A5 Imagen Imagen convolución diferencia con


Imagen convolución Figura 4.7

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

Plantilla A6 Imagen Imagen convolución Imagen convolución con A5

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.

Plantillas para la identificación de los objetos tipo dedo

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

Plantilla PA Plantilla PB Plantilla PC Plantilla PD

Figura 4.11: Plantillas empleadas para la identificación de objetos dedo mediante la convolu-
ción bidimensional con la imagen segmentada

4.2.2. Identificación de posibles objetos tipo palma


La palma de la mano es un objeto fundamental en el proceso de reconocimiento del gesto, el
cual está determinado, entre otros factores, por la posición de los dedos con respecto a ella.
Con el propósito de hacer genérico el proceso de determinación de la existencia en la imagen
de los objetos y su procesamiento posterior, para su identificación se ha mantenido la misma
solución basada en la convolución empleada para los dedos. En este caso, se ha utilizado una
plantilla de tamaño 31 × 31 en la que todos los elementos toman valor 1, es decir, el objeto es
un cuadrado de 31 × 31 píxeles y la plantilla no es realmente una silueta puesto que no hay
en ella valores para el fondo. El motivo para esto es no acotar el tamaño de la palma de la
mano, buscando lograr la menor dependencia posible del tamaño de la mano en la imagen.

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

Plantilla PE Imagen Imagen convolución Imagen convolución

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

La Figura 4.12 muestra tal plantilla, denominada PE , la misma imagen de entrada de


las figuras anteriores del mismo tipo y la imagen resultante de la convolución de ambas, con
dos escalas de colores para los valores de ésta: la primera con todo el rango de valores y la
segunda con mayor resolución para los valores más altos. Como se puede apreciar, con este
plantilla no existe posibilidad de confundir el objeto palma con objetos dedo.

4.2.3. Estimación de puntos de interés


Como se comentó anteriormente, el resultado de la convolución de una imagen con una plan-
tilla es una nueva imagen en la que el valor de cada píxel es un estimador del grado de
similitud entre la plantilla y un área de la imagen sobre la que se realiza la convolución del
tamaño de la plantilla. Por lo tanto, los píxeles con valores más altos en la imagen resultante
de la convolución marcan las posiciones de la imagen donde se podrían encontrar los obje-
tos correspondientes a las siluetas que dibujan las plantillas. El proceso de identificación y
localización de objetos en las imágenes requiere encontrar estos puntos en la imagen y deter-
minar si su valor resultado de la convolución es suficiente como para corresponder a alguno
de los objetos asociados a las plantillas. Este valor suficiente es un umbral propio de cada
plantilla determinado en el proceso de diseño del algoritmo de reconocimiento representado
en la Figura 4.1, y está indicado, junto con los parámetros asociados a las plantillas que se
explican a continuación, en la Tabla 4.1.

Plantilla tamaño m × n umbral área filtrado máximos


ay × ax aα

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◦

Tabla 4.1: Plantillas para la identificación de objetos: identificador, tamaño y parámetros

La Figura 4.13 muestra ampliada la zona de la imagen de la convolución de una imagen


de la mano con la plantilla PA en la que se encuentran los valores más altos del resultado,
indicándose, sobre la posición correspondiente, los que son iguales o superiores a 100. Si bien
hay valores que cumplen esta condición pertenecientes a dos dedos, d1 y d2 , se observa que
los más altos corresponden a un mismo objeto, el dedo d2. Esto se debe a que la silueta
que representa la plantilla se parece más a este objeto, incluso con pequeños cambios en la
posición relativa de la plantilla y el objeto, que al otro.
Para filtrar los valores redundantes —todos aquéllos que corresponden a un mismo objeto—,
detectar todos los posibles objetos para los que la convolución ha alcanzado el valor de umbral,
lograr que un posible objeto quede identificado con un único valor asociado a única posición
y evitar que valores suficientemente altos del resultado de la convolución se interpreten como
indicadores de diferentes objetos, se ha definido un área en torno a los valores más altos, de
tal manera que en cada área sólo se contempla la existencia de uno de ellos, eliminándose
los demás. Con esto, el análisis de los valores resultantes de la convolución proporciona un
conjunto de máximos locales, definidos por el valor resultado de la convolución y por su
posición en la imagen, cada uno de los cuales estaría asociado a un posible objeto. Cada

107
4.2. Identificación y localización de objetos

102

108

113

101 118

102 122

103 126 102 102 100

104 130 109 107 103

105 132 114 112 106

102 130 115 116 108

124 113 118 109

117 108 118 110

110 103 116 109

101 110 102

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.

4.2.4. Estimación de objetos


El conjunto de puntos de interés resultante del proceso descrito en el apartado anterior es una
primera aproximación a la identificación de los dedos y la palma de la mano. No obstante,
éstos no pueden asociarse directamente a objetos en la imagen. El ejemplo de la Figura 4.15

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

es representativo de un problema habitual, según se ha comprobado en el proceso de cons-


trucción del algoritmo: un mismo dedo es reconocido como punto de interés por diferentes
plantillas y sucede que hay objetos dedo duplicados que podrían, sin un procesamiento adi-
cional, dar a entender que hay siete dedos en la imagen de la mano. También es frecuente
que el procesamiento de los datos de las convoluciones conduzca a falsos positivos, esto es,
se detecten puntos de interés que no corresponden a objetos. La Figura 4.16 recoge algunos
ejemplos. En ella, se mantiene la asociación de colores y plantillas indicada en la Figura 4.15.

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

Puntos interés asociados a Plantilla PA

Puntos interés asociados a Plantilla PB

Puntos interés asociados a Plantilla PC

Puntos interés asociados a Plantilla PE

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

El análisis de los valores de distancia y ángulo de cada punto de interés ha conducido a


establecer unos rangos que estos parámetros deben cumplir. Como en el resto de etapas, estos
valores son resultado del proceso iterativo de construcción del modelo, en el que los sucesivos
ajustes de estos y otros valores ha ido convergiendo hacia los recogidos en la Tabla 4.2. Como
puede observarse, depende de la plantilla de la que se derive el punto.
Adicionalmente, de manera análoga a como se analizaron las relaciones entre los valores de
las diferentes componentes de un espacio de color para definir las ecuaciones de los modelos
del color de la piel descrito en el capítulo 3, se han estudiado los relaciones entre los tres
valores asociados a un punto de interés de los que se dispone: el valor v de la convolución
que lo origina, la distancia lp y el ángulo αp . Este estudio ha dado lugar a unas restricciones
adicionales para las plantillas PA y PB : si se cumple alguna de las condiciones de la Tabla 4.3,
el punto es descartado como posible objeto dedo.

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

mínimo máximo mínimo máximo

Plantilla PA 18,0 53,2 14,6 135,9


Plantilla PB 19,8 39,2 106,5 155,1
Plantilla PC 21,2 29,7 −1,2 45,1
Plantilla PD 24,9 34,6 −14,1 11,6

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

v < 70 ∧ lp < 20,2 ∨


v < 65 ∧ αp < 54,9 ∨
v > 128 ∧ αp > 115,4 ∨
αp > 4,1(lp − 10) ∧ αp < −6,3(lp − 33) ∨
αp > 5,9(lp − 12) ∧ αp < −0,8(lp − 135) ∨
lp > 28,3 ∧ αp < 49,1

plantilla PB

v > 95 ∧ lp > 37,6 ∨


v < 59 ∧ αp < 122,3

Tabla 4.3: Restricciones adicionales a las relaciones entre los valores v, lp y αp de


los puntos de interés

punto mi

plantilla PA PB PC PD

PA 14,3◦ 28,1◦ 39,8◦


punto mi+1 PB 19,7◦ 19,9◦
PC 20,2◦
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

4.3. Características para el reconocimiento


La convolución con las plantillas y la búsqueda de los correspondientes máximos locales ha
permitido realizar una primera estimación —los puntos de interés— de la posible presencia y
posición en la imagen de las componentes de la mano, los objetos palma y dedo. Seguidamente,
se han calculado parámetros básicos derivados de las posiciones relativas del objeto palma y
cada uno de los objetos dedo, y en base a ellos se han establecido unas reglas para eliminar
falsos positivos y duplicidades que conducen a un conjunto d̂ de objetos dedo depurado.
El número de dedos que aparecen en el gesto es información necesaria para identificarlo
pero, para los gestos que se pretende reconocer mostrados en la Figura 4.2, no es suficiente, ya
que hay gestos diferentes en los que participan el mismo número de dedos. Para caracterizar
cada dedo en cada gesto, se ha calculado para cada objeto dedo un conjunto de parámetros,
listados en la Tabla 4.5 que, en última instancia, constituyen las características o descriptores
de la imagen para el proceso de reconocimiento. Estos descriptores son de varios tipos:
propios de cada objeto dedo d̂i :
• valor vi : valor del píxel de la imagen resultante de la convolución del que procede
el objeto d̂i .
• tasa si t : porcentaje de píxeles de la silueta de la mano en un área de tamaño
x × y píxeles alrededor de la posición del objeto. El tamaño del área depende de
la plantilla: 7 × 15 para la plantilla PA y 9 × 9 para las restantes. El área está
orientada según el ángulo de la plantilla indicado en la Tabla 4.1.

derivados de la posición relativa del objeto dedo con el objeto palma:


• distancia li p : longitud de la línea que une el objeto d̂i con el objeto palma.
• ángulo αi p : ángulo con respecto a la horizontal de la línea que une el objeto d̂i con
el objeto palma.

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

α3p α2p α1p

a) b)

Figura 4.18: Características descriptivas extraídas de la imagen de la silueta de la mano:


a) propias del objeto dedo y derivadas de su posición relativa con el objeto palma
b) derivadas de la posición relativa entre objetos dedo

Característica Descripción

ci 1 vi Valor de la convolución de la imagen con la plantilla de la que


procede d̂i .
ci 2 si t Porcentaje de píxeles de la silueta de la mano en un área alrededor
de la posición en la imagen de d̂i .
ci 3 li p Distancia a la palma: longitud de la línea que une las posiciones
en la imagen de d̂i y del objeto palma.
ci 4 αi p Ángulo con la palma: ángulo con respecto a la horizontal de la
línea que une las posiciones en la imagen de d̂i y del objeto palma.
ci 5 li d Distancia entre dedos: longitud de la línea que une d̂i con d̂i+1 ,
ordenados los índices i según el ángulo con respecto a la palma
αp .
ci 6 αi d Ángulo entre dedos: ángulo con respecto a la horizontal de la línea
que une d̂i con d̂i+1 , ordenados los índices i según el ángulo con
respecto a la palma αp .
ci 7 si c Porcentaje de píxeles de la silueta de la mano en un área centrada
en el punto medio de la línea que une d̂i con d̂i+1 , orientada según
el ángulo αi d .
ci 8 si 1 Porcentaje de píxeles de la silueta de la mano en un área próxima
al punto inicial de la línea que une d̂i con d̂i+1 , orientada según el
ángulo αi d .
ci 9 si 2 Porcentaje de píxeles de la silueta de la mano en un área próxima
al punto final de la línea que une d̂i con d̂i+1 , orientada según el
ángulo αi d .

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

El propósito de estas características s de porcentajes de píxeles de la silueta de la mano


en un área es considerar en el proceso de reconocimiento información sobre la posición del
objeto dedo en la imagen segmentada, sirviendo como una estimación de la confianza en él.
Las características que hacen referencia a d̂i+1 no son de aplicación para el último d̂i , el que
tiene el ángulo αp de mayor valor.
La Figura 4.18 representa las características extraídas para los tres objetos dedo resultado
de la aplicación de las restricciones indicadas en las Tablas 4.2, 4.3 y 4.4 a los puntos de interés
detectados en la imagen de la silueta de la mano de la Figura 4.17.

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]

Tabla 4.6: Rangos de percentiles considerados en la caracterización de los valores de


los descriptores

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

57,63 57,63 57,63 57,63 57,63 57,63


55
zona 1 zona 2 zona 3 zona 4 zona 5 zona 6

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).

4.4. Modelo de los gestos


El análisis realizado con los anteriores criterios de los datos obtenidos de las imágenes de
entrenamiento ha llevado a la caracterización de los valores de los descriptores de cada dedo
en cada gesto. Con ello, dado un determinado conjunto de valores de los descriptores de los
objetos detectados en la imagen se pueda estimar a qué gesto corresponden, esto es, qué gesto
aparece en la imagen. Para tal decisión se han establecido dos niveles. El primero requiere
que los valores de las características se encuentren dentro del rango de los obtenidos en las

117
4.4. Modelo de los gestos

25

22,1 22,1 22,1 22,1 22,1 22,1

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.

4.4.1. Restricciones y valores por zonas de las características


Las Tablas 4.7 (Gesto 1), 4.8 (Gesto i), 4.9 (Gesto j), 4.10 (Gesto p), 4.11 (Gesto 2),
4.12 (Gesto u), 4.13 (Gesto L), 4.14 (Gesto 3), 4.15 (Gesto c), 4.16 (Gesto 4), 4.17 (Gesto 5),
4.17 (Gesto 6), 4.19 (Gesto 7), 4.20 (Gesto 8) y 4.21 (Gesto 9) recogen los rangos de valores
de las características en cada zona de cada gesto, en función de la plantilla que produce el
objeto dedo que se asocia al dedo indicado en la correspondiente columna de cada tabla.
Los valores de la zona 6 de cada característica, que son los valores máximo y mínimo
obtenidos de las imágenes de entrenamiento, marcan el rango de valores que cada una debe
cumplir para no descartar que se trate del gesto en cuestión. Por ejemplo, la Tabla 4.12
establece que, para que una imagen en la que se han estimado dos objetos dedo pueda asociarse
al Gesto u, debe cumplirse que:

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 .

En el proceso de determinación de la presencia o no del gesto en una imagen, se accede a


esta información utilizando el identificador de la plantilla que origina cada objeto dedo y el
identificador del dedo al que se estima que está asociado, y se evalúa, para cada característica,
si su valor obtenido de la imagen se encuentra en el rango requerido.

118
4.4. Modelo de los gestos

Gesto 1

Plantilla PA

dedo zona c1 c2 c3 c4

1 [105 135] [78 86] [31,2 33,4] [64,2 71,6]


2 [101 142] [76 87] [30,2 34,5] [63,4 72,8]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7]

Tabla 4.7: Gesto 1: rangos de valores de las características

Gesto i

Plantilla PA

dedo zona c1 c2 c3 c4

1 [98 116] [71 79] [22,0 25,3] [115,4 122,3]


2 [95 118] [71 80] [21,3 26,0] [111,8 123,1]
3 [93 122] [70 81] [21,1 26,3] [109,0 123,7]
d4
4 [93 122] [69 81] [21,0 26,6] [103,4 124,2]
5 [72 124] [52 85] [19,4 43,9] [97,9 129,5]
6 [56 125] [36 100] [18,0 49,4] [97,0 135,9]

Tabla 4.8: Gesto i: rangos de valores de las características

Gesto j

Plantilla PB

dedo zona c1 c2 c3 c4

1 [84 111] [59 65] [25,7 28,8] [135,6 150,6]


2 [81 114] [58 67] [25,3 29,6] [134,9 152,2]
3 [73 116] [55 69] [24,0 30,2] [133,2 153,8]
d4
4 [65 119] [50 70] [23,1 31,5] [131,8 154,5]
5 [61 121] [49 73] [22,6 32,8] [127,9 154,9]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.9: Gesto j: rangos de valores de las características

119
4.4. Modelo de los gestos

Gesto p

Plantilla PA

dedo zona c1 c2 c3 c4

1 [84 97] [83 90] [22,0 23,4] [26,4 30,1]


2 [82 101] [81 91] [20,9 24,1] [24,3 33,8]
3 [80 109] [80 94] [19,5 24,8] [19,2 37,1]
d5
4 [79 120] [79 96] [18,8 25,7] [18,3 42,6]
5 [76 122] [78 98] [18,4 26,0] [17,0 45,4]
6 [75 129] [76 100] [18,1 26,6] [14,6 46,7]

Plantilla PC

dedo zona c1 c2 c3 c4

1 [80 99] [55 61] [24,4 26,4] [15,2 31,6]


2 [77 102] [54 62] [24,1 27,0] [10,1 32,8]
3 [73 107] [52 63] [23,7 27,6] [8,9 36,0]
d5
4 [64 109] [47 66] [22,7 28,2] [6,6 41,2]
5 [62 113] [35 75] [22,0 29,3] [3,7 43,8]
6 [58 116] [29 91] [21,2 29,7] [−1,2 45,1]

Plantilla PD

dedo zona c1 c2 c3 c4

1 [113 125] [60 73] [28,9 31,9] [−8,1 −5,4]


2 [108 128] [58 76] [28,3 32,0] [−9,2 −4,3]
3 [106 130] [57 81] [27,5 32,7] [−11,0 −3,6]
d5
4 [103 133] [52 86] [26,2 33,3] [−11,6 −3,3]
5 [99 134] [50 89] [25,9 33,8] [−12,7 2,0]
6 [90 137] [49 95] [25,0 34,6] [−14,1 11,6]

Tabla 4.10: Gesto p: rangos de valores de las características

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]

1 [118 138] [80 86] [31,7 34,1] [82,6 89,7]


2 [109 142] [77 88] [31,0 35,3] [81,4 90,8]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7]

Tabla 4.11: Gesto 2: rangos de valores de las características

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]

1 [92 108] [62 75] [22,2 26,9] [125,2 130,3]


2 [86 114] [56 78] [20,8 27,8] [124,9 131,3]
3 [77 119] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [65 121] [45 85] [19,6 34,6] [118,3 134,4]
5 [60 124] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

Plantilla PB

dedo zona c1 c2 c3 c4

1 [79 110] [59 65] [26,0 29,8] [131,6 138,5]


2 [73 113] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 116] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [66 119] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 121] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.12: Gesto u: rangos de valores de las características

121
4.4. Modelo de los gestos

Gesto L

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]


2 [101 142] [76 87] [30,2 34,5] [63,4 72,8]
3 [94 144] [71 90] [29,5 36,2] [62,6 74,2]
d1
4 [85 150] [63 92] [28,3 39,4] [61,9 76,0]
5 [77 153] [57 95] [26,6 44,8] [61,0 78,7]
6 [59 160] [43 100] [23,9 53,2] [57,6 86,7]

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]

Tabla 4.13: Gesto L: rangos de valores de las características

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 [118 138] [80 86] [31,7 34,1] [82,6 89,7]


2 [109 142] [77 88] [31,0 35,3] [81,4 90,8]
3 [95 146] [75 91] [30,4 36,2] [80,6 91,7]
d2
4 [90 149] [70 93] [29,2 37,3] [79,1 94,7]
5 [84 152] [63 96] [28,0 40,6] [77,9 100,5]
6 [66 159] [46 100] [26,3 45,3] [75,6 104,7]

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]

Tabla 4.14: Gesto 3: rangos de valores de las características

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 [92 108] [62 75] [22,2 26,9] [125,2 130,3]


2 [86 114] [56 78] [20,8 27,8] [124,9 131,3]
3 [77 119] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [65 121] [45 85] [19,6 34,6] [118,3 134,4]
5 [60 124] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

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

1 [79 110] [59 65] [26,0 29,8] [131,6 138,5]


2 [73 113] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 116] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [66 119] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 121] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

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]

Tabla 4.15: Gesto c: rangos de valores de las características

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]

1 [68 90] [62 75] [22,2 26,9] [125,2 130,3]


2 [63 99] [56 78] [20,8 27,8] [124,9 131,3]
3 [61 103] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [60 110] [45 85] [19,6 34,6] [118,3 134,4]
5 [55 116] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

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]

1 [75 107] [59 65] [26,0 29,8] [131,6 138,5]


2 [72 111] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 114] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [61 116] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 119] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.16: Gesto 4: rangos de valores de las características

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 [68 90] [62 75] [22,2 26,9] [125,2 130,3]


2 [63 99] [56 78] [20,8 27,8] [124,9 131,3]
3 [61 103] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [60 110] [45 85] [19,6 34,6] [118,3 134,4]
5 [55 116] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

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]

1 [75 107] [59 65] [26,0 29,8] [131,6 138,5]


2 [72 111] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 114] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [61 116] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 119] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

(continúa en la página siguiente)

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]

Tabla 4.17: Gesto 5: rangos de valores de las características

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]

1 [78 112] [67 79] [30,8 34,1] [102,7 107,1]


2 [73 119] [50 81] [28,6 35,6] [100,4 107,8]
3 [70 131] [44 82] [27,9 36,2] [98,0 108,6]
d3
4 [65 136] [41 86] [25,6 37,1] [97,2 109,3]
5 [60 139] [36 61] [24,4 37,8] [96,5 112,1]
6 [55 144] [29 100] [22,1 38,6] [95,0 114,4]

Plantilla PB

dedo zona c1 c2 c3 c4

1 [75 86] [58 65] [31,8 35,3] [112,8 117,7]


2 [70 90] [56 67] [31,2 36,1] [111,0 118,5]
3 [68 96] [53 72] [30,6 36,5] [110,4 120,7]
d3
4 [62 99] [50 79] [30,0 37,9] [109,2 121,8]
5 [60 102] [48 84] [29,3 38,4] [107,0 122,6]
6 [59 102] [45 87] [27,1 39,2] [106,5 123,8]

Tabla 4.18: Gesto 6: rangos de valores de las características

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]

1 [73 96] [62 75] [22,2 26,9] [125,2 130,3]


2 [67 102] [56 78] [20,8 27,8] [124,9 131,3]
3 [65 111] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [60 117] [45 85] [19,6 34,6] [118,3 134,4]
5 [56 122] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

Plantilla PB

dedo zona c1 c2 c3 c4

1 [82 109] [59 65] [26,0 29,8] [131,6 138,5]


2 [76 112] [58 67] [25,3 30,2] [130,9 139,4]
3 [71 116] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [64 118] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 120] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.19: Gesto 7: rangos de valores de las características

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]

1 [68 90] [62 75] [22,2 26,9] [125,2 130,3]


2 [63 99] [56 78] [20,8 27,8] [124,9 131,3]
3 [61 103] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [60 110] [45 85] [19,6 34,6] [118,3 134,4]
5 [55 116] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

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]

1 [75 107] [59 65] [26,0 29,8] [131,6 138,5]


2 [72 111] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 114] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [61 116] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 119] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.20: Gesto 8: rangos de valores de las características

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]

1 [68 90] [62 75] [22,2 26,9] [125,2 130,3]


2 [63 99] [56 78] [20,8 27,8] [124,9 131,3]
3 [61 103] [48 80] [20,2 30,9] [122,6 132,9]
d4
4 [60 110] [45 85] [19,6 34,6] [118,3 134,4]
5 [55 116] [39 92] [18,7 40,7] [110,6 135,0]
6 [53 125] [36 100] [18,0 49,4] [97,0 135,9]

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]

1 [75 107] [59 65] [26,0 29,8] [131,6 138,5]


2 [72 111] [58 67] [25,3 30,2] [130,9 139,4]
3 [70 114] [55 69] [24,5 31,2] [129,0 140,8]
d4
4 [61 116] [50 70] [23,4 33,6] [128,4 142,4]
5 [59 119] [49 73] [21,4 35,1] [126,9 152,8]
6 [57 122] [48 75] [19,8 35,5] [123,3 155,1]

Tabla 4.21: Gesto 9: rangos de valores de las características

131
4.4. Modelo de los gestos

4.4.2. Cálculo de la puntuación de similitud con un gesto


Una vez determinado si los valores de las características satisfacen los requisitos, el propósito
de asignar a una imagen de la silueta de la mano una puntuación de su similitud con un
gesto es poder decidir a qué gesto corresponde dicha imagen en el caso de que los valores
de sus características cumplan para más de uno las restricciones establecidas indicadas en el
apartado previo. Esta puntuación, única para un par imagen–gesto, se calcula a partir de los
datos de las características de la Tabla 4.5. A cada una de las zonas definidas en la Tabla 4.6
se le ha asignado la puntuación indicada en la Tabla 4.22. En función de la zona en la que
se encuentre el valor, cuanto más exigente sea la condición que debe cumplir, mayor es su
puntuación, de manera que si se encuentra entre el 25 % y el 75 % de los valores —zona 1—
su puntuación es la máxima, y va disminuyendo progresivamente hasta el mínimo para la
zona 6.

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

Utilizando el identificador de la plantilla de convolución y el dedo estimado al que se


considera que corresponde cada objeto dedo como índices para acceder a la información, para
cada característica se evalúa en qué zona de confianza se encuentra y en función de ello se le
asigna una puntuación según lo indicado en la Tabla 4.22. El resultado de este proceso es una
puntuación para cada característica de cada dj . Si, por ejemplo, αp tuviera un valor de 70 en
el objeto dedo estimado como dedo d1 , su puntuación, de acuerdo con los diagramas de caja
de la Figura 4.19, sería 10 —por encontrarse en la zona 1— para cualquier gesto cuyo primer
dedo sea el d1 , es decir, el dedo índice; si su valor fuera de 61 —zona 5—, su puntuación
sería 2; si su valor fuera 55, fuera del rango de valores, su puntuación sería 0. Para el dedo
estimado dˆ1 , y con los datos de la Figura 4.20 un valor de 12 para ld está en la zona 1 de esta
característica para los gestos cuyo segundo dedo sea d2 y por tanto una puntuación 10, pero
el mismo valor está en la zona 6 para los gestos cuyo segundo dedo sea d3 y tiene asociada la
puntuación 1. Tal valor apuntaría, por tanto, a que la imagen corresponde a un gesto en el
que se usan los dedos índice y corazón.

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

Gesto 3 Gesto 6 Gesto 7 Gesto 8 Gesto 9 Gesto c

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

Gesto 3 Gesto 6 Gesto 7 Gesto 8 Gesto 9 Gesto c

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

Gesto 3 Gesto 6 Gesto 7 Gesto 8 Gesto 9 Gesto c

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

Gesto 3 Gesto 6 Gesto 7 Gesto 8 Gesto 9 Gesto c

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

Gesto 3 Gesto 6 Gesto 7 Gesto 8 Gesto 9 Gesto c

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

Figura 4.23: Histograma para representar gráficamente la distribución de las puntuaciones


obtenidas a partir de los valores de las características de un gesto, tanto para
las imágenes del propio gesto como para las de otros diferentes

135
4.4. Modelo de los gestos

Gesto 1 Gesto i Gesto j

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

Gesto 2 Gesto L Gesto u

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

Gesto 3 Gesto 6 Gesto 7

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

Gesto 8 Gesto 9 Gesto c

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

Los histogramas de las puntuaciones dependen de los conjuntos de imágenes empleados


para calcularlos. Para el histograma de las puntuaciones obtenidas por las imágenes corres-
pondientes a un gesto sólo es posible, evidentemente, utilizar dichas imágenes. Sin embargo,
para el histograma de las puntuaciones obtenidas por las imágenes que no corresponden a un
gesto sí es posible decidir de qué gestos son las imágenes que se consideran y cuales no, siendo
relevante esta decisión en los resultados. A modo de ejemplo, las Figuras 4.25a-d comparan
los histogramas de las puntuaciones para las imágenes de Gesto 7 con los de las imágenes de
los restantes gestos de tres dedos (Figuras 4.25c y 4.25d) y con los de las imágenes de gestos
de tres dedos más similares a Gesto 7, es decir, Gesto 6, Gesto 8 y Gesto 9, sin considerar
las imágenes de Gesto 3 y de Gesto c (Figuras 4.25a y 4.25b) los cuales, por utilizar el dedo
pulgar, son más fácilmente distinguibles de Gesto 7. Las Figuras 4.25a y 4.25c muestran
los histogramas de las puntuaciones calculadas con todos los pesos iguales, mientras que las
Figuras 4.25b y 4.25d muestran los resultantes de la aplicación de los pesos indicados en la
Tabla 4.23 para Gesto 7.

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.

Se deduce de lo anterior que el hecho de considerar en el análisis de los histogramas


imágenes que no son similares —o que son significativamente menos similares que otras—
al gesto que se está estudiando puede sobreestimar la capacidad de un conjunto de pesos
para diferenciar un gesto de aquéllos que son más similares. Por ello, para la determinación
de los valores de pesos para los parámetros de cada gesto se ha analizado el impacto en los
resultados de las puntuaciones de los diferentes gestos y, en consecuencia:

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

4.5. Resultados y análisis


Los resultados obtenidos al aplicar el algoritmo de reconocimiento a las imágenes de entre-
namiento se recogen en la Figura 4.27. Se presentan en forma de matriz de confusión, en la
que la columna indica el gesto G presente en la imagen y la fila el gesto estimado Ĝ por el
algoritmo de reconocimiento. En cada posición [Ĝ G] se indica, si es distinta de 0, la tasa de
ocurrencias de tal combinación, normalizada sobre el total de imagénes en las que aparece el
gesto G. La respuesta ideal únicamente tendría valores 1 en la diagonal, donde Ĝ = G, y 0
en todas las demás posiciones.
Gesto realizado
1 2 3 4 5 6 7 8 9 L i j u c p
1
1 1

2 1 0,9

3 0,97
0,8
4 0,98 0,02

5 0,98 0,7

6 0,03 0,01 1 0,07 0,04 0,06


0,6
Gesto estimado

7 0,01 0,93 0,05 0,03

8 0,91 0,04 0,5

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

Gesto 5 Gesto 5 Gesto L Gesto 5 Gesto 8


Reconocido Gesto p Reconocido Gesto u Reconocido Gesto 1 No reconocido Reconocido Gesto u

imagen 1 imagen 2 imagen 3 imagen 4 imagen 5

Gesto 2 Gesto 3 Gesto c Gesto 7 Gesto 9


Reconocido Gesto u Reconocido Gesto 6 Reconocido Gesto L Reconocido Gesto 6 Reconocido Gesto 6

imagen 6 imagen 7 imagen 8 imagen 9 imagen 10

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

Para la validación de estos resultados se contempló inicialmente el empleo de bases de


datos de imágenes de gestos. En particular, se analizaron los dataset ICVL Hand Posture,
Multi-Modal Hand Gesture, Hand Posture and Gesture Databases, HaGRID y el de la Uni-
versidad de Massey. La conclusión con todos ellos fue que, previamente a su utilización, era
necesario hacer una selección de las imágenes que contienen, bien porque corresponden a
gestos que no han sido considerados, bien porque las imágenes de los gestos presentan muy
poca —y podrían ser poco representativos y distorsionar los resultados— o excesiva varia-
bilidad, hasta el punto de que diferentes imágenes que la base de datos considera un mismo
gesto podrían interpretarse realmente como gestos diferentes —distorsionando también los
resultados—. Por ello, este procedimiento se ha descartado.
El método de validación ha consistido en la realización de test de usuario. Los test de
usuario permiten conocer la respuesta del sistema y la experiencia de éstos en la interacción
con él. Al mismo tiempo, ayudan a detectar situaciones que no se han identificado en el proceso
de construcción de los modelos de los gestos a partir de las imágenes de entrenamiento.
Se han realizado dos campañas de validación con 8 individuos diferentes. La primera ha
consistido en dos test. En cada uno de ellos se ha pedido al individuo que realice todos los
gestos, mostrándole como ejemplo las imágenes de la Figura 4.2. En esta primera campaña, se
va mostrando al mismo tiempo al individuo el resultado del reconocimiento del gesto que está
haciendo, de manera que dispone, para realizarlo, de la realimentación que supone conocer
la respuesta del sistema y, en función de ello, podría modificar la posición de su mano y/o
dedos. Estos test son los denominados test 1 y test 2 en las Figuras 4.29, 4.30, 4.31 y 4.32 de
matrices de confusión que se incluyen a continuación. Por su parte, en la segunda campaña los
test se han realizado sin esta información de la respuesta del sistema, y, por tanto, de manera
no supervisada por el individuo, que no sabe si se está o no identificando correctamente el
gesto y ya no puede modificar la posición de su mano o dedos en función del resultado. Se
trata de los denominados test 3 en las figuras de las matrices de confusión.

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:

R > 50 ∧ G > 20 ∧ B > 15 ∧ R > G ∧ R > B (4.1)

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

Tabla 4.24: Configuración de parámetros de la cámara Microsoft LifeCam Studio empleada


en la realización de test de usuario

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

Gesto realizado Gesto realizado


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,17

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

individuo 1 – test 1 individuo 2 – test 1

Gesto realizado Gesto realizado


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

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

8 0,94 0,02 8 1 0,06

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

individuo 1 – test 2 individuo 2 – test 2

Gesto realizado Gesto realizado


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,06 1 0,97

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

individuo 1 – test 3 individuo 2 – test 3

Figura 4.29: Matrices de confusión obtenidas en la evaluación del algoritmo de reconocimiento

143
4.5. Resultados y análisis

Gesto realizado Gesto realizado


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

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

8 0,68 0,24 8 1 0,36

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

individuo 3 – test 1 individuo 4 – test 1

Gesto realizado Gesto realizado


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

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

7 1 0,2 7 1 0,06 0,20

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

individuo 3 – test 2 individuo 4 – test 2

Gesto realizado Gesto realizado

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

6 0,04 0,86 0,1 6 0,94


Gesto estimado

7
Gesto estimado

7 0,08 0,9 1

8 0,18 0,52 0,04 0,14 8 1 0,14

9 0,88 9 0,86

L 0,85 L 1

i 0,97 i 1

j 0,9 j 1

u 0,06 0,18 0,08 1 u 0,05 1

c 0,86 c 1

p 1 p 1

individuo 3 – test 3 individuo 4 – test 3

Figura 4.30: Matrices de confusión obtenidas en la evaluación del algoritmo de reconocimiento

144
4.5. Resultados y análisis

Gesto realizado Gesto realizado


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

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

7 1 0,48 0,06 7 1 0,12

8 0,52 0,30 8 1 0,14

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

individuo 5 – test 1 individuo 6 – test 1

Gesto realizado Gesto realizado


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

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

7 1 0,12 7 1 0,04 0,05

8 1 0,28 8 0,96 0,08

9 0,62 9 0,88

L 1 L 0,98

i 1 i 1

j 1 j 1

u 1 u 1

c 0,18 0,8 c 0,94

p 0,93 p 1

individuo 5 – test 2 individuo 6 – test 2

Gesto realizado Gesto realizado

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

6 1 0,12 0,26 0,14 6 0,08 0,94


Gesto estimado

7
Gesto estimado

7 0,88 0,04 0,28 1 0,06

8 0,58 0,18 8 1 0,18

9 0,12 0,40 9 0,82

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

individuo 5 – test 3 individuo 6 – test 3

Figura 4.31: Matrices de confusión obtenidas en la evaluación del algoritmo de reconocimiento

145
4.5. Resultados y análisis

Gesto realizado Gesto realizado


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 0,98 1 1 0,10

2 1 0,08 2 1 0,08 0,02 0,06

3 0,73 3 1

4 0,78 0,03 4 1

5 0,91 5 0,93

6 0,03 0,04 0,92 6 0,90 0,10 0,12

Gesto estimado
Gesto estimado

7 1 0,03 7 0,02 0,82 0,20

8 0,13 0,97 0,05 8 0,06 0,74 0,18

9 0,93 9 0,64

L 0,93 L 0,90

i 0,02 0,88 i 0,97

j 0,03 1 j 1

u 0,02 1 u 0,06 1

c 0,96 c 0,87

p 1 p 1

individuo 7 – test 1 individuo 8 – test 1

Gesto realizado Gesto realizado


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,05 1 1 0,06

2 1 0,16 0,07 2 1

3 0,73 3 1

4 0,88 4 1

5 1 5 0,98

6 0,12 0,93 0,03 6 1 0,02


Gesto estimado

Gesto estimado

7 0,94 0,04 7 0,82

8 0,06 1 0,12 8 0,10 1 0,30

9 0,88 9 0,70

L 1 L 0,94

i 0,96 i 1

j 0,02 0,98 j 0,97

u 0,95 u 0,06 1

c 0,91 c 1

p 0,96 p 1

individuo 7 – test 2 individuo 8 – test 2

Gesto realizado Gesto realizado

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

2 1 0,23 2 1 0,02 0,14

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

7 1 0,02 0,62 0,14 0,10

8 1 0,10 8 0,20 0,84 0,16

9 0,90 9 0,02 0,60

L 1 L 0,93 0,02

i 0,94 i 1

j 1 j 0,83

u 1 u 0,16 0,93 0,10

c 1 c 0,78

p 1 p 1

individuo 7 – test 3 individuo 8 – test 3

Figura 4.32: Matrices de confusión obtenidas en la evaluación del algoritmo de reconocimiento

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

1 0,996 0,036 0,022

2 0,973 0,029 0,010 0,018 0,005

3 0,878

4 0,974 0,025

5 0,938

6 0,015 0,960 0,033 0,033 0,025

7
Gesto estimado

0,013 0,925 0,023 0,050 0,020

8 0,022 0,025 0,868 0,118 0,017

9 0,018 0,753

L 0,964 0,046

i 0,985

j 0,966

u 0,023 0,008 0,023 0,04 0,978 0,012

c 0,905

p 1

Figura 4.33: Matriz de confusión resultante del conjunto de test 3 realizados

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.

Gesto 1. Es reconocido correctamente en el 99,6 % de la imágenes.


Una excesiva inclinación de la mano podría llegar a hacer que no fuera reconocido o
que fuera interpretado como Gesto i o incluso como Gesto j. No obstante, sería una
posición muy diferente de la que se asocia a Gesto 1. Como se puede comprobar
en el tasa de éxito, esto apenas ha ocurrido durante los test.
Puede ser resultado falso positivo al realizar Gesto L y Gesto u, según se explica
en los casos correspondientes.

GC NGR NGF NGP


Gesto L Gesto u
Gesto 1 99,62 % 0,38 % 0% 3,63 % 2,25 %

Gesto 2. Es reconocido correctamente en el 97,25 % de la imágenes.


A partir de una determinada separación entre los dedos, que a su vez depende
de si ambos están o no en el mismo plano de la palma, puede ser confundido con
Gesto u. Es el caso de la imagen 6 de la Figura 4.28. En los test, se han producido
falsos positivos de Gesto 2 con Gesto 3 si la posición del pulgar, muy cerca del
dedo índice, lleva a que no se detecte este dedo, y con Gesto 6, Gesto 7 o Gesto
9, cuando el tamaño de la mano en la imagen, su inclinación o la separación entre
los dedos hacen que no se detecte alguno de ellos.

GC NGR NGF NGP


Gesto u Gesto 3 Gesto 6 Gesto 7 Gesto 9
Gesto 2 97,25 % 0,5 % 2,25 % 2,87 % 1% 1,75 % 0,5 %

Gesto 3. Es reconocido correctamente en el 87,88 % de la imágenes.


Una posición de la mano más inclinada con respecto a lo esperado por el modelo
puede hacer que se confunda con Gesto 6, en el que el dedo pulgar se estimaría
como el dedo índice, el índice como el dedo corazón y éste como el anular. Es
el caso de la imagen 7 de la Figura 4.28. Según el grado de inclinación, incluso
puede confundirse con Gesto 2 porque, en la situación descrita, no se cumplan las
condiciones para detectar el dedo corazón. En el caso comentado para Gesto 2 de
que el pulgar esté poco separado del índice, podría también confundirse con éste.

GC NGR NGF NGP


Gesto 2 Gesto 6
Gesto 3 87,88 % 7,75 % 2,87 % 1,5 % 0%

148
4.5. Resultados y análisis

Gesto 4. Es reconocido correctamente en el 97,35 % de la imágenes.


Si la mano está excesivamente inclinada la convolución no detectará el dedo
meñique y la configuración resultante no se reconocerá como ningún gesto. La
separación entre dedos al hacer el gesto en los test del individuo 3 dio lugar a con-
fusión con Gesto 8; en los restantes individuos no se produjo esta circunstancia.
Puede ser un falso positivo al realizar Gesto 5 si en la imagen de la silueta de la
mano apenas se distinguen dos dedos contiguos.

GC NGR NGF NGP


Gesto 8 Gesto 5
Gesto 4 97,35 % 0,5 % 2,15 % 2,5 %

Gesto 5. Es reconocido correctamente en el 93,75 % de la imágenes.


Puede ser no reconocido o confundido con Gesto 4 si por la separación entre dedos
o una excesiva inclinación no se detectan todos. En particular, sólo puede ser
confundido con Gesto 4 si tal problema de afecta al dedo pulgar; en otro caso, no
se reconocerá ningún gesto. La imagen 4 de la Figura 4.28 es un ejemplo de esto
último. Ha sido fundamentalmente el caso del individuo 7; en los restantes, esta
circunstancia apenas ha sucedido.

GC NGR NGF NGP


Gesto 4
Gesto 5 93,75 % 3,75 % 2,5 % 0%

Gesto 6. Es reconocido correctamente en el 96 % de la imágenes.


Puede ser confundido con Gesto 7 si la separación entre los dedos corazón y anular
es excesiva o si por estar alguno de ellos inclinado —algún individuo ha mostrado
tendencia a inclinar hacia adelante el dedo anular— esta separación es percibida
mayor en la imagen. En el caso de poca separación entre dedos, puede ser interpre-
tado como Gesto 2 o Gesto u, según de qué dedos se trate. Además, según dicha
separación o la inclinación lateral de la mano puede ser erróneamente reconocido
cuando se realizan Gesto 7 y Gesto 8, y en menor medida, Gesto 9 y Gesto 3.

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

1,5 % 3,25 % 3,25 % 2,5 %

149
4.5. Resultados y análisis

Gesto 7. Es reconocido correctamente en el 92,5 % de la imágenes.


La característica distintiva de este gesto, mantener bajado el dedo anular con el
índice, corazón y meñique levantados, ha demostrado durante los test no ser ser
una posición habitual para los individuos. Esto ha dado lugar a que en algunos
casos haya sido confundido con Gesto 6, si por la inclinación de los dedos la
distancia entre los dedos corazón y meñique es pequeña, o con Gesto 8 cuando
se tiende a separar los dedos índice y corazón. La imagen 9 de la Figura 4.28 es
un ejemplo del primer caso. Al mismo tiempo, si la separación entre los dedos
índice y corazón no es suficiente, puede que no se reconozca a ambos y el gesto
sea confundido con Gesto 2.
Además, como se comentó en el punto inmediatamente anterior, puede ser errónea-
mente reconocido cuando se realiza Gesto 6 y, como se comenta en los dos puntos
inmediatamente siguientes, cuando se realizan Gesto 8 y, especialmente, Gesto 9.
También puede ser falso positivo cuando se ejecuta Gesto c, según la distancia
entre dedos índice y meñique, y si la mano está inclinada y por ello el dedo pulgar
aparece vertical en la imagen.

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%

Gesto 8. Es reconocido correctamente en el 86,75 % de la imágenes.


Como evidencian los resultados de test 1 y test 2, es un gesto poco habitual para
los individuos que han participado en las campañas de validación, los cuales, en
prácticamente todos los casos, han tendido a forzar la posición e inclinar hacia
adelante el dedo corazón y hacia atrás el dedo índice. La poca familiarización con
la realización del gesto ha producido que haya sido confundido, según la inclinación
lateral de los dedos o de la mano al tratar de formar la posición de los dedos, con
los otros gestos de 3 dedos que no utilizan el pulgar, esto es, Gesto 6, Gesto 7 y
Gesto 9. Por la mismas razones, puede ser falso positivo cuando se realizan Gesto 7
y Gesto 9, y también, por situaciones que ya se han comentado, cuando se realizan
Gesto 4 y Gesto c.

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

2,15 % 2,5 % 11,75 % 1,65 %

150
4.5. Resultados y análisis

Gesto 9. Es reconocido correctamente en el 75,25 % de la imágenes.


Es el gesto para el que se ha obtenido la menor tasa de éxito. El motivo es funda-
mentalmente la orientación de los dedos, que tienden a inclinarse hacia la derecha
al bajar el índice y por ello el dedo corazón, que en este gesto es el primer dedo por
el ángulo de la línea que lo une con la palma, puede ser identificado como el dedo
índice. En esta situación, según la separación entre los dedos puede confundirse
con Gesto 6, Gesto 7 y, por lo comprobado en los test, especialmente con Gesto
8. La imagen 10 de la Figura 4.28 muestra el caso de confusión con Gesto 6. Para
evitar esta situación, es importante tratar de mantener el dedo corazón en posición
vertical —perpendicular a la palma—. Del análisis comparativo de los resultados
de test 1 y test 2, se concluye que la experiencia en la interacción con el sistema
mejoraría la tasa de éxito en el reconocimiento del gesto.
Por su parte, si la distancia en la imagen entre dedos contiguos no es suficiente,
puede ser interpretado como Gesto 2 o como Gesto u, según de qué pareja de
dedos se trate.

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 %

Gesto L. Es reconocido correctamente en el 96,37 % de la imágenes.


Si el pulgar está muy cerca de la palma o en una posición forzada muy inclinado
hacia la derecha, puede no detectarse el pulgar y ser reconocido como Gesto 1.
Con la mano excesivamente inclinada hacia la izquierda podría ser confundido
con Gesto u, identificándose el pulgar como el dedo índice y éste como el meñique.
Con mayor inclinación lateral de la mano o si el dedo índice está inclinado ha-
cia adelante, podría detectarse únicamente el pulgar y confundirlo con el índice,
estimando Gesto 1. Esto es lo que sucede en la imagen 3 de la Figura 4.28.
Puede obtenerse un falso positivo de Gesto L cuando se realiza Gesto c si, como
se comenta a continuación en el punto correspondiente a este gesto, la posición
del meñique no permite identificarlo.

GC NGR NGF NGP


Gesto 1 Gesto c
Gesto L 96,37 % 0% 3,63 % 4,64 %

151
4.5. Resultados y análisis

Gesto i. Es reconocido correctamente en el 98,5 % de la imágenes.


La diferencia entre Gesto i y Gesto j es únicamente la inclinación del dedo meñique.
Este caso, para Gesto i, el dedo debe estar en una posición relativamente vertical.
En ninguno de los test 3 se ha reconocido como otro gesto ni ha sido errónea-
mente reconocido en lugar de otro. Sí ha pasado que, por la inclinación hacia
adelante, aparezca en la imagen con un tamaño menor de lo esperado y no haya
sido reconocido.

GC NGR NGF NGP


Gesto i 98,5 % 1,5 % 0% 0%

Gesto j. Es reconocido correctamente en el 96,63 % de la imágenes.


Para reconocer correctamente Gesto j el dedo meñique debe estar inclinado hacia
la izquierda. Siendo conscientes de ello los individuos que han realizado los test,
no se ha confundido en ningún caso con Gesto i. Puede suceder que, tratando de
evitar dicha confusión, se incline excesivamente el dedo hasta una posición casi
horizontal en la que el gesto no es reconocido. Además, al igual que en Gesto i, la
inclinación hacia adelante puede hacer que el dedo aparezca en la imagen con un
tamaño insuficiente para ser reconocido.

GC NGR NGF NGP


Gesto j 96,63 % 3,37 % 0% 0%

Gesto u. Es reconocido correctamente en el 97,75 % de la imágenes.


De manera análoga a los dos gestos anteriores, según la inclinación lateral o ha-
cia adelante del meñique, puede ocurrir que éste no se detecte, lo que llevaría a
reconocer únicamente el dedo índice y por tanto ser confundido con Gesto 1.
Como se ha comentado anteriormente, puede resultar falso positivo con Gesto 2,
Gesto 6, Gesto 8 y, en mayor medida, con Gesto 9. También puede serlo con Gesto
c, como se explica a continuación.

GC NGR NGF
Gesto 1
2,25 %
Gesto u 97,75 % 0%
NGP
Gesto 2 Gesto 6 Gesto 8 Gesto 9 Gesto c

2,25 % 0,75 % 2,25 % 4% 1,25 %

152
4.5. Resultados y análisis

Gesto c. Es reconocido correctamente en el 90,46 % de la imágenes.


En los test se ha comprobado que, por un lado, unos individuos tienden a inclinar
la mano hacia la izquierda, lo que ha generado confusión con los gestos de 3 dedos
Gesto 7 y Gesto 8, y también que hay individuos para los que mantener levantado
el dedo meñique y extendido el pulgar no es una postura cómoda, lo que ha llevado
a posiciones de los dedos en la que no todos son detectados y el resultado ha sido
reconocer erróneamente Gesto L, si no se detecta el meñique, o Gesto u, si no se
detecta el pulgar. La imagen 8 de la Figura 4.28 es un ejemplo de la primera de
esas situaciones.

GC NGR NGF NGP


Gesto 7 Gesto 8 Gesto L Gesto u
Gesto c 90,46 % 0% 2% 1,65 % 4,64 % 1,25 % 0%

Gesto p. Es reconocido correctamente en el 100 % de la imágenes.


Podría no ser reconocido o interpretado como Gesto 1 si se realiza con una incli-
nación de la mano excesiva. Si la segunda falange del pulgar no está extendida
hacia fuera de la mano, no se considera que se realice el gesto, pero puede ocurrir
que si la primera sí lo está, y por ello el pulgar sobresale de la palma, se produzca
un falso positivo.

GC NGR NGF NGP


Gesto p 100 % 0% 0% 0%

153
PARTE II

Como se argumentó en el capítulo de preámbulo, la rapidez de respuesta del sistema es


una prestación clave y, para que se perciba la naturalidad pretendida, deben lograrse unas
determinadas prestaciones temporales. Por ello, la implementación hardware de los algoritmos
propuestos para el reconocimiento de los gestos de la mano es, junto con el propio desarrollo
de éstos, pilar fundamental de esta tesis. Esta implementación ha requerido el diseño de una
arquitectura que lleve a cabo las tareas implicadas en los algoritmos y, además, el desarrollo
de una plataforma de captura y generación de vídeo que les dé soporte, proporcione los datos
de entrada y gestione los datos de salida.

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

sistemas de procesamiento de imagen o vídeo, de esta tarea se encarga lo que se denomina


frame grabber, un sistema que captura y guarda una o varias imágenes (frames) de entrada
procedentes del sensor de captura de imágenes.
En esta tesis se han desarrollado frame grabbers para la adquisición y procesamiento de
imágenes capturadas con un módulo cámara OV7620 de OmniVision Technologies y también,
para proporcionar mayor flexibilidad a la plataforma, de imágenes procedentes del codec de
vídeo SAA7113, de Philips Semiconductors, el cual digitaliza vídeo analógico en y con dife-
rentes formatos. En aras de la mayor flexibilidad y versatilidad, estos frame grabbers no
almacenan la imagen resultante de la segmentación basada en el color de la piel, lo cual
reduciría drásticamente la capacidad de memoria necesaria y por tanto habría simplificado su
diseño a expensas de limitar su utilidad a aplicaciones basadas en esa imagen segmentada, sino
que almacenan la imagen de entrada, con la información completa de cada píxel recibida por
la fuente de vídeo. Dadas las limitaciones de memoria interna de las FPGAs y la necesidad de
utilizar tales recursos para la implementación de procesadores específicos, los frame grabbers
diseñados están basados en memoria SRAM externa.
Para la visualización de las imágenes de salida, se generan las señales necesarias para
mostrar una imagen VGA de 640 × 480 píxeles a 60 frames por segundo. Esta resolución se
ha considerado suficiente para proporcionar al usuario información visual sobre el resultado de
las diferentes tareas implicadas en el sistema de reconocimiento, de acuerdo con los establecido
en los objetivos indicados en el apartado 1.4 para la mejora de la experiencia de manejo del
sistema y, en última instancia, de su propio funcionamiento. En este sentido, el hecho de que el
frame grabber contenga, como se ha explicado, la información original de la imagen es también
relevante a la hora de ofrecer información al usuario de todas las etapas de procesamiento.
La información que se pone a disposición del usuario incluye texto que muestra en posi-
ciones configurables de la imagen de salida mensajes y valores que se consideran de utilidad
para la mencionada mejora de la experiencia de manejo. A diferencia de las soluciones soft-
ware, la visualización de texto no es habitual en las soluciones basadas en hardware. Cuando
se incluye un procesador de propósito general en el sistema, la opción habitual es emplear una
UART conectada como periférico a él para, por ejemplo, recibir comandos de configuración
o de activación de tareas, o enviar valores de depuración y resultados. Sin embargo, aunque,
como se explica más adelante, nuestra plataforma sí incluye un núcleo procesador soft, la
opción de la comunicación mediante UART no se ha considerado válida porque requiere otro
procesador con el que realizar el intercambio de información. En su lugar, la plataforma hard-
ware incluye un circuito digital diseñado para posibilitar escribir texto en cualquier posición
de la imagen de salida. El circuito consiste básicamente en una memoria ROM donde están
codificados, con un tamaño de 13 × 8 píxeles cada uno, los caracteres alfanuméricos, y en
una pantalla de texto, una matriz de 640 × 480 elementos —la resolución VGA de la imagen
de salida—, que es una memoria donde se guardan los valores de los píxeles que forman el
texto en la imagen. Por su tamaño, y dado que se ha contemplado la posibilidad de texto en
color con una paleta de 64 colores, para su implementación se ha utilizado memoria SRAM
externa. Este core generador de texto está controlado por el procesador soft mencionado, que
es el que se encarga, mediante el programa que ejecuta, de obtener los datos que en su caso se
pretenda mostrar y de escribir los valores adecuados, a partir de la codificación de caracteres
leída de la ROM, en las posiciones de la memoria de la pantalla de texto correspondientes a
las coordenadas del texto en la imagen. En la imagen de salida final, esta pantalla de texto
está sobreimpuesta sobre cualquier otra imagen que se muestre.

155
Parte II. Arquitectura propuesta

Arquitectura propuesta

Las tareas de procesamiento que conforman el algoritmo de reconocimiento de gestos se sitúan


en dos escalas de tiempo claramente diferenciadas. La segmentación basada en el color de
la piel, la convolución y la determinación de los puntos de interés de la imagen se realizan
a nivel de píxel, es decir, están basadas en información propia de cada píxel. Por su parte,
la identificación de los posibles objetos presentes en la imagen, el cálculo de los valores de
las características extraídas de ellos, la comprobación de las reglas propias de cada gesto
y la determinación de la presencia o no de algún gesto se realizan a nivel de imagen, esto
es, sobre un conjunto de datos derivados de la imagen de tamaño mucho más reducido —al
menos tres órdenes de magnitud— que el tamaño de la propia imagen. En este mismo nivel
de imagen, que se considera más alto en cuanto al diseño de la arquitectura que el nivel de
píxel porque hay más tiempo para ejecutar las tareas, se gestiona la toma de las decisiones
que dependen del resultado del reconocimiento y de las que controlan su funcionalidad global,
como el clasificador empleado para la segmentación según el color de la piel o el ajuste de
parámetros del algoritmo de reconocimiento de gestos. Para cumplir con el requisito de tiempo
real derivado del objetivo de causalidad inmediata establecido en el apartado 1.4, el nivel de
píxel debe operar en el orden de los nanosegundos y con el máximo paralelismo que permitan
las tareas; mientras, el nivel de imagen puede operar en el orden de los milisegundos y las
tareas pueden ser ejecutadas secuencialmente.
Atendiendo a lo anterior y, al mismo tiempo, al objetivo de diseñar un sistema modular y
escalable, la arquitectura propuesta para la implementación del algoritmo de reconocimiento
de los gestos de la mano es una solución mixta hardware/software que integra un microproce-
sador MicroBlaze con procesadores específicos para la funcionalidad deseada, desarrollada
utilizando herramientas de diseño de sistemas digitales para FPGAs de Xilinx.
MicroBlaze es un microprocesador soft RISC de 32 bits configurable diseñado por Xilinx
para poder ser utilizado en sistemas basados en sus dispositivos de lógica programable FPGA
y SoC. El concepto soft, en este contexto, hace referencia a que el microprocesador no está
incluido físicamente en el layout del dispositivo, sino que se construye con los recursos de
propósito general y específico de la FPGA. De manera genérica, el propósito de MicroBlaze
es simplificar la integración, coordinación y control de circuitos digitales implementados en
la FPGA mediante software, empleando un programa escrito en lenguaje C.
En particular, en esta tesis MicroBlaze ejecuta tareas descritas en los apartados 4.2.4, 4.3
y 4.4, incluyendo el filtrado de los puntos de interés para la identificación de posibles objetos,
la determinación de los valores de las características extraídas de la imagen, la comprobación
de las reglas establecidas para cada gesto y el cálculo de la puntuación correspondiente. De
estas tareas, sin duda las más interesantes para su ejecución en software son las dos primeras,
por realizarse en ellas cálculos matemáticos que cuya implementación hardware es más costosa
tanto a nivel de diseño como de recursos y prestaciones temporales. El programa ejecutado en
MicroBlaze también se encarga del ajuste del algoritmo para la segmentación de la imagen de
entrada según el color de la piel y del modelado del comportamiento temporal, controlando el
tiempo de duración de cada posición de la mano detectada en la imagen. En algunas de estas
tareas, especialmente para el cálculo de los valores de las características de cada objeto dedo,
es necesario disponer de la imagen de la silueta de la mano. En comparación con la imagen
de entrada, la imagen segmentada es mucho más pequeña (25 veces) y además los datos son
únicamente de 1 bit, por lo que puede ser guardada en memoria RAM interna empleando
bloques BlockRAM.

156
Parte II. Arquitectura propuesta

Con la solución propuesta se facilita sensiblemente la ampliación de la funcionalidad de


reconocimiento del sistema, ya que minimizaría o incluso evitaría, según el hardware ya
diseñado se adapte a esa funcionalidad ampliada, la descripción de circuitos digitales y los
cambios se realizarían mayoritariamente o en su totalidad en el ámbito del software de la
arquitectura, modificando el programa que ejecuta MicroBlaze.
Los dos capítulos siguientes, que completan esta Parte II centrada en la implementación
hardware, describen las soluciones propuestas en las dos etapas críticas para lograr las presta-
ciones temporales requeridas: el reconocimiento del color de la piel, en el capítulo 5; y la
convolución bidimensional de la imagen segmentada con las plantillas, en el capítulo 6.

157
5

Implementación del algoritmo de


reconocimiento del color de la piel

El presente capítulo está dedicado a la descripción de la implementación hardware del algo-


ritmo de reconocimiento del color de la piel. El diseño y la validación de los circuitos que
realizan las diferentes etapas del algoritmo han sido realizados con System Generator for
DSP (XSG), herramienta incluida en el paquete de diseño de Xilinx Inc. Su integración
con Matlab/Simulink ha posibilitado la evaluación de opciones de configuración y la eficaz
verificación de los resultados. La síntesis y la implementación se han realizado con XST y
Xilinx ISE 14.7 para FPGA Virtex-7. La configuración de las principales opciones de estas
herramientas de síntesis e implementación se resumen en la Tabla 5.1.

Síntesis XST Optimization Goal Velocidad


Optimization Effort Normal
Shift Register Extraction Habilitado
Register Duplication Habilitado
Equivalent Register Removal Habilitado
Register Balancing Deshabilitado
Implementación Timing mode Performance Evaluation
Map Effort Level Estándar
Register Duplicacion Habilitado
Design Goal Balanced
Place and Route Mode Route only
Placer Effort level Estándar

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

5.1. Conversiones a espacios de color


El algoritmo de reconocimiento del color de la piel utiliza modelos definidos en los espacios de
color YUV, YIQ, YCb Cr y RGB normalizado. Para su desarrollo se ha partido de imágenes
en el espacio de color RGB, el más conocido y extendido hoy en día, y el que se utiliza
en los formatos de imágenes estándar. Es, por tanto, necesario realizar la conversión entre
estos espacios de color de manera previa a la ejecución del algoritmo, empleando para ello
las correspondientes ecuaciones, recogidas en el apartado 3.1. Se describen en los siguientes
apartados las soluciones adoptadas para la implementación en hardware reconfigurable de
estas transformaciones. Se presentan los modelos, diseñados utilizando XSG, se analizan
los parámetros de diseño de cada uno de ellos y se indican los principales resultados de
implementación, en términos de recursos ocupados y características temporales básicas. Para
el cálculo del error asociado a la implementación —la diferencia entre el resultado de las
ecuaciones de transformación y el resultado del circuito que las implementa— se ha empleado
la base de datos de imágenes utilizada para el desarrollo de los modelos del color de la piel.

5.1.1. Conversión de RGB a YUV


La conversión de RGB a YUV, indicada en la expresión 3.5 del apartado dedicado a la
descripción de los espacios de color en el capítulo 3, ha sido implementada mediante el
circuito del esquema mostrado en la Figura 5.1. La luminancia Y no ha sido incluida por no
ser empleada en el modelo del color propuesto en este espacio 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

b COEF + + cast REG


128
× ‐0,082

Figura 5.1: Esquema de la implementación de la transformación de RGB a YUV

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

bCOEF bOUTF Uerror Uerror (%) Verror Verror (%)


0 0,4990 0,33 % 0,5000 0,26 %
2 0,1250 0,08 % 0,1250 0,06 %
20 4 0,0313 0,02 % 0,0313 0,02 %
6 0,0079 0,01 % 0,0079 0,00 %
8 0,0020 0,00 % 0,0000 0,00 %

0 0,5001 0,34 % 0,5002 0,26 %


2 0,1253 0,08 % 0,1251 0,06 %
18 4 0,0316 0,02 % 0,0316 0,02 %
6 0,0081 0,01 % 0,0081 0,00 %
8 0,0023 0,00 % 0,0022 0,00 %

0 0,5077 0,34 % 0,5073 0,26 %


2 0,1324 0,09 % 0,1324 0,07 %
16 4 0,0388 0,03 % 0,0388 0,02 %
8 0,0096 0,01 % 0,0096 0,00 %
20 0,0078 0,01 % 0,0078 0,00 %

0 0,5054 0,34 % 0,5051 0,26 %


2 0,1324 0,09 % 0,1294 0,07 %
14 4 0,0394 0,03 % 0,0361 0,02 %
8 0,0127 0,01 % 0,0082 0,00 %
20 0,0110 0,01 % 0,0075 0,00 %

0 0,5355 0,36 % 0,5043 0,26 %


2 0,1533 0,10 % 0,1348 0,07 %
12 4 0,0678 0,05 % 0,0429 0,02 %
8 0,0420 0,03 % 0,0152 0,01 %
20 0,0405 0,03 % 0,0132 0,01 %

0 0,6223 0,42 % 0,5496 0,28 %


2 0,2414 0,16 % 0,1811 0,09 %
10
4 0,1577 0,11 % 0,0956 0,05 %
20 0,1435 0,10 % 0,0694 0,04 %

0 1,4923 1,00 % 0,7837 0,40 %


2 1,1022 0,74 % 0,5275 0,27 %
9
4 1,0240 0,69 % 0,4316 0,22 %
20 0,9961 0,67 % 0,4129 0,21 %

0 2,4060 1,61 % 1,1434 0,59 %


2 2,0962 1,41 % 0,7730 0,40 %
8
4 2,0077 1,34 % 0,6799 0,35 %
20 1,9922 1,34 % 0,6590 0,34 %

0 3,2236 2,16 % 2,3533 1,21 %


2 2,8026 1,88 % 2,0256 1,04 %
6
4 2,7301 1,83 % 1,9912 1,02 %
20 2,7549 1,85 % 2,0225 1,04 %

Tabla 5.2: Configuraciones de la implementación de la transformación de RGB a YUV: error


en el resultado en función del tamaño de las constantes de multiplicación y del
tamaño de la parte fraccionaria del resultado

161
5.1. Conversiones a espacios de color

bCOEF bOUTF LUTs FFs


0 437 16
2 440 20
18
4 446 24
8 454 32
0 340 16
12 2 341 20
4 351 24
0 303 16
10 2 307 20
4 315 24
0 254 16
8 2 256 20
4 264 24

Tabla 5.3: Configuraciones de la implementación de la transformación de RGB a YUV:


recursos ocupados en función del tamaño de las constantes de multiplicación y
del tamaño de la parte fraccionaria del resultado

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

RGB a YUV RGB a YUV RGB a YUV

× ‐0,169 × ‐0,169 × ‐0,169

+ + +
× ‐0,333 × ‐0,333 × ‐0,333
+ + +
× 0,502 + cast REG
× 0,502 + cast REG
× 0,502 + cast REG
128 128 128

× 0,502 × 0,502 × 0,502

+ + +
× ‐0,420 × ‐0,420 × ‐0,420
+ + +
× ‐0,082 + cast REG
× ‐0,082 + cast REG
× ‐0,082 + cast REG
128 128 128

Etapa segmentación Etapa segmentación Etapas segmentación

configuración 1 configuración 2 configuración 3

Figura 5.2: Esquema de la implementación de la transformación de RGB a YUV:


configuraciones de segmentación

bCOEF bOUTF Segmentación Latencia FFs Tmin (ns)

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

Tabla 5.4: Configuraciones de la implementación de la transformación de RGB a YUV: im-


pacto de la segmentación interna

5.1.2. Conversión de RGB a YIQ


La transformación de RGB a YIQ, dada por la expresión 3.7 en el apartado 3.1, es análoga a
la de RGB a YUV. El esquema del circuito de conversión, mostrado en la Figura 5.3, es, por
tanto, análogo al descrito en el apartado anterior, así como el procedimiento seguido para
analizar y fijar los valores adecuados de sus parámetros de configuración. De nuevo, por la
propia definición del modelo del color de la piel en este espacio de color, no es necesario el
cálculo de la luminancia Y. La única diferencia se encuentra en los valores de las constantes
de multiplicación. No obstante, esto da lugar a un comportamiento diferente de la precisión
de la transformación en función del tamaño de bits utilizado para representar los datos. En
este caso, es la configuración bCOEF = 12, bOUTF = 5 la mínima que produce una tasa de error
menor de 0, 05 % en ambas componentes I y Q, y que genera exactamente el mismo resultado
de la clasificación que la implementación software. Este mínimo cambio apenas se traduce en
diferencias en los resultados de la implementación hardware, que son muy similares a los de
la conversión a YUV. La Tabla 5.5 indica el error absoluto y la tasa de error sobre el rango
posible para la configuración indicada, así como los recursos ocupados en la implementación
del circuito correspondiente.

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

b COEF + + cast REG


128
× 0,298

Figura 5.3: Esquema de la implementación de la transformación de RGB a YIQ

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.

bCOEF bOUTF Ierror Ierror (%) Qerror Qerror (%)

0,0384 0,02 % 0,0475 0,05 %

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

Tabla 5.5: Implementación de la transformación de RGB a YIQ: error y resultados de imple-


mentación para bCOEF = 12 y bOUTF = 5

164
5.1. Conversiones a espacios de color

5.1.3. Conversión de RGB a YCb Cr


La implementación de la transformación desde RGB a YCb Cr , definida por la expresión 3.8
en el apartado 3.1, sigue el mismo esquema que las conversiones a YUV y a YIQ. En este caso,
más allá de los valores de las constantes, la principal diferencia radica en que la componente
de luminancia Y sí es utilizada en el modelo del color de la piel. Para la definición del
circuito se ha mantenido el mismo diseño y procedimiento que las anteriores. La Figura 5.4
muestra el esquema, y la Tabla 5.6 el error y los resultados de la implementación del circuito
correspondiente a la configuración bCOEF = 12, bOUTF = 4, que es la menor que produce una
tasa de error igual o inferior a 0, 05 % en las tres componentes Y , Cb y Cr .

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

Figura 5.4: Esquema de la implementación de la transformación de RGB a YCb Cr

bCOEF bOUTF Yerror Yerror (%) Cb error Cb error (%) Cr error Cr error (%)

0,0715 0,03 % 0,0405 0,03 % 0,0610 0,04 %

12 4 LUTs Segmentación Latencia FFs Tmin (ns)

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

Tabla 5.6: Implementación de la transformación de RGB a YCb Cr : error y resultados de


implementación para bCOEF = 12 y bOUTF = 4

165
5.1. Conversiones a espacios de color

5.1.4. Conversión de RGB a RGB normalizado


A diferencia de las conversiones desde RGB a YUV, YIQ e YCb Cr , que implican únicamente
operaciones de suma y multiplicación, la conversión al espacio de color RGB normalizado
(RGBn ) requiere, de acuerdo con las ecuaciones de la expresión 3.1 recogida en el apartado 3.1,
dividir el valor de cada una de las componentes RGB por la suma de los valores de las tres.
De las cuatro operaciones aritméticas básicas, la división es la más compleja, presentando
dos diferencias clave con respecto a las demás. Por un lado, produce dos resultados —cociente
y resto—; por otro, el cociente se calcula mediante un proceso iterativo de búsqueda del valor
correcto. Ésta última es especialmente relevante a la hora de definir un circuito digital —el
layout de los dispositivos FPGA no ha incluido nunca, hasta la fecha, un módulo hardware
dedicado a realizar la división en los bloques DSP—, la que implica que sea la más compli-
cada de las cuatro y la más costosa en términos de recursos y coste computacional, y la que
motiva que se hayan propuesto numerosos algoritmos para optimizar su implementación hard-
ware [System Generator for DSP, Xilinx]. De entre ellos, System Generator for DSP ofrece
tres posibilidades por medio de dos cores IP: CORDIC Divider y Divider Generator.

5.1.4.1. Conversión de RGB a RGB normalizado con CORDIC Divider

La biblioteca de componentes de System Generator for DSP incluye un módulo parametri-


zable que implementa un circuito para realizar la división basado en el algoritmo CORDIC
(COordinate Rotation DIgital Computer). Este módulo, denominado CORDIC Divider, se ha
instanciado en el esquema de la Figura 5.5 para evaluar su empleo en la conversión de RGB
a RGB normalizado.
Los parámetros de configuración básicos de este módulo son el número de Elementos
de Procesamiento (PEs, Processing Elements), la latencia de cada uno de ellos y el tamaño
nBits X,Y de sus datos —el total de bits y los de su parte fraccionaria—. La documentación
del core especifica que se interpreta que los datos de entrada están representados como valores
con signo. Por ello, y dado que el valor máximo de R + G + B es 765 y que el valor de ninguna
componente puede ser menor que cero, los datos de entrada que corresponden a los dividendos
—cada una de las componente de color RGB— son definidos como datos de 9 bits y el divisor
—la suma de las tres— de 11 bits. En el camino de salida de los datos, el multiplicador por
255 escala los datos para representarlos en el rango [0, 255], que es el formato esperado por
el módulo clasificador.
El análisis de los resultados del circuito de conversión empleando el CORDIC Divider con
diferentes configuraciones permite caracterizar el comportamiento de éste. La Tabla 5.7 recoge
el error en la conversión obtenido con combinaciones de los parámetros indicados y del tamaño
para representar la parte fraccionaria del resultado. La valores de error han sido calculados
sobre el resultado de salida del circuito de conversión, y se indican el mayor error absoluto y
la mayor tasa de error en cualquiera de las componentes, obtenida ésta considerando el rango
de valores posibles en cada una de ellas. En todos los casos se ha considerado un tamaño
de 11 bits para la parte entera de nBits X,Y : un valor menor no puede representar el rango
posible de resultados intermedios y se produce desbordamiento; un valor mayor no tiene
utilidad alguna. Las diferencias en el tamaño de los datos internos de los PEs representan,
por tanto, diferencias en el número de bits destinados a representar la parte fraccionaria de
los datos en la cascada de sucesivas etapas, indicado en lo sucesivo como nBits X,Y F . Se ha
incluido también en la tabla el tamaño de los datos de salida de cada CORDIC Divider,
especificando su parte entera y su parte fraccionaria. Como en los apartados anteriores, se

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

Figura 5.5: Esquema de la implementación de la transformación de RGB a RGB normalizado


basado en el core CORDIC Divider

Se comprueba que el número de PEs determina el tamaño de la parte fraccionaria de


los datos de salida, es decir, la parte n de nBits OUT es igual al número de elementos de
procesamiento. Asociado a esto, carece de sentido cualquier tamaño de nBits X,Y F —la parte
fraccionaria de nBits X,Y — mayor que el número de PEs. Tampoco tiene utilidad alguna que
la parte fraccionaria del resultado tenga un tamaño mayor que nBits X,Y F , es decir, mayor que
el número de PEs. Por ejemplo, con PEs = 16 y nBits X,Y F = 7 se obtiene el mismo resultado
con bOUTF = 7 que con bOUTF = 16. La condición recíproca sí es relevante y el tamaño de la
parte fraccionaria de los datos internos genera más o menos error para un mismo tamaño de
la salida. De nuevo con el ejemplo de PEs = 16 y bOUTF = 7, hay una diferencia significativa
en el resultado entre 7 o 16 bits para nBits X,Y F .

167
5.1. Conversiones a espacios de color

nBits X,Y nBits OUT


PEs entera + fraccionaria
latencia l entera m + fraccionaria n
bOUTF RGBn error RGBn error (%)

11+20 53 42+20 20 0,0078 0,00 %

49 38+16 16 0,0078 0,00 %


11+16
49 38+16 7 0,0078 0,00 %

46 38+16 16 0,0078 0,00 %


11+13
46 35+16 13 0,0078 0,00 %

45 34+16 7 0,0092 0,00 %


45 34+16 6 0,0170 0,01 %
45 34+16 5 0,0316 0,01 %
45 34+16 4 0,0625 0,02 %
11+12
45 34+16 3 0,125 0,05 %
45 34+16 2 0,25 0,10 %
45 34+16 1 0,5 0,20 %
45 34+16 0 1 0,39 %
16
44 33+16 16 0,0123 0,00 %
11+11
44 33+16 11 0,0123 0,00 %

43 32+16 16 0,0192 0,01 %


11+10
43 32+16 10 0,0192 0,01 %

42 31+16 16 0,0406 0,02 %


11+9
42 31+16 9 0,0406 0,02 %

41 30+16 16 0,0852 0,03 %


11+8
41 30+16 8 0,0852 0,03 %

40 29+16 16 0,1535 0,06 %


11+7
40 29+16 7 0,1535 0,06 %

39 28+16 16 0,3721 0,15 %


11+6
39 28+16 6 0,3721 0,15 %

37 26+16 16 1,4545 0,57 %


11+4
37 26+16 4 1,4545 0,57 %

11+15 47 37+15 15 0,0156 0,01 %


15
11+12 44 34+15 6 0,0160 0,01 %

11+14 45 36+14 14 0,0313 0,01 %


14
11+11 42 33+14 5 0,0319 0,01 %

11+13 43 35+13 13 0,0625 0,03 %


13
11+10 40 32+13 4 0,0644 0,03 %

11+12 41 34+12 12 0,125 0,05 %


12
11+12 41 34+12 3 0,125 0,05 %

11+11 39 33+11 11 0,25 0,10 %


11
11+6 34 33+6 6 0,3986 0,15 %

Tabla 5.7: Implementación de la transformación de RGB a RGB normalizado utilizando el


core CORDIC Divider: error en el resultado en función del número de elementos
de procesamiento y el tamaño de los datos

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)

45 7 0,00 3689 3675 6 3,167


45 5 0,01 3675 3675 6 3,073
11+12
45 3 0,05 3702 3675 6 3,583
45 0 0,39 3625 3675 6 3,035

11+11 44 11 0,00 3458 3556 6 3,465

16 11+10 43 10 0,01 3446 3453 6 3,808

11+9 42 9 0,02 3193 3358 6 4,010

11+8 41 8 0,03 3107 3229 6 4,083

11+7 40 7 0,06 3108 3148 12 4,241

11+6 39 6 0,15 2993 2956 6 4,415

15 11+12 44 6 0,01 3491 3534 6 3,679

14 11+11 42 5 0,01 3200 3297 6 3,627

13 11+10 40 4 0,03 2958 3094 6 3,951

12 11+12 41 3 0,05 2994 3127 6 2,743

11 11+6 34 6 0,15 2147 2380 3 4,133

Tabla 5.8: Implementación de la transformación de RGB a RGB normalizado utilizando el


core CORDIC Divider: recursos ocupados y periodo mínimo de reloj Post-Place &
Route en función del número de elementos de procesamiento y el tamaño de los
datos de configuraciones seleccionadas de la Tabla 5.7

nBits X,Y
PEs entera + fraccionaria
latencia l bOUTF RGBn error (%) LUTs FFs DSP48s Tmin (ns)

2994 3127 6 2,743


12 11+12 41 3 0,05
4745 4387 0 3,466

Tabla 5.9: Implementación de la transformación de RGB a RGB normalizado utilizando el


core CORDIC Divider: impacto de la solución adoptada para el implementación de
la multiplicación (bloques DSP48 o recursos de propósito general) sobre los recursos
ocupados y el periodo mínimo de reloj Post-Place & Route en la configuración
PEs = 12, nBits X,Y F = 12 y bOUTF = 3

170
5.1. Conversiones a espacios de color

nBits X,Y
PEs latencia PEs latencia l entera + fraccionaria
bOUTF LUTs FFs Tmin (ns)

[1 1 1 1 1 1 1 1 1 1 1 1] 41 2994 3127 2,743


[1 0 1 0 1 0 1 0 1 0 1 0] 35 2931 2784 4,308
12 11+12 3
[1 0 0 1 0 0 0 1 0 0 0 1] 33 2974 2683 6,022
[1 0 0 0 0 0 0 0 0 0 0 1] 31 2981 2551 14,490

Tabla 5.10: Implementación de la transformación de RGB a RGB normalizado utilizando el


core CORDIC Divider: impacto de la latencia de los Elementos de Procesamiento
sobre los recursos ocupados y el periodo mínimo de reloj Post-Place & Route en
la configuración PEs = 12, nBits X,Y F = 12 y bOUTF = 3

5.1.4.2. Conversión de RGB a RGB normalizado con IP Divider Generator

El core Divider Generator de Xilinx es un módulo configurable para la generación de circuitos


que realicen la división de números enteros. Este módulo ofrece dos soluciones: basada en
el algoritmo Radix-2 sin restauración, que se implementa utilizando recursos de propósito
general, y basada en un algoritmo High-Radix con preescalado, que utiliza los bloques DSP
y de memoria embebidos en el layout de la FPGA. De acuerdo con la documentación de
Xilinx ([Divider Generator v5.1]), el segundo está recomendado para divisiones de operandos
de más de 16 bits, mientras que el primero es preferible para divisiones de operandos de
menor tamaño. El caso de la conversión a RGBn desde RGB, dados datos de entrada de 8
bits, es, por tanto, el primero. No obstante, ambas soluciones han sido evaluadas empleando
un esquema análogo al de la Figura 5.5, y para el cual la Tabla 5.11 recoge los resultados
del error cometido con configuraciones suficientes para caracterizar sus comportamientos. En
ella, bOF hace referencia al parámetro Output Fractional width del Divider Generator, mientras
que bOUTF indica, como en los esquemas de conversión de los apartados anteriores, el número
de bits de la parte fraccionaria del resultado de salida. Obviamente, no tiene sentido un valor
de bOUTF mayor que el de bOF .
El circuito basado en el algoritmo de división Radix-2 sin restauración, configurado con
bOF = 16 y bOUTF = 8, convierte a RGBn con una tasa de error menor de una centésima.
Con este valor bOF = 16, la reducción del número de bits de la parte fraccionaria de la salida
aumenta exponencialmente el error, hasta un valor absoluto máximo de 1. Por su parte, la
reducción del valor de bOF , manteniendo bOUTF al valor máximo bOF = bOUTF , también produce
un aumento exponencial del error. Como es lógico, la importancia de bOUTF en la precisión
del resultado disminuye conforme éste, por la reducción de bOF , va siendo menos preciso. A
partir de bOF = 9, la pérdida de resolución es tal que el cambio de bOUTF ya no tiene impacto
en el resultado.
Presentando un comportamiento similar en función del cambio de los parámetros, el cir-
cuito basado en el algoritmo High-Radix ofrece mejores resultados para la misma configura-
ción de bOF y bOUTF , siempre y cuando éste último tenga el tamaño suficiente para no limitar
la resolución del core. Se aprecia que la diferencia entre ambos corresponde a 2 bits del
tamaño de bOF , es decir, que el algoritmo High-Radix permite reducir en hasta 2 bits la parte
fraccionaria del resultado del core manteniendo la misma precisión.
Las técnicas de diseño que emplea el core para generar los circuitos que implementan
estos dos algoritmos son muy diferentes; mientras el primero consiste en una serie de eta-
pas en cascada, el segundo realiza un proceso iterativo empleando los bloques DSP48. Los

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 %

14 0,0312 0,01 % 0,0079 0,00 %


14 8 0,0312 0,01 % 0,0079 0,00 %
4 0,0625 0,02 % 0,0625 0,02 %

12 0,1248 0,05 % 0,0313 0,01 %


8 0,1248 0,05 % 0,0313 0,01 %
12
4 0,1248 0,05 % 0,0625 0,02 %
2 0,25 0,10 % 0,25 0,10 %

11 0,2496 0,10 % 0,0624 0,02 %


11 4 0,2496 0,10 % 0,0625 0,02 %
2 0,25 0,10 % 0,25 0,10 %

10 0,4992 0,20 % 0,1248 0,05 %


4 0,4992 0,20 % 0,1248 0,05 %
10 2 0,4992 0,20 % 0,25 0,10 %
1 0,5 0,20 % 0,5 0,20 %
0 1,0 0,39 % 1,0 0,39 %

9 0,9985 0,39 % 0,2496 0,10 %


9 1 0,9985 0,39 % 0,5 0,20 %
0 1,0 0,39 % 1,0 0,39 %

8 1,9966 0,78 % 0,5 0,20 %


8 1 1,9966 0,78 % 0,5 0,20 %
0 1,9966 0,78 % 1,0 0,39 %

Tabla 5.11: Implementación de la transformación de RGB a RGB normalizado utilizando el


core Divider Generator: error en el resultado en función de los parámetros de
configuración del core para los algoritmos Radix-2 y High-Radix

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)

0,00 % 16 8 1224 2826 15 2,129 14 8


0,02 % 14 4 1191 2535 14 2,085 11 4
630 189 3 21 4 8,867
0,05 % 12 4 1038 2256 13 1,956 10 4
0,10 % 11 2 987 2121 12 1,622 9 2
0,20 % 10 1 945 1989 12 1,603 8 1

Tabla 5.12: Implementación de la transformación de RGB a RGB normalizado utilizando el


core Divider Generator: recursos ocupados, latencia del circuito y periodo mínimo
de reloj Post-Place & Route de configuraciones Radix-2 y High-Radix para una
determinada tasa de error

resultados de implementación de las configuraciones mínimas que aseguran una determinada


tasa de error, mostrados en la Tabla 5.12, reflejan esta diferencia. El circuito del algoritmo
Radix-2 sólo emplea recursos de propósito general y, como en el caso del CORDIC Divider,
el número de ellos depende de sus parámetros de configuración, fundamentalmente —para
un determinado tamaño de datos— de bOF . El circuito del algoritmo High-Radix se basa en
recursos específicos, bloques DSP48 y memoria BlockRAM, y el número de los necesarios, que
para High-Radix depende en mucho menor medida de los valores de los parámetros que en el
circuito para Radix-2, es el mismo en todas las configuraciones evaluadas.
La Tabla 5.12 también indica la latencia y el periodo mínimo de reloj Post-Place &
Route de los circuitos para las configuraciones evaluadas. En los correspondientes al algoritmo
Radix-2 ambos valores dependen, dado que determina el número de etapas del circuito, de
bOF . Se observa además que el periodo mínimo se reduce conforme disminuye este parámetro.
Por su parte, el circuito para High-Radix, como ya se ha comentado, es el mismo para todas
las configuraciones.
La comparación entre ellos muestra que el circuito High-Radix tiene menos latencia pero
notablemente mayor periodo de reloj. System Generator for DSP permite modificar la latencia
del core, establecida inicialmente a 4 —el valor mínimo requerido por los valores de los
parámetros de configuración— y con un ciclo de reloj por operación. Sin embargo, dado
el proceso iterativo que se utiliza para realizar la división, el cambio de la latencia interna
complica considerablemente la forma de proporcionar datos al circuito y su operación en flujo
de datos.

5.1.4.3. Solución para la conversión de RGB a RGB normalizado

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

5.2. Implementación de los modelos del color de piel


El diseño de los circuitos digitales que implementan los modelos del color de piel es una
descripción directa de las restricciones que los definen, indicadas en las Tablas 3.3, 3.5, 3.7
y 3.9 del apartado 3.3.3, para RGB normalizado, YCb Cr , YUV y YIQ, respectivamente.
Los correspondientes esquemas se muestran en las Figuras 5.6, 5.7, 5.8 y 5.9. Cada restric-
ción consiste básicamente en sumadores y/o restadores, una multiplicación por constante y un
comparador. Los multiplicadores por constante han sido configurados para ser implementados
utilizando RAM distribuida. El conjunto de valores posibles del parámetro b de las restric-
ciones ajustables se almacena en un pequeña memoria ROM, implementada como memoria
distribuida utilizando LUTs. Cada una de ellas es de 9 posiciones —los 9 niveles de ajuste
posibles— y su anchura depende del tamaño de los datos. Las restricciones fueron definidas
de manera tal que estos valores sean enteros no negativos. Para cada una de ellas, el tamaño
está indicado en el esquema correspondiente. Como deben cumplirse todas las restricciones
para que un color sea considerado piel, las salidas de todas las comparaciones van conectadas
a una puerta AND.
La precisión del resultado está determinada por el número de bits utilizado para repre-
sentar las constantes de multiplicación y por el número de bits para representar el resultado
de las operaciones aritméticas. Para esto último, todos los sumadores, restadores y multi-
plicadores han sido configurados con la opción full precision que ofrece XSG, por la cual se
asigna a la salida el tamaño suficiente para representar su resultado sin generar ningún error.
Por su parte, el tamaño de los constantes de multiplicación ha sido establecido individual-
mente al mínimo necesario para que el resultado del circuito sea el mismo que el resultado
de las ecuaciones, y está indicado para cada constante en las figuras de las esquemas con el
formato m,n, siendo m el número de bits de la parte entera y n el de la parte fraccionaria.
Las Tablas 5.13, 5.14, 5.15 y 5.16 indican los resultados de la implementación de cada
uno de los modelos. En todos ellos se ha incluido una etapa intermedia de segmentación entre
las operaciones aritméticas y los comparadores. La salida, de 1 bit, también está registrada.
Por ello, la latencia interna de cada circuito es de 2 ciclos de reloj. Dado el reducido número
de recursos necesarios, no se ha evaluado el impacto en la precisión de los resultados de
una reducción del tamaño de las constantes y de los datos intermedios, ni de la etapa de
segmentación en el periodo mínimo de reloj Post-Place & Route.

LUTs FFs Tmin (ns) latencia


551 324 3,637 2

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

LUTs FFs Tmin (ns) latencia


858 474 3,459 2

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

b r3 GnBn × ‐0,82 ≤ a≤b

154 a 2,14 + REG b

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

Figura 5.7: Esquema de la implementación del clasificador basado en el modelo


del color de la piel en el espacio de color YCb Cr 176
5.2. Implementación de los modelos del color de piel

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,11 a‐b REG b


115 b

1
REG
1 si U ≤ 1,35V – 47
REG a 0 en otro caso
1
× 1,35 a ≤ a≤b

1,11 a‐b REG 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

LUTs FFs Tmin (ns) latencia


320 174 2,908 2

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.

LUTs FFs Tmin (ns) latencia


322 170 3,058 2

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

5.3. Sistema completo para la implementación del


reconocimiento del color de la piel
A partir de los módulos de conversión de color y de los módulos clasificadores se construye
el circuito que implementa el algoritmo de reconocimiento del color de piel propuesto en el
apartado 3.3.3. La Figura 5.10 muestra su esquema, formado por los bloques descritos en los
apartados anteriores más la lógica que se encarga de seleccionar el nivel de cada clasificador y
la que determina la combinación de las salidas de los clasificadores que constituye el resultado
del algoritmo, de acuerdo con lo indicado en la Tabla 3.13 del apartado 3.3.4.
Como se observa, la implementación hardware del algoritmo permite explotar su parale-
lismo a diferentes niveles. A más alto nivel, todos los clasificadores, junto con su correspon-
diente conversión previa al espacio de color adecuado, se evalúan a la vez. Además, como
reflejan los esquemas mostrados en los apartados previos, la evaluación de las restricciones
propias de cada modelo de color se realiza en paralelo, siendo necesarios, de acuerdo con la
latencia indicada, 2 ciclos de reloj para evaluar todos las restricciones de un clasificador y,
por tanto, todas las restricciones de todos ellos. Igualmente, el cálculo de las componentes
de cada espacio de color desde RGB también se realiza en paralelo, con la particularidad en
este caso de que la solución adoptada para la conversión a RGB normalizado lleva asociada,
por la complejidad del cálculo de la división, una latencia mayor que los demás circuitos de
conversión.
Para mantener la sincronización de los datos y que todos los clasificadores trabajen sobre
el mismo píxel en cada momento, es necesario homogeneizar la latencia en todos los caminos
de datos. Para ello, se ha optado para los circuitos de conversión a YCb Cr , YUV y YIQ por la
configuración con dos etapas de segmentación interna (la configuración 3 en las Tablas 5.4, 5.5
y 5.6), y se ha introducido en los caminos de datos de estos espacios de color el bloque retardo.
La Tabla 5.17 recoge los recursos necesarios para la implementación del circuito completo
y sus características temporales básicas. Por las opciones de configuración adoptadas durante
el diseño, sólo son necesarios recursos de propósito general: LUTs y flip-flops. Su reducido
número permite el empleo de prácticamente cualquier dispositivo FPGA de Xilinx. La cone-
xión en serie de las diferentes etapas de procesamiento —conversión, clasificación y combi-
nación de las resultados de los clasificadores— posibilita la ejecución del algoritmo en flujo
de datos. El periodo mínimo de reloj de 5,513 nanosegundos implica que es posible proce-
sar más de 180 Mpíxeles por segundo, equivalente a 590 imágenes de resolución VGA, 197
imágenes de resolución HD u 87 imágenes de resolución FullHD, por segundo. La latencia
de 17 ciclos de reloj supone un retardo de menos de 100 nanosegundos en clasificar un píxel
como perteneciente o no a la piel. Esta velocidad de procesamiento asegura el cumplimiento
del requisito de 50 milisegundos de retardo establecido en el apartado 1.4. Con imágenes de
resolución VGA, una imagen tarda en clasificarse 1,69 milisegundos desde que se recibe el
primero de sus píxeles. Es posible por tanto evaluar todos los clasificadores en aproximada-
mente 27 milisegundos y se pueden aplicar las 16 configuraciones del algoritmo a 37 imágenes
por segundo. Con imágenes de resolución HD, una imagen se clasifica en 5,08 milisegundos
desde que se recibe su primer píxel y por tanto es posible aplicar hasta 10 configuraciones
diferentes en el retardo máximo establecido. Con imágenes de resolución FullHD, una imagen
se clasifica en 11,43 milisegundos, y es posible aplicar 4 configuraciones.

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

Figura 5.10: Esquema de la implementación del algoritmo de reconocimiento del color de la


piel.

LUTs FFs Tmin (ns) latencia


3984 3819 5,513 17

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

La convolución bidimensional es una herramienta matemática básica en numerosos campos.


Convolucionar una imagen con una plantilla es un recurso ampliamente utilizado en etapas
de bajo nivel en procesamiento de imagen y vídeo para realizar un filtrado en el dominio
espacial con el fin de resaltar o anular determinadas características. La extracción de infor-
mación de interés para el reconocimiento de patrones u otros objetivos de más alto nivel
también se encuentra entre sus principales aplicaciones [González y Woods, Jain et al. b].
La actual ubiquidad de cámaras en dispositivos como smartphones y tabletas, sistemas de
video-vigilancia, automóviles, etc. ha dado lugar a una enorme gama de sistemas embe-
bidos de procesamiento de vídeo. En muchos de ellos, la convolución es una operación
fundamental. En otros muchos campos, como en el desarrollo de algoritmos de aprendi-
zaje automático [Sankaradas et al.] o en la implementación de modelos de inspiración bioló-
gica [Sriram et al., Farabet et al., Martínez et al. a, Martínez et al. b], la convolución 2D es
también de utilidad.
Para aplicaciones simples tales como la detección de bordes, suavizado o perfilado en
imágenes, el tamaño de la plantilla varía típicamente entre 3 × 3 y 7 × 7, como pone de
manifiesto la máscara personalizable que incluye entre sus herramientas de filtrado el popu-
lar software de edición fotográfico Adobe-Photoshopr . No obstante, para otras aplicaciones
como seguimiento de objetos, reconocimiento de patrones, o modelado biológico, el empleo
de plantillas de mayor tamaño puede resultar más interesante ([Savarimuthu et al., Gunn,
Veelaert y Teelen, Nixon y Aguado a, Bankman, Starck y Murtagh]).

181
6. Implementación hardware de la convolución 2D

Aunque conceptualmente sencillo, el cálculo de la convolución 2D no es trivial. La expre-


sión (6.1) define1 el sumatorio de productos que determina el cálculo de la convolución 2D
de un elemento (y, x) de una matriz de entrada I con una plantilla de dimensiones M × N :
M N
2 2
O(y, x) = h(i, j)I(y + i, x + j) (6.1)
X X

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

Figura 6.1: Carga computacional (en giga-operaciones por segundo) de la convolución 2D


para procesamiento de vídeo de diferente resolución, en función del tamaño de
ventana M × 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.

6.1. Descripción de la arquitectura para el cálculo de la


convolución 2D
En los siguientes apartados se detalla y caracteriza la arquitectura propuesta para el cálculo
de la convolución. Puesto que el resultado de la convolución 2D es la suma de múltiples
convoluciones 1D, en primer lugar se describe la arquitectura para el cálculo de la convolución
de una señal de entrada con un filtro de tamaño N en el apartado 6.1.1. La extensión al
espacio bidimensional con una matriz de entrada P × Q y plantilla M × N se presenta en el
apartado 6.1.2. Una propuesta para el control de las operaciones en los bordes de la matriz de
entrada, necesario para no desvirtuar los resultados, se justifica y explica en el apartado 6.1.3.
Estos primeros apartados describen la arquitectura para entrada binaria; en el apartado 6.1.4
se extiende para datos de bI bits, analizando las posibles alternativas. La latencia del módulo
de cálculo se presenta en el apartado 6.1.5. En el apartado 6.1.6 se estiman los recursos
necesarios para la implementación y en el 6.1.7 se presentan resultados reales para diferentes
configuraciones hasta un tamaño de plantilla de 50 × 50 coeficientes codificados con 8 bits
operando sobre datos de entrada de 8 bits.
Al estar el módulo de cálculo de la convolución 2D destinado a una aplicación de proce-
samiento de imagen, en lo sucesivo se emplearán indistintamente matriz de datos de en-
trada e imagen. De manera análoga, ventana, máscara o plantilla son términos utilizados
para referirse a la matriz de coeficientes.

6.1.1. Arquitectura básica para convolución 1×N con entrada binaria


El resultado de la convolución de una señal de entrada x con un filtro de N coeficientes
{h0 , h1 , . . . hN −1 } viene dado por la ecuación (6.2):
N −1
yn = (6.2)
X
hl xn−l
l=0

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 ×

Figura 6.2: Esquema simplificado de una unidad MAC

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
+
×  –

(a) Esquema funcional (b) Posible configuración para el cálculo del


sumatorio de cuatro productos

Figura 6.3: Bloque DSP48 slice en Virtex-7 de Xilinx

La propuesta se ha desarrollado sobre el principio básico de funcionamiento de una FPGA


de grano fino: una Tabla de Búsqueda (Look-Up Table, LUT) de n entradas es una memoria
de 2n posiciones de un bit de anchura de palabra que puede realizar cualquier función lógica
de n variables de un bit. En esta memoria cada posición almacena el valor que tal función
lógica da como resultado para una combinación de datos de entrada correspondiente a los bits
que forman la dirección de dicha posición. En definitiva, la LUT almacena la tabla de verdad
de la función. La versatilidad que para la implementación de funciones lógicas ofrece la arqui-
tectura basada en LUTs, constituye, junto con el elevado número de biestables y la variedad y
flexibilidad de las líneas de interconexión, las características básicas de los dispositivos FPGA
y son los responsables del rápido crecimiento de este tipo de circuito programable desde su
introducción en el mercado y de su enorme popularidad actual [Maxfield]. Ilustrado para
LUTs de 4 entradas, la Figura 6.4 representa dos funciones combinacionales de 4 variables de
1 bit. En cada caso, cada posición de memoria almacena el resultado de la función para una
combinación de variables de entrada idéntica a la que definen tal dirección; como los datos
de entrada conforman directamente la dirección de lectura, de cada posición de memoria se
lee el resultado de la función.
En el caso de la convolución, y con datos de entrada de 1 bit de resolución, la expre-
sión (6.2) puede producir 2N resultados diferentes. Si estos valores se almacenan en una tabla
—memoria— de 2N palabras en la que la dirección X guarda el resultado de la convolución
para la entrada {x0 , x1 , . . . xN −1 }, siendo X = N
b=0 xb 2 , el resultado de la convolución para
P −1 b

cualquier combinación de valores de entrada estará presente en el bus de datos de salida de la


memoria cuando tal combinación de valores {x0 , x1 , . . . xN −1 } forme la dirección de lectura
de la memoria. Si, por ejemplo, N toma el valor 4, el sumatorio de los productos de los coe-
ficientes h0 , h1 , h2 y h3 por cuatro datos de entrada de valores {0,1} puede producir los 16
resultados de la Figura 6.5. Almacenando estos valores en una memoria de 16 posiciones, el
resultado de la convolución de los datos {x0 ,x1 ,x2 ,x3 } con los coeficientes del filtro se obtiene
directamente de la dirección en representación binaria 0b x3 x2 x1 x0 formada por los propios
datos de entrada concatenados en el orden correcto. Se tiene, por tanto, una implementación
que no utiliza multiplicadores y en la que el tiempo necesario para realizar las operaciones es
el tiempo de acceso a dicha memoria.

186
 

  6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

  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

0 ×h3 + 0 ×h2 + 0 ×h1 + 1 ×h0 = h0 0001

0 ×h3 + 0 ×h2 + 1 ×h1 + 0 ×h0 = h1 0010

0 ×h3 + 0 ×h2 + 1 ×h1 + 1 ×h0 = h1+h0 0011

0 ×h3 + 1 ×h2 + 0 ×h1 + 0 ×h0 = h2 0100

0 ×h3 + 1 ×h2 + 0 ×h1 + 1 ×h0 = h2+h0 0101

0 ×h3 + 1 ×h2 + 1 ×h1 + 0 ×h0 = h2+h1 0110

0 ×h3 + 1 ×h2 + 1 ×h1 + 1 ×h0 = h2+h1+h0 0110

1 ×h3 + 0 ×h2 + 0 ×h1 + 0 ×h0 = h3 1000

1 ×h3 + 0 ×h2 + 0 ×h1 + 1 ×h0 = h3+h0 1001

1 ×h3 + 0 ×h2 + 1 ×h1 + 0 ×h0 = h3+h1 1010

1 ×h3 + 0 ×h2 + 1 ×h1 + 1 ×h0 = h3+h1+h0 1011

1 ×h3 + 1 ×h2 + 0 ×h1 + 0 ×h0 = h3+h2 1100

1 ×h3 + 1 ×h2 + 0 ×h1 + 1 ×h0 = h3+h2+h0 1101

1 ×h3 + 1 ×h2 + 1 ×h1 + 0 ×h0 = h3+h2+h1 1110

1 ×h3 + 1 ×h2 + 1 ×h1 + 1 ×h0 = h3+h2+h1+h0 1111

   
x0
y x1
x2
x3

Figura 6.5: Implementación del cálculo de la convolución unidimensional en una memoria de


N posiciones, con entrada binaria y N =4

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 = hkj+i si kj + i < N


0

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

Memoria distribuida 256×6

LUT 4 entradas

Figura 6.6: Recursos de memoria en FPGAs: BlockRAM y memoria distribuida

Con esta configuración de particionamiento de tabla [Meyer-Baese], agrupados los N datos


en paquetes de k datos, ya no es necesaria una tabla ROM de 2N posiciones, sino nROM tablas
ROM cada una de ellas de pROM posiciones:
N
 
nROM = (6.5)
k
pROM = 2k (6.6)
Cada memoria está particularizada para unos valores de coeficientes, estando determinado el
contenido de la posición m de la memoria j por:
k−1
dROMj (m) = (6.7)
X 0
hkj+i mi
i=0

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

y con m ∈ [0, pROM − 1] y j ∈ [0, nROM − 1].


El número de bits bROM de anchura de cada tabla debe ser tal que permita codificar todo
el rango de valores del resultado. Como cada memoria va a almacenar los valores que pueden
resultar de la suma de productos de k coeficientes con k datos, los cuales, por ser la entrada
binaria, sólo pueden tomar valores en el rango {0,1}, la anchura de palabra de las tablas
ROM necesaria viene dada por:
bROM = dlog2 (k max{ci })e si ci ∈ [0, N) (6.9)
Para ci ∈ R la expresión anterior debe tener en cuenta la resolución de la parte decimal y la
extensión de signo, pero su planteamiento es idéntico2 .
Este esquema de particionamiento de tabla requiere un árbol de sumadores para obtener
el resultado global a partir de los resultados parciales de las sub-convoluciones. Este árbol
está formado por nSUM sumadores de dos entradas:
nSUM = nROM − 1 (6.10)
2
En el apartado 6.1.7 se explica cómo los resultados de implementación son independientes del conjunto,
entero o real, al que pertenezcan los coeficientes.

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.

Buffer de ventana Módulo de Cálculo


din ROM

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

De acuerdo con la ecuación (6.2), el cálculo de la convolución de una señal de entrada


x con un filtro de N coeficientes necesita en cada instante N datos {xn , xn−1 , . . . xn−N +1 }.
Para proporcionar al módulo de cálculo estos valores, una traducción directa a hardware
contendría un módulo generador de direcciones de memoria que leyera los N datos. Este
módulo direccionaría, en los sucesivos cálculos, N veces a la misma posición de memoria.
Cuando el filtrado se aplica en flujo continuo sobre la señal de entrada, los N − 1 valores
más recientes del cálculo en cualquier dato son reutilizables para el cálculo en el siguiente.
En la implementación hardware, esto permite reducir los accesos a memoria en un factor N ,
es decir, a un único acceso por dato, si se dispone de una estructura que almacene de manera
temporal los datos mientras sean necesarios. A esta estructura se la denomina buffer de
ventana y ya ha sido incluido en el esquema de la Figura 6.7. Su configuración, con recursos
de memoria que pueden ser accedidos de manera simultánea, permite explotar el posible
paralelismo de las operaciones que realice el módulo de cálculo. Su ámbito de uso no se limita
únicamente a la convolución unidimensional sino que es generalizable para cualquier filtrado
local [Bailey a]. El reducir al mínimo el acceso a memoria externa convierte a esta solución
en la más frecuente para el almacenamiento de los datos, incluso cuando para el cálculo no
se requiere acceder a todos los datos de forma simultánea [Meyer-Baese].
Para el módulo de convolución, este buffer de ventana está formado por N − 1 registros
Di , con i ∈ [1, N − 1], conectados en serie. Si en el instante t el dato presente en la entrada
din es xn , el registro D1 contiene el dato xn−1 y, en general, el registro Di el dato xn−i . Todos

190
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

ellos comparten la misma señal de habilitación y de reset general síncrono. El tamaño de


los registros que forman el buffer de ventana depende exclusivamente de la resolución de los
datos de entrada; si la entrada es binaria, cada registro se reduce a un flip-flop.
El buffer de ventana es la implementación de una memoria caché elemental: en el primer
instante en el que forma parte del cálculo de una operación, el dato es leído de memoria
principal e inmediatamente guardado en el buffer. Este buffer es más cercano al procesador
y de mayor rapidez que la memoria principal, por lo que el tiempo de acceso a los datos
es significativamente menor; los siguientes instantes en los que el dato es requerido para un
cálculo, es obtenido de su posición en el buffer; y, finalmente, el dato permanece en el buffer
únicamente mientras sea necesario para la realización de alguna operación.
Las salidas de los Di , agrupadas en paquetes de k datos, direccionan las nROM tablas ROM.
El bus de direcciones de la tabla ROM1 está formado por el dato de entrada xn en din como
bit menos significativo y por las salidas de los primeros k − 1 flip-flops , siendo Dk−1 el más
significativo. Para las restantes ROMi la dirección la forman, de menos a más significativo,
la salida de los k flip-flops desde el Dk(i−1) hasta el Dki−1 . Con esta configuración, todas las
tablas son direccionadas simultáneamente y los datos necesarios para el cómputo de todas
las operaciones implicadas en la convolución están disponibles en paralelo en un único ciclo
de reloj.
El buffer de ventana, las tablas ROM y el árbol de sumadores completan la estructura
básica del módulo de cálculo de la convolución. Ejemplificado para el caso de 20 coeficientes
y un agrupamiento k de valor 4, la Figura 6.8 muestra los 19 registros D[1,19] conectados en
cascada, con din como señal de entrada a D1 y siendo la entrada del Di la salida del Di−1 ,
las 5 memorias para almacenar los resultados parciales de los 5 paquetes de 4 datos y los 4
sumadores necesarios para generar el resultado final.

Buffer de ventana Módulo de cálculo

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

6.1.2. Arquitectura básica para una convolución de tamaño M ×N


La convolución de una matriz de datos P × Q con una matriz de coeficientes M × N está
definida por la ecuación:
M N
2 2
O(y, x) = h(i, j)I(y + i, x + j) (6.12)
X X

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

Iy,x –1 Iy,x Iy,x +1 h –1, –1 h –1,0 h –1,1

Iy +1,x –1 Iy +1,x Iy +1,x +1 h 0,–1 h 0, 0 h 0,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

La Figura 6.9 muestra también que en la convolución 2D, especialmente en aplicaciones


de procesamiento de imagen, se suele considerar la plantilla de coeficientes centrada en el
elemento sobre el que se realizan las operaciones. Esto hace que sean necesarios datos ante-
riores y posteriores al que es el objeto de cálculo en cada instante, lo que conlleva que los
sumatorios de productos de la ecuación (6.12), en lugar de empezar en el índice 0 como en la
expresión (6.2), lo hagan en valores negativos y que los límites de los sumatorios dependan de
si N y M son pares o no. Así, si M es par, i toma valores en el intervalo − 2 + 1, 2 ; en el
h i
M M

intervalo − M2−1 , M2−1 si es impar. De manera similar, j está en los intervalos − N2 + 1, N2


h i h i

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

Buffer de ventana M×N

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

Figura 6.10: Esquema para una convolución 5 × 10

configurado para los coeficientes M (i) correspondientes, y añadiendo un árbol de sumadores


para obtener el resultado a partir de las salidas de las M filas. La Figura 6.10 muestra la
configuración para una convolución 5 × 10. En ella, cada uno de los componentes fila-i es una
instancia del componente de la Figura 6.8, en este caso para 10 coeficientes.
La suma de los resultados de cada fila requiere un árbol con mSUM sumadores de dos
operandos distribuidos en dlog2 (M )e etapas en cascada.

mSUM = M − 1 (6.13)

El número de sumadores en cada etapa se calcula de manera análoga al de sumadores nece-


sarios para el cálculo de la convolución 1 × N , y viene dado por:
M
 
 
 2(i−1) 
 
mSUM (i) =  (6.14)
2
 

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

6.1.3. Implementación del control de las operaciones en los bordes


La ecuación (6.12) da lugar a situaciones en las que la plantilla no solapa completamente la
matriz de entrada. Cuando la convolución se centra en x ∈ [1, N/2 − 1] o x ∈ [Q − N/2 + 1, Q]
o y ∈ [1, M/2 − 1] o y ∈ [P − M/2 + 1, P ] el rango de índices que definen los límites de
los sumatorios apunta a posiciones que quedan fuera de los bordes de la matriz de entrada.
A estos datos, que son necesarios para el cálculo pero que realmente son inexistentes, es
necesario asignarles algún valor.

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
... .. .. .. .. .. .. .. .. ... .. ..
. . . . . . . . . .

Constante Replicado Simétrico Circular


(con ceros)

Figura 6.13: Opciones más frecuentes para la asignación de valores en la extensión de la


imagen en los bordes

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

6.1.3.1. Explicación detallada del funcionamiento de la lógica para el control de


bordes: ejemplo para N = 20 y Q = 60

Con la intención de clarificar el funcionamiento de la lógica añadida para gestionar el cálculo


en los bordes laterales, se va a analizar paso a paso el estado de las señales de la arquitectura
para una imagen de 60 píxeles de ancho convolucionada con una plantilla de 1×20 coeficientes.
El cronograma de la Figura 6.17 muestra el estado de los elementos del buffer de ventana,
los valores en las líneas de dirección ROMn bm de las tablas ROM asociadas a dichos elementos
y los estados de las señales de la lógica para el control de las operaciones en los bordes. La
primera fila de la tabla, correspondiente a din , muestra el dato que se recibe en la entrada
del módulo. En cada instante, su valor coincide, para hacer más clara la explicación, con el
de la coordenada x del píxel de la imagen al que corresponde. Por tanto, los datos toman
valores3 consecutivos de 1 a 60 que se incrementan en cada paso. Por el carácter continuo
del flujo de datos, al dato con valor 60, situado en el último píxel de una línea, le sigue un
dato con valor 1, situado en el primero de la línea siguiente. La entrada progresiva de datos,
desde su fuente o una unidad de almacenamiento a la que se accede de manera secuencial y
en el sentido indicado en la Figura 6.11, da lugar al desplazamiento de datos hacia la derecha
por el buffer de ventana que refleja la tabla. Este comportamiento, en el que son los datos de
entrada los que circulan por el buffer, reproduce en hardware la idea conceptual de la ventana
que se desplaza sobre la imagen que reflejan las figuras 6.18, 6.19, 6.20 y 6.21. El dato central
de la convolución en cada instante se encuentra en el flip-flop D10 y la fila correspondiente
en la tabla muestra la secuencia de sus valores. Los datos anteriores, de coordenada x menor
en la matriz, lo están en las filas correspondientes a los flip-flops de D11 a D19 . Los datos
posteriores, situados en posiciones con coordenada x superior, lo están en las de los flip-flops
D1 a D9 y en la propia entrada din . Cada paso en la tabla está sincronizado con el flanco
activo de la señal de reloj. Como la arquitectura realiza todas las operaciones en paralelo en
un único ciclo de reloj, cada columna ti representa un nuevo estado en el proceso de cálculo
de la convolución de la imagen con la ventana.
Inicialmente, en el instante t0 representado en la Figura 6.18, se parte de que el elemento
central de la convolución es I(y, 42) y los datos necesarios para el cálculo son los I(y, 42+j) con
j ∈ [−9, 10], es decir, los de coordenada x en el rango desde 33 hasta 52. En esta situación,
con todos los datos correspondientes a posiciones que existen en la imagen, los elementos
del buffer de ventana contienen los datos apropiados y por tanto los valores en sus salidas
direccionan directamente las tablas ROM. Para ello, las señales resetI y resetD permanecen
desactivadas, y todos los Ri valen cero. Es el estado S1 del diagrama de estados funcional de
la Figura 6.18.
Al desplazarse la máscara sobre la imagen hacia la derecha el límite superior del sumatorio
de la expresión (6.12) se acerca progresivamente al borde de la imagen hasta que, en el instante
t9 del ejemplo, la ventana queda centrada en el dato I(y, 51). En este momento, representado
en la Figura 6.19, el cálculo de la convolución requiere el dato I(y, 61), que no existe en la
imagen de entrada. En su lugar, el flujo continuo de datos hace que el valor presente en din
sea en realidad I(y + 1, 1) = 1, el primer píxel de la línea siguiente. Para esta situación,
la técnica de extensión con ceros establece que el valor apropiado para este dato es cero,
pero din no puede ser reiniciado puesto que el valor de I(y + 1, 1) forma parte del cálculo de
próximas convoluciones y debe permanecer en el buffer de ventana. La activación de la señal
3
Se asume esto con fines únicamente ilustrativos para mostrar cómo sucede la anulación de los valores
apropiados en cada instante. Tal y como se ha presentado la arquitectura hasta este momento sólo admite
datos de entrada de 1 bit, y en consecuencia no podría almacenar valores en este rango. La extensión para
datos de bI bits se presenta en el apartado 6.1.4

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

I(y,33) I(y,42) I(y,52)


S2

S3

Figura 6.18: Ejemplo de control de operaciones en los bordes de la imagen: instante t0

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

I(y,42) I(y, 51) I(y,61) S2

S3 resetD = ‘1’
resetI = ‘0’

Figura 6.19: Ejemplo de control de operaciones en los bordes de la imagen: instante t9

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

I(y,51) I(y,60) I(y,70)

Figura 6.20: Ejemplo de control de operaciones en los bordes de la imagen: instante t18

En el cálculo de la siguiente convolución, en el instante t19 representado en la Figura 6.21,


la ventana se centra en el primer píxel de la siguiente línea I(y + 1, 1) y el sumatorio de la
expresión (6.12) da lugar a una situación completamente diferente. Ahora se requieren los
datos I(y + 1, 1 + j) con j ∈ [−9, 10], de los que desde I(y + 1, −8) hasta I(y + 1, 0) no
existen en la imagen. Con la estructura basada en el buffer de ventana estos valores van a ser
leídos de los registros D11 a D19 , que en este instante contienen los últimos datos de la línea
anterior, desde I(y, 60) hasta I(y, 52) respectivamente. Por tanto, ahora es necesario anular el
contenido de estos biestables antes de que direccionen de manera incorrecta las tablas ROM
que calculan la convolución. A diferencia de las situaciones en los instantes anteriores, los
valores que contienen estos flip-flops ya no son necesarios para futuros cálculos, por lo que
la solución más eficiente es forzar su reinicio. De esto se encarga la señal resetI, que había
permanecido desactivada hasta este instante y que debe estar activada, por tratarse de un
reset síncrono, cuando la convolución se centre en el primer dato de una fila de la imagen. Es
el estado S3 del diagrama de estados funcional de la Figura 6.21.

S1

I(y +1, –8) I(y +1,1) I(y +1,11) S2

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

6.1.4. Extensión para entradas de bI bits


La Aritmética Distribuida (Distributed Arithmetics, DA) [Burrus, White] consiste en una
reordenación de las operaciones que permite mejorar la eficiencia computacional. Dada una
secuencia de datos de entrada {x0 , x1 , . . . xn } de bI bits, con {xn0 , xn1 , . . . xnbI−1 } los bits que
forman la representación binaria de cada xn de manera que:
I −1
bX
xn = xnb 2b (6.15)
b=0

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

es decir, es posible calcular el sumatorio de productos como la suma ponderada de acuerdo


con su peso del producto de cada cada uno de los bits de los datos por los coeficientes. Si
los coeficientes son conocidos a priori, los posibles resultados del producto de un bit por los
coeficientes pueden ser calculados a priori y almacenados en una tabla. Esto es exactamente
lo que se ha descrito en el apartado 6.1.1 para el cálculo de la convolución con una entrada
binaria. Partiendo de ella, el cálculo de la convolución con datos de bI bits se obtiene sumando
los resultados del sumatorio de productos de cada uno de los bits con el peso correspondiente.
Obviamente, los coeficientes son los mismos para todos los bits de los datos, por lo que la tabla
con los posibles resultados de los coeficientes por los valores es idéntica. Esto implica que la
DA ofrece todo un rango de posibles niveles de paralelización: desde la solución totalmente
serie (bit-serial) en la que existe una única tabla que es utilizada iterativamente por los
bI bits hasta la totalmente paralela con bI instancias de las tablas para el cálculo de un bit,
pasando por las intermedias que trabajen con dígitos (digit-serial) del tamaño que se considere
apropiado. De esta manera, la aritmética distribuida ofrece diferentes grados de paralelismo
a nivel de bit en operaciones aritméticas que permiten alcanzar el compromiso entre recursos
necesarios y velocidad de procesamiento que mejor se adapte a los características de una
aplicación.
Por estar basadas en LUTs, las FPGAs son la plataforma ideal para la implementación
de la aritmética distribuida [Meyer-Baese]. El hecho de que los coeficientes tengan que ser
conocidos a priori para precalcular los resultados no es una limitación porque no conlleva que
tengan que ser constantes. Las LUTs son memoria SRAM cuyo contenido puede ser modificado
no sólo en tiempo de programación sino también en funcionamiento. Gracias a ello, las tablas
pueden ser actualizadas para contener los resultados producidos por coeficientes que cambian
dinámicamente.
Con lo anterior, la solución descrita en el apartado 6.1.1 para el cálculo de la convolución
sobre una entrada binaria es fácilmente extensible a cualquier tamaño de dato de entrada.
La estructura de la configuración serie para un módulo 1 × 10 y datos de bI bits se muestra
en la Figura 6.22. En ella, los cálculos se realizan en serie a nivel de bit sobre los datos de
entrada usando registros de desplazamiento de bI bits conectados en cascada que reemplazan
a los flip-flops en el buffer de ventana. Una unidad de suma y desplazamiento acumula los

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

Para un módulo M × N el planteamiento de aritmética distribuida se puede extender


un nivel más y abarcar el sumatorio de las M filas. Con ello, en lugar de un acumulador en
cada fila se puede utilizar un único acumulador que calcule la suma ponderada del resultado
del módulo M × N de cada bit, tal y como muestra la Figura 6.24. Con este esquema, el
árbol de sumadores de filas trabaja con datos bI bits más pequeños y es necesario un único
acumulador. La estructura serie asegura el mínimo consumo de recursos a cambio de reducir
en un factor bI el throughput del módulo.
La estructura de la configuración totalmente paralela se muestra en la Figura 6.25 para
una configuración M × N con datos de 4 bits. Está formada por bI instancias idénticas del
módulo M × N de un bit, más los bI − 1 sumadores necesarios para obtener el resultado final
a partir del resultado parcial de cada bit, teniendo en cuenta sus pesos correspondientes en
los datos de entrada. Esta solución ofrece la más alta velocidad de procesamiento a costa de
un máximo consumo de recursos.

204
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

Actualiza cadena de registros de desplazamiento: cada bI ciclos de reloj

dato entrada ti dato entrada ti+1 dato entrada ti+2

dato entrada ti dato entrada ti+1


Despl. serie bits dato
en el registro

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

En el apartado 6.1.6 se estiman los recursos necesarios para la implementación de ambas


soluciones. En el apartado 6.1.7 se recogen resultados de implementación de diferentes con-
figuraciones. Naturalmente, el rango de soluciones intermedias ofrece diferentes compromisos
entre velocidad y consumo de recursos. La configuración final dependerá de los requisitos de
la aplicación y las restricciones de la plataforma hardware sobre la que se implemente.

6.1.5. Latencia del módulo de cálculo


La latencia del módulo de cálculo está determinada por el número de ciclos de reloj necesarios
para obtener en la salida el resultado correspondiente al dato I(y, x), almacenado en el registro
central del buffer de ventana M × N . Como las tablas ROM, formadas con las LUTs, son
asíncronas, la latencia depende exclusivamente del número de etapas de segmentación en los
árboles de sumadores. Considerados éstos totalmente segmentados, la latencia para el módulo
de cálculo M × N de datos de bI bits en la configuración totalmente paralela viene dada por:
N
 
Latencia = log2 + dlog2 (M )e + dlog2 (bI )e (6.18)
k
Esta expresión corresponde también a datos de entrada de un bit de resolución, donde para
bI = 1 el término dlog2 (bI )e se anula.
Para la configuración serie, el árbol que suma los bI bits no existe pero son necesarios bI
ciclos para calcular el resultado de cada dato más la latencia de árboles de sumadores de las
sub-convoluciones y las M filas:
N
 
Latencia = log2 + dlog2 (M )e + bI (6.19)
k

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

6.1.6. Estimación de los recursos necesarios


Los recursos necesarios para la implementación de la arquitectura propuesta vienen determi-
nados por el tamaño M × N de la plantilla, la resolución de los datos bI y de los coeficientes
bCOEF , y el tamaño del agrupamiento k de datos. De estos factores, los primeros dependen
de la aplicación en la que se incluya el cómputo de la convolución, mientras que el valor de
k puede ser fijado por el diseñador hardware. Tal y como ponen de manifiesto las expre-
siones (6.5), (6.6), (6.9) y (6.10), incrementar k con N constante permite reducir el número
de tablas ROM necesarias y también el árbol de sumadores, pero al mismo tiempo implica
duplicar la profundidad pROM de cada tabla y la posible necesidad de aumentar también su
anchura bROM para albergar el rango de resultados posibles de los k productos de datos por
coeficientes.

206
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

din 1-M (0)

en 1-M
reset 1-M

din 1-M(1)

O(y,x)
din 1-M(2)

din 1-M(3)

Etapas segmentación

Figura 6.25: Esquema de la estructura paralela para una configuración M × N y datos de 4


bits

Con el esquema de particionamiento de tabla adoptado, las tablas ROM se construyen


como memoria distribuida y el número total de LUTs de n entradas ocupadas en su imple-
mentación viene dado por:

LUTsROM = M · 2k−n bROM · nROM (6.20)


l m

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

Por su parte, flip-flops son utilizados en el buffer de ventana y en la segmentación de


los árboles de sumadores. El buffer de ventana requiere N − 1 flip-flops para almacenar la
secuencia de datos de entrada y N/2 − 1 para la lógica de control de los bordes:
3
 
FFsbuffer =M N −2 (6.23)
2

Los árboles de sumadores se consideran totalmente segmentados, tal y como se muestra


en las figuras 6.8 y 6.10, y el número máximo de flip-flops para ello está determinado por:

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.

LUTs de 4 entradas LUTs de 6 entradas


103 103
40 40

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

M=10 M=20 M=30 M=40 M=50

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
 

con i ∈ [1, dlog2 bI e].

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

Figura 6.29: Evolución de bROM en función de k para coeficientes de 4 bits

Los desplazamientos hacia la izquierda para ajustar a su peso el resultado de la convolución


de cada bit no tienen coste hardware, pero extienden el tamaño de los datos de entrada al
árbol de sumadores. Debido a ello, el sumador j en el nivel i, con j ∈ [1, bI SUM (i)], tiene un
tamaño diferente del resto de sumadores en el mismo nivel, como se ejemplifica para una
convolución 30 × 30 de datos de entrada de 8 bits y coeficientes de 8 bits en la Figura 6.30.
Con el propósito de realizar una estimación del peor caso, si se considera que todas las
entradas al primer nivel de sumadores tienen el tamaño de la mayor:

B = bROM + dlog2 nROM e + dlog2 M e + bI − 1 (6.26)

el número de LUTs para implementar el árbol de sumadores viene dado por:


dlog2 bI e
LUTsSUM bI = bI SUM (i)·(B + i − 1) (6.27)
X

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

Si de nuevo se considera que el tamaño de los datos de entrada al árbol de sumadores es


de B bits, el número máximo de flip-flops necesario está determinado por:
dlog2 bI e
FFsSUM bI = bI FF (i) · (B + i) (6.29)
X

i=1

Para datos de tamaño estándar de 8 o 16 bits, y dado el tamaño de las convoluciones


consideradas, el número de recursos necesario para sumar las bI instancias de módulos M ×N
es dos órdenes de magnitud menor que el necesario para implementar dichas bI instancias y,
por la tanto, poco significativo.
En cuanto a los recursos necesarios para la implementación serie sobre los bits de datos,
en cada uno de los M módulos 1 × N la cadena de flip-flops es sustituida por N registros
de desplazamiento de bI bits, cada uno de los cuales requiere bI flip-flops y bI LUTs. La

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

implementación de las tablas ROM, su árbol de sumadores, la lógica para el control de


bordes y el árbol de sumadores de los M módulos no cambian, por lo que son válidas las
expresiones indicadas anteriormente para un bit, a las que deben sumarse M ·N ·bI LUTs y
M ·N ·(bI − 1) flip-flops correspondientes a los registros de desplazamiento. El acumulador
que suma los resultados de cada bit de acuerdo con su peso tiene el tamaño del resultado
máximo (bROM + dlog2 nROM e + dlog2 M e + bI + dlog2 bI e − 1), y en cualquier caso sus recursos
son insignificantes comparados con el resto.

6.1.6.1. Estudio de la implementación de tablas ROM con BlockRAM

Las anteriores estimaciones de recursos están referidas a la implementación de las tablas


ROM con memoria distribuida. Sin embargo, tal y como se presentó en el apartado 6.1.1,
las FPGAs ofrecen otra alternativa que para memorias de tamaño en el orden de los Kbits
son una opción más eficiente. Los bloques específicos BlockRAM de memoria RAM síncrona
están destinados a ser la opción más eficiente para el almacenamiento de datos, implementar

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.

Tabla 6.1: Relación de las configuraciones BlockRAM con k y bROM

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:

bROM > bCOEF + log2 k (6.30)

es decir, la profundidad de la memoria y la anchura de la tabla deben satisfacer:


2bROM
> max{ci } (6.31)
k
De acuerdo con esto, la configuración BlockRAM con k = 12 y bROM = 4 sólo es válida
para coeficientes con valores {0,1}. Si los coeficientes son de 2 bits, es necesario adoptar la
configuración bROM = 9 y k = 11 para poder representar todo el rango de valores posibles. De
esos 9 bits, 4 de ellos no se utilizan. De hecho, esta configuración es válida para coeficientes
de hasta 5 bits. Para coeficientes de entre 6 y 14 bits debe utilizarse la configuración k = 10
y bROM = 18.
Se trata por tanto de una solución de mayor rigidez que la memoria distribuida para ajus-
tarse al tamaño de la tabla que se desea implementar. No obstante, es la proporción entre
recursos de propósito general y BlockRAM en el layout de la FPGA el criterio de mayor peso
en la decisión de optar por la solución basada en LUTs. La Figura 6.31 muestra el espacio
de recursos que ofrece el dispositivo Virtex-4 de Xilinx. En el eje horizontal se representa
el número de recursos de propósito general (LUTs y flip-flops) y en el vertical el número
de bloques BlockRAM. Se incluyen todas las familias Virtex-4, que como se aprecia ofrecen
diferentes relaciones entre ambos tipos de recursos. Sobre este espacio de recursos están indi-
cados los estimados necesarios para implementar diferentes configuraciones de la convolución
2D con la arquitectura propuesta. En todos los casos, la solución basada en BlockRAM re-
quiere un dispositivo FPGA de mayor tamaño que la basada en memoria distribuida. Las

213
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

Tablas con BlockRAM


2-bit coef. 8-bit coef.
  Tablas con Memoria Distribuida 1-bit dato 8-bit dato Paralelo

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.

6.1.7. Resultados de la implementación


Las expresiones del apartado 6.1.6 permiten estimar el número de recursos necesarios para
una configuración, evaluar el impacto de cada variable y analizar el coste en espacio de la
resolución de datos y coeficientes. No obstante, los resultados finales de ocupación dependen
de posibles optimizaciones que puedan realizar las herramientas de síntesis y de Place&Route.
En este apartado se recogen resultados reales para un rango de tamaños M × N . Como se
indicó en la introducción de este capítulo, el diseño y la validación de los módulos han
sido realizados con la herramienta System Generator for DSP de Xilinx. Su integración con
Matlab/Simulink ha posibilitado la eficaz verificación de los resultados de la convolución.
La síntesis y la implementación se han realizado con XST y Xilinx ISE 14.7 para FPGA
Virtex-4. La configuración de las principales opciones de estas herramientas de síntesis e
implementación se resumen en la Tabla 6.2. Los datos de recursos y periodos mínimos son

214
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

valores medios obtenidos de las implementaciones de plantillas de coeficientes aleatorios. De


acuerdo con las conclusiones del apartado 6.1.6, buscando el consumo mínimo de LUTs y la
simplificación 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. Dado que las LUTs en la familia Virtex-4 son de cuatro entradas,
en todos los diseños implementados el valor de k se ha fijado igual a 4.

Síntesis XST Optimization Goal Velocidad


Optimization Effort Normal
Shift Register Extraction Habilitado/Deshabilitado
Register Duplication Habilitado
Equivalent Register Removal Habilitado/Deshabilitado
Register Balancing Deshabilitado
Implementación Perform Timing-driven packing & placement Deshabilitado
Map Effort Level Medio
Replicate Logic Allow Logic Level Reduction Habilitado
Optimization Strategy Balanceado
Place and Route Mode Normal
Place and Route Effort Estándar

Tabla 6.2: Estado de las principales opciones de configuración de las herramientas de síntesis
e implementación

Al haberse contemplado la habilitación y la deshabilitación de Equivalent Register Re-


moval y de Shift Register Extraction, se tienen las tres posibles configuraciones de síntesis
recogidas en la Tabla 6.3.

Configuración op1 Equivalent Register Removal Deshabilitada


Shift Register Extraction Deshabilitada
Configuración op2 Equivalent Register Removal Habilitada
Shift Register Extraction Deshabilitada
Configuración op3 Equivalent Register Removal Habilitada
Shift Register Extraction Habilitada

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

6.1.7.1. Resultados para datos de entrada de 1 bit

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

N y, para cada N , según aumenta M . El error cometido en la estimación de los flip-flops


es algo mayor y se debe a la optimización por parte de la herramienta de diseño XSG del
tamaño de los registros incluidos para igualar las latencias de todas las ramas en los árboles
de sumadores. La tasa es de 5,8 % para 20 × 20, de 1,2 % para 30 × 30 y de 0,7 % para 50 × 50.
Al igual que para las LUTs, la diferencia se reduce conforme aumenta N y, para cada N ,
conforme aumenta M . Para todos los tamaños M × N , las estimaciones de LUTs y flip-flops
representan el peor caso, por lo que las expresiones del apartado 6.1.6 permiten estimar con
precisión los recursos máximos necesarios para cualquier configuración.
Los datos de la configuración op2 han sido obtenidos activando la opción de síntesis
Equivalent Register Removal y en ellos se observa que la diferencia en el consumo de flip-
flops coincide exactamente con el número de ellos necesarios para implementar el control
de bordes en M − 1 filas. La cadena de N − 1 flip-flops Ri mostrada en la Figura 6.16 se
comporta igual, con la misma estructura y las mismas entradas, en las M filas y por tanto
no es necesario replicarla M veces. Para los tamaños 1 × N esta opción de optimización no

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 .

Módulo 1 × 50 Módulo 1 × 30 Módulo 1 × 20

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

Tabla 6.5: Periodo mínimo Post-Place&Route de 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

Para la configuración op2, la herramienta de síntesis detecta que la cadena Ri es idéntica


en todas las filas y es suficiente una única instancia, tal y como demuestran los datos de
recursos ocupados. Como las LUTs que controlan el valor de las salidas de los Di en las
entradas de dirección de las tablas ROM siguen siendo necesarias, esta optimización del
consumo de flip-flops supone que no todos los elementos de las cadenas Ri pueden estar
colocados cerca de dichas LUTs y, en definitiva, los caminos de las señales desde ellos hasta
las correspondientes LUTs son más largos. La Tabla 6.5 muestra que el incremento del periodo
mínimo es significativo y mayor conforme aumenta el tamaño de la plantilla, llegando a ser de
casi el 20 % para el mayor tamaño considerado debido exclusivamente a la opción de síntesis
configurada.
Por su parte, para los casos en que la optimización es posible, el intercambio de flip-flops
por LUTs de la configuración op3 mejora la velocidad con respecto a la opción op2, pero no
llega a los valores de la opción op1. Ofrece por tanto una solución intermedia desde este punto
de vista temporal y también de los recursos. Para las configuraciones donde la optimización
no es posible, como es el caso de 30 × 30, op3 tampoco tiene impacto en las prestaciones
temporales.
Independientemente de la configuración de opciones del proceso de síntesis, los datos de
ambas tablas demuestran que debido al paralelismo y a la segmentación, el impacto en el
periodo mínimo Tmin del aumento de M o N es soportado en gran medida por el incremento
del consumo de recursos. La Figura 6.33 representa los recursos ocupados y el periodo mínimo
de reloj para la implementación de la convolución de una entrada binaria con plantillas desde
15 × 15 hasta 50 × 50 coeficientes de 2 bits. En este rango de tamaños de plantillas, los
recursos de M1 × M1 a M2 × M2 aumentan aproximadamente en una relación (M2 /M1 )2 , lo
que implica que se duplican con un incremento de 1,4 en la dimensión de la plantilla. Por
su parte, el coste a nivel de ciclo de reloj está repartido entre un incremento de Tmin y el
aumento de la latencia recogido en la ecuación (6.18). El comportamiento no es tan predecible
como el de los recursos, pero para los datos de la gráfica el periodo mínimo se incrementa
aproximadamente un 20 % de 15 × 15 a 50 × 50.
Respecto a la resolución de los coeficientes, las gráficas de la Figura 6.34 muestran los
recursos ocupados por la implementación de diferentes tamaños M × N y coeficientes desde
2 (bROM = 4, si k = 4) hasta 8 bits (bROM = 10), con la configuración de síntesis op3. En todos
los casos, la relación es lineal y corresponde aproximadamente a un incremento de 0,29 · M · N
flip-flops por bit de bROM y de 0,54 · M · N LUTs por bit de bROM . El impacto en las LUTs
es mayor debido a que el tamaño de bROM determina directamente la anchura de las tablas
ROM, que se construyen exclusivamente con LUTs. Los flip-flops y una parte alícuota de las
LUTs se emplean en los árboles de sumadores, cuyo primer nivel recibe datos de entrada de
bROM bits. Las gráficas de la Figura 6.35 confirman un comportamiento temporal frente al

218
6.1. Descripción de la arquitectura para el cálculo de la convolución 2D

103
8 LUTs 5,5

Periodo mínimo de reloj (ns)


6 Flip-flops 5
Número de recursos

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

Figura 6.33: Recursos ocupados y periodo mínimo de reloj para la implementación de la


convolución de una entrada binaria con plantillas desde 15 × 15 hasta 50 × 50
coeficientes de 2 bits

incremento de bROM análogo al descrito para el tamaño de la plantilla: el mayor tamaño de


los coeficientes es absorbido por el mayor consumo de recursos mencionado y apenas tiene
influencia en el periodo mínimo de reloj.

20×20 30×30 50×50


103 103 103 LUTs
4 8 16
Número de recursos

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

Figura 6.34: Impacto de bROM en los recursos ocupados

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.

6.1.7.2. Resultados para datos de entrada de 8 bits

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

20×20 30×30 50×50


Periodo mínimo de reloj (ns)

5,5 5,5 5,5

5 5 5

4,5 4,5 4,5

4 4 4

3,5 3,5 3,5


4 6 8 10 4 6 8 10 4 6 8 10
bROM bROM bROM

Figura 6.35: Impacto de bROM en el periodo mínimo de reloj

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

Periodo mínimo de reloj (ns)


100 Flip-flops 5,5
Número de recursos

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

Periodo mínimo (ns)


Número de recursos
45 LUTs
6.0
40
35 Flip-flops 5.5
30
5.0
25
20 4.5
4 6 8 10 4 6 8 10
bROM bROM

Figura 6.37: Impacto de bROM en los recursos y la frecuencia de funcionamiento de la imple-


mentación paralela de 30 × 30 con datos de 8 bits

6.1.7.3. Estudio de la segmentación

La segmentación completa del camino de datos maximiza el paralelismo a nivel de instrucción


y asegura la máxima velocidad de procesamiento. No obstante, si los requisitos temporales
de la aplicación lo permiten, se pueden conseguir diferentes compromisos entre velocidad y
recursos consumidos por medio del diseño con diferente número de etapas de segmentación.
La reducción del número de etapas conlleva un ahorro en flip-flops a costa de caminos combi-
nacionales de mayor longitud y por tanto un periodo de reloj mínimo mayor.
La Tabla 6.8 muestra el impacto de la segmentación en el árbol completo de sumadores
para una configuración 30 × 30 y diferentes tamaños de datos y coeficientes. La relación 1:x
representa el nivel de segmentación desde las salidas de datos de las tablas ROM hasta el
puerto de salida de resultado final, con una etapa de registros de segmentación por cada x
niveles en la estructura de sumadores. El número de LUTs ocupadas no se ve afectado y por
tanto no se incluye.
30 × 30
2-bit coef. 1-bit data 8-bit coef. 8-bit data
segmentación 1:1 1:2 1:3 1:1 1:2 1:3
Flip-flops 2288 1355 1098 31303 16795 11851
Tmin (ns) 4,65 6,41 8,19 5,66 7,73 9,80

Tabla 6.8: Resultados de implementación para diferentes niveles de segmentación

6.2. Buffering de datos


El módulo de cálculo de la convolución 2D necesita acceder simultáneamente a M · N datos,
disponibles todos ellos durante un mismo ciclo, para poder alcanzar la tasa máxima de proce-
samiento de un dato de entrada por ciclo de reloj. Estos datos de entrada están habitualmente
almacenados en memoria externa SRAM o DRAM, que en los sistemas de procesamiento de
imagen o vídeo forma parte de una capturadora de fotogramas (frame grabber) que puede
contener una o varias imágenes. Si todos los datos del cálculo de una operación de convolución
deben ser leídos de esta memoria externa, los M · N accesos4 a ella limitan la velocidad de
4
Se considera para esta estimación que no existe empaquetamiento de datos: la anchura de la palabra de
datos de la memoria coincide con el tamaño de los datos sobre los que se opera y, por tanto, hay un único
dato en cada dirección de memoria.

222
6.2. Buffering de datos

procesamiento: incluso con memorias de tiempo de acceso de pocos nanosegundos, su ancho


de banda no puede satisfacer la tasa de datos requerida y el proceso de lectura se convierte
en el cuello de botella de la arquitectura. De hecho, como se comentó en la introducción del
capítulo, este elevado número de accesos a memoria por operación hace del algoritmo de cál-
culo de la convolución 2D un habitual caso de estudio en comparaciones de las prestaciones
de diferentes plataformas para la implementación de algoritmos de procesamiento de imagen
y vídeo.
La flexibilidad de los recursos y la arquitectura de las FPGAs ofrece soluciones para cons-
truir espacios internos para el almacenamiento temporal de datos (buffers) que proporcionan
acceso rápido y simultáneo a los datos, logrando con ello minimizar los accesos a memoria
externa. El buffer de ventana incluido en el módulo de cálculo propuesto y descrito en el
apartado 6.1.1 constituye un esquema de buffering parcial (Partial Buffering, PB) que reduce
a M el número de accesos a memoria externa necesarios para cada operación. Como muestra la
Figura 6.38, M ·(N −1) de los M ·N datos necesarios en cada operación han sido previamente
utilizados en la operación inmediatamente anterior. Gracias a la conexión en cascada de sus
N − 1 registros, cada fila del buffer de ventana mantiene accesibles los datos de entrada
leídos de la memoria durante los últimos N − 1 ciclos. El dato I(y, j) de entrada en cada fila
permanece en el buffer desplazándose por la cadena de registros durante las N operaciones
de convolución centradas en los datos I(y, x), con x ∈ [j − (N − 1)/2, j + (N − 1)/2], en las
que es utilizado5 ; después el dato sale del buffer.

Datos reutilizables

Ventana de datos M ×N en I(y,x)

Iy,x

Ventana de datos M ×N en I(y,x+1)

Figura 6.38: Reusabilidad de datos en cálculos sucesivos de la convolución 2D a nivel


horizontal

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.

Ventana de datos M ×N en I(y,x)


Datos reutilizables

Iy,x

Ventana de datos M ×N en I(y+1,x)

Figura 6.40: Reusabilidad de datos en cálculos sucesivos de la convolución 2D a nivel vertical

La combinación de ambas posibilidades de reutilización de datos da lugar a una configu-


ración en la que para la convolución centrada en I(y, x) sólo es necesario leer de memoria
externa el dato I(y + (M − 1)/2, x + (N − 1)/2). Todos los datos reutilizables son guardados
en un sistema de buffering completo (Full Buffering, FB) compuesto por buffers de línea
y ventana, y el número de accesos a memoria externa se limita a uno, reduciéndose en un
factor M · N con respecto a la configuración original. La Figura 6.41 muestra el esquema
simplificado. El buffer de ventana es el incluido en el módulo de cálculo y está formado por
M filas de N − 1 registros conectados en cascada. Los M − 1 buffers de línea están conectados
en cascada para almacenar M − 1 filas consecutivas de datos. Al mismo tiempo, la salida de
cada buffer de línea está conectada a la fila del buffer de ventana correspondiente. La entrada
de datos alimenta simultáneamente la primera fila del buffer de ventana y el primer buffer de
línea. Es necesario que una fila de datos esté en un buffer de línea propio e independiente del
resto para poder disponer de los datos de las M − 1 líneas en paralelo.
Este sistema de buffering completo constituye una caché de dos niveles. El buffer de
ventana actúa como caché L1, más cercana al procesador —está incluido en el módulo de
cálculo de la convolución 2D— y que contiene únicamente los datos compartidos por una

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

Iy +2,x +2 Iy +2,x +1 Iy +2,x Iy +2,x –1 Iy +2,x –2


Iy,x
buffer de línea 1
Iy +1,x +2 Iy +1,x +1 Iy +1,x Iy +1,x –1 Iy +1,x –2

buffer de línea 2
Iy ,x +2 Iy ,x +1 Iy ,x Iy ,x –1 Iy ,x –2

Dato de entrada desde memoria externa buffer de línea 3


Iy –1,x +2 Iy –1,x +1 Iy –1,x Iy –1,x –1 Iy –1,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

Figura 6.41: Esquema simplificado de buffering completo para 5 × 5

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.

6.2.1. Implementación optimizada de los buffers de línea en FPGA


Típicamente [Bailey a], un buffer de línea se implementa en una FPGA utilizando sus bloques
específicos de memoria, denominados BlockRAM en los dispositivos de Xilinx, debido a
su grado de flexibilidad de configuración, su alta velocidad y su baja latencia. Con ellos
se configura una memoria de Q posiciones y bI bits de anchura de palabra, siendo Q el
número de columnas de la matriz de entrada y bI la resolución de los datos, en la que cada
posición almacena un dato de la línea. La secuencia de datos de entrada se almacena en
posiciones sucesivas de memoria, direccionadas por un contador que se incrementa de manera
automática en cada ciclo de operación. Las direcciones de lectura y escritura son idénticas,
ambas determinadas por este contador. La BlockRAM se configura con la opción Read Before
Write, por lo que el dato leído es el contenido antes de ser reemplazado por un nuevo dato. En
consecuencia, el dato leído en un instante fue el de entrada Q ciclos antes, y un dato estará
disponible en la salida del buffer de línea Q ciclos después de entrar. Con el esquema de la
Figura 6.41, el dato de salida del primer buffer de línea es el correspondiente exactamente
a la fila anterior al de entrada; el de salida del segundo buffer de línea, una fila anterior a
éste; y así sucesivamente. El esquema simplificado de un buffer de línea basado en BlockRAM
conteniendo los Q datos de la fila y se muestra en la Figura 6.42.
Por la proporción de recursos de propósito general y bloques específicos de memoria en
la estructura interna de las FPGAs, esta solución basada en BlockRAM es más eficiente
que construir los buffers de línea con registros implementados con flip-flops, para cualquier
tamaño de imagen estándar. A modo de ejemplo, la Figura 6.43 indica los bloques BlockRAM
y los flip-flops necesarios para buffers de línea de 640 posiciones y datos de 8 bits, sobre el

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

espacio de recursos de la familia LX de Virtex-4. A pesar de que la familia LX tiene la menor


proporción de BlockRAM frente a slices y por ello constituye el peor caso en este análisis, se
observa claramente que la solución con BlockRAM ocupa proporcionalmente muchos menos
recursos que la basada en flip-flops.

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

Figura 6.43: Número de bloques BlockRAM y de flip-flops necesarios para implementar M −1


buffers de línea con Q = 640 y bI = 8, representados sobre el espacio de recursos
de las FPGAs de la familia LX Virtex-4

Sin embargo, la implementación directa del esquema FB con la configuración descrita


para los buffers de línea puede resultar aun en un uso muy ineficiente de la BlockRAM. En
función de la anchura Q de la imagen, de la resolución bI de los datos y del número de filas
M de la plantilla, el número de bloques BlockRAM requeridos puede sumar una capacidad
de memoria muy superior a la realmente necesaria e incluso condicionar la viabilidad de
una plataforma hardware. En la familia Virtex-4 de Xilinx cada bloque BlockRAM puede
almacenar 18K bits de datos con diferentes relaciones de profundidad p y anchura b: 16K×1,
8K×2, 4K×4, 2K×9, 1K×18, 512×36. Para la aplicación descrita en el capítulo 4 se emplean
30 buffers de línea de 128 posiciones de 1 bit cada uno y cualquiera de las relaciones p × b
anteriores implica una considerable infrautilización de memoria en la BlockRAM. La configu-
ración 16K×1 ajusta la anchura al tamaño de datos pero ofrece muchas más posiciones de las
necesarias. Estas posiciones no pueden utilizarse para almacenar otras líneas de la entrada, ya
que todas las líneas deben poder ser accesibles en paralelo para proporcionar datos al buffer
de ventana del módulo de cálculo. En el otro extremo, la configuración 512×36 se adapta
lo máximo posible al número de posiciones de memoria pero conlleva que gran parte de la
anchura de palabra, el 97 % de los bits, permanezca sin utilizar. Multiplicada por el número

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

con Q direcciones de b bits es capaz de almacenar b líneas de Q datos de 1 bit, es decir, b


buffers de línea que proporcionan b datos de 1 bit en paralelo. En cada ciclo, se escribe, en
la dirección correspondiente, un nuevo dato en el bit más significativo y los restantes bits se
desplazan hacia la derecha. Este desplazamiento de los datos a través del ancho de palabra de
la BlockRAM reproduce el avance de los datos por los sucesivos buffers de línea conectados en
cascada de la Figura 6.41. El conjunto de los bits más significativos de todas las direcciones
representa el primer buffer de línea; el conjunto de los menos significativos, el último.

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

Figura 6.44: Esquema simplificado de la solución propuesta para la implementación de buffers


de línea con BlockRAM

La Figura 6.45 representa la evolución del proceso de carga de una BlockRAM de Q


posiciones y M − 1 bits de anchura para contener M − 1 buffers de línea. En el instante t1
se carga en la primera dirección el dato de entrada I(1, 1) procedente de memoria externa.
El dato presente en el bus de salida, que es el contenido en la dirección antes de la escritura
por estar la BlockRAM configurada con la opción Read Before Write, es indeterminado. En
el instante t2 el contador que controla la dirección de lectura/escritura apunta a la segunda
dirección, donde se carga el dato I(1, 2). El dato de salida es, de nuevo, indeterminado. De
manera análoga, el dato I(1, x) se guarda en la dirección x en el ciclo tx , y en el tQ el
último de la primera fila I(1, Q) se guarda en la última dirección de la BlockRAM. Durante
todos estos primeros Q ciclos, la salida de la memoria tiene una valor indeterminado. En
el instante siguiente tQ+1 el contador que controla las direcciones de lectura y escritura
apunta de nuevo a la primera dirección de BlockRAM. Con el esquema de realimentación con
desplazamiento, el dato de entrada I(2, 1) se escribe en el bit más significativo y el dato I(1, 1)
pasa a ocupar la siguiente posición de menor peso en la palabra de memoria. El dato leído de
esta dirección tiene todos sus bits con valor indeterminado excepto el más significativo, que
vale I(1, 1). Sucesiva y cíclicamente, los datos de entrada se van escribiendo en las direcciones
de memoria correspondientes y su desplazamiento por el ancho de palabra va rellenando los
buffers de línea. Tras ser leído, el dato guardado en el bit menos significativo de cada posición
de memoria sale de la cadena de buffers de línea. En general, en el instante t(y−1)Q+x el dato
I(y, x) de entrada se carga en la dirección x y el dato de salida presenta los valores de todos
los I(i, x) con i ∈ [y − b − 1, y − 1].

228
6.2. Buffering de datos

I1,1 {X,…X} I1,2 {X,…X} I1,3 {X,…X}


I1,1 I1,1 I1,1
I1,2 I1,2
I1,3

t1 t2 t3

I1,x {X,…X} I1,Q {X,…X} I2,1 {I1,1,…X}


I1,1 I1,1 I2,1 I1,1
I1,2 I1,2 I1,2
I1,3 I1,3 I1,3

I1,x I1,x I1,x

tx tQ I1,Q tQ+1 I1,Q

I2,2 {I1,2,…X} I2,Q {I1,Q,…X} I3,x {I2,x,I1,x,…X}


I2,1 I1,1 I2,1 I1,1 I3,1 I2,1 I1,1
I2,2 I1,2 I2,2 I1,2 I3,2 I2,2 I1,2
I1,3 I2,3 I1,3 I3,3 I2,3 I1,3

I1,x I2,x I1,x I3,x I2,x I1,x

tQ+2 I1,Q t2Q I2,Q I1,Q t2Q+x I2,Q I1,Q

IM-1,1 {IM-2,1,…I1,1,X} IM,x {IM-1,x,…I1,x} IM+1,x {IM,x,…I2,x}


IM-1,1 IM-2,1 IM-3,1 … I1,1 IM,1 IM-1,1 IM-2,1 … I2,1 IM+1,1 IM,1 IM-1,1 … I3,1
IM-2,2 IM-3,2 IM-4,2 … IM,2 IM-1,2 IM-2,2 … I2,2 IM+1,2 IM,2 IM-1,2 … I3,2
IM-2,3 IM-3,3 IM-4,3 … IM,3 IM-1,3 IM-2,3 … I2,3 IM+1,3 IM,3 IM-1,3 … I3,3

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

I8,7 I8,7 I8,6 I8,5 I8,4 I8,3


BlockRAM
I7,7 I7,7 I7,6 I7,5 I7,4 I7,3
I9,1 I8,1 I7,1 I6,1
I9,2 I8,2 I7,2 I6,2 I6,7 I6,7 I6,6 I6,5 I6,4 I6,3

I9,6 I8,6 I7,6 I6,6


I5,7 I5,7 I5,6 I5,5 I5,4 I5,3
I9,7 I8,7 I7,7 I6,7
I8,8 I7,8 I6,8 I5,8

contador I8,Q I7,Q I6,Q I5,Q

(a) convolución 2D centrada en I(7, 5)

buffer de ventana

I9,8
buffers de línea I9,8 I9,7 I9,6 I9,5 I9,4

I8,8 I8,8 I8,7 I8,6 I8,5 I8,4


BlockRAM
I7,8 I7,8 I7,7 I7,6 I7,5 I7,4
I9,1 I8,1 I7,1 I6,1
I9,2 I8,2 I7,2 I6,2 I6,8 I6,8 I6,7 I6,6 I6,5 I6,4

I9,6 I8,6 I7,6 I6,6


I5,8 I5,8 I5,7 I5,6 I5,5 I5,4
I9,7 I8,7 I7,7 I6,7
I9,8 I8,8 I7,8 I6,8

contador I8,Q I7,Q I6,Q I5,Q

(b) convolución 2D centrada en I(7, 6)

buffer de ventana
I10,7
buffers de línea I10,7 I10,6 I10,5 I10,4 I10,3

I9,7 I9,7 I9,6 I9,5 I9,4 I9,3


BlockRAM
I8,7 I8,7 I8,6 I8,5 I8,4 I8,3
I10,1 I9,1 I8,1 I7,1
I10,2 I9,2 I8,2 I7,2 I7,7 I7,7 I7,6 I7,5 I7,4 I7,3

I10,6 I9,6 I8,6 I7,6


I6,7 I6,7 I6,6 I6,5 I6,4 I6,3
I10,7 I9,7 I8,7 I7,7
I9,8 I8,8 I7,8 I6,8

contador I9,Q I8,Q I7,Q I6,Q

(c) convolución 2D centrada en I(8, 5)

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

contador IM -b -2,Q … I1,Q

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

din (0) din (1) din (2) din (3)

b buffers de línea 1 bit

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

6.2.1.1. Recursos consumidos y prestaciones temporales

El número de recursos BlockRAM necesarios para implementar los M − 1 buffers de línea de


Q posiciones depende de la relación p × b con la que se configuren. Por ejemplo, si Q ≤ 512,
la solución propuesta hace posible construir un buffer de 36 líneas con una única BlockRAM
empleando la configuración 512 × 36 (considerando bI = 1). Con esta misma configuración,
si Q ∈ (512, 1024] son necesarias 2 BlockRAM, conectadas en cascada como se ha comentado
en el apartado anterior. También sería posible implementar un buffer de hasta 18 líneas con
una única BlockRAM configurada como 1K × 18.
La flexibilidad que ofrecen las diferentes combinaciones de profundidad p y anchura b ha
sido tenida en cuenta para el cálculo de los resultados de ocupación que muestran las gráficas
de la Figura 6.49. En ellas se recoge el número de bloques BlockRAM necesarios para construir
M − 1 buffers de línea de profundidad Q correspondiente a resoluciones de vídeo estándar
y varias resoluciones bI de datos de entrada, y lo compara con los resultados de la solución
tradicional. Para datos de entrada de 1 y 4 bits la solución propuesta consume muchas menos
BlockRAM para cualquier número de líneas con cualquier configuración, y para 8, 16 y 24
bits también mejora la ocupación para la gran mayoría de los valores de M , en función de Q.
El peor caso se da para bI = 18, ya que la resolución de los datos coincide con la anchura b
de la BlockRAM más adecuada para la implementación. No obstante, claramente la solución
propuesta permite adaptarse con mucha mayor eficiencia a las dimensiones del buffer de líneas
necesario.
En cuanto a las prestaciones temporales, los bits de un dato ya no se guardan en celdas de
la misma posición de memoria BlockRAM sino que se encuentran distribuidos en memorias
diferentes, lo cual implica un rutado muy diferente de las señales por la FPGA con respecto a
la solución estándar y potencialmente un impacto en la frecuencia máxima de funcionamiento.
Por tanto, para terminar de caracterizar la propuesta se ha determinado el periodo mínimo

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

100 bI =8 100 bI =16


Número de BlockRAM

50 50

10 10

5 10 20 30 40 50 5 10 20 30 40 50

M M

150 bI =18 150 bI =24


Número de BlockRAM

100 100

50 50

10 10

5 10 20 30 40 50 5 10 20 30 40 50

M M

Implementación estándar Implementación propuesta

Q = 320 Q = 640 Q = 1280 * Q = 1920

Figura 6.49: Número de bloques BlockRAM ocupados por la implementación tradicional y


la optimización propuesta con datos de entrada de 1, 4, 8, 16, 18 y 24 bits,
diferentes tamaños Q de imagen y valores de M ∈ [3, 50]

233
6.2. Buffering de datos

de reloj para un rango de configuraciones de buffers de línea y se ha comparado con el


obtenido con la implementación tradicional. Las gráficas de las figuras 6.50 y 6.51 muestran
los resultados.
Los resultados temporales dependen del modelo de FPGA. La entrada al buffer de línea
y sus M salidas han sido definidas como puertos de entrada/salida del diseño. Por tanto,
cada uno de ellos está asociado a un Bloque de Entrada/Salida (Input/Output Block, IOB).
Cuanto más grande sea el modelo de FPGA, más distancia deben recorrer las señales por el
interior de su estructura desde la BlockRAM hasta los IOBs y por tanto probablemente más
largos los caminos combinacionales y mayor el periodo mínimo de reloj. Para este estudio
se ha elegido el dispositivo FPGA XC4VLX60-10. La síntesis y la implementación se han
realizado con el entorno de diseño Xilinx ISE 14.7 y la herramienta XST. Las propiedades de
configuración más significativas se han definido con los valores de la Tabla 6.9.

Síntesis XST Optimization Goal Velocidad


Optimization Effort Normal
Implementación Perform Timing-driven packing & placement Deshabilitado
Map Effort Level Medio
Optimization Strategy Velocidad
Place and Route Mode Normal
Place and Route Effort Estándar

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

Para este análisis temporal se ha considerado una etapa de segmentación en el camino de


salida de los buffers de línea tanto en la implementación estándar como en la optimización
propuesta. Las gráficas de la Figura 6.50 comparan el periodo mínimo de reloj obtenido para
M ∈ [3, 50] y líneas de 1024 posiciones de 8 bits con y sin esta etapa de segmentación, tanto
para la solución estándar como para la propuesta. Para ambas soluciones se aprecia que la
etapa de segmentación en el camino de salida de los buffers de línea reduce el periodo mínimo
de reloj, especialmente en los valores más bajos de M . Los bI × M flip-flops que requiere
no son significativos frente a los necesarios para la implementación del módulo de cálculo de
la convolución y el árbol de sumadores estimados en el apartado 6.1.6. Los resultados que
se recogen a lo largo del presente apartado han sido obtenidos considerando esta etapa de
segmentación.
Las gráficas de la Figura 6.51 comparan el periodo mínimo de reloj de las implementa-
ciones estándar y optimizada para las configuraciones de buffers de línea indicadas. Se observa
que, excepto para los tamaños más pequeños de M para 8 y 16 bits, la optimización pro-
puesta, con la distribución de los bits de cada dato en diferentes BlockRAM, conduce a una
implementación más rápida que la solución tradicional. La Figura 6.52 compara en una única
gráfica la evolución del periodo mínimo de reloj con el tamaño bI de los datos de entrada al
buffer de línea. El aumento del número de bits conlleva el consumo de más recursos, y con
ello una mayor complejidad del rutado de las señales y un periodo mínimo mayor. El peor
caso obtenido en este estudio, el valor más alto de periodo mínimo, son los 5,17 nanosegundos
de la configuración M = 50 con 16 bits de datos, que implican un ancho de banda de más de
150 Gbits.

234
6.2. Buffering de datos

Periodo mínimo de reloj (ns) Q = 1024 bI = 8 Q = 1024 bI = 8

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

Implementación estándar Sin segmentación


Implementación propuesta Segmentada

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 Q = 1024 bI = 1 5,5 Q = 1024 bI = 4

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 Q = 1024 bI = 8 5,5 Q = 1024 bI = 16

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

Implementación estándar Implementación propuesta

Figura 6.51: Periodo mínimo de reloj Post-Place&Route con la implementación estándar y


la optimizada de M − 1 buffers de línea, con M ∈ [3, 50], líneas de Q = 1024
posiciones y datos de entrada de 1, 4, 8 y 16 bits

235
6.3. Sistema completo para la implementación de la convolución 2D

Implementación propuesta. Q = 1024

Periodo mínimo de reloj (ns)


5,5

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

6.2.1.2. Caso particular: buffering para aplicación propuesta de reconocimiento


de los gestos de la mano

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.

6.3. Sistema completo para la implementación de la


convolución 2D
El sistema completo que implementa el cálculo de la convolución 2D está formado por el
módulo de cálculo y por los buffers de ventana y de línea descritos en los apartados 6.1 y 6.2
respectivamente. La Figura 6.54 muestra su esquema simplificado para la convolución de una
entrada de 8 bits con una plantilla 30 × 30 de coeficientes de 8 bits.

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

Implementación estándar: BlockRAM frente a flip-flops


BlockRAM implementación propuesta frente a flip-flops implementación estándar

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

6.3.1. Recursos consumidos y prestaciones temporales


En los apartados 6.1.7 y 6.2.1.1 se han presentado los resultados en términos de recursos
ocupados y periodo mínimo de reloj para la implementación del módulo de cálculo y de los
buffers de línea. A continuación se presentan los obtenidos para el sistema completo que los
integra.
El número de recursos de propósito general ocupados por el sistema completo es prácti-
camente el mismo que el de los ocupados por el módulo de cálculo. Frente a los de éste, el
número de flip-flops y de LUTs ocupados por los buffers de línea es insignificante. Sucede lo
mismo con los flip-flops necesarios para la etapa de segmentación entre los buffers de línea
y el módulo de cálculo que se ha incluido para mejorar las prestaciones temporales. Por su
parte, tal y como se analizó en el apartado 6.2.1, el número de bloques BlockRAM requerido
por los buffers de línea en ningún caso es el factor limitante del tamaño de la convolución en
un dispositivo determinado.
En cuanto a las prestaciones temporales, la inclusión de los bloques BlockRAM y su
conexión con el módulo de cálculo sí tiene un impacto en el rutado y, en consecuencia, en el
periodo mínimo de reloj. La Tabla 6.10 recoge valores de tiempos obtenidos para entradas de
1 y 8 bits con diferentes tamaños de plantilla.

1 bit datos, 2 bit coef. 8 bits datos, 8 bits coef.


20 × 20 30 × 30 50 × 50 20 × 20 30 × 30 50 × 50
Tmin (ns) 4,30 4,45 4,87 5,51 5,9 6,16

Tabla 6.10: Periodo mínimo de reloj para la implementación paralela de convoluciones de


plantillas de los tamaños indicados y coeficientes de 2 y 8 bits, con datos de
entrada de 1 y 8 bits

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

30 × 30 1 bit 30 × 30 1 bit 30 × 30 1 bit 30 × 30 1 bit 30 × 30 1 bit 30 × 30 1 bit 30 × 30 1 bit


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

LUT

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


1 1 1 1 1 1 1

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


2 2 2 2 2 2 2

fila 1 fila 1 fila 1 fila 1 fila 1 fila 1 fila 1


ROM  ROM  ROM  ROM  ROM  ROM  ROM 
3 3 3 3 3 3 3

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


4 4 4 4 4 4 4
+ + + + + + +

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


5 5 5 5 5 5 5

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


6 6 6 6 6 6 6

ROM  ROM  ROM  ROM  ROM  ROM  ROM 


7 7 7 7 7 7 7

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

Las prestaciones temporales quedan definidas por la frecuencia máxima de funcionamiento y


por la latencia del circuito. A la latencia del módulo de cálculo, descrita en el apartado 6.1.5, se
suma la asociada a la carga de los datos en los buffers de línea y la de la etapa de segmentación
incluida entre éstos y la entrada al buffer de ventana, para completar la latencia total del
sistema recogida en la expresión 6.33. Con las frecuencias de funcionamiento recogidas en
el apartado anterior, este número de ciclos de reloj de latencia supone 284,09 µs para vídeo

239
6.3. Sistema completo para la implementación de la convolución 2D

6,5

Periodo mínimo de reloj (ns)


6

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

LbI: árbol suma bI bits

LM: árbol suma de M filas

LNk: árbol suma sub-convoluciones

LWB: buffer de ventana

LBR: etapa de segmentación BlockRAM – buffer de ventana

LLB: buffers de línea

6.3.2. Análisis comparativo


Como se mencionó en la introducción de este capítulo 6, la convolución 2D es una herramienta
de cómputo habitual en procesamiento de imagen y su implementación eficiente en FPGA
es un tema de interés, como pone de manifiesto la revisión bibliográfica. Sin embargo, en
la misma se comprueba que, aunque habitualmente los trabajos definen plantillas genéricas
M × N , en la práctica la gran mayoría implementan únicamente tamaños muy reducidos,
típicamente 3 × 3, y sólo unos pocos presentan resultados reales para plantillas mayores. La
Tabla 6.11 resume los tamaños de plantilla, las resoluciones de datos y coeficientes, la tasa
de procesamiento de datos y la plataforma hardware utilizada, indicados en los trabajos más
significativos encontrados en la literatura.

240
6.3. Sistema completo para la implementación de la convolución 2D

tamaño bits bits


Ms/s Plataforma
plantilla datos coef.

Perri et al. [Perri et al.] 5×5 16 16 28 XCV2000E


Sankaradas et al. [Sankaradas et al.] 5×5 16 18 115 V5LX330T
Wong et al. [Wong et al. b] 7×5 8 18 200 XC2V6000
Bouganis et al. [Bouganis et al. b]† 7×7 18 18 - -
Torres et al. [Torres y Arias]‡ 7×7 8 8 60 XCV2000E
Porter et al. [Porter et al.] 7×7 8 8 133 XC2VP100
Farabet et al. [Farabet et al.] 7×7 8 16 200 XCV4SX35
Bouganis et al. [Bouganis et al. c] 9×9 18 18 91 XC2V6000-4
Zhang et al. [Zhang y Asari]‡† 10 × 10 10 10 69 XC2V2000-4
Cope et al. [Cope et al.]‡‡ 11 × 11 18 18 98 XCV4SX25
Zhang et al. [Zhang y Asari]‡† 12 × 12 10 10 67 XC2V2000-4
Fons et al. [Fons et al.] 13 × 13 8 18 50 XCV4LX25
Xia et al. [Xia et al.] 15 × 15 8 8 - XC3S1000
Bouganis et al. [Bouganis et al. c] 15 × 15 18 18 - -
Zhang et al. [Zhang y Asari]‡† 16 × 16 10 10 67 XC2V2000-4
Bouganis et al. [Bouganis et al. a] 21 × 21 - 10 - XC2V8000
Zhang et al. [Zhang y Asari]‡† 22 × 22 10 10 66 XC2V2000-4

7×7 8 16 183 XCV4LX160-10


basado en DSP48s‡‡† 11 × 11 8 8 142 XCV4LX160-10
22 × 22 8 8 149 XC4VXS55-10

7×7 8 16 188 XCV4LX160-10


Solución propuesta 11 × 11 8 8 199 XCV4LX160-10
[Toledo-Moreo et al.] 22 × 22 8 8 113 XC2V4000-4
22 × 22 8 8 186 XCV4LX160-10
30 × 30 8 16 163 XCV4LX160-10

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.

Tabla 6.11: Resumen de las implementaciones encontradas en la revisión bibliográfica y


comparación con la solución propuesta

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

En esta tesis doctoral se ha realizado una propuesta para el reconocimiento de un conjunto de


gestos de la mano empleando técnicas de visión por computador y un sistema digital imple-
mentado en hardware reconfigurable que ejecuta las tareas de procesamiento involucradas.
El trabajo se ha llevado a cabo, por tanto, en dos ámbitos: el del desarrollo de los algoritmos
y tareas para el reconocimiento, y el del diseño de un sistema digital que los ejecuta.
En el primero de ellos, nuestra solución está marcada desde su planteamiento inicial por
el objetivo de ser una propuesta abierta, modular y escalable. No se pretendía construir
una caja negra sino un sistema en el que se tenga acceso a cada una de las etapas que lo
forman, de manera que se pueda proporcionar al usuario información sobre el resultado de
los procesos implicados en el funcionamiento global —lo cual redunda en una experiencia de
manejo satisfactoria—, y que posibilite la integración de nuevos módulos y/o etapas tanto
para mejorar su respuesta como para completar su funcionalidad mediante la ampliación de
la biblioteca de gestos o el reconocimiento de secuencias de gestos.
En este ámbito, a alto nivel nuestra propuesta consta de dos etapas principales: la primera
de segmentación de la imagen según el color de la piel y la segunda de extracción de informa-
ción de la imagen segmentada para determinar la presencia o no en ella de alguno de los gestos
de la biblioteca. Para la primera etapa se ha desarrollado un algoritmo de reconocimiento
del color de la piel basado en los modelos construidos en diferentes espacios de color. Por
su parte, para la segunda etapa se han definido modelos para los gestos considerados. Estos
modelos consisten en el conjunto de operaciones para la extracción de información, en los
parámetros que las configuran, en los vectores de características obtenidos y en una serie de
reglas que los valores de tales características, propios e identificativos de cada gesto, deben
cumplir.
Las decisiones adoptadas para la definición de las etapas y técnicas de procesamiento de
imagen deben tener en cuenta el otro ámbito del trabajo, el del diseño de un sistema digital
implementado en un dispositivo FPGA, con las implicaciones que ello conlleva de análisis de la
adecuación de algoritmos y operadores para su implementación hardware con la arquitectura
interna de las FPGA, la evaluación del coste en recursos y prestaciones temporales de etapas

244
7. Conclusiones

de procesamiento, del rango y de la resolución de datos y constantes. En definitiva, ha sido


necesaria la búsqueda de un compromiso entre ambos ámbitos, el del diseño de la solución
software y el de su implementación en hardware reconfigurable.
Con las soluciones propuestas y a la vista de los resultados de las evaluaciones recogidos
en los capítulos 3 y 4 de este documento, consideramos que nuestro sistema de reconocimiento
de gestos ha alcanzado los objetivos de robustez, fiabilidad, accesibilidad a su funcionamiento
interno, modularidad y escalabilidad establecidos al comienzo del trabajo.

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:

 Se ha desarrollado una nueva propuesta para el reconocimiento del color de la piel,


basada en modelos definidos en diferentes espacios de color.
Tras la evaluación y análisis de las principales soluciones descritas en el estado del
arte de este campo, se concluyó que ninguna respondía adecuadamente al objetivo de
realizar la segmentación de la imagen en un entorno no controlado, sin restricciones
de movimiento ni iluminación predeterminada y constante, y sin emplear técnicas
activas de visión ni incorporar elementos pasivos o activos a la mano del usuario.
Nuestra propuesta hace frente a esas situaciones. Para su desarrollo, se ha recopilado y
etiquetado una base de datos de imágenes propia con la cual se ha estudiado la distri-
bución de los colores correspondientes a píxeles pertenecientes a partes del cuerpo,
incluyendo diferentes tonalidades de piel según el fototipo. El resultado de este estudio
es un conjunto de reglas parametrizables que modelan el color de la piel en diferentes
espacios de color y con las que se ha definido un algoritmo de reconocimiento formado
por 16 clasificadores distintos, persiguiendo proporcionar flexibilidad para responder
a diferentes condiciones ambientales o variaciones de color dentro de las tonalidades
de piel contempladas.
Los resultados obtenidos, tanto con las imágenes de las colecciones propias de entre-
namiento y test como con las imágenes de la base de datos ECU utilizada para
validación, y la comparativa con soluciones empleadas habitualmente en otros trabajos
relevantes en este campo, demuestran la utilidad de la solución propuesta, no sólo para
la aplicación objeto de esta tesis sino en general para cualquier otra en la que puede
ser de interés la segmentación de imágenes según el color de la piel.

245
7. Conclusiones

 Se ha desarrollado una solución para el reconocimiento de gestos de la mano basado en


la extracción de características a partir del resultado de la convolución bidimensional
de una imagen segmentada con plantillas diseñadas específicamente con tal propósito.
El conjunto de test de usuario realizado ha permitido validar el funcionamiento y, al
mismo tiempo, establecer una guía para la adecuada interacción con el sistema.
Debido a la metodología empleada en la definición y ajuste de las etapas que lo
forman y en su integración, el sistema presenta dos características que consideramos
relevantes: la posibilidad de ofrecer al usuario información sobre el proceso de recono-
cimiento; y la capacidad de ampliación de la biblioteca de gestos reconocibles, tanto
con más gestos únicos como con combinaciones de diferentes gestos.

 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.

 Para gestionar la carga computacional asociada al tamaño de las plantillas empleadas


en la etapa de convolución bidimensional del algoritmo de reconocimiento, mayor que
lo estándar en la bibliografía, se ha diseñado una solución hardware que permite rea-
lizar las operaciones involucradas en su cálculo asegurando funcionamiento en tiempo
real incluso con imágenes de alta resolución. Destinada inicialmente a la aplicación
de esta tesis y por tanto para operar con datos de entrada de 1 bit y coeficientes de
las plantillas de 2 bits, la arquitectura se ha generalizado para su uso con plantillas,
con datos de entrada y con coeficientes de las plantillas de cualquier tamaño. La
solución desarrollada aprovecha el paralelismo que ofrecen los dispositivos FPGA
para absorber el impacto que variaciones en el tamaño de la plantilla, la resolución de
datos o los coeficientes pueda tener en la frecuencia de funcionamiento, asegurando
elevadas tasas de procesamiento en un amplio rango de configuraciones.
Siendo la convolución 2D una herramienta básica no sólo en procesamiento de imagen
y vídeo de bajo nivel sino también en otros muchos campos, nuestra arquitectura para
la implementación en FPGA de convoluciones con plantillas de tamaño medio–grande,
descrita y caracterizada con detalle en cuanto a recursos y prestaciones temporales,
puede resultar de interés en numerosas aplicaciones.

 El tamaño de las plantillas de la convolución lleva aparejado, adicionalmente a la carga


computacional, el hecho de que los cálculos en los bordes de la matriz de entrada,
es decir, en las posiciones en las que no hay solapamiento completo de la plantilla
con dicha matriz, cobren relevancia. Con plantillas pequeñas en comparación con el
tamaño de la imagen —asumiendo que la matriz representa una imagen—, los píxeles
en los que se produce esta situación son muy pocos y por ello descartables, por lo que es

246
7. Conclusiones

irrelevante que su valor sea distorsionado en el proceso de cálculo. Sin embargo, en la


medida en la que con nuestra propuesta es posible realizar convoluciones con plantillas
de mayor tamaño, esta circunstancia sí merece consideración, ya que prescindir de
esos píxeles con valores incorrectos puede reducir excesivamente el área de información
útil de la imagen resultante. Para solventar este problema, se propone una solución
integrada en la arquitectura del módulo de cálculo que gestiona tales situaciones
aplicando la técnica de extensión con valores cero, manteniendo el procesamiento
en flujo de datos, con un mínimo consumo de recursos y sin penalizar la frecuencia
máxima de funcionamiento.

 El cálculo de la convolución bidimensional requiere un conjunto de datos de entrada


cuyo número aumenta exponencialmente con el tamaño de la plantilla. Para evitar que
el acceso a los datos necesarios en el cálculo en cada píxel sea el cuello de botella del
sistema, en esta tesis se propone, describe y evalúa un esquema alternativo al tradi-
cional para la implementación mediante los bloques específicos de memoria Block-
RAM incluidos en las FPGA de Xilinx de los buffers de línea y su integración con el
buffer de ventana. Diseñado inicialmente para datos de entrada de 1 bit —el tamaño
de la imagen segmentada del algoritmo de reconocimiento—, se generaliza para datos
de cualquier tamaño. Junto con la motivación y una detallada descripción, se pre-
sentan resultados de recursos necesarios y prestaciones temporales para diferentes
configuraciones que caracterizan la propuesta, así como comparativas con la solución
tradicional que evidencian las ventajas de nuestra solución para la optimización del
sistema según las necesidades de una aplicación.

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

En el ámbito del diseño digital, la continua evolución de la arquitectura de las FPGA


y de los entornos de desarrollo conlleva seguir trabajando en el estudio del comportamiento
de la soluciones diseñadas para el cálculo de la convolución 2D y el buffering de datos con
los dispositivos y herramientas más recientes. Dada la concepción de nuestras propuestas,
estimamos que los resultados harán aún más interesante su uso en sistemas embebidos que
deban realizar estas operaciones en tiempo real. Adicionalmente y en particular en relación
con el módulo de cálculo, las memorias que implementan las operaciones han sido presentadas
en esta tesis como memorias ROM y, por tanto, con valor constante. Sin embargo, las LUTs
que las forman son memoria RAM y como tal su contenido es modificable no sólo en la
programación del dispositivo sino también en tiempo de funcionamiento. Por tanto los coefi-
cientes de las plantillas no tienen por qué ser constantes ni conocidos a priori. El diseño de
un módulo de nivel superior que modifique de manera dinámica los valores de los coeficientes
en función de la respuesta del sistema, o cualquier otro criterio, y que controle la escritura
de las memorias es una línea de trabajo que potenciaría la utilidad de nuestra arquitectura.

248
7.1. Publicaciones derivadas de la tesis

7.1. Publicaciones derivadas de la tesis

Artículos en revista

FPGA-based architecture for the real-time computation of 2-D convolution with


large kernel size
Javier Toledo Moreo, J. Javier Martínez, Javier Garrigós, J. Manuel Ferrández
Journal of System Architecture – Embedded System Design, pag. 277–285, Elsevier.
Septiembre 2012
DOI: 10.1016/j.sysarc.2012.06.002
ISSN:1383-7621
Índice de impacto JIF: 0,689 (Q3)

A practical evaluation of the performance of the Impulse CoDeveloper HLS tool


for implementing large-kernel 2-D filters
Carlos Colodro Conde, Javier Toledo Moreo, Rafael Toledo Moreo, J. Javier Martínez Alvarez,
Javier Garrigós Guerrero, J. Manuel Ferrández Vicente
Journal of Real Time Image Processing, pag. 263–279, Springer.
Enero 2014
DOI: 10.1007/s11554-013-0374-x
ISSN:1861-8200
Índice de impacto JIF: 2,020 (Q2)

Contribuciones en congresos internacionales

Implementing large-kernel 2-D filters using Impulse CoDeveloper


Carlos Colodro Conde, Javier Toledo Moreo, J. Javier Martínez Álvarez, Javier Garrigós Guer-
rero, José Manuel Ferrández Vicente
Conference on Design and Architectures for Signal and Image Processing, DASIP 2012
Octubre 2012
ISBN: 978-295399872-6

Hand-based interface for augmented reality


Javier Toledo Moreo, J. Javier Martínez, J. Manuel Ferrández
IEEE Symposium on Field Programmable Custom Computing Machines, FCCM 2007
Abril 2007
DOI: 10.1109/FCCM.2007.24
ISBN: 978-076952940-0

FPGA-based plaftorm for image and video processing embedded systems


Javier Toledo Moreo, J. Javier Martínez, J. Manuel Ferrández
3rd Southern Conference on Programmable Logic, SPL 2007
Febrero 2007
DOI: 10.1109/SPL.2007.371743
ISBN: 978-1-4244-0606-7

249
7.1. Publicaciones derivadas de la tesis

Skin color detection for real time mobile applications


Javier Toledo Moreo, J. Javier Martínez, F. Javier Garrigós, J. Manuel Ferrández, V. Rodellar
16o International Conference on Field Programmable Logic and Applications, FPL 2006
Agosto 2006
DOI: 10.1109/FPL.2006.311299
ISBN: 978-142440312-7

FPGA Implementation of an augmented reality application for visually


impaired people
Javier Toledo Moreo, J. Javier Martínez, F. Javier Garrigós, J. Manuel Ferrández
15o International Conference on Field Programmable Logic and Applications, FPL 2005
Agosto 2005
DOI: 10.1109/FPL.2005.1515826
ISBN: 978-078039362-2

Contribuciones en congresos nacionales

Arquitectura para el cómputo de la convolución 2D con plantillas de gran tamaño


en tiempo real
Javier Toledo Moreo, J. Javier Martínez, Javier Garrigós, J. Manuel Ferrández
Jornadas de Computación Reconfigurable y Aplicaciones, JCRA 2011
Septiembre 2011
ISBN: 978-84-614-8814-8

Sistema de procesamiento de imagen para la divulgación del hardware


reconfigurable
Javier Toledo Moreo, J. Javier Martínez, Javier Garrigós, J. Manuel Ferrández
Jornadas de Computación Reconfigurable y Aplicaciones, JCRA 2009
Septiembre 2009
ISBN: 978-84-8138-832-9

Segmentación de imágenes basada en el color de la piel


Javier Toledo Moreo, Rafael Toledo Moreo, J. Javier Martínez, Javier Garrigós, J. Manuel
Ferrández
Jornadas de Computación Reconfigurable y Aplicaciones, JCRA 2008
Septiembre 2008
ISBN: 978-84-612-5635-8

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.

[Benkrid y Belkacemi] Benkrid, K. y Belkacemi, S., (2002). Design and implementation of a


2D convolution core for video applications on FPGAs. IEEE Int. Workshop on Digital
and Computational Video, pags. 85–92.

[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.

[BlockRAM datasheet, Xilinx] BlockRAM datasheet, Xilinx, (2013). http://www.xilinx.


es.

[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.

[Cardells-Tormo y Molinet] Cardells-Tormo, F. y Molinet, P., (2006). Area-efficient 2-D shift-


variant convolvers for FPGA-based digital image processing. IEEE Transactions on
Circuits and Systems, vol. 53, no 2, pags. 105–109.

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.

[Colodro-Conde et al.] Colodro-Conde, C., Toledo-Moreo, J., Toledo-Moreo, R., Martinez-


Alvarez, J., Garrigos Guerrero, J. y Ferrandez-Vicente, J., (2014). Evaluation of stereo
correspondence algorithms and their implementation on FPGA. Journal of Systems
Architecture, vol. 60, no 1, pags. 22–31.

[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 Weissman] Freeman, W. y Weissman, C., (1995). Television Control by Hand


Gestures. Proc. International Workshop on Automatic Face and Gesture Recognition,
pags. 179–183.

[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.

[Gokhale y Graham a] Gokhale, M. y Graham, P., (2005). Reconfigurable Computing: accel-


erating computation with Field-Programmable Gate Arrays. Springer.

[Gokhale y Graham b] Gokhale, M. B. y Graham, P. S., (2006). Reconfigurable computing:


Accelerating computation with field-programmable gate arrays. Springer Science & Busi-
ness Media.

[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.

[Jähne] Jähne, B., (2005). Digital image processing. Springer.

[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.

[Kakumanu et al.] Kakumanu, P., Makrogiannis, S. y Bourbakis, N., (2007). A survey of


skin-color modeling and detection methods. Pattern Recognition, vol. 40, no 3, pags.
1106–1122. Elsevier.

[Kalomiros y Lygouras] Kalomiros, J. y Lygouras, J., (2008). Design and evaluation of a


hardware/software FPGA-based system for fast image processing. Microprocessor and
Microsystems, vol. 32, pags. 95–106.

[Karam] Karam, M., (2009). A Framework for Gesture-based Human Computer Interactions.
VDM Verlag.

[Karam y Schraefel] Karam, M. y Schraefel, M., (2005). A taxonomy of gestures in human


computer interaction. ACM Transactions on Computer-Human Interaction, pags. 1–45.

[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.

[MacKenzie] MacKenzie, I. S., (2013). Human-Computer Interaction: An Empirical Research


Perspective. Morgan Kaufmann - Elsevier.

[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.

[Martínez et al. b] Martínez, J. J., Toledo-Moreo, F. J., Fernández, E. y Ferrández, J. M.,


(2009). Study of the contrast processing in the early visual system using a neuromorphic
retinal architecture. Neurocomputing, vol. 72, no 4-6, pags. 928–935.

[Matlab Image Processing Toolbox] Matlab Image Processing Toolbox, (2012). http://www.
mathworks.es.

[Maxfield] Maxfield, C. M., (2009). FPGAs. World Class Designs. Newnes.

[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.

[McNeill a] McNeill, D., (2006). Gesture: a psycholinguistic approach. The encyclopedia of


language and linguistics, pags. 58–66.

[Meyer-Baese] Meyer-Baese, U., (2007). Digital Signal Processing with Field Programmable
Gate Arrays, 3Âa ed.. Springer.

[Mikolajczyk y Schmid] Mikolajczyk, K. y Schmid, C., (2005). A performance evaluation of


local descriptors. IEEE Transactions on Pattern Analysis and Machine Intelligence,
vol. 27, no 10, pags. 1615–1630.

[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.

[Myers] Myers, B. A., (1998). A brief history of human-computer interaction technology.


Interactions, vol. 5, no 2, pags. 44–54.

[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.

[Prokop y Reeves] Prokop, R. J. y Reeves, A. P., (1992). A survey of moment-based tech-


niques for unoccluded object representation and recognition. CVGIP: Graphical Models
Image Processing, vol. 54, no 5, pags. 438–460.

[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.

[Savarimuthu et al.] Savarimuthu, T. R., Kjær-Nielsen, A. y Sørensen, A. S., (2011). Real-


time medical video processing, enabled by hardware accelerated correlations. Journal
Real-Time Image Processing, vol. 6, no 3, pags. 187–197.

[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.

[Sutherland] Sutherland, I. E., (1964). Sketch pad a man-machine graphical communication


system. Proc of the SHARE Design Automation Workshop. ACM, pags. 6329–6346.

[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.

[Toledo-Moreo et al.] Toledo-Moreo, F. J., Martínez-Alvarez, J. J., Garrigós-Guerrero, J. y


Ferrández-Vicente, J. M., (2012). FPGA-based architecture for the real-time computa-
tion of 2-D convolution with large kernel size. Journal of Systems Architecture, vol. 58,
no 8, pags. 277–285.

[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

También podría gustarte