Anda di halaman 1dari 59

Ttulo: Sistema de reconocimiento de gestos para un visor de imgenes Autor: Daniel Yuste Padilla Fecha: 20/01/2012 Director: Enric

Xavier Martn Rull Departamento: Departamento de Ingeniera de Sistemas, Automtica e Informtica Industrial (ESAII)

Centro: Facultat d'Informtica de Barcelona (FIB) Universidat: Universitat Politcnica de Catalunya (UPC) BarcelonaTech

Sistema de reconocimiento de gestos para un visor de imgenes

Agradecimientos: En primer lugar quiero agradecer a mis padres, por la paciencia que han tenido conmigo durante estos meses con los problemas que ha acarreado el proyecto. Tambin agradecer a mi familia y amigos por la ayuda durante las primeras pruebas de movimientos, el tiempo gastado en las encuestas y las pruebas finales.

Sistema de reconocimiento de gestos para un visor de imgenes

NDICE
1. Introduccin ................................................................................ 6 1.1. Motivacin y contexto del proyecto .............................................. 6 1.2. Objetivo ................................................................................... 6 1.3 Tecnologa y entorno de trabajo ................................................... 7 1.4 Planificacin ............................................................................... 7 2. Kinect ........................................................................................ 10 2.1 Descripcin tcnica .................................................................... 10 2.2 Como funciona .......................................................................... 12 2.3 Software development kit de Kinect ............................................. 14 2.4 Kinect puesta a prueba .............................................................. 15 2.5 Utilidades ................................................................................. 21 3. Especificaciones......................................................................... 23 3.1 Requisitos no funcionales ........................................................... 23 3.2 Requisitos funcionales ................................................................ 24 3.3 Diagrama de casos de uso .......................................................... 27 3.4 Anlisis de movimientos ............................................................. 27 3.5 Descripcin de los casos de uso................................................... 38 4. Diseo ....................................................................................... 42 5. Implementacin......................................................................... 44 5.1 Tecnologa ................................................................................ 44 5.2 Detalles de implementacin ........................................................ 46 6. Pruebas finales .......................................................................... 51 7. Planificacin final y costes ......................................................... 55 8. Conclusiones .............................................................................. 58 9. Bibliografa ................................................................................ 59

Sistema de reconocimiento de gestos para un visor de imgenes

1. Introduccin
1.1. Motivacin y contexto del proyecto
Durante los ltimos aos las tecnologas han ido avanzando en gran parte gracias a la competencia del mercado de las telecomunicaciones. Esto ha llevado a que surjan tecnologas cada vez ms atractivas para el consumidor, que pese a ser creadas con un propsito concreto, conllevan grandes posibilidades en otros mbitos. La motivacin de este proyecto nace precisamente de esto, de analizar el nacimiento de una de estas nuevas tecnologas, en concreto las posibilidades y limitaciones de Kinect y a su vez, experimentar de una manera prctica con ella.

1.2. Objetivo
El principal objetivo ser la creacin de una aplicacin que utilice kinect como nico medio de interaccin, y aprovechar esta misma aplicacin con el fin de analizar las posibilidades que ofrece. La aplicacin consistir en un visor de imgenes que interaccionar con unos gestos predefinidos que el usuario deber llevar a cabo. Desde una visin general la aplicacin debe ser capaz de: Cargar cualquier imagen que se aada en la carpeta de imgenes Pre visualizacin de imgenes Seleccin de imgenes Modo presentacin Zoom Pan

Sistema de reconocimiento de gestos para un visor de imgenes

1.3 Tecnologa y entorno de trabajo


Para el desarrollo de la aplicacin se usar el lenguaje de programacin C++, la API de Directx9, la API de Windows Win32 y el SDK de Microsoft para la Kinect. La eleccin de estas herramientas parti de una primera decisin de usar el SDK de Kinect para el desarrollo de la aplicacin, como consecuencia, esto forz el usar la API win32, y dado que ya nos hallbamos en entorno Windows, la decisin de que tipo de libreras usar para el desarrollo grfico, que en un primer momento despus de ver las distintas posibilidades se debata entre OpenGl y Directx, se inclin hacia Directx. Finalmente dado que programbamos con la API de Windows se deba elegir un lenguaje de programacin que pudiera usarla y se decidi por el C++ por afinidad.

1.4 Planificacin
Este proyecto se empez el 5/08/2011, y segn una primera valoracin en el informe previo, se pretenda acabar con su desarrollo el 25/12/2012. Toda la planificacin inicial se basaba en cuatro fases: estudio previo de las herramientas y entorno, estudio de las posibilidades y desventajas de Kinect y finalmente el desarrollo de una aplicacin prctica usando Kinect.

Sistema de reconocimiento de gestos para un visor de imgenes Veamos el diagrama de Gannt.

Sistema de reconocimiento de gestos para un visor de imgenes

Sistema de reconocimiento de gestos para un visor de imgenes

2. Kinect
2.1 Descripcin tcnica
Kinect cuenta con una cmara RGB, un sensor de profundidad, un micrfono multiarray y un procesador personalizado que ejecuta el software patentado, que proporciona captura de movimiento de todo el cuerpo en 3D, reconocimiento facial y capacidades de reconocimiento de voz. El micrfono de Kinect permite llevar a cabo la localizacin de la fuente acstica y la supresin de ruido ambiental. La cmara cuenta con dos tipos de resolucion (320240 y 640480, ambas de alto color) y enva datos con una frecuencia de actualizacin de 30 fps. Lo que significa que algunos movimientos tendrn unos frames de retraso, sobre todo cuando se trata de juegos o aplicaciones con una alta tasa de refresh.

