4aae971695c34
4aae971695c34
4aae971695c34
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
PROYECTO FIN DE CARRERA<br />
RECONOCIMIENTO GESTUAL<br />
A TRAVÉS DE WEBCAM<br />
AUTOR: ANA DOMENECH MARTORELL<br />
MADRID, SEPTIEMBRE 2009
Autorizada la entrega del proyecto del alumno/a:<br />
Ana Domènech Martorell<br />
EL DIRECTOR DEL PROYECTO<br />
Juan Antonio Pérez – Campanero<br />
Fdo.: …………………… Fecha: ……/……/……<br />
Vº Bº del Coordinador de Proyectos<br />
David Contreras Bárcena<br />
Fdo.: …………………… Fecha: ……/……/……
PROYECTO FIN DE CARRERA<br />
RECONOCIMIENTO GESTUAL<br />
A TRAVÉS DE WEBCAM<br />
AUTOR: ANA DOMENECH MARTORELL<br />
DIRECTOR: JUAN ANTONIO PEREZ – CAMPANERO<br />
MADRID, SEPTIEMBRE 2009
AGRADECIMIENTOS<br />
Principalmente quiero agradecer la ayuda recibida por parte de mi familia. Sin<br />
ellos no hubiera sido posible realizar esta etapa de mi vida y llegar a ser ingeniera.<br />
Otro punto importante en esta etapa ha sido el apoyo de Alex. Siempre que he<br />
tenido algún bajón en este tiempo, él ha estado ahí, para lo bueno y para lo malo,<br />
alegrándome en todo lo posible y apoyándome para seguir adelante.<br />
A mis niñas del Mara, en especial a Laura y a Esti que sin ellas la vida aquí en<br />
Madrid no hubiera sido la misma.<br />
No puedo olvidarme de mis burgaleses, que me han aguantado durante este<br />
último verano de carrera, con mis alegrías y tristezas dependiendo de cómo fuera el<br />
desarrollo del proyecto. En especial a Silvia y a Raquel.<br />
A los compañeros de clase, destacando a Laura, empezamos juntas y<br />
terminamos juntas y a Héctor por todas las ayudas durante todos estos años.<br />
Por último, quiero agradecérselo también a mi Director de proyecto Juan<br />
Antonio que me ha ayudado continuamente en todo el desarrollo del mismo<br />
aportando nuevas ideas y distintos puntos de vista. Sobre todo la disponibilidad que ha<br />
tenido durante todo el verano para resolverme cada una de las dudas que me iban<br />
surgiendo.<br />
En resumen a toda la gente cercana, estos años no hubieran sido así si no es<br />
por vosotros y os lo agradezco.<br />
Comienza ahora una nueva etapa en mi vida.<br />
I
RESUMEN<br />
Existen diferentes sectores en la población los cuales tienen limitaciones a la<br />
hora de la utilización de los ordenadores. Día a día, este problema se va solventando<br />
poco a poco gracias a las nuevas tecnologías existentes en el mercado y los nuevos<br />
estudios referentes a ello.<br />
Con el desarrollo de este proyecto se pretende minimizar, en la medida de lo<br />
posible, estas dificultades, ayudando al usuario a manejar de una forma sencilla y<br />
eficaz algunas aplicaciones del ordenador.<br />
El objetivo principal de este proyecto es dotar a estas personas con dificultades,<br />
de una herramienta que les permita acceder al ordenador de una manera aproximada<br />
a la que puede realizar un usuario cualquiera.<br />
Para la realización de la aplicación es necesaria la utilización de una cámara<br />
web, cualquiera de las existentes hoy en día en el mercado tecnológico, mediante la<br />
cual el usuario podrá mandar instrucciones al ordenador simplemente con el<br />
movimiento de un dedo. Todo esto debe hacerse con un dedal negro que se coloca en<br />
el dedo para facilitar así el estudio de las imágenes que se realizarán posteriormente<br />
con el programa Matlab.<br />
Figura 1.Webcam utilizada en el proyecto<br />
II
Figura 2. Dedal utilizado para el proyecto<br />
Las técnicas que proporciona la herramienta Matlab, nos han permitido tratar<br />
cada una de las imágenes que son captadas por la webcam cuando el usuario ejecuta<br />
la aplicación.<br />
Mediante Matlab, se leen todas las imágenes tomadas y mediante el<br />
reconocimiento del color negro, realizando previamente una binarización de la<br />
imagen, se estudia el movimiento realizado por el usuario y se devuelve el valor<br />
introducido al interfaz programado en Java.<br />
En futuros estudios se puede ampliar esta aplicación, ya que actualmente sólo<br />
consta de dos opciones que se ofrecen al usuario. Sólo reconoce determinadas letras<br />
del vocabulario, por lo tanto, se podría investigar para que el sistema reconozca todo<br />
el vocabulario y así dotar de la aplicación de diversas opciones para que el usuario<br />
pueda llegar a controlar parcialmente el ordenador.<br />
III
Estudios más avanzados, podrán permitir al usuario la utilización del ratón con<br />
el movimiento de la cara o simplemente con el movimiento de los ojos, de esta forma,<br />
la Interacción Persona Ordenador sería total y produciría un avance notable en las<br />
tecnologías.<br />
IV
ABSTRACT<br />
There are different sectors of the population which have limitations in the use<br />
of computers. New technologies in the market and new studies on this solve, day by<br />
day, this problem gradually.<br />
The development of this project tries to minimize, as far as possible, these<br />
difficulties helping the user to manage in a simple and effective way some computer<br />
applications.<br />
The main objective of this project is to provide these people with difficulties,<br />
a tool that allows them to access the computer in a manner similar to the one that any<br />
user can perform.<br />
For the realization of the application is necessary to use a webcam, any of<br />
the ones existing today in the technology market, whereby the user can send<br />
instructions to the computer by simply moving a finger. All this must be done with a<br />
black thimble that is placed on the finger to facilitate the study of images to be held<br />
later with the program Matlab.<br />
Figure 1. Webcam used in the project<br />
V
Figure 2. Thimble used in the project<br />
The techniques provided by Matlab tool has enabled the treating of each of the<br />
images captured by the webcam when the user runs the application.<br />
Using Matlab, all images taken are read and by recognizing the color black, by a prior<br />
image binarization, the motion made by the user is studied and it returns the value<br />
entered to the interface programmed in Java.<br />
Future studies can extend this application, which currently only has two<br />
options open to you. It recognizes only certain points of vocabulary, therefore, it could<br />
be investigated for the system to recognize all the vocabulary and thus to provide the<br />
implementation of various options for the user to get to partially control the<br />
computer.<br />
VI
Further studies may allow the user to move the mouse with the movement<br />
of the face or simply with the eye movement, thus, the Human Computer Interaction<br />
would be completed which will produce a significant advance in technology.<br />
VII
INDICE<br />
1. INTRODUCCIÓN .............................................................................................................. 1<br />
1.1 DESCRIPCIÓN ....................................................................................................................... 2<br />
1.2 MOTIVACIÓN ....................................................................................................................... 6<br />
2. ESTADO EL ARTE ............................................................................................................. 8<br />
2.1 VISIÓN ARTIFICIAL ............................................................................................................. 19<br />
2.1.1 CAMPOS EN LOS QUE SE APLICA LA VISIÓN ARTIFICIAL ........................................... 23<br />
2.2 PROCESAMIENTO DE IMAGEN .......................................................................................... 25<br />
2.3 IMAGEN DIGITAL ............................................................................................................... 30<br />
2.3.1 BINARIZAR UNA IMAGEN .......................................................................................... 31<br />
2.3.2 HISTOGRAMA DE UNA IMAGEN ................................................................................ 32<br />
3. OBJETIVOS .................................................................................................................... 36<br />
4. TECNOLOGIA UTILIZADA ............................................................................................... 39<br />
4.1 WEBCAM ........................................................................................................................... 40<br />
4.2 SOFTWARE ........................................................................................................................ 49<br />
4.2.1 NETBEANS - JAVA ...................................................................................................... 49<br />
4.2.2 MATLAB ..................................................................................................................... 55<br />
4.2.3 LIBRERÍA JMATLINK ................................................................................................... 58<br />
5. DESARROLLO DE LA APLICACIÓN ................................................................................... 59<br />
5.1 PLAN DE TRABAJO ............................................................................................................. 60<br />
6. TRATAMIENTO DE IMÁGENES CON MATLAB ................................................................. 74<br />
6.1 TIPOS DE IMÁGENES EN MATLAB ..................................................................................... 75<br />
6.2 PROCESADO DE IMÁGENES EN MATLAB .......................................................................... 79<br />
7. PLANIFICACIÓN ............................................................................................................. 80<br />
8. ESTUDIO ECONÓMICO .................................................................................................. 85<br />
8.1 COSTES DE INGENIERÍA ..................................................................................................... 86<br />
8.2 COSTE DEL SOFTWARE UTILIZADO.................................................................................... 90<br />
8.3 COSTE DEL HARDWARE UTILIZADO .................................................................................. 91<br />
8.4 PRESUPUESTO FINAL ......................................................................................................... 92<br />
9. RESULTADOS DEL SISTEMA ............................................................................................ 93<br />
10. CONCLUSIONES Y TRABAJOS FUTUROS .......................................................................... 96<br />
11. BIBLIOGRAFÍA ............................................................................................................... 99<br />
VIII
12. ANEXOS ...................................................................................................................... 101<br />
12.1 MANUAL DE USUARIO ............................................................................................... 102<br />
IX
INDICE DE FIGURAS<br />
Figura 2.1 Eye – Tracking en Google<br />
Figura 2.2 Eye – Tracking en el diario inglés “The Times”<br />
Figura 2.3 Usuario utilizando “Project Natal”<br />
Figura 2.4 Ejemplo de uso de “Project Natal”<br />
Figura 2.5 Ejemplo de uso de “HeadDev”<br />
Figura 2.6 Visión artificial y sus áreas<br />
Figura 2.7 Ejemplos de aplicaciones de visión artificial<br />
Figura 2.8 Imagen tomada con diferentes resoluciones<br />
Figura 2.9 Niveles de manifestación de la señal de la intensidad luminosa<br />
Figura 2.10 Imagen con su correspondiente histograma<br />
Figura 2.11 Imagen a color con sus correspondientes histogramas RGB<br />
Figura 4.1 Diagrama de una videoconferencia a través de webcams<br />
Figura 4.2 Webcam Logitech utilizada<br />
Figura 4.3 Pasos al tomar una imagen<br />
Figura 4.4 Ejemplo aplicación Fix.8<br />
Figura 4.5 Usuario jugando con CamSpace<br />
Figura 4.6 Imagen Webcam. Plaza del Cid (Burgos)<br />
Figura 5.1 Plan de Trabajo del proyecto<br />
Figura 5.2 DFD. Nivel de Contexto (Nivel 0)<br />
Figura 5.3 DFD. Nivel Conceptual (Nivel 1)<br />
X
Figura 5.4 Diagrama de flujo<br />
Figura 6.1 Imagen en escala de grises<br />
Figura 6.2 Imagen RGB<br />
Figura 6.3 Imagen Binaria<br />
Figura 6.4 Filtrado espacial por ventana 3x3<br />
Figura 7.1 Planificación del proyecto<br />
Figura 8.1 Costes de Ingeniería<br />
Figura 8.2 Tarifa €/hora de los participantes<br />
Figura 8.3 Presupuesto final del proyecto<br />
XI
1. INTRODUCCIÓN<br />
1<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
1.1 DESCRIPCIÓN<br />
2<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Las innovaciones tecnológicas siempre representan un avance en la humanidad.<br />
La investigación aplicada finaliza con la creación de herramientas que repercuten en<br />
una mejora en la vida cotidiana de las personas. En el siglo XXI la tecnología ha<br />
invadido todos los ámbitos de la vida y ha hecho que estas herramientas sean<br />
totalmente imprescindibles en nuestro quehacer diario.<br />
Por citar sólo dos ejemplos, en plena Era de la Información somos incapaces de<br />
imaginar una vida sin el ordenador y el teléfono móvil. Comunicarnos a distancia y en<br />
cualquier momento, escribir y guardar documentos, consultar información a través de<br />
Internet, comunicarnos con el mundo, son algunas de las actividades que hoy en día<br />
hacemos con mucha frecuencia y de las que seríamos incapaces de prescindir. Las<br />
mejoras han impactado a la vez en la vida laboral y en nuestros ratos de ocio,<br />
cambiando nuestros hábitos y formas de vida<br />
Estas nuevas tecnologías han permitido sin duda avanzar a los países<br />
desarrollados pero además han permitido también que otros países más atrasados<br />
tuvieran acceso a una información que antes no poseían y ello les ha posibilitado un<br />
buen salto hacia el progreso. Podríamos decir pues que casi todo el mundo se ha<br />
beneficiado de estos inventos.<br />
Así pues la relación con los ordenadores se ha hecho indispensable. Para tener<br />
acceso a las nuevas tecnologías todos los habitantes del planeta han tenido que<br />
desarrollar, en mayor o menor medida, habilidades concretas que les permitieran<br />
comunicarse con los ordenadores.
3<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Sin embargo las nuevas tecnologías han descuidado desde sus comienzos a un<br />
sector importante de la sociedad que también necesita hacer uso de ellas, no<br />
solamente en su trabajo, sino también para mejorar la calidad de vida: los<br />
discapacitados. La dificultad que tiene este sector de la población en cuanto a sus<br />
posibilidades de comunicación con los ordenadores limita enormemente su posibilidad<br />
de disfrutar de todas las ventajas de estas nuevas tecnologías.<br />
Se trata de una aplicación IPO, es decir, Interacción Persona Ordenador, esto<br />
es la disciplina que estudia el intercambio de información entre las personas y los<br />
computadores. Ésta se encarga del diseño, evaluación e implementación de los<br />
aparatos tecnológicos interactivos, estudiando el mayor número de casos que les<br />
pueda llegar a afectar.<br />
Los objetivos son:<br />
• Conseguir que el intercambio sea más eficiente<br />
• Minimizar errores<br />
• Incrementar la satisfacción<br />
• Disminuir la frustración<br />
• Hacer más productivas las tareas que rodean a las personas y los computadores<br />
Es muy importante diseñar sistemas que sean efectivos, eficientes, sencillos y<br />
amenos a la hora de utilizarlos, dado que la sociedad disfrutará de estos avances. La<br />
dificultad viene dada por una serie de restricciones y por el hecho de que en ocasiones<br />
se tienen que hacer algunos sacrificios.
4<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Dado que la interacción persona – computador estudia la comunicación entre<br />
el ser humano y las máquinas, esto provoca que se tengan que tener unos<br />
conocimientos por parte de ambos, humano y máquina.<br />
Con el fin de tener un concepto más aproximado sobre el campo de interacción<br />
persona – computador, contemplamos que está especializado en:<br />
� La unión de las tareas de los humanos con las máquinas<br />
� Las capacidades humanas para utilizar las máquinas<br />
� Los algoritmos y programas de la interfaz en sí<br />
� Conceptos de ingeniería que se plantean a la hora de diseñar y construir<br />
interfaces<br />
� El proceso de especificación, diseño e implantación de la interfaz<br />
� Sacrificios del diseño<br />
En conclusión, cuenta con aspectos científicos de ingeniería y diseño.<br />
Los componentes fundamentales son:<br />
� El usuario: Hay que tener en cuenta que el ser humano tiene una capacidad<br />
limitada de procesar información; lo cual es importante considerar a la hora de<br />
hacer el diseño. Nos podemos comunicar a través de cuatro canales de<br />
entrada/salida: visión, audición, tacto y movimiento. La información recibida se<br />
almacena en la memoria sensorial, la memoria a corto plazo y la memoria a<br />
largo plazo. Una vez recibimos la información, ésta es procesada a través del<br />
razonamiento y de habilidades adquiridas. A todo este proceso afectará el<br />
estado emocional del usuario, dado que influye directamente sobre las<br />
capacidades de una persona.
5<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� El computador: El sistema utilizado puede afectar de diferentes formas al<br />
usuario. Los dispositivos de entrada permiten introducir texto, como sería el<br />
caso del teclado del ordenador. Como dispositivos de salida contaríamos con<br />
diversos tipos de pantallas. Los sistemas de realidad virtual y de visualización<br />
3D juegan un rol muy importante en el mundo de la interactividad persona –<br />
computador.<br />
� El origen del proceso interactivo: Es importante que haya una buena<br />
comunicación entre usuario y computador, por este motivo, la interfaz tiene<br />
que estar diseñada pensando en las necesidades del usuario. Es de vital<br />
importancia este buen entendimiento entre ambas partes dado que sino la<br />
interacción no será posible.
1.2 MOTIVACIÓN<br />
6<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La motivación que nos lleva a la realización de este proyecto es el hecho de<br />
ayudar a las personas de este sector de la población que tienen problemas para<br />
comunicarse con el ordenador y ven con ello limitado su uso.<br />
La forma más común de interactuar con el ordenador es a través del ratón y el<br />
teclado. Dentro de los discapacitados hay distintos grados de limitación y en algunos<br />
casos las posibilidades de comunicación con el ordenador se ven impedidas.<br />
Mediante este proyecto se pretende aportar una contribución a los avances en<br />
este campo creando y desarrollando una nueva interfaz que permita que una persona<br />
con movilidad limitada pueda utilizar el ordenador comunicándose con él mediante<br />
simples movimientos de la mano.<br />
Con objeto de ayudar a personas con discapacidades o que tienen dificultades<br />
para acceder al ordenador utilizando los sistemas estándar, se ha creado una forma<br />
nueva de comunicación a través de reconocimientos gestuales. La persona interesada,<br />
utilizando sólo una webcam normal, podrá enviar instrucciones al ordenador mediante<br />
movimientos espaciales con su mano. El programa creado, procesando una<br />
superposición de parámetros de posición y movimiento, se encargará de interpretar<br />
los gestos de la persona y transformarlos en instrucciones para el ordenador,<br />
eliminando de esta manera su limitación.
7<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Además de todo lo mencionado el proyecto tiene dos ventajas añadidas. En<br />
primer lugar podría suponer un avance en la rehabilitación psíquico física de pacientes<br />
con enfermedades como Alzheimer, Parkinson, etc. Y en segundo no podemos olvidar<br />
la posibilidad de que esta nueva interfaz pueda ser utilizada por personas que, sin<br />
tener ninguna discapacidad, quieran utilizarla como una alternativa de comunicación<br />
hacia nuevos mundos virtuales.
2. ESTADO EL ARTE<br />
8<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
9<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En la actualidad, para poder tener acceso al ordenador las personas que tienen<br />
algún tipo de discapacidad motriz requieren de diversas ayudas técnicas. Por un lado,<br />
periféricos adaptados como teclados especiales, ratones controlados por un joystick,<br />
otros de tipo “TrackBall” o multimouse. Y por otro lado, adaptaciones y modificaciones<br />
de los programas ya existentes en el mercado o programas específicos como los de<br />
barrido controlados por un pulsador o los emuladores de teclado y ratón en pantalla.<br />
De hecho, si una persona es capaz de realizar un control voluntario sobre alguna parte<br />
de su cuerpo mediante un pulsador y un sistema de barrido puede controlar un<br />
ordenador y cualquier programa y con esta herramienta controlar su entorno próximo<br />
y acceder a un entorno lejano.<br />
En general, los sistemas con joysticks o pulsadores se basan en el control<br />
mecánico de un aparato o sensor conectado físicamente al ordenador. Cada usuario<br />
requiere un sistema personalizado que incluye los soportes que sujetan el pulsador o<br />
joystick en la posición adecuada, el pulsador específico con el que puede trabajar y<br />
sistemas de barrido personalizados, etc. Ello tiene como gran ventaja su simplicidad<br />
técnica, pero supone encadenar a la persona a la máquina y complicar el proceso de<br />
preparación antes de trabajar. Además, se conoce el elevado coste del material<br />
informático adaptado.<br />
El Reconocimiento Gestual es una parte de las ciencias de la computación y<br />
tecnología del lenguaje. En este campo el objetivo es la interpretación de gestos a<br />
través de algoritmos. Los gestos pueden proceder de cualquier movimiento corporal<br />
pero más comúnmente de la cara o de las manos.
10<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Se han estudiado e investigado muchos algoritmos de procesamiento de<br />
imagen para utilizarlos con diversos equipos de captura de la imagen o de visión, como<br />
pueden ser las Webcams, cámaras digitales, sensores… con el fin de interpretar el<br />
lenguaje de los signos, posturas y gestos de la persona humana, con el fin de detectar<br />
su comportamiento y utilizarlo como una posible interfaz con el ordenador, llevando a<br />
técnicas de reconocimiento gestual con dicha finalidad.<br />
El Reconocimiento Gestual puede ser visto como una forma en la que las<br />
máquinas empiecen a comprender el lenguaje del cuerpo humano y el avance hacia un<br />
auténtico interfaz humano natural con el ordenador.<br />
Actualmente, existen diferentes aplicaciones que permiten reconocer los<br />
movimientos capturados a través de un dispositivo de video o imagen. Muchos de<br />
ellos, están realizados utilizando dispositivos LED que la persona coloca en sus manos o<br />
incluso su cara y así reconocer el movimiento a través de la webcam y poder plasmar<br />
el mismo.<br />
La tecnología hoy en día avanza a pasos agigantados, en los cuales podemos<br />
encontrar hasta móviles que realicen este tipo de servicios, ya que muchos de ellos se<br />
pueden utilizar o pueden activar funciones simplemente pasando la mano sobre el<br />
dispositivo móvil o incluso moviéndolos hacia un lado, o cambiando su postura,<br />
aunque todavía no se ha implementado el interfaz a través de los gestos.<br />
A día de hoy podemos encontrar diversas aplicaciones tanto para mandar<br />
órdenes al ordenador como para poder realizar estudios de marketing y diseños de<br />
creadores de páginas web.<br />
Aún son muchos los posibles avances de la tecnología en este ámbito.
Se pueden destacar las siguientes aplicaciones:<br />
EYE –TRAKING<br />
11<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El “Eye Tracking” es una técnica interesante para mejorar el diseño y la<br />
usabilidad de los sitios web. Consiste en seguir los movimientos de los ojos en el<br />
momento en que se visualiza una determinada página y en comprobar qué elemento<br />
de la página se pincha. De esta manera, se estudia qué es lo que más atrae del diseño y<br />
el contenido de un sitio.<br />
Este estudio puede partir de una máquina avanzada que controla todos los<br />
parámetros de la mirada (distancia, duración, etc) o también a partir de una webcam<br />
asociada con un software. Entre las alternativas gratuitas se pueden citar 2 de código<br />
libre que realizan la tarea de analizar el movimiento de los ojos: Opengazer, para<br />
GNU/Linux y cuyo desarrollo está detenido y TrackEye<br />
El concepto de Eye – Tracking hace referencia a un conjunto de tecnologías que<br />
permiten monitorizar y registrar la forma en la que una persona mira una determinada<br />
escena o imagen, en concreto en qué áreas fija su atención, durante cuánto tiempo y<br />
qué orden en su exploración visual.<br />
Las técnicas de Eye – Tracking tienen gran potencial de aplicación en una<br />
amplia variedad de disciplinas y áreas de estudio, desde el marketing y la publicidad<br />
hasta la investigación médica o la psicolingüística, pasando por los estudios de<br />
usabilidad. En esta última clase de estudios, el objetivo es determinar la forma en la<br />
que el usuario explora visualmente la interfaz a través de la que interactúa con el<br />
sistema.
12<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En el contexto de la Interacción Persona – Ordenador (IPO), podemos diferenciar<br />
dos posibles vertientes de aplicación del Eye – Tracking:<br />
• Uso como dispositivo de entrada o interacción: Aunque la precisión del eye -<br />
tracking como dispositivo de entrada dista de la de otros, como el ratón o el<br />
teclado, puede tener numerosas aplicaciones prácticas, tales como su uso en<br />
entornos de realidad virtual o por usuarios con discapacidad motriz. Pero<br />
además, incluso en determinadas operaciones como la selección de objetos de<br />
la interfaz, la mirada puede resultar más rápida que la acción mediante el<br />
ratón.<br />
• Uso como herramienta para la evaluación objetiva de interfaces: En el uso del<br />
Eye – Tracking como herramienta de evaluación, la información extraída ya no<br />
requiere un análisis y respuesta en tiempo real por el sistema, sino que es<br />
registrada mediante ficheros de log, para su posterior análisis e interpretación.
13<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En la Figura 2.1 se muestra un ejemplo de la aplicación Eye – Tracking en la<br />
página web de Google realizando una búsqueda cualquiera. Como se puede<br />
comprobar, el usuario dirige más la mirada a la parte superior izquierda de la pantalla,<br />
donde se muestran los primeros resultados de la búsqueda realizada. Esta técnica se<br />
utiliza en empresas de diseño web, para concentrar la información más relevante en<br />
las zonas donde el usuario dirija su mirada más frecuentemente.<br />
Figura 2.1. Eye – Tracking en Google
14<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La Figura 2.2 muestra los resultados obtenidos al utilizar la técnica de “Eye –<br />
Tracking” en una persona que visualiza la página web del diario inglés “The Times”.<br />
Como se pude comprobar, el usuario centra completamente su mirada a los titulares<br />
principales y a noticias secundarias que se encuentran en los laterales de la misma<br />
página. Eso explica que la noticia más importante del día esté ubicada en esa zona de<br />
la página web.<br />
Figura 2.2. Eye – Tracking en el diario inglés “The Times”
PROYECTO NATAL DE MICROSOFT<br />
15<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Se espera que en 2010 Microsoft lance al mercado uno de los mejores avances<br />
en la tecnología de los videojuegos y reconocimiento de cuerpo a través de un<br />
controlador de movimiento.<br />
El sistema Natal se basa en una barra que incorpora una cámara y un micrófono<br />
que se encargan de recoger todo lo que se hace y se dice delante de ella. No solo sabe<br />
quién está utilizándolo, lo que se dice o lo que se hace, sino que conoce a qué distancia<br />
está la persona del sistema. En 3D, analizando e interpretando todos los movimientos<br />
del cuerpo y la orientación de los mismos.<br />
El sensor de profundidad está formado por un proyector de infrarrojos en<br />
combinación con un sensor CMOS que ve la estancia en 3D independientemente de las<br />
condiciones de luz de la misma.<br />
Existen diferentes estudios actualmente que están en proceso de eliminar el<br />
ratón del ordenador y poder manejar el mismo simplemente con el reconocimiento<br />
facial de la persona. Estos estudios están hoy en día desarrollándose, y dentro de unos<br />
años podrán verse a la luz.<br />
En las Figuras 2.3 y 2.4 se muestran dos ejemplos de uso de “Project Natal”.<br />
Como se puede comprobar en las imágenes, los usuarios utilizan la aplicación a una<br />
cierta distancia y simulan utilizar un monopatín o conducir un coche en una carrera<br />
automovilística respectivamente.
Figura 2.3. Usuario utilizando “Project Natal”<br />
Figura 2.4. Ejemplo de uso de “Project Natal”<br />
16<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
PROYECTO HEADDEV<br />
17<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El proyecto HeadDev o el “ratón facial para discapacitados”, desarrollado por la<br />
Fundación Vodafone España y la Fundación para la Integración de Discapacidades en<br />
Red cuyo objetivo es facilitar el acceso a las TIC a todos los grupos sociales a la<br />
incorporación de “Accesibilidad Universal y Diseño para Todos”.<br />
HeadDev es un software gratuito que permite la interacción persona –<br />
computador, sin necesidad del uso de las manos, cables, sensores u otro tipo de<br />
dispositivo. La interacción se obtiene a través del uso de una cámara tipo webcam USB<br />
estándar que reconoce el movimiento de la cara ya que en el sistema sólo se emplea la<br />
nariz u otros movimientos faciales como puntero de ratón sobre teclado virtual en la<br />
pantalla del ordenador para efectuar los eventos de un ratón convencional.<br />
HeadDev está dirigido a personas con discapacidades motrices severas. El<br />
desarrollo de investigaciones destinadas a la inserción de personas con discapacidades<br />
hacia el área de las TICs tiene la enorme responsabilidad de permitir mejorar<br />
ostensiblemente la calidad de vida.<br />
Figura 2.5. Ejemplo uso de “HeadDev”
18<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Los desarrollos informáticos y los mundos virtuales (como lo es la Ingeniería del<br />
Software, Desarrollo de Aplicaciones, entre otros) prescinden de actividades físicas<br />
severas permitiendo integrar personas con discapacidades.<br />
El proyecto ha sido desarrollado por un grupo de investigadores de la Unidad<br />
de Gráficos y Visión por Ordenador del Departamento de Matemáticas e Informática<br />
de la Universidad de Baleares y la empresa, spin – off de la UIB, TAGRV S.L.<br />
especializada en el desarrollo de software gráfico y de realidad virtual.<br />
Se pretende que el software sea capaz de mejorar la calidad de vida de las<br />
personas y muy especialmente en el ámbito de las discapacidades. Con HeadDev se ha<br />
querido contribuir a una Sociedad de la Información más accesible para todos y a la<br />
igualdad de oportunidades en el acceso a las TIC precisamente para aquellas personas<br />
a las cuales las nuevas tecnologías pueden suponer muy especialmente nuevas<br />
oportunidades de formación, empleo y ocio, concibiendo el ordenador como una<br />
herramienta integradora y la tecnología al servicio del desarrollo humano, potenciando<br />
las capacidades de las personas.
2.1 VISIÓN ARTIFICIAL<br />
19<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La visión artificial es un subcampo de la inteligencia artificial. El propósito de la<br />
visión artificial es programar un ordenador para que entienda una escena o las<br />
características de una imagen.<br />
Los objetivos típicos de la visión artificial incluyen:<br />
� Detección, segmentación, localización y reconocimiento de ciertos objetos en<br />
imágenes<br />
� Evaluación de los resultados<br />
� Registro de diferentes imágenes de una misma escena u objeto<br />
� Detección de movimiento de un objeto y su dirección y seguimiento del mismo<br />
en una secuencia de imágenes<br />
� Mapeo de una escena para generar un modelo tridimensional de la escena<br />
� Estimación de posturas tridimensionales de humanos<br />
� Búsqueda de imágenes digitales por su contenido<br />
� Detección de formas y su uso en la producción industrial y almacenaje<br />
Este proyecto está relacionado con la Visión Artificial ya que su objetivo es<br />
desarrollar una aplicación que sea capaz de reconocer el movimiento capturado por<br />
unas Webcams y lo traduzca en órdenes al ordenador, utilizando para ello funciones<br />
de procesamiento digital de la imagen.<br />
Los objetivos de la Visión Artificial se convierten también en parte, en objetivos<br />
de este proyecto.
La Figura 2.6 muestra las relaciones existentes entre la visión artificial y sus áreas más<br />
afines<br />
Figura 2.6. Visión artificial y sus áreas<br />
La visión artificial es uno de los tipos de percepción que más se ha trabajado desde los<br />
comienzos de la Inteligencia Artificial como disciplina.<br />
La visión de los humanos es una característica que típicamente se ha tratado de<br />
emular de manera artificial para poder luego construir dispositivos inteligentes con<br />
ciertas habilidades basadas en la visión. Luego, la visión artificial se puede definir como<br />
la capacidad de ver mediante dispositivos que procesan su información en un<br />
ordenador.<br />
20<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
21<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La visión artificial incluye muchas técnicas que son útiles para sí misma. Por<br />
ejemplo, el procesamiento de imágenes (que se refiere a la transformación,<br />
codificación y transmisión de las imágenes) y la extracción de patrones. Así, aunque la<br />
visión artificial se refiere ciertamente al procesamiento de imágenes, estas imágenes<br />
son solamente la materia prima de una ciencia mucho más amplia, la misma que se<br />
esfuerza en última instancia para emular las capacidades perceptivas del hombre, y<br />
quizás, para verter una luz sobre la manera por la cual él logra su interacción<br />
adaptativa y robusta con su ambiente.<br />
En la Figura 2.7 se muestran las diferentes aplicaciones de la Visión Artificial.<br />
Figura 2.7. Ejemplos de aplicación de visión artificial
22<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La visión artificial o visión por computador es un campo de la Inteligencia<br />
Artificial que consiste en programar mediante computador un conjunto de procesos<br />
para que pueda llegar a comprender una escena; pero también existen definiciones en<br />
las que se contrapone que la visión artificial no ha de ser obligatoriamente parte de la<br />
Inteligencia Artificial. Así, como segunda definición se tiene que la visión artificial es un<br />
conjunto de técnicas que permiten obtener información por métodos ópticos y<br />
algorítmicos de manera automática o asistida por un operador.<br />
Este conjunto de técnicas incluye pre procesamiento, segmentación, descripción,<br />
clasificación e interpretación de resultados.<br />
La percepción del mundo actual abarca la detección y clasificación inmediata de<br />
múltiples objetos tanto animados como inanimados. Así la visión constituye una<br />
ventana al reconocimiento del mundo y el sentido con mayores posibilidades de que<br />
disponemos para conocer el mundo observándolo. La visión artificial, pretende realizar<br />
y simular tareas de este proceso mediante sistemas ópticos y computacionales en<br />
lugar de un ojo y cerebro de un ser vivo.<br />
Las imágenes recogidas para su interpretación son imágenes digitales. Una<br />
imagen digital es una representación discreta, con valores en puntos regularmente<br />
muestreados y es una representación cuantificada, donde cada valor es un número<br />
entero. Las imágenes constituyen la materia prima de una ciencia que se esfuerza en<br />
emular las capacidades perceptivas del hombre.<br />
La visión artificial incluye muchas técnicas, algunas de ellas son el<br />
procesamiento de imágenes y la extracción de patrones; otras más significativas tratan<br />
de conseguir una descripción geométrica útil: forma, perímetro, área para realizar<br />
modelos geométricos y con otra se realiza un análisis de color.
23<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
2.1.1 CAMPOS EN LOS QUE SE APLICA LA VISIÓN ARTIFICIAL<br />
Los primeros experimentos con computadores para desarrollar sistemas<br />
artificiales de visión comenzaron hace relativamente poco tiempo; los ya realizados<br />
han abarcado una gran variedad de áreas como ofimática, medicina, seguridad.<br />
En esta era multimedia, el procesamiento de imágenes digitales es la tecnología<br />
más importante que se puede asistir en la producción de imágenes.<br />
Son muchas las aplicaciones que hacen uso de las técnicas de procesado de la imagen:<br />
• Biología: el procesado de imágenes se usa para analizar visualmente las<br />
muestras biológicas, identificación automática, clasificación, categorización y<br />
análisis de ADN en otros<br />
• Procesado de documentos: esta tarea es muy difícil para bancos y compañías<br />
de seguros. Estos documentos están digitalmente comprimidos y guardados. Se<br />
detecta e identifica automáticamente la información impresa sobre cheques y<br />
otros documentos contables<br />
• Automatización en la industria: para inspección y supervisión automática en<br />
líneas de producción de grandes empresas. Esto reduce el error humano al<br />
tiempo que proporciona estabilidad y precisión en la producción<br />
• Diagnóstico a partir de imágenes médicas: los rayos X y las proyecciones CT<br />
médicas se digitalizan para examinar áreas internas del cuerpo. Las imágenes se<br />
combinan y digitalizan automáticamente para la producción de imágenes 3D.<br />
• Teledetección: los satélites fotografían la corteza exterior de la Tierra a<br />
intervalos regulares y las imágenes se unen para estudiar diferentes tareas<br />
ejercidas en la superficie terrestre. También pueden ser convertidas a imágenes<br />
3D a partir de las 2D tomadas por los satélites
24<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
• Efectos de video/film: la industria cinematográfica usa una extensa variedad de<br />
técnicas de procesado de imágenes para producir efectos visuales especiales.<br />
Las imágenes irreales y otras escenas costosas son artificialmente producidas<br />
usando técnicas de Información Gráfica y/o Procesamiento de Imágenes<br />
Digitales<br />
• Identificación mediante biométrica, marcas de agua, meteorología, ciencia de<br />
los materiales…<br />
Todas estas técnicas comienzan con el estudio de las capacidades visuales del ser<br />
humano para luego llevarlo al campo digital.
2.2 PROCESAMIENTO DE IMAGEN<br />
25<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El procesamiento de imágenes es el conjunto de técnicas que se aplican a las<br />
imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de<br />
información.<br />
Las operaciones que se pueden realizar con imágenes se dividen en:<br />
� Operaciones de punto<br />
� Operaciones de entorno<br />
� Operaciones con dos o más imágenes<br />
A diferencia del estudio de los mecanismos de la visión humana, el<br />
procesamiento y análisis de imágenes digitales nace en el momento en que se dispone<br />
de recursos tecnológicos para captar y manipular grandes cantidades de información<br />
espacial de matrices de valores. Esta distinción sitúa al procesamiento y análisis de<br />
imágenes digitales como una tecnología asociada a las Ciencias de la Computación y<br />
por tanto, cabe pensar de ella como una proyección del término Visión Artificial dentro<br />
del ámbito de la Inteligencia Artificial.<br />
La secuencia típica de procesado de imágenes suele implicar los siguientes pasos:<br />
1. Captura de la imagen a partir del proceso físico que la genera mediante el<br />
sensor adecuado<br />
2. Restauración y realce para reducir ruidos y mejorar su calidad<br />
3. Codificación, segmentación y extracción de propiedades<br />
4. Interpretación
26<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El análisis humano de imágenes u objetos presenta dificultades, pues el proceso<br />
de inspección visual consume una gran cantidad de tiempo y está sujeto a<br />
interpretaciones incoherentes e incompletas. El procesamiento de imágenes, que<br />
comprende la manipulación por ordenador de imágenes reales, resuelve estos<br />
problemas al poder automatizar el proceso de extracción de información útil de los<br />
datos de la imagen. Con el procesamiento de imágenes, también se puede<br />
perfeccionar la imagen, corregir distorsiones...<br />
Uno de los más importantes y sencillos preprocesamientos es la detección de<br />
bordes. Importante porque de él se puede empezar a extraer importante información<br />
de la imagen, como pueden ser las formas de los objetos que la componen, y sencillo<br />
porque los operadores de detección de bordes son simples máscaras de convolución.<br />
La detección de bordes es a menudo el primer paso en la segmentación de la<br />
imagen, que es un campo del análisis de la imagen, y se utiliza para agrupar los píxeles<br />
en regiones para determinar una composición de la imagen. La detección de bordes<br />
también es usada en el registro de imagen, el cual alinea dos imágenes que podrían ser<br />
adquiridas en momentos separados.<br />
Los bordes de una imagen contienen mucha información de la imagen. Los<br />
bordes cuentan donde están los objetos, su forma, su tamaño, y también su textura.<br />
Los ejes o bordes se encuentran en zonas de una imagen donde el nivel de intensidad<br />
fluctúa bruscamente, cuanto más rápido se produce el cambio de intensidad, el eje o<br />
borde es más fuerte.<br />
En el procesamiento de imágenes se utilizan diferentes técnicas para realzar las<br />
propiedades de la imagen a fin de facilitar el proceso de segmentación, la extracción<br />
de características y finalmente su interpretación.
Las técnicas de procesamiento de imágenes se pueden clasificar en:<br />
� Las procedentes del procesamiento de señales<br />
� Las que mejoran algún aspecto de la imagen<br />
27<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El proceso de muestreo es la tarea de discretización del escenario en el plano sensor.<br />
Está relacionado con la resolución espacial de la imagen<br />
Figura 2.8. Imagen tomada con diferentes resoluciones
28<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La cuantificación de la señal es el número finito de los valores de intensidad de<br />
cada píxel. Se suele emplear un byte de cuantificación por píxel, consiguiendo así 256<br />
niveles de gris. El 0 corresponde al color negro y el 255 al blanco. Entre estos dos<br />
valores están los distintos tonos de gris.<br />
Para las imágenes en color, la cuantificación es vectorial; por cada píxel se<br />
representan tres valores. Estos tres valores dependen del sistema de representación<br />
del color: RGB (Red Green Blue), HSV (Hue, Saturation, Value), HSI… Comúnmente se<br />
utiliza RGB con un byte por cada color consiguiendo 256 niveles o 16 millones de<br />
colores.<br />
En el apartado [2.3.1] de este documento se explica el tratamiento de imágenes<br />
en tonos de grises y a color mediante el histograma correspondiente.<br />
Figura 2.9. Niveles de cuantificación de la señal de la intensidad luminosa
29<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En las técnicas de procesado de las imágenes se trata el valor de la intensidad de cada<br />
píxel hasta conseguir el resultado deseado.
2.3 IMAGEN DIGITAL<br />
30<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Una imagen digital es una función f(x,y) que ha sido discretizada en ambas<br />
coordenadas espaciales (x,y) y en el nivel de gris. Se considera que el nivel de brillo<br />
mínimo equivale al negro, el máximo al blanco y los valores intermedios son distintos<br />
niveles de gris que varían del negro al blanco.<br />
Principalmente, tenemos las siguientes características de una imagen:<br />
• La resolución: La resolución de una imagen se refiere al número de puntos por<br />
unidad de distancia que ésta tiene, de forma que a mayor número de puntos<br />
por centímetro mayor resolución y más definida estará la imagen<br />
• La profundidad del color: La profundidad del color de una imagen se refiere al<br />
número de niveles de gris (o número de colores) que empleamos para<br />
representar la imagen. Un valor aceptable podría corresponder con una<br />
profundidad de color de 8 bits, equivalente a 256 distintos niveles de gris
2.3.1 BINARIZAR UNA IMAGEN<br />
31<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La binarización de imágenes es una tarea básica en muchas aplicaciones de<br />
procesamiento digital de imágenes. El objetivo es obtener una imagen que solo sea<br />
representada por dos tonos de color, por lo general blanco y negro. La idea para<br />
realizar este trabajo es sencilla, solo hay que decidir qué tono de color dar a cada píxel<br />
que sea mayor que un determinado umbral (valor límite), el resto de píxeles tendrán<br />
por defecto el otro tono de color.<br />
La binarización de una imagen consiste en comparar los niveles de gris<br />
presentes en la imagen con un valor (umbral) predeterminado. Si el nivel de gris es<br />
menor que el umbral predeterminado, se le asigna al píxel de la imagen binarizada el<br />
valor 0 (negro), y si es mayor, se le asigna un 1 (blanco). De esta forma se obtiene una<br />
imagen en blanco y negro.<br />
Generalmente se utiliza un umbral de 128 si se trabaja con 255 niveles de gris, pero en<br />
algunas aplicaciones se requiere de otro umbral.
2.3.2 HISTOGRAMA DE UNA IMAGEN<br />
32<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El histograma de una imagen contiene la información de la probabilidad de<br />
aparición de las distintas tonalidades de color que se pueden dar en cada caso, ya que<br />
podemos trabajar en distintos tipos de colores o en escala de grises. En el caso de una<br />
imagen en color, no podemos hablar de un único histograma que caracterice a la<br />
imagen, sino de tres histogramas, uno para cada color (RGB, por ejemplo).<br />
La creación de un histograma, en el caso de una imagen en escala de 256<br />
tonalidades del blanco al negro (escala de grises), se realiza fácilmente mediante<br />
medios informáticos, de manera que, en primer lugar se crea un vector que contenga<br />
256 posiciones, una por cada nivel de gris, el algoritmo recorrerá cada uno de los<br />
pixeles de la imagen, aumentando en una unidad el valor guardado en la posición del<br />
vector correspondiente al tono del pixel en cuestión.<br />
Figura 2.10. Imagen con su correspondiente histograma
33<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El histograma proporciona una descripción de la apariencia global de una<br />
imagen. De forma que si los niveles de gris están concentrados hacia el extremo oscuro<br />
del rango de la escala de gris, la apariencia global de la imagen será oscura, mientras<br />
que si sucede justo lo contrario, la imagen correspondiente será brillante. Por su parte,<br />
el histograma que presente un perfil estrecho corresponderá a una imagen de bajo<br />
contraste y un histograma con una dispersión considerable a una imagen de alto<br />
contraste.<br />
En el caso de la imagen en color, aparecen tres histogramas, de forma que el<br />
tratamiento de imágenes en color se complica por la aparición de nuevos<br />
componentes. Ahora el histograma no contiene los tonos del negro al blanco, sino del<br />
negro al color correspondiente (rojo, verde o azul – caso RGB –). Al elaborar el<br />
histograma, el algoritmo debe separar el color correspondiente a cada pixel en sus<br />
componentes RGB (rojo, verde y azul).
34<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Figura 2.11. Imagen a color con sus correspondientes histogramas RGB<br />
Un histograma es un gráfico estadístico que permite representar la distribución<br />
de intensidad de los píxeles de una imagen, es decir, el número de píxeles que<br />
corresponde a cada intensidad luminosa. Por convención, el histograma representa el<br />
nivel de intensidad con coordenadas X que van desde lo más oscuro a lo más claro.
35<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En general, se representa como un gráfico de barras en el que las abscisas son<br />
los distintos colores de la imagen y las ordenadas la frecuencia relativa con la que cada<br />
color aparece en la imagen. El histograma proporciona información sobre brillo y el<br />
contraste de la imagen, y puede ser utilizado para ajustar estos parámetros, eliminar<br />
ciertas tonalidades molestas...
3. OBJETIVOS<br />
36<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
37<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Son muchos los objetivos al desarrollar este proyecto, se pueden destacar los<br />
siguientes:<br />
� Desarrollar una librería que permita<br />
o Capturar imágenes<br />
o Analizar las imágenes capturadas<br />
o Obtener parámetros de la posición de los dedos y manos<br />
� Utilizar dicha librería para mostrar la bondad del sistema por medio de un<br />
programa que permita capturar el movimiento, interpretarlo y actuar en el<br />
ordenador.<br />
� Posibles aplicaciones en salud y juegos<br />
El objetivo principal de este proyecto es proporcionar una herramienta a las<br />
personas que tienen dificultad para acceder al ordenador. Por ello, se pretende<br />
desarrollar una aplicación que sea capaz de capturar imágenes a través de una<br />
webcam, analizar las imágenes capturadas y obtener los parámetros para reconocer la<br />
letra realizada por el usuario.<br />
Para conseguir estos objetivos, se han estudiado los diferentes programas de<br />
tratamiento de imágenes existentes en el mercado, y se ha decidido trabajar con el<br />
programa Matlab, ya que proporciona una herramienta de manejo de imágenes muy<br />
buena.
inicialmente:<br />
38<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Las siguientes tareas son la llave para alcanzar con éxito los objetivos previstos<br />
• Mostrar una webcam mediante la cual el usuario realiza el movimiento<br />
y la aplicación captura diferentes imágenes cada 50 milisegundos<br />
• Una vez se tienen las imágenes almacenadas, se estudian mediante el<br />
programa realizado en Matlab<br />
• Una vez se ha reconocido el movimiento realizado por el usuario se<br />
devuelve el valor y el programa ejecuta una u otra opción dependiendo<br />
del resultado obtenido<br />
• Se muestran las opciones al usuario y se ejecuta la elegida
4. TECNOLOGIA UTILIZADA<br />
39<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
4.1 WEBCAM<br />
40<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Para el desarrollo del proyecto es necesaria la utilización de una webcam para<br />
la captura de imágenes.<br />
Una cámara web o webcam es una pequeña cámara digital conectada a una<br />
computadora, la cual puede capturar imágenes y transmitirlas a través de Internet en<br />
tiempo real.<br />
En 1991, se puso en marcha la primera webcam localizada en el departamento<br />
de Ciencia y Computación de la Universidad de Cambridge, y desde entonces, se ha<br />
propagado a hogares, negocios, oficinas e incluso calle públicas. Las webcam se suelen<br />
usar para uso personal en casas privadas, principalmente para contactar con familiares<br />
lejanos, monitorizar casas desde el trabajo o desde otra parte remotamente. Puede ser<br />
para vigilar una mascota o por temas de seguridad. En realidad, los usos que se le<br />
pueden dar son innumerables.<br />
En el área laboral, se suelen usar las webcam para realizar video conferencias.<br />
Algunas entidades usan esta tecnología para dar acceso público a una gran variedad de<br />
información, que puede ir desde el tiempo y el tráfico, hasta otros lugares de interés<br />
turístico o popular por alguna razón. En menor medida, algunos colegios o centros de<br />
enseñanza usan las webcam para permitir a familiares ver lo que están haciendo sus<br />
hijos.
41<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Figura 4.1. Diagrama de una videoconferencia a través de webcams<br />
Una webcam básicamente trabaja capturando una serie de imágenes digitales<br />
que son transferidas por el ordenador a un servidor, y luego mostradas en una página<br />
alojada para tal propósito. Hay sitios que permiten a sus usuarios enviar y almacenar<br />
sus imágenes de webcam de forma gratuita, para uso particular.<br />
Las webcam pueden variar en sus capacidades y funciones, y estas variaciones<br />
se reflejan en el precio. Algunas webcam capturan una imagen fija solo una vez cada<br />
30 segundos, mientras que otras proveen de un flujo continuo capturando 30<br />
imágenes por segundo.
42<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Las webcams están diseñadas para enviar vídeos en vivo y grabados así como<br />
capturas de imagen a través de la red a uno o más usuarios. Una webcam también<br />
puede ser una cámara digital colocada en alguna parte del mundo, enviando vídeo que<br />
se ve a través de un sitio web, de modo que los usuarios puedan ver ciertos<br />
acontecimientos en vivo.<br />
El papel que toma la webcam en este proyecto es el de captar imágenes cada<br />
50 milisegundos del movimiento gestual de la persona en tiempo real. Estas imágenes<br />
son almacenadas para luego tratarlas y calcular el movimiento producido por el<br />
usuario.<br />
De todas las atracciones que Internet ofrece a sus navegantes hay pocas<br />
capaces de ejercer el magnetismo de las webcams. También llamadas “cámaras<br />
espías” y “netcams”, tienen esa indefinible fascinación de mostrarnos escenas<br />
cotidianas de lugares remotos tal como las ven sus pobladores en el mismo instante.<br />
Esencialmente son una combinación de equipamiento sencillo y hasta barato<br />
comparado con los resultados que permite. Para poner una webcam en marcha se<br />
necesitan tres elementos:<br />
� Cámara: Cualquier cámara de video, de aficionado o profesional, de la norma y<br />
el formato de cinta que se quiera o se tenga, sirve.<br />
� Plaqueta digitalizadora: Instalada en un ordenador común, recibe la imagen<br />
captada por la cámara y se encarga de “tomar la fotografía”. Para ello<br />
“congela” o digitaliza una sola de las 25 a 30 pantallas que genera la cámara<br />
cada segundo, tal como si escogiera uno de los cuadros o fotogramas de una<br />
película de cine
43<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� Software: Controla la plaqueta digitalizadora. Básicamente “aprieta el<br />
disparador”, es decir, ordena a la plaqueta en qué instante digitalizar, según el<br />
intervalo fijado por el usuario. Obtenida la imagen, la convierte en un formato<br />
compatible y graba el archivo resultante en el servidor conectado a la red<br />
mundial.<br />
Podemos encontrar diferentes tipos de webcam, algunos de ellos son:<br />
o Webcams remotas: Algunas webcams están instaladas a grandes distancias del<br />
ordenador que se encargan del proceso. La única diferencia en este caso es que<br />
la imagen no podrá enviarse por cable. Es necesario un equipo transmisor junto<br />
a la cámara para convertir la imagen en señal de radio, y uno receptor junto al<br />
ordenador, que reconvierte la señal de radio en imagen, tal como normalmente<br />
llega un programa desde exteriores a un canal de televisión.<br />
o Webcams con servidores de Internet remotos: Como las líneas directas a<br />
Internet son todavía costosas para los aficionados o pequeñas empresas que<br />
operan webcams, lo usual es que el ordenador que digitaliza la imagen no sea<br />
el mismo servidor al que se accede por la red. En este caso, la escena ya<br />
digitalizada y convertida en archivo gráfico debe ser transmitida a intervalos<br />
regulares desde el ordenador que la digitaliza hasta el servidor de acceso<br />
público conectado a Internet. Esa es tarea de programas que actúan<br />
coordinadamente con el software de digitalización, y en ocasiones un solo<br />
programa hace todo el trabajo. Una vez generado el archivo con la imagen, el<br />
programa automáticamente llama al proveedor local de Internet, se conecta<br />
con el servidor de destino y transmite el gráfico vía FTP (protocolo de<br />
transferencia de archivos) al directorio del que será leído cada vez que se pida<br />
ver la imagen.
44<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
o Webcams controlables a través de Internet: En este caso, el software del<br />
ordenador que digitaliza la imagen es un poco más complejo porque puede<br />
gobernar un mecanismo que mueve la máquina y algunos de sus sistemas<br />
(como por ejemplo la lente zoom) según la voluntad del navegante remoto de<br />
Internet. El resto del proceso es exactamente el mismo.<br />
En la figura 4.2 se muestra la webcam utilizada para la realización de este proyecto. Se<br />
puede utilizar cualquier tipo de cámara, sólo tiene que estar instalada en el ordenador.<br />
Figura 4.2. Webcam Logitech utilizada
45<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El funcionamiento de una webcam es muy simple: una cámara de video toma<br />
imágenes y las pasa a un ordenador que las traduce a lenguaje binario y las envía para<br />
disfrute de todo aquel que quiera verlas.<br />
Los pasos son los siguientes:<br />
Figura 4.3. Pasos al tomar una imagen<br />
• Una cámara toma imágenes que envía regularmente a un ordenador, algunas<br />
se actualizan cada pocos segundos y otras cada varias horas.<br />
• El ordenador, mediante un Hardware/Software adecuado, traduce las<br />
imágenes a formato binario, generalmente a fichero jpeg, dada su buena<br />
relación calidad/tamaño.<br />
• Las imágenes ya traducidas son incluidas dentro de una dirección URL que<br />
proporciona la posibilidad de ser vistas en la red, de manera que está siempre<br />
disponible la imagen más reciente. Así, cuando alguien solicita la página de la<br />
webcam, puede ver en su navegador la última imagen.
46<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
• Existen webcams cuyo ritmo de refresco es muy alto y pueden llegar a dar la<br />
impresión de transmitir imágenes de video en directo. Sin embargo, son<br />
fotogramas sueltos que se actualizan normalmente al pulsar o pasar el ratón<br />
por el enlace.<br />
El uso de las webcam, como se puede comprobar, es muy amplio en el mundo<br />
de la informática. Otros programas y sitios web tratan de buscar el lado más lúdico de<br />
estas cámaras de ordenador. Por ejemplo, Fix8 es un programa, de momento gratuito<br />
en su versión básica, que logra modificar la apariencia de la persona que protagoniza la<br />
grabación mediante dibujos animados que se superponen a la imagen real y que imitan<br />
sus gestos y sus movimientos.<br />
Así, se puede parodiar a personajes famosos a partir de segundas pieles en<br />
formas de avatares que vende Fix8 o crear caracterizaciones muy curiosas. Por su<br />
parte, Cameroid permite realizar en su sitio web retoques originales a las instantáneas<br />
captadas por una webcam a través de varias distorsiones y marcos<br />
sobreimpresionados.<br />
Figura 4.4. Ejemplo aplicación Fix8
47<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Por otro lado, CamSpace se trata de un proyecto todavía en fase de pruebas<br />
que intenta que se pueda controlar cualquier juego de ordenador con diversos objetos<br />
sin necesidad de comprar un mando específico. En este caso, la webcam identifica el<br />
objeto que el jugador desea utilizar como mando inalámbrico.<br />
Se adjunta la figura 4.5 en la cual se puede ver cómo una persona está jugando<br />
y el objeto que usa para controlar el juego es un destornillador.<br />
Figura 4.5. Usuario jugando con CamSpace
48<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Las webcams hoy por hoy son uno de los recursos lúdicos más conocidos que<br />
nos proporciona Internet. Con ellas es posible ver qué está ocurriendo en cualquier<br />
parte del mundo, como por ejemplo, una imagen de la Plaza del Cid de la ciudad de<br />
Burgos, donde se puede ver en la Figura 4.6<br />
Figura 4.6. Imagen Webcam. Plaza del Cid (Burgos)
4.2 SOFTWARE<br />
4.2.1 NETBEANS - JAVA<br />
49<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
NetBeans se refiere a una plataforma para el desarrollo de aplicaciones de<br />
escritorio usando Java y a un entorno de desarrollo integrado (IDE) desarrollado<br />
usando la Plataforma NetBeans.<br />
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a<br />
partir de un conjunto de componentes software llamados módulos. Un módulo es un<br />
archivo Java que contiene clases de java escritas para interactuar con las APIs de<br />
NetBeans y un archivo especial que lo identifica como módulo. Las aplicaciones<br />
construidas a partir de módulos pueden ser extendidas agregándose nuevos módulos.<br />
Debido a que los módulos pueden ser desarrollados independientemente, las<br />
aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por<br />
otros desarrolladores de software.<br />
La Plataforma NetBeans es una base modular y extensible usada como una<br />
estructura de integración para crear aplicaciones de escritorio grandes. Empresas<br />
independientes asociadas, especializadas en desarrollo de software, proporcionan<br />
extensiones adicionales que se integran fácilmente en la plataforma y que pueden<br />
también utilizarse para desarrollar sus propias herramientas y soluciones.<br />
La plataforma ofrece servicios comunes a las aplicaciones de escritorio,<br />
permitiéndose al desarrollar enfocarse en la lógica específica de su aplicación.
Entre las características de la plataforma están:<br />
� Administración de las interfaces de usuario<br />
� Administración de las configuraciones del usuario<br />
50<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� Administración del almacenamiento (guardando y cargando cualquier tipo de<br />
dato)<br />
� Administración de ventanas<br />
� Framework basado en asistentes<br />
NetBeans IDE es un entorno de desarrollo - una herramienta para que los<br />
programadores puedan escribir, compilar, depurar y ejecutar programas. Está escrito<br />
en Java - pero puede servir para cualquier otro lenguaje de programación. Existe<br />
además un número importante de módulos para extender el NetBeans IDE.<br />
NetBeans IDE es un producto libre y gratuito sin restricciones de uso.<br />
También está disponible NetBeans Platform; una base modular y extensible<br />
usada como estructura de integración para crear grandes aplicaciones de escritorio.<br />
Empresas independientes asociadas, especializadas en desarrollo de software,<br />
proporcionan extensiones adicionales que se integran fácilmente en la plataforma y<br />
que pueden también utilizarse para desarrollar sus propias herramientas y soluciones.<br />
Ambos productos son de código abierto y gratuitos para uso tanto comercial<br />
como no comercial. El código fuente está disponible para su reutilización de acuerdo<br />
con la Common Development and Distribution License (CDDL) v1.0 and the GNU<br />
General Public License (GPL) v2.
51<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Un Entorno Integrado de Desarrollo gratuito, de código abierto para<br />
desarrolladores de software. Puede obtener todas las herramientas que necesite para<br />
crear aplicaciones profesionales para el escritorio, la empresa, la web y equipos<br />
móviles con el lenguaje Java, C/C++, y Ruby. NetBeans IDE es fácil de instalar y de uso<br />
instantáneo y se ejecuta en varias plataformas incluyendo Windows, Linux y Mac OS X<br />
y Solaris.<br />
NetBeans IDE 6.1 provee varias nuevas características y mejoras, como<br />
funciones de edición enriquecida de JavaScript, soporte para el uso del framework web<br />
Spring, y mejor integración con MySQL. Esta versión también provee mejor<br />
rendimiento, especialmente un arranque más rápido (más de 40%), menor consumo<br />
de memoria y mejor respuesta cuando se trabajan con proyectos grandes.
52<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El lenguaje de programación que utiliza NetBeans es Java. Java es un lenguaje<br />
de programación orientado a objetos desarrollado por Sun Microsystems a principios<br />
de los años 90. EL lenguaje en sí mismo toma mucha de su sintaxis de C y C++ pero<br />
tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que<br />
suelen inducir a muchos errores, como la manipulación directa de punteros o<br />
memoria.<br />
El lenguaje Java se creó con cinco objetivos principales:<br />
� Debería utilizar la metodología de la programación orientada a objetos<br />
� Debería permitir la ejecución de un mismo programa en múltiples sistemas<br />
operativos<br />
� Debería incluir por defecto soporte para trabajo en red<br />
� Debería diseñarse para ejecutar código en sistemas remotos de forma segura<br />
� Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a<br />
objetos, como C++<br />
Java es un lenguaje de programación con el que podemos realizar cualquier<br />
tipo de programa. En la actualidad es un lenguaje muy extendido y cada vez cobra más<br />
importancia tanto en el ámbito de Internet como en la informática en general. Está<br />
desarrollado por la compañía Sun Microsystems con gran dedicación y siempre<br />
enfocado a cubrir las necesidades tecnológicas más punteras.
53<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Una de las principales características por las que Java se ha hecho muy famoso<br />
es que es un lenguaje independiente de la plataforma. Eso quiere decir que si hacemos<br />
un programa en Java podrá funcionar en cualquier ordenador del mercado. Es una<br />
ventaja significativa para los desarrolladores de software, pues antes tenían que hacer<br />
un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc.<br />
Esto lo consigue porque se ha creado una Máquina de Java para cada sistema que hace<br />
de puente entre el sistema operativo y el programa de Java y posibilita que este último<br />
se entienda perfectamente.<br />
La independencia de plataforma es una de las razones por las que Java es<br />
interesante para Internet, ya que muchas personas deben tener acceso con<br />
ordenadores distintos. Pero no se queda ahí, Java está desarrollándose incluso para<br />
distintos tipos de dispositivos además del ordenador como móviles, agendas y en<br />
general para cualquier cosa que se le ocurra a la industria.<br />
Pasado y presente<br />
Java fue pensado originalmente para utilizarse en cualquier tipo de<br />
electrodoméstico pero la idea fracasó. Uno de los fundadores de Sun rescató la idea<br />
para utilizarla en el ámbito de Internet y convirtieron a Java en un lenguaje potente,<br />
seguro y universal gracias a que lo puede utilizar todo el mundo y es gratuito. Una de<br />
los primeros triunfos de Java fue que se integró en el navegador Netscape y permitía<br />
ejecutar programas dentro de una página web, hasta entonces impensable con el<br />
HTML.
54<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Actualmente Java se utiliza en un amplio abanico de posibilidades y casi<br />
cualquier cosa que se puede hacer en cualquier lenguaje se puede hacer también en<br />
Java y muchas veces con grandes ventajas. Para lo que nos interesa a nosotros, con<br />
Java podemos programar páginas web dinámicas, con accesos a bases de datos,<br />
utilizando XML, con cualquier tipo de conexión de red entre cualquier sistema. En<br />
general, cualquier aplicación que deseemos hacer con acceso a través web se puede<br />
hacer utilizando Java.
4.2.2 MATLAB<br />
55<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Matlab es un software matemático que ofrece un entorno de desarrollo (IDE)<br />
con un lenguaje de programación propio (lenguaje M)<br />
Entre sus prestaciones básicas se hallan:<br />
� Manipulación de matrices<br />
� Representación de datos y funciones<br />
� Implementación de algoritmos<br />
� Creación de interfaces de usuario (GUI)<br />
� Comunicación con programas en otros lenguajes y con otros dispositivos<br />
hardware<br />
Matlab es un entorno de computación y desarrollo de aplicaciones totalmente<br />
integrado orientado para llevar a cabo proyectos en donde se encuentren implicados<br />
elevados cálculos matemáticos y la visualización gráfica de los mismos. Matlab integra<br />
análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un<br />
entorno completo donde los problemas y sus soluciones son expresados del mismo<br />
modo en que se escribirían racionalmente, sin necesidad de hacer uso de la<br />
programación tradicional.
56<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Matlab dispone también en la actualidad de un amplio abanico de programas<br />
de apoyo especializados, denominados Toolboxes, que extienden significativamente el<br />
número de funciones incorporadas en el programa principal. Estos Toolboxes cubren<br />
en la actualidad prácticamente casi todas las áreas principales en el mundo de la<br />
ingeniería y la simulación, destacando entre ellos el 'toolbox' de proceso de imágenes,<br />
señal, control robusto, estadística, análisis financiero, matemáticas simbólicas, redes<br />
neuronales, lógica difusa, identificación de sistemas, simulación de sistemas<br />
dinámicos, etc. es un entorno de cálculo técnico, que se ha convertido en estándar de<br />
la industria, con capacidades no superadas en computación y visualización numérica.<br />
De forma coherente y sin ningún tipo de fisuras, integra los requisitos claves de<br />
un sistema de computación técnico: cálculo numérico, gráficos, herramientas para<br />
aplicaciones específicas y capacidad de ejecución en múltiples plataformas. Esta<br />
familia de productos proporciona al estudiante un medio de carácter único, para<br />
resolver los problemas más complejos y difíciles.<br />
Matlab nace como una solución a la necesidad de mejores y más poderosas<br />
herramientas de cálculo para resolver problemas de cálculo complejos en los que es<br />
necesario aprovechas las amplias capacidades de proceso de datos de grandes<br />
computadores.<br />
El nombre Matlab viene de "matrix laboratory" (laboratorio matricial). Matlab<br />
fue originalmente escrito para proveer acceso fácil al software matricial desarrollado<br />
por los proyectos LINPACK y EISPACK, que juntos representan el estado del arte e<br />
software para computación matricial.
57<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Hoy Matlab es usado en una variedad de áreas de aplicación incluyendo<br />
procesamiento de señales e imágenes, diseño de sistemas de control, ingeniería<br />
financiera e investigación médica. La arquitectura abierta facilita usar Matlab y los<br />
productos que lo acompañan para explorar datos y crear herramientas personalizadas<br />
que proveen visiones profundas tempranas y ventajas competitivas.<br />
Características de Matlab:<br />
� Cálculos intensivos desde un punto de vista numérico.<br />
� Gráficos y visualización avanzada.<br />
� Lenguaje de alto nivel basado en vectores, arrays y matrices.<br />
� Colección muy útil de funciones de aplicación.
4.2.3 LIBRERÍA JMATLINK<br />
58<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Ha sido necesaria en este proyecto la utilización de una librería que<br />
proporciona Matlab y la cual se llama JMatLink que está basada en JNI (Java Native<br />
Interface). Esta librería conecta Java y Matlab. Los métodos nativos permiten utilizar<br />
diferentes funciones de Matlab desde una aplicación desarrollada en el lenguaje de<br />
programación Java.<br />
Esta librería se ha utilizado en NetBeans, es decir, se ha programado con Java y<br />
con diferentes métodos es posible realizar llamadas a funciones de Matlab y recibir<br />
valores como resultado de la función.<br />
Mediante esta librería lo que se pretende es que una vez el interfaz<br />
programado en Java, se haga una llamada a las funciones programadas con Matlab las<br />
cuales son las encargadas de tratar las imágenes capturadas inicialmente por Java. Una<br />
vez trata las imágenes y estudia el movimiento realizado por el usuario, devuelve un<br />
valor al programa Java y éste, dependiendo del valor devuelto, realizará una u otra<br />
opción programada.
59<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
5. DESARROLLO DE LA APLICACIÓN
5.1 PLAN DE TRABAJO<br />
60<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En la figura 5.1 se muestra el Plan de Trabajo a seguir para el desarrollo del<br />
proyecto. Como se puede comprobar, está dividido en 6 fases (paquetes de trabajo) y<br />
algunas de ellas dividida también en subfases.<br />
Figura 5.1. Plan de Trabajo del Proyecto
61<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
A continuación se muestra detalladamente cada uno de los paquetes de trabajo<br />
de los que se compone el proyecto, explicando en cada uno de ellos las tareas<br />
realizadas.<br />
(WP.01) ESTUDIO DE LOS REQUISITOS DEL SISTEMA<br />
Es una de las etapas más importantes en el desarrollo del proyecto. En ella se<br />
tienen que tener en cuenta cada uno de los requisitos que se exigen para alcanzar el<br />
éxito en el desarrollo del proyecto. Los requisitos necesarios son los siguientes:<br />
o Requisitos de Usuario<br />
� Para poder ejecutar la aplicación en cualquier ordenador, es<br />
necesaria la instalación del programa Matlab, ya que sin el<br />
programa no se podrán estudiar y tratar cada una de las<br />
imágenes tratadas<br />
o Requisitos del Sistema<br />
� Leer el movimiento del dedo realizado por el usuario<br />
� Almacenar las imágenes en un fichero<br />
� Estudiar y tratar dichas imágenes para reconocer el movimiento<br />
realizado<br />
� Dependiendo de los valores resultantes, se ejecutará una u otra<br />
opción
(WP.02) ANÁLISIS<br />
62<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En la etapa de análisis se estudian las necesidades y objetivos a alcanzar con el<br />
desarrollo de la aplicación.<br />
(WP.02.01) Análisis de las Necesidades<br />
Las necesidades de este proyecto y la motivación que se lleva para la<br />
realización del mismo es el desarrollar una herramienta para permitir a un<br />
usuario con discapacidad motriz o a personas ancianas comunicarse con el<br />
ordenador y enviar órdenes mediante el simple movimiento de un dedo.<br />
(WP.02.02) Análisis de los Objetivos<br />
El objetivo principal es realizar lograr con éxito el desarrollo de la<br />
aplicación y pueda ser utilizada por personas de este sector de la población.<br />
A la hora de analizar cada uno de los pasos a dar, se ha realizado un<br />
estudio del sistema, teniendo en cuenta los parámetros necesarios del exterior<br />
y las funciones que internamente hace la herramienta.<br />
En la Figura5.2 se muestra el Modelo físico del sistema en el nivel 0, es<br />
decir, nivel de contexto. En el mismo se puede comprobar la relación existente<br />
entre el sistema y el usuario y los datos que son necesarios para el<br />
funcionamiento del sistema
Figura 5.2. DFD. Nivel de Contexto (Nivel 0)<br />
63<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Se tiene que profundizar a un nivel más, por eso se ha realizado el<br />
modelo físico del sistema a nivel 1 (Nivel conceptual) donde se detallan cada<br />
una de las tareas y las relaciones entre las funciones. Se muestran todos los<br />
datos que son enviados entre ellos.
Figura 5.3. DFD. Nivel Conceptual (Nivel 1)<br />
64<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
65<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Como se puede comprobar en la Figura 5.3, existen 12 procesos<br />
distintos. Cada uno tiene una tarea determinada dentro del sistema. Existen 2<br />
almacenes de información:<br />
� Imágenes: Fichero en el cual se almacenan todas las imágenes que son<br />
capturadas por la webcam en la aplicación. Este almacén de imágenes lo<br />
crea el programa Java para que después Matlab pueda acceder a dicho<br />
almacén y poder extraer las imágenes para ser comparadas con los<br />
patrones existentes y reconocer así el movimiento realizado por el usuario<br />
� Patrones: La herramienta desarrollada sólo reconoce determinadas letras<br />
del vocabulario, por lo tanto, a la hora de analizar el movimiento del<br />
usuario, tiene que comparar las imágenes con las letras almacenadas<br />
inicialmente que forman parte de los patrones para poder reconocer el<br />
movimiento del dedo
(WP.03) DISEÑO<br />
66<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Para el diseño, se ha realizado inicialmente el diagrama de flujo de la aplicación,<br />
el cual se muestra en la Figura 5.3.<br />
Figura 5.4. Diagrama de flujo
proyecto.<br />
67<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
A continuación se muestra una descripción detallada del Diagrama de Flujo del<br />
Inicialmente se muestra la pantalla principal al usuario, internamente, el<br />
proceso comprueba si se encuentra conectado el dispositivo de la webcam. Si no<br />
encuentra el dispositivo muestra un mensaje de error y vuelve a mostrar la pantalla<br />
principal, comprobando a su vez internamente si ya se ha conectado el dispositivo.<br />
Una vez la aplicación ha detectado la conexión del dispositivo, muestra la<br />
imagen en la pantalla y comienza a realizar fotografías cada 50 milisegundos. Estas<br />
imágenes son almacenadas para que después sean tratadas por el programa Matlab,<br />
que es el encargado de reconocer el movimiento que ha realizado el usuario con el<br />
dedo. Una vez Matlab ha reconocido el movimiento del dedo, devuelve el resultado a<br />
NetBeans, que dependiendo del valor recibido, realizará una u otra opción. Las<br />
opciones son las siguientes:<br />
� Movimiento correspondiente a la letra “L” � El usuario ha elegido realizar<br />
llamadas a una lista de contactos, por lo tanto se le mostrará por pantalla la<br />
lista de contactos que tiene en el sistema. Se muestra una vez más en la parte<br />
izquierda de la pantalla la imagen de la webcam. Como en el caso anterior, se<br />
vuelven a almacenar imágenes para que Matlab vuelva a estudiarlas y<br />
reconocer el movimiento realizado por el usuario. Una vez detectado el<br />
movimiento, se muestra una pantalla donde se indica que se está llamando al<br />
contacto elegido. Cuando se quiera, se pulsa el botón de “Finalizar Llamada” y<br />
finaliza a su vez la aplicación
68<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� Movimiento correspondiente a la letra “M” � El usuario ha elegido escuchar<br />
música de una lista de canciones. Se muestran las canciones existentes en el<br />
sistema y se muestra la imagen de la webcam donde el usuario debe realizar<br />
otro movimiento con el dedo para elegir la canción que quiere reproducir. Una<br />
vez capturadas las imágenes, Matlab las estudia y dependiendo del movimiento<br />
realizado, se reproduce la canción mediante el Reproductor de Windows<br />
Media. El reproducir la canción, indica que la ejecución del programa ha<br />
finalizado y por lo tanto se cierra la aplicación.<br />
(WP.03.01) Diseño del Interfaz<br />
Una de las cosas más importantes en este proyecto es conseguir un<br />
interfaz sencillo y fácil de usar, ya que recordamos, que el usuario tiene<br />
dificultad a la hora de acceder al ordenador, por ello, la aplicación nada mas<br />
ejecutarse muestra la webcam que debe estar conectada y reconocido el<br />
dispositivo por el programa.<br />
Para indicar a la aplicación que ha finalizado el movimiento, debe pulsar<br />
un botón, dicho botón puede ser pulsado con el ratón o simplemente con la<br />
tecla ENTER. Esto está hecho así para que el usuario simplemente tenga que<br />
pulsar un botón durante toda la ejecución de la herramienta.
(WP.03.02) Diseño de Librerías<br />
69<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Se ha decidido programar todo el tratamiento y estudio de las imágenes<br />
mediante el programa Matlab, por ello, las librerías son programadas con esta<br />
herramienta.<br />
Se han utilizado diferentes funciones para ello:<br />
- Función principal: Esta función lee las imágenes que se han tomado a<br />
través de la webcam.<br />
- Detectar negro: Como se comenta en apartados siguientes del<br />
presente documento, es necesaria una binarización de la imagen<br />
para reconocer el color negro del dedal que lleva el usuario en el<br />
dedo. Mediante esta función, se detecta el negro en la imagen y su<br />
posición<br />
- Comparar imagen: Ya que el sistema sólo reconoce determinadas<br />
letras, una vez se ha detectado el movimiento del dedal negro, se<br />
comparan las imágenes para comprobar qué letra ha realizado el<br />
usuario y poder ejecutar una u otra opción dependiendo del<br />
resultado obtenido.
(WP.04) PROGRAMACIÓN<br />
70<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Es la etapa que más dura de todo el proyecto. En ella se tiene que programar<br />
cada una de las funciones escogidas en la etapa anterior de diseño.<br />
(WP.04.01) Programación del Interfaz:<br />
Se ha decidido programar el interfaz con el programa NetBeans. Esta<br />
herramienta proporciona un interfaz bastante llamativo e intuitivo. Esta<br />
programado con el lenguaje de programación Java.<br />
La función principal del interfaz es mostrar la webcam y capturar<br />
imágenes cada 50 milisegundos. Estas imágenes deben ser almacenadas en un<br />
fichero para que más tarde, Matlab las lea y pueda interpretarlas.<br />
El interfaz es bastante sencillo, por lo explicado anteriormente. Debe ser<br />
un programa que no tenga muchas pantallas, ya que el usuario no puede ir<br />
navegando con ellas con facilidad, sino con el movimiento del dedo.<br />
El programa en Java debe comunicarse con las librerías programadas en<br />
Matlab, para ello es necesaria la utilización de la librería JMatLink, que es la<br />
encargada de unir estos dos programas. Una vez que Java toma las imágenes,<br />
mediante unas líneas de código se llama a la función de Matlab que realiza el<br />
estudio de las imágenes.
El código de unión es el siguiente:<br />
(WP.04.02) Programación de Librerías<br />
71<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Como se ha comentado, todo el tratamiento de las imágenes se han<br />
realizado con Matlab. Matlab es una herramienta que proporciona un buen<br />
estudio de imágenes, por ello se han utilizado algunas funciones ya existentes<br />
en Matlab.<br />
Es necesaria la binarización de la imagen, esto es, convertir la imagen<br />
originar el una imagen compuesta sólo por blanco y negro. Esto es<br />
imprescindible para que el programa reconozca el color negro y se pueda<br />
estudiar el movimiento realizado por el usuario.
(WP.05) PRUEBAS<br />
72<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Como todo proyecto, es necesaria una etapa de pruebas al finalizar la<br />
aplicación. Las pruebas se realizarán después de la programación del interfaz y de las<br />
librerías.<br />
Se han de probar todas las letras que reconoce el sistema, si realmente se<br />
reconocen correctamente y se realizan las opciones programadas.<br />
(WP.05.01) Pruebas del Sistema<br />
Se podría realizar un Plan de Pruebas del sistema, pero al tener<br />
restricciones de tiempo, no se ha podido llevar a cabo un Plan de Pruebas total,<br />
por lo tanto, las únicas pruebas que se han hecho con respecto al sistema son<br />
las pruebas de programación, tanto del interfaz como de la librería, y pruebas<br />
en los resultados obtenidos, para poder sacar una conclusiones y pensar en<br />
trabajos futuros que puedan ampliar la utilidad del proyecto.
(WP.05.02) Pruebas Presenciales<br />
73<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Al finalizar la aplicación, se ha querido demostrar la fiabilidad del<br />
sistema y para ello se han realizado unas pruebas presenciales.<br />
Los usuarios eran dos personas mayores de 71 y 72 años<br />
respectivamente, que no acostumbran al uso de los ordenadores. Las pruebas<br />
resultaron satisfactorias, con algunos problemas iniciales.<br />
Los problemas encontrados fueron el control del dedo entre los límites<br />
de la imagen que muestra la webcam. El usuario, al realizar el movimiento con<br />
el dedo, no tenía control sobre los marcos de la imagen y por lo tanto, la<br />
aplicación no devolvía el resultado correcto. Una vez los usuarios consiguieron<br />
controlar el movimiento para que éste fuera dentro de la imagen de la cámara,<br />
los resultados fueron los previstos.<br />
(WP.06) DOCUMENTACION<br />
La etapa de la Documentación dura casi todo el proyecto, ya que a medida que<br />
es va avanzando en el desarrollo de la aplicación, se van escribiendo los pasos dados y<br />
los temas relacionados.<br />
Se han estudiado las diferentes herramientas existentes hoy en día para poder<br />
enfocar el proyecto a partir de ellos y así poder añadir más funciones a la aplicación.<br />
Todas estas aplicaciones se han explicado en el apartado 2.1 del presente documento.
74<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
6. TRATAMIENTO DE IMÁGENES CON<br />
MATLAB
6.1 TIPOS DE IMÁGENES EN MATLAB<br />
75<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En Matlab una imagen a escala de grises se representa por medio de una matriz<br />
bidimensional de m x n elementos de donde n representa el número de píxeles de<br />
ancho y m el número de píxeles de largo. Cada elemento tiene un valor de 0 (negro) a<br />
255 (blanco).<br />
Por otro lado, una imagen de color RGB (la más usada para la visión<br />
computacional) se representa por una matriz tridimensional m x n x p, donde m y n<br />
tienen el mismo significado que para el caso de las imágenes de escala de grises,<br />
mientras p representa el plano, que para RGB que puede ser 1 para el rojo, 2 para el<br />
verde y 3 para el azul.<br />
Existen tres tipos de imágenes en Matlab:<br />
� Imágenes indexadas: [I,MAP] � La matriz I contiene la imagen indexada y la<br />
matriz MAP la paleta de colores RGB asociada. SI la imagen es de 100x100x256<br />
colores, la matriz I es de 100x100 con rango de valores [1 … 256] y la matriz<br />
MAP es de 256x3 con rango de valores en [0,1]. En caso de imágenes en niveles<br />
de gris, la paleta de colores suele tener todos los niveles de gris ordenados, de<br />
tal forma que en la posición i de la paleta está el i-ésimo nivel de gris<br />
� Imágenes de nivel de Gris: I � La matriz I contiene la imagen en nivel de gris,<br />
donde el rango de valores es de [0,1]. No necesita una paleta de colores. Las<br />
imágenes en blanco y negro son un caso especial de este tipo, donde sólo están<br />
los valores 0 y 1.
76<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� Imágenes RGB: RGB � Cada matriz R, G, B contiene las intensidades en rojo,<br />
verde y azul respectivamente de la imagen. Son imágenes en las que cada<br />
punto de la imagen se representa por un nivel de rojo, un nivel de verde y un<br />
nivel de azul; por lo que están formadas por cada uno de estos 3 planos de<br />
color. Puesto que todos los colores que el ser humano es capaz de distinguir se<br />
pueden representar por una combinación de estos tres. Cada canal de color<br />
tiene 256 niveles de intensidad posibles.<br />
En este proyecto, se toman imágenes de la webcam, dichas imágenes se pasan<br />
a escala de grises, y después se binarizan para así poder estudiar el movimiento<br />
realizado por el usuario.<br />
La imagen 6.1 representa un ejemplo de una imagen en escala de grises en Matlab<br />
Figura 6.1. Imagen en escala de grises
Figura 6.2. Imagen RGB<br />
77<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
Figura 6.3. Imagen Binaria<br />
78<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
6.2 PROCESADO DE IMÁGENES EN MATLAB<br />
79<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El número de funciones que implementa Matlab para el procesamiento de<br />
imágenes es muy diverso, sin contar con la múltiple oferta de funciones ya generadas<br />
por otros usuarios y disponibles a través de Internet.<br />
Filtraje espacial<br />
El filtraje espacial es una de las operaciones comunes en la visión<br />
computacional ya sea para realizar efectos de eliminación de ruido o bien detección de<br />
bordes. En ambos casos la determinación de los píxeles de la nueva imagen dependen<br />
del píxel de la imagen originar y de sus vecino. De esta forma es necesario configurar<br />
una matriz (máscara o ventana) que considere cuales vecinos y en qué forma influirán<br />
en la determinación en el nuevo píxel.<br />
Figura 6.4. Filtro espacial por ventana 3x3
7. PLANIFICACIÓN<br />
80<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
del proyecto<br />
81<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
En la imagen 7.1 se muestra la planificación inicial planteada para el desarrollo<br />
Figura 7.1. Planificación del proyecto<br />
A continuación se realiza una explicación detallada de cada uno de los paquetes de<br />
trabajo:<br />
• Estudio de los Requisitos del Sistema: Se realiza un estudio de los objetivos<br />
iniciales del proyecto y de la motivación que nos lleva a la realización del<br />
mismo.<br />
o Duración: 3 semanas<br />
o Responsable:<br />
� Jefe de proyecto<br />
o Participantes:<br />
� Jefe de proyecto<br />
� Analista
82<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
• Análisis: Se analiza cada uno de los paquetes de trabajo del proyecto. Se<br />
analizan las necesidades del usuario y del sistema, partiendo de los objetivos<br />
iniciales concretados en la etapa anterior.<br />
o Duración: 3 semanas<br />
o Responsable:<br />
� Analista<br />
o Participantes:<br />
� Analista<br />
• Diseño del interfaz: Debe ser un interfaz de fácil uso, ya que la persona que<br />
utilizará la aplicación es una persona que no puede acceder fácilmente al<br />
ordenador, por ello, la interfaz debe ser totalmente intuitiva para que el<br />
usuario simplemente con la webcam pueda manejar las diferentes opciones<br />
que se le plantean y únicamente tenga que pulsar una tecla (ENTER) cada vez<br />
que finalice el movimiento.<br />
o Duración: 2 semanas<br />
o Responsable:<br />
� Diseñador<br />
o Participantes:<br />
� Diseñador
83<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
• Diseño de librerías: Se plantea un diseño inicial de las librerías que se quieren<br />
programar. En esta etapa se decide que la parte de la interfaz gráfica se<br />
realizará mediante el lenguaje de programación Java con la plataforma<br />
NetBeans, a su vez, se decide que todo el procesamiento de imágenes se<br />
realizará con el programa Matlab ya que es un programa adecuado para este<br />
tipo de trabajo<br />
o Duración: 3 semanas<br />
o Responsable:<br />
� Diseñador<br />
o Participantes:<br />
� Diseñador<br />
• Programación interfaz: Se realiza la programación de la interfaz.<br />
o Duración: 5 semanas<br />
o Responsable:<br />
� Programador<br />
o Participantes:<br />
� Programador<br />
• Programación librerías: Se realiza la programación de las librerías<br />
o Duración: 4 semanas<br />
o Responsable:<br />
� Programador<br />
o Participantes<br />
� Programador
84<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
• Pruebas del sistema: Las pruebas del sistema se realizan una vez se haya<br />
programado el interfaz de la aplicación y las librerías.<br />
o Duración: 5 semanas<br />
o Responsable<br />
� Analista<br />
o Participantes<br />
� Analista<br />
� Diseñador<br />
� Programador<br />
• Documentación: La documentación se ha ido desarrollando a lo largo de todo<br />
el proyecto, ya que se ha de ir documentando a medida que se va avanzando<br />
en el proyecto, informando de los problemas encontrados y los objetivos que<br />
se han ido cumpliendo.<br />
o Duración: Desarrollo de todo el proyecto<br />
o Responsable:<br />
� Jefe de proyecto<br />
o Participantes:<br />
� Analista
8. ESTUDIO ECONÓMICO<br />
85<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
8.1 COSTES DE INGENIERÍA<br />
La tabla siguiente muestra el coste total del proyecto.<br />
Figura 8.1. Costes de Ingeniería<br />
86<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
Euros/hora de cada uno de los participantes en el proyecto:<br />
Figura 8.2. Tarifa Euros/Hora de los participantes<br />
87<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
A continuación se muestra el coste detallado de cada uno de los paquetes de trabajo:<br />
� Estudio Requisitos del Sistema<br />
� Análisis<br />
o Jefe de proyecto: Reunión con Analista de 2 horas cada semana<br />
� 2 horas/semana * 3 semanas = 6 horas<br />
� Coste: 6 horas * 70€/hora = 420 €<br />
o Analista: Reunión con Jefe de Proyecto de 2 horas cada semana<br />
� 2 horas/semana * 3 semanas = 6 horas<br />
� Coste: 6 horas * 50€/hora = 300 €<br />
o Coste paquete de trabajo 1 = 420 + 300 = 720 €<br />
o Analista: 4 horas al día durante 3 semanas<br />
� 4 horas/día * 5 días/semana * 3 semanas = 60 horas<br />
� Coste: 60 horas * 50€/hora = 3.000 €<br />
o Coste paquete de trabajo 2 = 3.000 €
� Diseño interfaz<br />
o Diseñador: jornada completa<br />
88<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
� 8 horas/día * 5 días/semana * 2 semanas = 80 horas<br />
� Coste: 80 horas * 40 €/hora = 3.200 €<br />
o Coste paquete de trabajo 3 = 3.200 €<br />
� Diseño librerías<br />
o Diseñador: jornada completa<br />
� 8 horas/día * 5días/semana * 3 semanas = 120 horas<br />
� Coste: 120 horas * 40€/hora = 4.800 €<br />
o Coste paquete de trabajo 4 = 4.800 €<br />
� Programación interfaz<br />
o Programador: jornada completa<br />
� 8 horas/día * 5días/semana * 5 semanas = 200 horas<br />
� Coste: 200 horas * 30 €/hora = 6.000 €<br />
o Coste paquete de trabajo 5 = 6.000 €<br />
� Programación librerías<br />
o Programador: jornada completa<br />
� 8 horas/día * 5 días semana * 4 semanas = 160 horas<br />
� Coste: 160 horas * 30 €/hora = 4.800 €<br />
o Coste paquete de trabajo 6 = 4.800 €
� Pruebas del sistema<br />
89<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
o Analista: trabaja a jornada completa durante 3 semanas<br />
� 8 horas/día * 5 días/semana * 3 semanas = 120 horas<br />
� Coste: 120 horas * 50 €/hora = 6.000 €<br />
o Diseñador: trabaja a jornada completa durante 1 semana<br />
� 8 horas/día * 5 días/semana * 1 semana = 40 horas<br />
� Coste: 40 horas * 40 €/hora = 1.600 €<br />
o Programador: trabaja a jornada completa durante 2 semanas<br />
� 8 horas/día * 5 días/semana * 2 semanas = 80 horas<br />
� Coste: 80 horas * 30 €/hora = 2.400 €<br />
o Coste paquete de trabajo 7 = 6.000 + 1.600 + 2.400 = 10.000 €<br />
� Documentación<br />
o Jefe de Proyecto: Aprueba la documentación a lo largo de todo su<br />
desarrollo<br />
� Coste: 10 horas * 70 €/hora = 700 €<br />
o Analista: Realiza la documentación a lo largo de todo el desarrollo del<br />
proyecto<br />
� Coste: 60 horas * 50 €/hora = 3.000 €<br />
o Coste paquete de trabajo 8 = 700 + 3.000 = 3.700 €<br />
Por lo tanto, el coste total de personal asciende a:<br />
720 + 3.000 + 3.200 + 4.800 + 6.000 + 4.800 + 10.000 + 3.700 = 36.220 €
8.2 COSTE DEL SOFTWARE UTILIZADO<br />
Se han utilizado los siguientes programas:<br />
• Sistema Operativo Windows XP Professional: 60 €<br />
• Microsoft Office: 100 €<br />
• Acrobat Professional: 125 €<br />
• Matlab: 1.000 €<br />
o Imagen Processing Toolbox: 140 €<br />
• NetBeans IDE 6.7.1: Sofware Libre<br />
90<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Con estos datos, el coste total del software utilizado asciende a: 1.425 €
8.3 COSTE DEL HARDWARE UTILIZADO<br />
91<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El único Hardware utilizado para la realización del proyecto es la utilización de la<br />
webcam Logitech.<br />
o Webcam Logitech: 50 €<br />
El coste total del Hardware utilizado es de 50 €
8.4 PRESUPUESTO FINAL<br />
92<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Teniendo en cuenta los costes de personal, software y hardware, explicados en los<br />
apartados anteriores, el presupuesto final del proyecto es de:<br />
Figura 8.3. Presupuesto final del Proyecto
93<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
9. RESULTADOS DEL SISTEMA
94<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
La intención inicial de este proyecto era realizar una aplicación mediante la cual<br />
una persona con dificultad móvil pudiera utilizar ciertas opciones con el ordenador a<br />
través de órdenes enviadas mediante una webcam.<br />
Uno de los principales objetivos era que el movimiento se realizara sin ningún<br />
elemento, simplemente con el dedo, pero a la hora de realizar los estudios con las<br />
imágenes nos hemos encontrado con bastantes dificultades para capturar dicho<br />
movimiento.<br />
El principal problema ha sido el fondo de la imagen. Nos ha sido imposible<br />
realizar el proyecto con cualquier fondo, por ello se decidió la utilización de un fondo<br />
fijo. El fondo debe ser totalmente liso y de color claro, para las pruebas se ha utilizado<br />
una lámina translúcida que se coloca detrás del dedo, eliminando así todo el ruido que<br />
puede haber de fondo en la imagen.<br />
Otro problema encontrado ha sido capturar el movimiento únicamente del<br />
dedo, para solucionarlo, se ha utilizado un dedil de color negro que se coloca en el<br />
dedo que realiza el movimiento. De esta forma, se captura el dedil para realizar el<br />
tratamiento de imágenes y así reconocer el movimiento que se ha realizado.<br />
Con respecto al software utilizado, el mayor problema que hemos encontrado<br />
ha sido la utilización de la librería JMatLink. Como se ha explicado en el apartado<br />
[4.2.3] del presente documento, esta librería es la encargada de unir el lenguaje de<br />
programación Java con la aplicación Matlab.
95<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
A la hora de la instalación de esta librería, hemos tenido muchos problemas<br />
para que funcionara, ya que las actualizaciones propias de Windows, modificaban los<br />
ficheros y por lo tanto, no permitía que funcionara. Este problema nos ha llevado a<br />
perder mucho tiempo, hemos estado parados muchos días intentando resolverlo, pero<br />
finalmente se ha conseguido y se ha podido seguir desarrollando el proyecto para<br />
poder unir el programa realizado en NetBeans con todo el tratamiento de imágenes<br />
realizado con Matlab.<br />
Las pruebas presenciales se han realizado con éxito, aunque se han encontrado<br />
algunos problemas ya que las personas no medían bien el espacio que la cámara<br />
captura, saliéndose de los marcos de la imagen. Una vez controlado esto, las pruebas<br />
han sido totalmente exitosas.<br />
Ha sido un trabajo duro y constante, al tratarse de un trabajo de investigación<br />
ya que siempre supone un sacrificio de tiempo continuo, que se compensa con la<br />
satisfacción al llegar a los objetivos planificados inicialmente.
96<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
10. CONCLUSIONES Y TRABAJOS<br />
FUTUROS
97<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Las nuevas tecnologías pueden ser un medio más para ayudar a las personas<br />
con discapacidad motriz, pero sería un error pensar que la tecnología es una finalidad<br />
en sí misma. Las tecnologías sólo formarán parte del proceso de humanización en la<br />
medida que las personas las hagan servir adecuadamente. No es suficiente con crear<br />
ayudas técnicas y ofrecerlas a los usuarios como consumidores pasivos. Hay que<br />
entender la función que las ayudas tendrán para su vida personal y social, y entender<br />
que esta función afecta a todos los grupos sociales con capacidad o sin ella. [PUIG93]<br />
Este proyecto es un primer paso para luego poder seguir desarrollando en el<br />
tema añadiendo más opciones al usuario y mejorar las prestaciones, ya que por<br />
ejemplo, en este caso, se utiliza un dedil para el seguimiento del dedo. Esto se podría<br />
mejorar sin el dedil e incluir mejoras tales como que la persona con el simple<br />
movimiento de la cara pueda controlar totalmente el ratón y poder utilizar el<br />
ordenador con un simple movimiento de la cabeza y un posible movimiento de los ojos<br />
para simular el click del ratón.<br />
En esta área se pueden desarrollar muchas aplicaciones distintas, y con el paso<br />
del tiempo mejorar las mismas. Personalmente, me ha gustado realizar este proyecto y<br />
me he empezado a interesar por este tema, el ayudar a personas discapacitadas a<br />
poder acceder al ordenador, ya que tienen demasiadas limitaciones para ello. Se<br />
podría profundizar con esta misma aplicación en controlar el ratón con el movimiento<br />
del dedo, aunque para ello haría falta un tiempo notablemente largo para la<br />
realización del mismo y posiblemente un grupo de personas trabajando en ello.<br />
Para controlar el ratón con el dedo, hay que tener en cuenta los parámetros del<br />
Sistema Operativo, por eso no se ha profundizado en ello en este proyecto ya que era<br />
complicado para el periodo de tiempo en que se desarrollaba el mismo.
98<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Una de las posibles mejoras y de las más importantes sería el control de fondo<br />
de la imagen. En esta aplicación, el usuario parte de un fondo estático translúcido y<br />
realiza el movimiento delante de ese fondo. A la hora de estudiar los diferentes<br />
movimientos del dedo, hemos tenido bastantes problemas para eliminar el ruido de<br />
fondo y todo lo que ello conlleva. Por eso se decidió usar un fondo estático. Por ello,<br />
sería una interesante mejora el realizar el proyecto con cualquier fondo y sin necesidad<br />
del dedil negro que utiliza el usuario.<br />
Otra segunda ampliación de este proyecto es la opción de Llamar al usuario.<br />
Inicialmente sólo se muestra una pantalla que indica que está llamando. Se podría<br />
juntar con programas de llamadas vía Internet como puede ser el Skype. Y así dar la<br />
opción al usuario de poder realizar una llamada a cualquier persona existente en su<br />
lista de contactos.<br />
Una vez se ha realizado el reconocimiento de las letras que puede realizar el<br />
usuario mediante el movimiento del dedo, se puede desarrollar un amplio abanico de<br />
posibilidades en la aplicación dando diferentes opciones según realice una u otra letra.<br />
En este proyecto, sólo se ha dado la opción de poder escuchar música o realizar<br />
llamadas (ficticias) a una lista de contactos, pero podría ampliarse en muchas<br />
variedades de uso.
11. BIBLIOGRAFÍA<br />
99<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
[WIKI07]: Wikipedia, la enciclopedia libre: www.wikipedia.org<br />
[MAT]: Toolbox Image Processing Matlab<br />
100<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
[MONOG]: Manual de Matlab: www.monografias.com/trabajos5/matlab/matlab.shtml<br />
[PUIG93]: Puig de la Bellacasa, 1993: “Discapacidad y sociedad: una perspectiva histórica”<br />
[JAVWEB]: Código Java: www.java_desarrolloweb.com<br />
[INTDISC]: www.integraciondiscapacidades.org<br />
[SCRIB]: Procesamiento imágenes con Matlab: www.scribd.com/doc/23371/Procesamientode-imagenes-con-Matlab<br />
[VALD]: Visión por computador utilizando Matlab y el toolbox de procesamiento digital de<br />
imágenes<br />
[MASANZ]: Apuntes de Inteligencia Artificial (Miguel Ángel Sanz Bobi)
12. ANEXOS<br />
101<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM
12.1 MANUAL DE USUARIO<br />
102<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Una vez se ejecuta la aplicación, al usuario le aparece esta primera pantalla<br />
principal en la cual se está esperando a encontrar el dispositivo de la webcam<br />
conectado.
103<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Si no encuentra el dispositivo, muestra una ventana de ERROR, se vuelve a la<br />
pantalla principal y hace una comprobación continua hasta que encuentre el<br />
dispositivo conectado de la webcam
104<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Una vez la aplicación ha detectado la webcam se muestra en la parte izquierda de<br />
la ventana la captura de la misma. En la parte derecha de la ventana se muestran<br />
las instrucciones de uso del programa.<br />
El usuario puede realizar una L con el dedo, queriendo así realizar una llamada o<br />
hacer una M y por lo tanto escuchar música.
105<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Si el usuario ha realizado la L con el dedo, con la tecla ENTER indica que ha<br />
finalizado el movimiento y se pasaría a la siguiente pantalla donde se muestran los<br />
contactos del usuario a los cuales podrá llamar realizando con el dedo el<br />
movimiento de la inicial de cada nombre.
106<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
El usuario realiza el movimiento con el dedo, debe pulsar la tecla ENTER para<br />
indicar a la aplicación que ha finalizado el movimiento. Una vez hecho esto,<br />
aparecerá la siguiente pantalla dependiendo de la persona a la que quiera llamar.<br />
Cuando el usuario pulse ENTER se cerrará la pantalla y finalizará la aplicación.
107<br />
RECONOCIMIENTO GESTUAL A TRAVÉS DE WEBCAM<br />
Si inicialmente el usuario ha realizado la letra M con el dedo, la aplicación mostrará la<br />
siguiente pantalla.<br />
Como se puede comprobar, aparecen una serie de canciones. El usuario deberá<br />
realizar la letra indicada para escuchar cada una de ellas.<br />
Una vez realizado el movimiento, debe pulsar ENTER y la canción elegida empezará a<br />
reproducirse con el Reproductor de Windows Media.