Diseño e implementación en hardware reconfigurable de un sistema de reconocimiento de gestos de la mano basado en visión por computador
[SPA] 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 capacidad 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 identificando 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 reconfigurable. Los dispositivos FPGA son una plataforma muy adecuada para acelerar algoritmos de alta carga computacional. Su estructura interna los 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 ejecutar simultáneamente distintas operaciones. 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 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. 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 implementació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. [ENG] 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 microprocessor–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 convolution 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 recognition 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 platform 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 implementation 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.
Visión por computador, FPGA, Inteligencia artificial, Computación reconfigurable, Procesamiento digital, Algoritmos, Reconocimiento de gestos
Networked Digital Library of Theses and Dissertations