Sensores Lentes de color y sensacin de profundidad Micrfono multi-arreglo Ajuste de sensor con su motor de inclinacin

Campo de visin Campo de visin horizontal: 57 grados Campo de visin vertical: 43 grados Rango de inclinacin fsica: 27 grados Rango de profundidad del sensor: 1,2 3,5 metros

10

Sistema de reconocimiento de gestos para un visor de imgenes Data Streams (Flujo de datos) 320 240 a 16 bits de profundidad @ 30fps 640 480 32-bit de color @30fps Audio de 16-bit @ 16 kHz

Sistema de Seguimiento Rastrea hasta 6 personas, incluyendo 2 jugadores activos Rastrea 20 articulaciones por jugador activo

Sistema de audio Sistema de cancelacin de eco que aumenta la entrada de voz Reconocimiento de voz mltiple

11

Sistema de reconocimiento de gestos para un visor de imgenes

2.2 Como funciona


Si bien Kinect tiene las mismas caractersticas que una cmara normal, lo que la hace tan especial es la integracin del sensor de profundidad junto a su procesador. Para detectar la profundidad Kinect utiliza un emisor de infrarrojos para emitir una nube de puntos, si utilizramos un visor nocturno podramos observar este campo, como vemos en la siguiente imagen.

Nube de puntos emitidos por Kinect

Esta multitud de puntos marca la distancia, es decir, Kinect calcula la distancia entre donde estaba el punto al proyectarlo a donde est en la proyeccin. Pero como decamos, esto sera una simple cmara con un sensor de profundidad si no fuese por la tecnologa que lleva integrada que es capaz de reconocer el cuerpo humano.

12

Sistema de reconocimiento de gestos para un visor de imgenes

Skeleton Tracking Este proceso es el mtodo por el que kinect es capaz de detectar la figura humana cuando se sita delante. Consta de 6 pasos: 1- El sensor lanza la nube de puntos 2- Kinect crea el mapa de profundidad a partir del sensor. 3- Detecta el suelo y separa los objetos del fondo para encontrar el contorno humano. 4- Hace una clasificacin de las partes humanas. 5- Identifica las articulaciones. 6- Recrea el esqueleto.

Para la creacin del cuerpo Kinect coge las siguientes 20 articulaciones.

13

Sistema de reconocimiento de gestos para un visor de imgenes

2.3 Software development kit de Kinect


En junio de 2011 Microsoft public de manera gratuita (temporalmente) el SDK de Kinect para que los desarrolladores puedan acceder al cdigo y las herramientas facilitadas por la compaa para crear aplicaciones capaces de correr en entornos Windows. Gracias a este SDK se podr tener acceso a las siguientes caractersticas. Los ltimos avances en el procesamiento de audio, que incluyen un conjunto de micrfonos de cuatro elementos que cancelan el ruido acstico de manera sofisticada para un sonido ntido. Localizacin de la fuente de sonido para la formacin de haz, que permite la determinacin de la localizacin espacial de un sonido, mejora de fiabilidad cuando se integra con la API de reconocimiento de voz. Profundidad de datos que proporciona la distancia de un objeto desde la cmara Kinect, as como el audio primas y datos de la imagen, que en conjunto se abren oportunidades para la creacin de experiencias ms ricas naturales interfaz de usuario. Alto rendimiento en la capacidad de seguimiento para determinar la posicin del cuerpo de una o dos personas se desplazan dentro de la vista del radio de Kinect. Documentacin de la API y una descripcin de la arquitectura SDK. Cdigos de ejemplos que muestra cmo utilizar la funcionalidad en el SDK.

14

Sistema de reconocimiento de gestos para un visor de imgenes

2.4 Kinect puesta a prueba


Una vez familiarizado con el entorno podemos llevar a cabo diversas pruebas con Kinect para poner a prueba diversos rumores que hemos encontrado durante la investigacin sobre la cmara. Para ello usaremos una imagen de profundidad y de la figura del esqueleto, e iremos analizando cada una de ellas.

Lo primero que haremos ser analizar la capacidad de Kinect para reconocer un cuerpo dependiendo la intensidad de luz de la habitacin.

Intensidad de luz alta

Intensidad de luz baja

A Oscuras

Intensidad de luz solar alta

15

Sistema de reconocimiento de gestos para un visor de imgenes Como observamos en las imgenes de profundidad la poca intensidad de luz no afecta de manera significativa al reconocimiento de la persona, sin embargo cuando se aplica una gran cantidad de luz la imagen de profundidad empieza a fallar, no es capaz de detectar correctamente. Otro de los temas que encontramos es la posicin de la cmara, es decir la distancia mnima y mxima para que la deteccin sea ptima.

Distancia mnima

Distancia mxima

La distancia mnima para que reconozca el cuerpo es alrededor de 80 cm y la distancia mxima hasta que deja de reconocerlo es de 360 cm, pese al 1.2 - 3.5 metros que se especifica en la descripcin tcnica.

16

Sistema de reconocimiento de gestos para un visor de imgenes Tambin validaremos si el usuario est sentado afecta al reconocimiento.

Reconocimiento sentado

