22.11.2012 Views

4aae971695c34

4aae971695c34

4aae971695c34

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!