Como vemos al estar sentado reconoce la parte superior del cuerpo mientras que la inferior no, esto hace que en principio funcione bin para usarla sentado, sin embargo, la perdida de control de la parte inferior a veces afecta a la superior haciendo que se pierda momentaniamente.

Nmero de personas delante

Reconocimiento de ms de dos personas

Como vemos Kinect es capaz de detectar a mas de dos personas (segn las especificaciones hasta a 6 personas) pero solo puede conseguir las partes del cuerpo de dos (dos personas activas), sin embargo aqu lo que queramos comprobar era el criterio de eleccin de quien es activo y quien no. Despus de diversas pruebas hemos llegado a la conclusin de que tiene dos criterios de eleccin, en primer lugar y el prioritaria es coger a las dos primeras que detecta y el segundo criterio es que si hay varias detectadas escoge a las que estn mas cerca de la cmara.

17

Sistema de reconocimiento de gestos para un visor de imgenes

Reconocimiento de animales y objetos

Reconocimiento de un gato

Reconocimiento de objeto humanoide

Como vemos en la imagen del animal la cmara ha sido capaz de reconocer el objeto en movimiento sin embargo al no tener cuerpo humano es incapaz de distinguir las partes del animal. De otra banda, un objeto inanimado con aspecto humanoide es capaz de reconocerlo sin ningn problema.

18

Sistema de reconocimiento de gestos para un visor de imgenes Reconocimiento de posicin frontal o trasera

Parte frontal

Parte trasera

Como vemos es capaz de reconocer la inclinacin de los brazos sabiendo as si es la parte frontal o la trasera

19

Sistema de reconocimiento de gestos para un visor de imgenes Separacin mnimo entre usuarios

Distancia entre usuarios

Para que detecte dos usuarios correctamente ninguna parte del cuerpo de ellos debe ser tapada entre s, porque as no es capaz de detectar correctamente los puntos exactos.

20

Sistema de reconocimiento de gestos para un visor de imgenes

2.5 Utilidades
Si nos ponemos a pensar en utilidades que podemos darle a este tipo de cmara encontramos muchsimas utilidades en muy diversos mbitos, veamos algn ejemplo. mbito videojuegos: Utilidades en juegos (Descripcin de distintos juegos)

Juego de conduccin

mbito mdico: Quirfano Rehabilitacin Analizar radiografas, topografas. Explicacin de dolencias

Analizar radiografas estrilmente

21

Sistema de reconocimiento de gestos para un visor de imgenes mbito comercial: Catlogo Vestidor Agencias de viajes Mando de electrodomsticos. Manejo de robots a distancia. Reconstruccin 3D.

Probador de bolsos

mbito educativo: Pase de diapositivas Juegos educativos para nios Pizarras dinmicas. Aprender a tocar instrumentos Aprender a bailar.

Haciendo clase con Kinect

22

Sistema de reconocimiento de gestos para un visor de imgenes

3. Especificaciones
3.1 Requisitos no funcionales
RNF0001 Usuario

La aplicacin debe reconocer a cualquier usuario. La aplicacin solo reconocer a un nico usuario a la vez. La estatura o peso no afectar al desarrollo de la aplicacin pero cambiar la posicin fsica inicial del usuario.

RNF0002

Visualizar imgenes

El sistema solo aceptara imgenes en formato JPG, PNG y GIF. La aplicacin debe permitir la visualizacin de cualquier imagen aadida a la carpeta Imgenes adjunta en la aplicacin.

RNF0003

Operaciones con imgenes

Cualquier tipo de modificacin en la imagen ser nicamente durante el proceso de visualizacin.

RNF0004

Movimientos cmara

Los movimientos para la interaccin con la aplicacin se limitarn nicamente a gestos realizados con los brazos y manos.

RNF0005

Conexin Kinect

Si la aplicacin no detecta una buena conexin con la cmara emitir una ventana de aviso y la aplicacin no funcionar.

23

Sistema de reconocimiento de gestos para un visor de imgenes

RNF0006

Diseo

El diseo esttico de la aplicacin quedar al gusto del programador.

RNF0007

Usabilidad

El uso de la aplicacin ha de resultar intuitivo. Los movimientos escogidos se deben basar en el estudio previo y la eleccin de los usuarios encuestados.

3.2 Requisitos funcionales


RF0001 Visualizar imgenes

La aplicacin deber mostrar en un lateral la lista de imgenes disponibles. Si la lista de imgenes es ms grande que la capacidad de la pantalla, se debe permitir el desplazamiento por ellas. En caso de llegar al extremo de la lista la aplicacin debe permitir volver a empezar.

RF0002

Seleccionar imagen

24

Sistema de reconocimiento de gestos para un visor de imgenes

Para seleccionar una imagen se designar una posicin de seleccin en la lista en la que habr que colocarla.

RF0003

Pre visualizar imagen

La aplicacin permitir pre visualizar la imagen que seleccionemos si as se lo indicamos.

RF0004 RF0004.1

Modo presentacin Entrar y salir del modo presentacin

La aplicacin entrar en modo presentacin en el que se podr visualizar la imagen en mayor tamao. Des de este modo se permitir editar la imagen.

RF0004.2

Desplazamiento de imgenes en modo presentacin

La aplicacin permitir desplazarse de una imagen a otra en el modo presentacin.

RF0005

Zoom

El zoom deber permitir acercarse a la imagen. El zoom deber permitir alejarse de la imagen hasta que se vea entera.

RF0006

PAN

25

Sistema de reconocimiento de gestos para un visor de imgenes

La aplicacin permitir desplazarse por la imagen cuando sea demasiado grande para mostrarse entera. Para poder hacer pan se debe estar en modo presentacin y haber hecho zoom ms all de las medidas visibles de la imagen.

RF0007

Rotar imagen

La aplicacin permitir rotar la imagen.

Para rotar la imagen debe estar pre visualizada, o bien en modo presentacin Se rotar 90 en sentido horario por cada movimiento del brazo izquierdo.

26

Sistema de reconocimiento de gestos para un visor de imgenes

3.3 Diagrama de casos de uso


Usuario

Iniciar la aplicacin (pantalla principal)

Aadir imgenes

Seleccionar imgenes Pre visualizar imgenes Rotar imgenes

Seleccionar imgenes

Modo presentacin

Rotar imagen

Zoom imagen

Pan imagen

3.4 Anlisis de movimientos


Antes de comenzar a analizar los movimientos recordemos las funcionalidades que hemos definido en el diagrama de casos, ya que hemos de ponerle un movimiento a cada una de las funcionalidades. Seleccionar imagen Pre visualizar imagen Rotar imagen Entrar/Salir modo presentacin Zoom Imagen Pan Imagen

27

Sistema de reconocimiento de gestos para un visor de imgenes Para elegir el movimiento de cada imagen tendremos en cuenta tres factores, primero la eleccin del usuario, segundo, las confrontaciones entre movimientos y tercero la dificultad de implementacin. Una vez tengamos los resultados de cada factor por separado crearemos el movimiento ms adecuada ponindolos en comn. El primer paso que haremos ser encuestar a 15 personas diestras en edades comprendidas entre los 10 y los 60 aos sobre qu movimiento haran para cada funcionalidad. Seleccionar imagen Informacin que tienen los encuestados: Tendremos una tira de imgenes en forma vertical y deberemos poder desplazarnos por esta lista de manera que para seleccionar una imagen debe colocarse en una posicin que saldr indicada. Resultados: A) Movimiento del brazo entero de arriba abajo o de abajo arriba B) Colocar la mano esttica arriba o abajo y que la lista se vaya moviendo C) Que al colocar la mano encima de una de las imgenes se seleccione y que para elegir una de las que no se ven usar la opcin A o B

28

Sistema de reconocimiento de gestos para un visor de imgenes Pre visualizar imagen Informacin que tienen los encuestados: Tendremos una imagen seleccionada y deberemos indicarle que se muestre de manera ms grande. Resultados: A) Extender desde el centro hacia los extremos las manos B) Empujar la mano hacia la cmara C) Retraer la mano hacia atrs. D) Empujar la imagen hacia un lado.

29

Sistema de reconocimiento de gestos para un visor de imgenes Rotar imagen Informacin que tienen los encuestados: Tendremos una imagen delante y deberemos girarla. Resultados: A) Que la rotacin de la mano con la mueca indica el giro. B) Que la rotacin del brazo gire la imagen. C) Indicar el giro con el movimiento de los dos brazos. D) Empujndola de una esquina hacia abajo o hacia arriba con un movimiento vertical del brazo.

30

Sistema de reconocimiento de gestos para un visor de imgenes Entrar/Salir modo presentacin Informacin que tienen los encuestados: Un movimiento que cambi de pantalla. Resultados: En concreto esta pregunta dio a mltiples y disparatadas opciones, por las que elegimos las mas normales y decidimos hacer elegir sobre ellas. A) Empujar la mano hacia la cmara B) Un aplauso C) Separar las manos del centro de la pantalla hacia los extremos rpidamente

31

Sistema de reconocimiento de gestos para un visor de imgenes

Zoom Imagen Informacin que tienen los encuestados: Tienen una imagen delante y se ha de hacer un movimiento tanto como para acercarte como para alejarte. Resultados: A) Con las manos en el centro ir alejndolas o acercndolas B) Con una flecha como en los mapas arriba reducir hacia abajo aumentar. C) Brazos en forma de cruz para ampliar y hacia el centro para reducir

32

Sistema de reconocimiento de gestos para un visor de imgenes Pan Imagen Informacin que tienen los encuestados: Tienes una imagen ampliada y has de desplazarte por ella. A) Que la posicin de la mano indica hacia qu lado se desplaza B) Que si colocas el brazo hacia el extremo de la pantalla se mueva en esa direccin C) Que la mano derecha al moverlo verticalmente hacia arriba o hacia abajo vaya en esa direccin y lo mismo con la mano izquierda pero en sentido horizontal.

33

Sistema de reconocimiento de gestos para un visor de imgenes Una vez tenemos estos resultados analizaremos los problemas que puede dar cada eleccin en lo referente a comodidad o conflictos. Seleccionar imagen A) Movimiento del brazo entero de arriba abajo o de abajo arriba Si el movimiento es continuo y realizamos el movimiento de arriba abajo o de abajo arriba repetidamente se podra confundir el movimiento hacia abajo del movimiento hacia arriba. Como seleccionar imagen ser algo bastante comn, las repeticin de este movimiento de cara al usuario puede suponer demasiado esfuerzo y nos interesa minimizar el esfuerzo. B) Colocar la mano esttica arriba o abajo y que la lista se vaya moviendo Dado que la pose de reposo del cuerpo es con los brazos estirados hacia abajo, hay la posibilidad de que movamos hacia abajo sin tener la intencin de ello. C) Que al colocar la mano encima de una de las imgenes se mueva hacia la posicin de seleccin y que para elegir una de las que no se ven usar la opcin A o B. - Conlleva los mismos problemas que el A i el B.

34

Sistema de reconocimiento de gestos para un visor de imgenes Pre visualizar imagen A) Extender desde el centro hacia los extremos las manos Es un buen candidato

B) Empujar la mano hacia la cmara Es un buen candidato

C) Retraer la mano hacia atrs. Es un buen candidato

D) Empujar la imagen hacia un lado. Es un buen candidato

Rotar imagen A) Que la rotacin de la mano con la mueca indica el giro. La limitacin de la mueca para girar implica que debemos volver al punto de inicio para volver a girar lo que conlleva a una posible confusin entre si es giro hacia la izquierda o giro hacia la derecha. B) Que la rotacin del brazo gire la imagen. Quizs podra haber problemas si no se hiciese un movimiento muy parecido al circular. C) Indicar el giro con el movimiento de las dos manos. Implicara mayor esfuerzo que otros movimientos

D) Empujndola de una esquina hacia abajo o hacia arriba con un movimiento vertical del brazo. Si el movimiento es continuo y realizamos el movimiento de arriba abajo o de abajo arriba repetidamente se podra

35

Sistema de reconocimiento de gestos para un visor de imgenes confundir el movimiento hacia abajo del movimiento hacia arriba. Entrar/Salir modo presentacin A) Empujar la mano hacia la cmara Es un buen candidato

B) Un aplauso Es un buen candidato

C) Separar las manos del centro de la pantalla hacia los extremos rpidamente Es un buen candidato

Zoom Imagen A) Con las manos en el centro ir alejndolas o acercndolas Si quieres acercar mucho o alejar mucho y necesitas volver al punto de inicio puede confundirse el alejar del acercar. B) Con una flecha como en los mapas arriba reducir hacia abajo aumentar. Es una buen candidato

C) Brazos en forma de cruz para ampliar y hacia el centro para reducir Es un buen candidato

36

Sistema de reconocimiento de gestos para un visor de imgenes Pan Imagen A) Que la posicin de la mano indica hacia qu lado se desplaza Si vas hacia un lado y an falta imagen y quieres ir ms hacia ese lado debes volver al punto de inicio y durante ese trayecto es posible confundir el movimiento. B) Que si colocas el brazo hacia el extremo de la pantalla se mueva en esa direccin Es un buen candidato

C) Que la mano derecha al moverlo verticalmente hacia arriba o hacia abajo vaya en esa direccin y lo mismo con la mano izquierda pero en sentido horizontal. Si vas hacia un lado y an falta imagen y quieres ir ms hacia ese lado debes volver al punto de inicio y durante ese trayecto es posible confundir el movimiento.

Una vez hemos analizado las elecciones de

los usuarios, vistos los

inconvenientes que plantean y hecho pruebas de implementacin para ver si era posible, se ha tomado la decisin de los movimientos que se especificarn en la descripcin de los casos de uso.

37

Sistema de reconocimiento de gestos para un visor de imgenes

3.5 Descripcin de los casos de uso


Aadir imgenes Descripcin
Se aaden nuevas imgenes a la aplicacin.

Precondicin Solo pueden tener el formato gif, jpg, png y bmp. Activacin Escenario principal Escenarios alternativos
El usuario accede a la carpeta Imgenes de la aplicacin. El usuario transfiere las imgenes q le interese a la carpeta Imgenes. --

Seleccionar imgenes Descripcin


Se selecciona la imagen que se quiere.

Precondicin Ha de haber al menos una imagen Activacin Escenario principal


En la pantalla principal El usuario debe colocar su mano derecha en la posicin superior de la lista de imgenes y apartarla cuando la imagen a seleccionar quede en la posicin central enmarcada. En caso de haber solo seleccionada por defecto. una imagen est estar

Escenarios alternativos

38

Sistema de reconocimiento de gestos para un visor de imgenes

Pre visualizar imgenes Descripcin


Se muestra en un tamao ms grande la imagen seleccionada

Precondicin Ha de haber alguna imagen seleccionada Activacin Escenario principal Escenarios alternativos
En la pantalla principal una vez seleccionada la imagen El usuario debe desplazar el brazo derecho desde la posicin de la imagen seleccionada hacia la izquierda de la pantalla, como si se empujase imagen. -

Rotar imgenes Descripcin


Rota la imagen seleccionada, ya sea en el modo presentacin o una vez pre visualizada, 90 en el sentido horario

Precondicin La imagen ha de estar pre visualizada o estar en modo


presentacin

Activacin Escenario principal Escenarios alternativos

Con la imagen pre visualizada o en modo presentacin El usuario debe colocar la mano izquierda en la parte superior de la pantalla y bajarla verticalmente hacia la parte inferior de la pantalla -

39

Sistema de reconocimiento de gestos para un visor de imgenes

Modo presentacin Descripcin


Se ampla la imagen seleccionada y se permite la modificacin de esta.

Precondicin Ha de haber una imagen seleccionada Activacin Escenario principal


En la pantalla principal El usuario debe hacer coincidir su mano izquierda con la derecha en forma de aplauso durante no ms de 2 segundos. De la misma manera para salir del modo presentacin y volver a la pantalla principal. -

Escenarios alternativos

Seleccionar imgenes (Presentacin) Descripcin


Se selecciona la imagen que se quiere estando en el modo presentacin.

Precondicin Ha de haber al menos dos imgenes. Activacin Escenario principal


En el modo presentacin El usuario debe desplazar la mano derecha del lateral derecho de la imagen hacia el izquierdo como si la empujase para seleccionar la imagen de la derecha. El movimiento contrario, es decir, la mano izquierda en el lateral izquierdo desplazada hacia el lateral derecho, seleccionar la imagen de la izquierda. -

Escenarios alternativos

40

Sistema de reconocimiento de gestos para un visor de imgenes

Zoom imgenes Descripcin


Se acerca a la imagen o se aleja.

Precondicin Ha de haber al menos una imagen Activacin Escenario principal Escenarios alternativos
En el modo presentacin una vez seleccionada la lupa de la barra de herramientas El usuario debe colocar los brazos en cruz para acercarse a la imagen, o bien colocar los brazos estirados hacia el centro para distanciarse de la imagen. -

Pan imgenes Descripcin


Se desplaza por la imagen si esta es ms grande que la pantalla

Precondicin Ha de haber al menos una imagen Activacin Escenario principal


En el modo presentacin si la imagen ocupa ms que la pantalla despus de haber usado el zoom. El usuario debe colocar la mano derecha encima de las flechas para desplazarse hacia la direccin que apuntan, en el caso de la flecha izquierda se usar la mano izquierda. -

Escenarios alternativos

41

Sistema de reconocimiento de gestos para un visor de imgenes

4. Diseo
El diseo de la aplicacin no era algo prioritario durante la creacin de est, por lo tanto se dej una interfaz bastante simple e intuitiva. La aplicacin tendr dos pantallas bsicas, una que har la funcin de inicio, en la que se podrn ver las imgenes en pequeo y pre visualizarlas, y otra para representar el modo presentacin donde se podrn ver en tamao ms grande y navegar por ella. La estructura de estas se har teniendo en cuenta las especificaciones previas en cuanto a funcionalidad.

Pantalla de inicio

Lista de imgenes

Zona de seleccin

Imagen pre visualizada

42

Sistema de reconocimiento de gestos para un visor de imgenes

Pantalla Modo presentacin

Lupa seleccionada

Indicadores de desplazamiento

43

Sistema de reconocimiento de gestos para un visor de imgenes

5. Implementacin
5.1 Tecnologa
A continuacin se detallarn brevemente las distintas tecnologas que han sido necesarias para la implementacin del sistema.

C++ Es el lenguaje de programacin escogido para la creacin de la aplicacin, este lenguaje fue creado con la idea de extender el ya existente C pero con capacidad de poder manipular objetos. Una de las particularidades de c++ es la posibilidad de redefinir los operadores y de poder crear Nuevos tipos que se comporten como tipos fundamentales

API Windows Es la interfaz de programacin de aplicaciones de Windows (Windows application programming interface). Est formada por un conjunto de libreras dinmicas que se usan para poder programar en el sistema operativo Windows. Si clasificamos por categoras sus funciones encontramos las siguientes:

Depuracin y manejo de errores E/S de dispositivos Varias DLL, procesos e hilos Comunicacin entre procesos Manejo de la memoria Monitoreo del desempeo Manejo de energa Almacenamiento Informacin del sistema GDI (interfaz para dispositivos grficos) de Windows (tales como impresoras) Interfaz de usuario de Windows

44

Sistema de reconocimiento de gestos para un visor de imgenes Microsoft visual c++ 2010 Para poder programar de una manera ms eficiente y comoda, se ha utilizado un entorno de desarrollo integrado para lenguajes de programacin C, C++ y C++/CLI. Ya que est especialmente diseado para el desarrollo y la depuracin de cdigo escrito para las APIs de Windows y Directx. Gracias a las herramientas que incluye como son el IntelliSense, RemoteDebuging, Editar y Continuar, y Texto Resaltado. Ayuda a una mejor implementacin.

SDK Kinect El sdk de kinect es un kit de desarrollo que saco Microsoft para facilitar el uso de la programacin con Kinect de manera que puedas interactuar con ella llamando a unas determinadas funciones.

SDK Directx 9.0 Es una coleccin de API desarrolladas para facilitar las complejas tareas relacionadas con multimedia, especialmente programacin de juegos y vdeo, en la plataforma Microsoft Windows. forman son las siguientes: Direct3D Direct Graphics DirectInput DirectPlay DirectSound DirectMusic DirectShow DirectSetup DirectCompute La lista de las APIs que lo

45

Sistema de reconocimiento de gestos para un visor de imgenes

5.2 Detalles de implementacin


Para implementar la aplicacin se opt por generar una aplicacin en entorno Windows, la cual contena un frame de directx para poder crear objetos poligonales dentro de l. Para generar la vista previa de las imgenes se crean tantos cuadrados como imgenes contenga la carpeta Imgenes, en estos cuadrados se le aade la textura, que no es otra que las propias imgenes. Una vez tenemos los cuadrados creados con las texturas apropiadas ya podemos tratar cada uno de los polgonos, provocando as el efecto que queramos a las imgenes, como desplazamientos, rotaciones, escalados Para evitar que un movimiento perjudicase a otro se tuvo que implementar alguna manera para que el sistema supiese que deba empezar a detectar el movimiento, ya que Kinect captura los puntos continuamente. Esto se consigui estructurando la aplicacin en zonas.

46

Sistema de reconocimiento de gestos para un visor de imgenes

Esquinas Laterales Inferior y superior Centro Centro lateral

Seleccin Para la seleccin de imgenes se opt por detectar si la mano derecha se colocaba en la esquina superior de la lista de imgenes esto provocara mover una imagen, por lo tanto se iran moviendo las imgenes siempre que se mantenga la mano all. Pre visualizacin Para la pre visualizacin se opt por detectar a partir de que la mano derecha se colocase encima de la imagen seleccionada y desde ah detectar un movimiento lateral hacia el centro de la pantalla. Para ello se capturaba el momento en que se pona la mano encima de la imagen (centro lateral derecho) y se consultaba si al cabo de un segundo la mano estaba cerca del centro de la pantalla. Modo presentacin Para el cambio a modo presentacin simplemente detecta si la mano izquierda y la derecha comparten el mismo punto o muy cerca, pero que a la prctica es como dar un aplauso. Rotacin La rotacin de la imagen se implement de manera que en el momento que detectase la mano izquierda sobre la esquina superior izquierda calculase si al cabo de un segundo estaba cerca de la esquina inferior izquierda, es decir, si se haba hecho un movimiento de arriba abajo.

47

Sistema de reconocimiento de gestos para un visor de imgenes Zoom Para el zoom se opt por crear un botn especfico para detectar que estaba activo y as evitar activar el movimiento con otro tipo de movimientos involuntarios. Una vez activado para acercarse se ha de detectar que la mano derecha esta hacia el centro de la zona lateral derecha y la mano izquierda hacia el centro de la zona lateral izquierda. Para alejarse debe detectar tanto la mano derecha como la mano izquierda hacia el centro de la pantalla. Pan Finalmente para la activacin del pan se debe estar en modo zoom y que la imagen sea ms grande que la pantalla, en este momento aparecen unas flechas que indican hacia donde se puede desplazar. Para desplazarlas se ha de colocar la mano derecha encima de estas flechas que estn situadas en los centros de los laterales y en el centro de la parte inferior y superior. En el caso del lado izquierdo se deber usar la mano izquierda.

A continuacin dejamos una serie de grafos que muestra los gestos y movimientos implementados. Seleccionar imagen:

48

Sistema de reconocimiento de gestos para un visor de imgenes Desplazar imgenes derecha e izquierda:

Derecha a izquierda:

Izquierda a derecha:

49

Sistema de reconocimiento de gestos para un visor de imgenes Zoom:

Alejarse:

Acercarse:

50

Sistema de reconocimiento de gestos para un visor de imgenes Desplazar por la imagen:

Desplazar Izquierda

Desplazar Derecha

Desplazar Arriba

Desplazar Abajo

Rotar:

51

Sistema de reconocimiento de gestos para un visor de imgenes

6. Pruebas finales
Una vez acabada la aplicacin se ha dado a probar a los mismos 15 encuestados para evaluar su us. A los usuarios de menos de 15 aos y a los mayores de 50 les ha resultado ms costoso aprender a usar la aplicacin, sin embargo al cabo de unos minutos de pruebas han conseguido tener un control bastante aceptable de la aplicacin. En cuanto a los usuarios de edades comprendidas entre los 15 y los 50, han tardado poco en sentirse cmodos con los movimientos y han llegado a un control muy bueno de la aplicacin. Los usuarios con conocimientos informticos les ha resultado mucho ms fcil que al resto con conocimientos de nivel usuario. Una vez realizada la prueba a los distintos usuarios observamos diversos errores y les intentamos dar solucin:

- A diferentes estaturas se deba cambiar la posicin de la cmara y esto resultaba un inconveniente a nivel funcional. Solucin: Se le aadi la opcin de mover la cmara con el teclado para configurar el ngulo de sta y as ajustarla a la altura deseada.

- Al estar delante la cmara y hacer algn gesto involuntario como pudiese ser el caso de rascarse o un movimiento involuntario con el brazo se confunda con algn gesto definido. Solucin: Marcar los movimientos an ms apurando los mrgenes al reconocer lo que es un gesto. Sera lo equiparable a los errores del ratn como dar un clic de ms, etc.

52

Sistema de reconocimiento de gestos para un visor de imgenes - De la misma manera que pudimos observar en las pruebas de Kinect al hacer pruebas con luz solar la cmara le cuesta reconocer el cuerpo. Solucin: La cmara no funciona bien con luz solar as que no hay solucin posible, simplemente, usarlo en interior.

- En cuanto a la utilizacin del programa los usuarios comentaron que el pulsar la lupa deban desplazarse y les era incomodo tener que levantar tanto el brazo. Esto era inevitable ya que el rango de un usuario esttico con los brazos es la que marca la circunferencia creada con sus brazos, sin embargo la pantalla es rectangular, as pues, para poder llegar a las esquinas de una pantalla se debe desplazar el cuerpo.

Solucin: Sin embargo, pese a que el desplazamiento es inevitable se opt por disponer del botn de la lupa en la parte inferior, ya que era ms cmodo para los usuarios que tener que levantar el brazo.

- En un primer momento la rotacin solo se realizaba hacia un solo lado con la mano izquierda, esto era debido a que se quera evitar la confusin de si se rotaba hacia arriba o hacia abajo como se ha explicado, sin embargo, y dado que todos los usuarios lo pidieron, se quera poder rotar hacia el otro lado. Solucin: Con el fin de seguir evitando la confusin se decidi usar la mano derecha con el mismo movimiento que la izquierda para rotar en sentido inverso.

53

Sistema de reconocimiento de gestos para un visor de imgenes - Por ltimo, una vez acabada la aplicacin y puesta aprueba descubrimos que cuantas ms horas esta encendido el ordenador con Kinect en funcionamiento ms lento iba llegando hasta a fallar el reconocimiento. Solucin: Realmente no es un problema de la aplicacin sino del ordenador en el que se ha creado, ya que su rendimiento disminuye con los aos.

Finalmente se ha creado un video ilustrativo para ensear el funcionamiento de la aplicacin y se ha subido a YouTube, aqu tenis el enlace junto a una captura de pantalla del sistema montado.

Video: http://youtu.be/qDJb1j6NvnY

54

Sistema de reconocimiento de gestos para un visor de imgenes

7. Planificacin final y costes


A la finalizacin de este proyecto y partiendo de la planificacin inicial vemos que ha habido un pequeo retraso de 2 o 3 das en cuanto a la documentacin, el resto se ha cumplido con bastante exactitud y en caso de haberse retrasado algn da se ha compensado haciendo ms otros das.

COSTES En cuanto a los costes del proyecto se dividen en costes del material, costes del software y costes del personal, a continuacin se detallan cada uno.

COSTE DEL MATERIAL El nico coste material que implica este proyecto es la cmara Kinect y el cable para poder conectarla por usb a un ordenador.

Material
Kinect Adaptador USB para Kinect

Coste
100 50 TOTAL 150

55

Sistema de reconocimiento de gestos para un visor de imgenes COSTE DEL PERSONAL Pese a que este proyecto ha sido realizado por una nica persona, intentaremos dar la versin global del coste que hara falta para llevarlo a cabo a mayor escala. ANALISTA: Se encargar de realizar el anlisis de los requisitos y la eleccin de movimientos DISEADOR: Se encargar del diseo grfico de la aplicacin PROGRAMADOR: Llevar a cabo la implementacin total de la aplicacin y las pruebas que conlleva. DOCUMENTADOR: Documentar el proyecto y a los recursos necesarios para el funcionamiento de la aplicacin. Recurso Analista Diseador Programador Documentador Horas 160 40 156 60 Precio/Hora 25 15 25 15 %trabajo 48% 12% 47% 18% Total 4000 600 3900 900 TOTAL 9400

56

Sistema de reconocimiento de gestos para un visor de imgenes COSTE DE SOFTWARE Los costes de los programas usados dado que se han usado licencias de la UPC no ha habido ninguno, sin embargo y para seguir en la lnea del coste real pondremos el precio del mercado.

Software
Microsoft Visual Studio

Coste
12.769 TOTAL 12.769

COSTE TOTAL El coste total viene a ser la suma de todos los costes antes descritos (costes de material + costes software + costes del personal) y asciende a los 22319

57

Sistema de reconocimiento de gestos para un visor de imgenes

8. Conclusiones
Como conclusin podemos afirmar que hemos conseguido llevar a cabo los objetivos propuestos, tanto el de llevar a cabo pruebas con esta nueva tecnologa como realizar una aplicacin funcional que interactuase con ella. Por otro lado, una vez acabado el proyecto podemos afirmar que con ms tiempo podramos haber conseguido una aplicacin mucho ms compleja, sin embargo al no tener una base de las tecnologas que se han usado y haber tenido que empezar de cero ha supuesto un gran retraso en la implementacin de la aplicacin.

OPININ PERSONAL Una vez trabajado con Kinect y visto la gran cantidad de posibilidades que ofrece estoy seguro que se acabar usando para mucho ms que juegos, de hecho, durante estos meses desde que sali el nuevo SDK de Microsoft muchos equipos de programadores han realizado ya diversas aplicaciones como hemos visto en la memoria para extender su us a muchos otros mbitos. En cuanto a la realizacin del proyecto creo que me ha sido muy til, porque he podido evaluar mis conocimientos y mi capacidad para adquirir nuevos por mi cuenta. Gracias a la base que he conseguido durante la carrera he sido capaz de aprender a usar nuevas herramientas a partir de documentacin y manuales, pese a que algunas no estuviesen demasiado bien documentadas a causa de ser demasiado nuevas como es el caso del SDK de Kinect. As pues creo que este proyecto me ha ayudado mucho a prepararme para futuros proyectos.

58

Sistema de reconocimiento de gestos para un visor de imgenes

9. Bibliografa
[1] C++ http://www.cplusplus.com/doc/tutorial/ Ivor Horton's Beginning Visual C++ 2010

[2] API Windows http://msdn.microsoft.com/es-es/ http://winapi.conclase.net/

[3] Directx http://www.lawebdelprogramador.com http://www.zonagratuita.com/ http://www.directx.com Introduccin a la Programacin Ldica DIRECTX: PROGRAMACION DE GRAFICOS 3D Diversos foros

[4] Kinect y sdk http://kinectforwindows.org/ http://www.wikipedia.com Diversos foros Programming Guide KinectSDK

59

Anda mungkin juga menyukai