86
Diseño e Implementación de un Sistema Multitáctil de Bajo Coste TITULACIÓN: Enginyeria Tècnica en Informática de Sistemes AUTOR: Manuel Melgarejo Buera DIRECTOR: Helio Tejedor Navarro FECHA: Junio / 2009. Departament d’Enginyeria Informàtica i Matemàtiques

Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

Embed Size (px)

Citation preview

Page 1: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

Diseño e Implementación de un Sistema Multitáctil de Bajo Coste

TITULACIÓN: Enginyeria Tècnica en Informática de Sistemes

AUTOR: Manuel Melgarejo Buera

DIRECTOR: Helio Tejedor Navarro

FECHA: Junio / 2009.

Departament d’Enginyeria Informàtica i Matemàtiques

Page 2: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

2

Índice Índice..................................................................................................................................... 2

Introducción.......................................................................................................................... 4

1. El Ratón.................................................................................................................... 4

2. Dispositivos Táctiles ................................................................................................ 4 2.1. Tecnologías Táctiles .......................................................................................... 4

3. Evolución de los Dispositivos Táctiles.................................................................... 5

Objetivos................................................................................................................................ 7

Especificaciones.................................................................................................................... 9

1. Descripción Básica del Funcionamiento................................................................ 9

2. Modos de Funcionamiento...................................................................................... 9 2.1. Modo Emulación de Dispositivo Apuntador ..................................................... 9 2.2. Modo Libre de Emulación............................................................................... 10

3. Componentes del sistema ...................................................................................... 10 3.1. Webcam........................................................................................................... 11 3.2. Superficie Multitáctil....................................................................................... 11 3.3. Proyector.......................................................................................................... 12 3.4. Software Controlador ...................................................................................... 12

4. Condiciones de Uso................................................................................................ 13

Diseño.................................................................................................................................. 15

1. WebCam................................................................................................................. 15

2. Superficie Sensible al Tacto.................................................................................. 15 2.1. Adaptación de la Superficie Sensible al Tacto a la Retroproyección.............. 16 2.2. Adaptación del Sistema de Detección de Puntos a la Retroproyección .......... 16 2.3. Captura de la Luz Infrarroja ............................................................................ 17

3. Visión Global del Hardware ................................................................................. 18

4. Software.................................................................................................................. 18 4.1. Entorno de Programación ................................................................................ 19 4.2. Obtención de Imágenes de la Webcam............................................................ 19 4.3. Procesado de las Imágenes .............................................................................. 20 4.4. Comunicación entre Aplicación Controladora y Aplicación Multitáctil......... 24 4.5. Estructuración de la Aplicación de Control..................................................... 26

Desarrollo............................................................................................................................ 29

1. Webcam .................................................................................................................. 29 1.1. Adaptación a la Luz Infrarroja......................................................................... 30

2. Superficie Multitáctil............................................................................................. 31 2.1. Inducción de la Reflexión Total Interna .......................................................... 31 2.2. Adaptación del Sistema de Detección de Puntos a la Retroproyección .......... 35

3. Software.................................................................................................................. 36 3.1. Módulo de Procesado de Imágenes ................................................................. 36

Page 3: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

3

3.2. Módulo Principal ............................................................................................. 45

Evaluación .......................................................................................................................... 53

Conclusiones y Trabajo Futuro ......................................................................................... 57

Recursos Utilizados............................................................................................................. 58

Anexos ................................................................................................................................. 60

1. Anexo 1: Sensores de Imagen ............................................................................... 60

2. Anexo 2: Emisión de Radiación Infrarroja......................................................... 61

3. Anexo 3: Espectro Lumínico ................................................................................ 62

4. Anexo 4: La radiación Infrarroja ........................................................................ 63

5. Anexo 5: Filtro Pasa-infrarrojos .......................................................................... 64

6. Anexo 6: Histograma............................................................................................. 65

7. Anexo 7: Índices de Refracción del Metacrilato y el Aire.................................. 66

8. Anexo 8: Reflexión total Interna .......................................................................... 67

9. Anexo 9: Cálculo de la Resistencia Limitadora .................................................. 68

10. Anexo 10: Cálculo del Polinomio Corrector de Perspectiva.......................... 69

11. Anexo 11: Datasheet L.E.D.s ............................................................................ 71

12. Anexo 12: Sensibilidad a la Luz del Carrete Fotográfico .............................. 76

13. Anexo 13: Emulsión Fotográfica...................................................................... 77

14. Anexo 14: Declaración de confidencialidad .................................................... 79

Manual de Usuario............................................................................................................. 80

1. Descripción............................................................................................................. 80 1.1. Modos de Funcionamiento: ............................................................................. 80

2. Instalación .............................................................................................................. 82

3. Configuración ........................................................................................................ 83 3.1. Menú ‘Device’................................................................................................. 83 3.2. Menú ‘Source’ ................................................................................................. 83 3.3. Menú ‘Capture’ ............................................................................................... 83 3.4. Menú ‘Multitouch’ .......................................................................................... 84 3.5. Menu ‘Boot’ .................................................................................................... 85

4. Requisitos del sistema............................................................................................ 86 4.1. Hardware ......................................................................................................... 86 4.2. Software........................................................................................................... 86

Page 4: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

4

Introducción

Desde que los ordenadores hicieran su entrada en el mundo doméstico, la forma de comunicarse ha evolucionado de forma constante. El ritmo que ha impuesto el abaratamiento de la tecnología requerida para fabricar periféricos ha permitido una interacción más intuitiva entre el hombre y la máquina.

1. El Ratón La revolución llegó en 1968 cuando Douglas Engelbart presentó el primer ratón de la historia. Hoy en día éste periférico está totalmente extendido y sin él no se concibe la comunicación entre el usuario y el ordenador. Cualquiera que sea el sistema operativo que se utilice, este dispositivo, permite básicamente situar un cursor sobre una posición concreta. Su velocidad y precisión hace que pueda ser utilizado tanto en una aplicación de C.A.D. como en un juego de acción.

2. Dispositivos Táctiles En 1983, Hewlett-Packard, comercializó el primer ordenador con una pantalla que permitía al usuario pulsar con un dedo directamente sobre la pantalla. Esta posibilidad eliminaba la necesidad de situar un cursor sobre una posición y, sobretodo, evitaba la necesidad de manipular ningún mando para ejercer una acción sobre ese punto. En este caso, el hecho de pulsar, ya indicaba la acción que se deseaba hacer. 2.1. Tecnologías Táctiles Desde entonces la tecnología táctil se ha ido incorporando a los dispositivos informáticos y electrónicos, gracias a su uso más intuitivo, y ha evolucionado dando lugar a diferentes tecnologías.

• Resistiva: Basada en los cambios de resistencia que el contacto de algún elemento provoca en una capa de material conductor translúcido situado sobre la superficie dónde se genera la imagen.

• Onda Acústica Superficial (SAW): Esta tecnología se vale de la transmisión de ondas de ultrasonidos a través de la superficie táctil y el procesamiento de los cambios sufridos por estas ondas cuando algún elemento externo toca la superficie.

• Capacitivas: Su funcionamiento se basa en registrar los cambios que un campo de capacitancia de referencia experimenta cuando otro campo de capacitancia distinto, como el dedo de una persona, entran en contacto.

• Infrarrojos: Una serie de receptores de infrarrojos, situados en un lado de la superficie táctil, detectan el haz de infrarrojos emitidos por otra serie de emisores situados en el lado contrario. En el momento que algún elemento entra en contacto con la superficie, el haz es interrumpido y los receptores registran su posición lineal. Si se desea localizar en punto en un plano, basta con utilizar dos conjuntos de emisores y receptores para obtener las coordenadas en el plano de la superficie.

• Galga Extensiométrica: La pantalla se sitúa sobre unas galgas extensiométricas que se encargan de registrar la presión ejercida en varios puntos preestablecidos de la pantalla. Esta información se utiliza para calcular el punto exacto donde se ha ejercido la presión sobre la superficie.

Page 5: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

5

• Tecnología de Señal Dispersiva: Mediante la medición de la energía mecánica producida al tocar la superficie, se calcula el punto exacto el cual originó la energía a través complejos algoritmos.

• Reconocimiento de Pulso Acústico: Cuatro transductores piezoeléctricos situados en las esquinas de la superficie táctil se encargan de convertir la energía mecánica, generada por el contacto de algún elemento con la superficie, en una onda de sonido. Ésta es comparada con una serie de patrones preestablecidos que permiten situar la posición originaria del contacto.

• Imagen Óptica: Mediante luz infrarroja se iluminan dos laterales de la superficie táctil y dos cámaras procesan las sombras formadas en cada lateral. Mediante esta información se triangula la posición del plano donde se produjo en contacto.

Todas estas tecnologías han ido evolucionando y disminuyendo su precio de forma progresiva. Esta razón ha permitido su utilización en dispositivos cada vez más populares y más baratos y que, a su vez, ha dado lugar a nuevas formas de interactuar con las máquinas. Se hace muy difícil elegir cual de estas tecnologías es la mejor o la mas útil, ya que todas ellas tienen ventajas y desventajas, pero la lógica dice que la más utilizada es, en principio, la más económica y fácil de implementar. Al final el resultado es siempre el mismo: Que el dispositivo reaccione al tocar su superficie.

3. Evolución de los Dispositivos Táctiles La evolución llega en el momento que la tecnología permite múltiples puntos de contacto. Este tipo de interfaz proporciona una interacción mucho más intuitiva con el entorno representado por la pantalla. Acciones como escalados y rotaciones resultan más directas que con los sistemas anteriores. Como contrapartida, ésta tecnología resulta excesivamente cara para su popularización y, de momento, queda reservada a dispositivos muy selectos.

Actualmente, empresas como Microsoft o Apple, disponen dispositivos basados en interfaces multitáctiles tales como el iPhone (Apple) o el Touch Wall (Microsoft).

En el caso de Apple, se ha apostado por una pantalla evolucionada sobre una tecnología capacitiva. Su coste obliga a limitar su tamaño lo cual lo hace ideal para dispositivos pequeños tales como los teléfonos móviles pero no para grandes pantallas donde realizar presentaciones multitudinarias.

Figura 1: Fotografía del iPhone de Apple Con pantalla multitácil capacitiva

Es en este campo donde Microsoft ofrece su dispositivo, basado en una tecnología óptica, que utiliza una serie de cámaras para recoger imágenes de la superficie táctil. Después de su procesado, éstas proporcionan los puntos de contacto sobre la superficie. Éste sistema

Page 6: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

6

permite dispositivos de mayor superficie multitáctil sin que este parámetro afecte demasiado a su coste. A pesar de todo, el precio de partida es excesivamente elevado para que un usuario normal tenga acceso a él.

Figura 2: Bill Gates haciendo uso del ‘Touch Wall’ de Microsoft

Pequeñas empresas y usuarios se encuentran con la barrera que la inversión económica en hardware que representa el uso de estos dispositivos. Este hecho frena las posibilidades de desarrollo de software a pesar de disponer de la capacidad intelectual para hacerlo.

Page 7: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

7

Objetivos El objetivo general de este proyecto es proporcionar una plataforma básica sobre la cual poder desarrollar aplicaciones multitáctiles de forma barata.

Es necesario un hardware que permita la detección de puntos de contacto sobre una superficie en la cual se puedan ver imágenes. La forma más barata, hoy en día, es la proyección de imágenes mediante un proyector estándar. En concreto, la retroproyección, evita la sombra que genera el usuario sobre la superficie de proyección, por ello, la superficie sensible al tacto debe permitir la retroproyección de imágenes.

El proyector debe ser usado en condiciones de luz tenue o prácticamente nulas, por lo tanto, el sistema de detección de puntos debe ser efectivo en estas condiciones.

Es necesario captar los puntos de contacto mediante algún tipo de sensor que no implique una inversión de dinero excesiva. Por ello, otro de los objetivos del proyecto es la posibilidad de usar una webcam para detectar los puntos de contacto sobre la superficie dónde realicemos la retroproyección. Se pretende procesar las imágenes que nos proporcionen este periférico para detectar los puntos dónde ejercemos algún contacto con la superficie sensible al tacto.

A pesar de la popularización del ratón, éste sólo resulta intuitivo a la hora de posicionar el cursor sobre un punto. Para ejercer cualquier otro tipo de acción sobre ese punto, se requiere la manipulación de algún tipo de mando. Los botones y las ruedas giratorias son añadidos al interfaz, y obligan al usuario a adquirir cierta práctica para utilizar el periférico con la suficiente soltura. Otro objetivo es el de proporcionar un interfaz más intuitivo que el del ratón convencional.

La interacción con el sistema operativo mediante el nuevo interfaz debe ser posible, por lo tanto, es necesario emular el funcionamiento de un ratón estándar. De este modo, el nuevo interfaz, podrá ser usado como una pantalla táctil convencional. Este hecho extenderá la compatibilidad a cualquier aplicación ya existente.

La gran limitación del ratón se encuentra en la imposibilidad de actuar sobre más de un punto a la vez. Para poder mejorarlo, es necesario superar esta limitación. Por lo tanto, otro de los objetivos se encuentra en desarrollar un interfaz que sea capaz de tratar con más de un punto a la vez.

Una consecuencia del objetivo anterior es la posibilidad de realizar rotaciones y escalados mediante el procesado del movimiento global de los puntos de contacto. Por ello, otro de los objetivos es facilitar esta tarea y proporcionar a las aplicaciones multitáctiles una forma fácil de detectar estos movimientos.

Hasta ahora, estas acciones eran posibles mediante la manipulación de los botones del ratón y el movimiento del cursor de forma simultánea. Esto limitaba a sólo una acción de forma simultánea. Mediante este proyecto se trata de solucionar este problema y permitir las acciones de escalado, rotación y translación de forma simultánea.

Es posible que los programadores de las aplicaciones multitáctiles no deseen obtener parámetros de translación, rotación o escalado. Cabe la posibilidad que deseen aplicar sus propias reglas para decidir como actuar frente a estos puntos. Otro objetivo se basa en la posibilidad de recoger todos los puntos de contacto existentes en la superficie para procesarlos de forma particular, prescindiendo de los parámetros mencionados anteriormente.

Page 8: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

8

Como consecuencia de la necesidad de compatibilizar el nuevo interfaz con el de un ratón estándar, la posibilidad de obtener todos los puntos de contacto no se puede realizar del mismo modo que la emulación. Por ello son necesarios dos modos independientes de funcionamiento adecuados a cada una de las necesidades descritas. En uno de los modos será posible obtener los puntos de contacto en cada momento y en el otro será posible la emulación del ratón, proporcionando los parámetros multitáctiles. Ambos modos deben poder funcionar de forma simultánea.

También se desea que, a pesar de que la filosofía del sistema es el bajo coste, se pueda sacar un alto rendimiento si la calidad del hardware empleado lo permite. Por ello se debe dotar al software de un alto grado de configurabilidad para que se adapte a todo tipo de hardware, independientemente de su calidad. Esta característica también está destinada a que pueda utilizarse, no solo como dispositivo apuntador táctil, sino para cualquier otra funcionalidad relacionada con sistema de procesado de imágenes y el interfaz multitáctil.

Finalmente, este alto grado de configurabilidad evidencia la necesidad del almacenado y restauración del las opciones de la aplicación. Esto permitirá que los usuarios que no tengan los conocimientos necesarios para su configuración tengan acceso a su uso. La manipulación de los parámetros de configuración pueden dejarse en manos de personas más cualificadas. Esto deriva en el objetivo de implementar alguna medida que permita el almacenado y restauración de configuraciones.

Page 9: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

9

Especificaciones Diseño e implementación de un sistema capaz de captar varios puntos simultáneos de contacto sobre una superficie, sobre la cual es posible proyectar una imagen mediante un proyector estándar.

1. Descripción Básica del Funcionamiento El software controlador es capaz de mapear las situaciones de los puntos de contacto sobre la superficie a sus correspondiente puntos en una pantalla. Mediante un calibrado previo se determina el tamaño útil de la superficie de contacto y la correspondencia entre los puntos de la superficie y los puntos de la pantalla.

Figura 3: Esquema del mapeado de puntos sobre una superficie a la pantalla

Para su mapeado se utilizarán conceptos de geometría afín y corrección de perspectiva.

2. Modos de Funcionamiento Una vez calibrado, los puntos obtenidos son procesados de dos manera distintas, según el objetivo del software que lo utiliza.

2.1. Modo Emulación de Dispositivo Apuntador Sobre este modo, el software controlador se encarga de determinar los parámetros de escalado y rotación aplicados sobre un punto en concreto. El centro correspondiente al total de los puntos obtenidos determina la posición de la acción ya que se mantiene relativamente constante durante todo el proceso. Éste también proporciona una referencia sobre el movimiento de translación del total del conjunto de puntos.

Una vez calculados dichos parámetros, el software controlador manipula el puntero del sistema operativo para desplazarlo al punto en cuestión y envía la información de los parámetros calculados a la aplicación correspondiente. Además de la manipulación del puntero, el software controlador, también es capaz de emular las pulsaciones de los botones de un ratón estándar en función de la cantidad de puntos de contacto existentes. El botón a emular en cada uno de los casos, es configurable desde el software controlador.

En la figura 4 se puede ver representada de forma esquemática el sistema de comunicación que emplea este modo de funcionamiento. Se intenta ilustrar el recorrido que realiza la información generada por la aplicación controladora hasta llegar a la aplicación multitáctil. La aplicación controladora comunica al sistema operativo una localización del puntero y un estado de los botones junto con la información multitáctil. El sistema operativo envía el mensaje a la aplicación multitáctil como si fuera un mensaje de ratón estándar

Page 10: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

10

Figura 4: Diagrama del funcionamiento del modo emulado de dispositivo apuntador

Este modo es desconectable y permite el uso del interfaz multitáctil sin la manipulación del puntero del sistema.

2.2. Modo Libre de Emulación En este modo, el software, almacena los datos de cada uno de los puntos en una zona de memoria compartida, la cual puede ser consultada por cualquier aplicación que desee obtener esta información del sistema. En este caso, la aplicación interesada deberá efectuar, por sí misma, el calculo de los parámetros que desee ya que la única información proporcionada son los puntos de contacto mapeados sobre la pantalla. La aplicación interesada, por otra parte, deberá respetar el protocolo establecido de acceso a los datos compartidos.

En la siguiente figura se puede observar la diferencia de comunicación respecto el modo anterior. En este caso, el sistema operativo proporciona una zona de memoria común a la aplicación controladora y la aplicación multitáctil dónde se almacenan los datos de los puntos de contacto.

Figura 5: Diagrama del funcionamiento del modo libre de emulación

Este modo se mantiene siempre activo ya que no manipula ningún recurso que afecte al funcionamiento habitual del sistema operativo.

3. Componentes del sistema El sistema funciona a través del uso combinado de varios recursos, lo cuales tienen una tarea específica dentro del sistema. El software controlador se encarga de procesar la

Page 11: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

11

información proporcionada por todos los componentes hardware para conseguir la funcionalidad multitáctil deseada.

3.1. Webcam El software controlador obtiene los puntos de contacto mediante el procesado de imágenes obtenidas desde una webcam USB (o cámara compatible), a través del driver proporcionado por el fabricante del hardware. El acceso a este recurso se realiza de forma estándar utilizando la API ‘Video for Windows’.

La base sobre la cual se ha diseñado el sistema de detección de puntos es la posibilidad de generar y detectar luz infrarroja localizándola sobre una superficie y, por lo tanto, la webcam debe filtrar toda radiación lumínica excepto la que ocupa el rango de frecuencias correspondientes a la luz infrarroja.

La calidad general de este elemento, y en concreto su precisión y resolución, determina, en gran medida, la precisión con la que el sistema será capaz de trabajar. Por lo tanto, es un elemento cuya calidad afecta muy directamente al resultado final.

3.2. Superficie Multitáctil La webcam monitoriza constantemente esta superficie y el software controlador se encarga de hallar cualquier luz, correspondiente al rango los infrarrojos, que aparezca en ella. Esta superficie debe reaccionar al tacto emitiendo luz infrarroja en el punto concreto de contacto y en la dirección de la webcam. Generalmente la parte que se encuentre en observación será la contraria a la parte táctil, así que es necesario que la superficie no sea totalmente opaca y que permita el paso de la luz infrarroja a través de ella. Si se desean proyectar imágenes sobre esta superficie Será necesario intercalar otra (cristal glaseado o una lámina de retroproyección) que cumpla los requisitos del paso de luz infrarroja especificados anteriormente y que, además, permita la retroproyección de imágenes.

En la siguiente figura se puede observar la disposición habitual de los periféricos si se desean retroproyectar imágenes sobre la superficie multitáctil.

Figura 6: Esquema de la disposición habitual de dispositivos para el uso del sistema

También es posible utilizar el sistema como dispositivo apuntador remoto para lo que es necesario disponer de alguna fuente emisora de luz infrarroja, como láser de esta longitud de onda. De este modo se puede proyectar un haz de luz infrarroja a cierta distancia sin necesidad de contacto con la superficie.

En este caso la superficie sensible será cualquier material que refleje el haz láser y que, si se desean proyectar imágenes, permita el uso de un proyector sobre ella. En esta modalidad

Page 12: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

12

de uso la webcam se puede situar delante de la superficie y, por lo tanto, ésta puede ser totalmente opaca.

En la figura 7 es posible ver la disposición de los componentes si se desea utilizar el sistema de este modo.

Figura 7: Esquema de dispositivos para el uso alternativo del sistema

3.3. Proyector En el caso que se deseen visualizar imágenes sobre la superficie táctil, el uso de un proyector se hace prácticamente indispensable. Se debe utilizar un proyector estándar y es necesario tener la certeza de que éste incorpora un filtro de luz infrarroja en su lente.

Figura 8: Esquema del comportamiento de la luz, emitida con un proyector, equipado con filtro Tapa-Infrarrojos

Si se emplea la modalidad de apuntador remoto, se puede utilizar cualquier tipo de pantalla convencional que no emita radiación infrarroja en su superficie.

3.4. Software Controlador

El software controlador es el encargado de procesar las imágenes obtenidas por la webcam y de realizar los cálculos necesarios para obtener los puntos de contacto sobre la superficie. Mediante la configuración de este software es posible, tanto la adaptación de la calidad del hardware utilizado a los requisitos del sistema, como la selección de los modos funcionamiento y su comportamiento. Principalmente permite la configuración de:

Page 13: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

13

• Fuente de imágenes: Es posible seleccionar la fuente de la cual proceden las imágenes a tratar así como la configuración concreta proporcionada por el driver del fabricante.

• Previsualización: Es posible activar o desactivar la visualización en tiempo real de las imágenes procedentes de la fuente y de los puntos que el software va obteniendo.

• Tratamiento de la imagen: Es posible configurar muchos de los parámetros que afectan a la precisión con la que se realiza el tratamiento de las imágenes procedente de la fuente. También es posible limitar de la cantidad de puntos máximos que se desean tratar. Mediante la selección meticulosa de estos parámetros es posible obtener el máximo rendimiento en cámaras tanto de alta como baja calidad así como limitar la influencia de la luz ambiental sobre el sistema.

• Emulación del mouse: Es posible activar o desactivar el modo emulado de dispositivo apuntador. El modo libre de emulación se encuentra siempre activo, motivo por el cual es posible utilizar ambos modos de forma simultánea en caso que sea necesario

• Calibrado del sistema: Para la asociación de los puntos de la superficie con los puntos correspondientes a la pantalla, el sistema necesita conocer la situación de cuatro puntos, tanto en la pantalla como en la superficie. El calibrado se puede realizar tantas veces como sea necesario y es posible consultar los puntos obtenidos para una máxima precisión.

• Configuración del comportamiento del modo emulado de mouse: Para ajustar el comportamiento de la emulación a las necesidades de cada usuario, es posible seleccionar la activación / desactivación del posicionamiento del cursor y determinar la pulsación de qué botón es emulada, en función de la cantidad de puntos de contacto simultáneos que se encuentran activos sobre la superficie.

• Almacenaje de configuraciones: La aplicación controladora permite el almacenaje de la configuración existente en archivos y su recuperación posterior. De este modo se permite la asociación de sistemas a configuraciones concretas sin la necesidad de configurar completamente la aplicación controladora a cada momento.

• Configuración de parámetros de arranque: Es posible configurar el comportamiento de la aplicación en el momento de su arranque. Se permite el inicio de la captura automático así como la ocultación la ventana principal al iniciarla, con el fin de automatizar el uso del dispositivo en el arranque del ordenador. También es posible especificar la recuperación de un fichero de configuración concreto antes de iniciar la captura automática. Los parámetros de arranque no son almacenados en el propio fichero de configuración.

4. Condiciones de Uso Para el uso del sistema es imprescindible eliminar, en la medida de lo posible, cualquier fuente de luz infrarroja. La iluminación procedente del Sol, fuego o lámparas basadas en incandescencia, generan una gran cantidad de radiación infrarroja por lo que es conveniente utilizar el sistema lejos de su alcance. Un exceso de esta radiación sobre la superficie multitáctil puede provocar un funcionamiento deficiente.

Page 14: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

14

Es recomendable hacer uso del sistema en habitaciones interiores con una iluminación tenue o nula, para favorecer la proyección de imágenes y no interferir en la captura de los puntos. En caso que la iluminación ambiental sea necesaria, se recomienda el uso de fuentes de luz basadas en lámparas fluorescentes o L.E.D.’s. ya que la radiación infrarroja que emiten de estas fuentes de luz es muy reducida.

Page 15: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

15

Diseño Los objetivos planteados en la parte inicial nos llevan a buscar soluciones de bajo coste y de una relativa facilidad de implementación.

1. WebCam Como dispositivo sensible a la luz, podemos recurrir a las populares webcams. Estos dispositivos nos proporcionan una forma económica de registrar los cambios de luz que se producen en nuestro entorno y transformarlos en imágenes1. Estas imágenes, generalmente, se envían a través de un interfaz USB a nuestro ordenador para que éste las procese.

En el mercado existe un amplio numero de fabricantes, calidades y precios así que, en principio, es una buena opción como dispositivo sensible a la luz.

2. Superficie Sensible al Tacto El primero de los problemas que se nos plantean es obtener una superficie la cual reaccione, de alguna manera, al contacto de un dedo. Esta reacción debe poder ser captada por la webcam para que podamos procesar su información. Además, esta reacción debe poder ser captada en condiciones de luz ambiental muy baja.

Una de las soluciones y, probablemente, la más económica se basa en aprovechar un fenómeno físico conocido como “reflexión total interna”2 el cual permite iluminar el interior de un material transparente sin que la luz salga al exterior por toda su superficie.

De forma general, y gracias a las propiedades físicas que permiten la existencia de este fenómeno, es posible frustrar esta reflexión total interna en un punto concreto de la superficie. La variación del medio con el que está en contacto, modifica los parámetros que mantienen activa la reflexión total interna, y la luz, contenida dentro del material, sale al exterior e ilumina el objeto que ha provocado la variación.

De forma más concreta, en el caso de nuestra superficie multitáctil, el entorno que le rodea es el aire. Este entorno, en el momento que posicionamos un dedo sobre la superficie, es sustituido por el dedo en cuestión y ocasiona que la luz contenida en el interior de la superficie multitáctil salga al exterior y lo ilumine. Si posicionamos más de un dedo sobre la superficie, este fenómeno se repite en cada uno de los puntos de contacto.

Aprovechando esta característica podemos obtener una superficie que reacciona al contacto con un dedo y que, además, permite el seguimiento de esta reacción por algún dispositivo sensible a la luz, como la webcam.

Figura 9: Reflexión Total Interna y Reflexión total interna frustrada

1 Anexo 1: Sensores de Imagen 2 Anexo 8: Reflexión total Interna

Page 16: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

16

2.1. Adaptación de la Superficie Sensible al Tacto a la Retroproyección La superficie sensible al tacto debe ser lo más transparente posible, para permitir la reflexión total interna y para que pueda ser traspasada cuando ésta se vea frustrada. Por esta razón la propia superficie táctil no puede ser utilizada como superficie de proyección. Si la utilizáramos de este modo obtendríamos un resultado poco satisfactorio como se puede observar en la figura 10.

Figura 10: Esquema del resultado de la retroproyección sobre una superficie transparente

Para conseguir retroproyectar imágenes, necesitamos una superficie que se pueda anteponer a la superficie multitáctil, y que permita el paso de luz para poder captar la frustración de la reflexión total interna.

Básicamente necesitamos una superficie translúcida. Estas características coinciden con la de un cristal glaseado convencional. Éste nos proporciona una superficie lo suficientemente translúcida como para permitir la proyección de imágenes sobre él y lo suficientemente transparente como para dejar pasar luz a través. Además, su coste no es demasiado elevado.

Una vez añadido el cristal glaseado, obtendremos un resultado más satisfactorio, como muestra la figura 11.

Figura 11: Esquema del resultado de una retroproyección sobre una superficie translúcida

2.2. Adaptación del Sistema de Detección de Puntos a la Retroproyección Se ha llegado a un punto en que se plantea un nuevo problema: El proyector emite luz de diferentes colores para proyectar imágenes sobre el cristal glaseado y, por lo tanto, no es posible utilizar luz normal para crear la reflexión total interna. Si se proyectan imágenes

Page 17: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

17

sobre la superficie multitáctil no existe forma de diferenciar entre la luz procedente de ella y la procedente del proyector.

ara solucionar este problema se recurre, una vez mas, a las propiedades la luz. Ésta es un fenómeno físico que se transmite a través de ondas electromagnéticas de longitudes de onda comprendidas dentro de un amplio rango3. El ser humano sólo puede “ver” algunas de ellas, por lo tanto, las imágenes emitidas por un proyector se componen de luz que está dentro del rango de longitudes de onda a las cuales somos sensibles.

Fuera de este rango existen otros tipos de luz que posibles de generar y captar mediante dispositivos electrónicos. Uno de estos tipos es la luz infrarroja4.

Los proyectores estándar disponen de filtros en sus lentes que eliminan la radiación infrarroja procedente de las bombillas de incandescencia que utilizan. Por esta razón, si iluminamos el interior de la superficie multitáctil con este tipo de luz, será posible diferenciar la luz que procede del proyector y la luz que se origina tras un contacto en la superficie. En el mercado existen diferentes fuentes emisoras de luz infrarroja pero la más económica y versátiles el diodo LED. Ampliamente difundido en los aparatos electrónicos, debido a su reducido tamaño y consumo, tiene un coste muy bajo y es muy fácil de adquirir en cualquier tienda de componentes.

Figura 12: Diodos L.E.D.

2.3. Captura de la Luz Infrarroja Las webcams estándar también disponen de este filtro, ya que los sensores que utilizan para captar la luz son sensibles a la luz infrarroja y, para evitar que se saturen, ésta tiende a ser filtrada. Generalmente no es necesario captar este tipo de luz para obtener imágenes normales pero, en este caso, resultara útil. Si eliminamos este filtro en la webcam y lo sustituimos por un filtro que solo deje pasar la luz infrarroja, obtendremos un sensor que solamente registrará los cambios de luz infrarroja5 que se originen en la superficie multitáctil.

3 Anexo 3: Espectro Lumínico 4 Anexo 4: La radiación Infrarroja 5 Anexo 5: Filtro Pasa-infrarrojos

Page 18: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

18

2.3.1. Filtro Pasa- infrarrojos Es posible adquirir un filtro de este tipo en tiendas especializadas de fotografía o incluso es posible adquirir directamente una webcam especializada pero, obviamente, se trata de una solución que requiere una inversión económica extra.

Siendo fieles a los objetivos, se puede fabricar un filtro de una forma mucho más económica: Mediante unas laminas de carrete de color, velado. Este material, tras ser velado, evita el paso de toda la luz que ocupa el espectro visible (aparentemente es opaco) pero deja paso libre a la luz infrarroja6.

3. Visión Global del Hardware En estos momentos se dispone de los elementos necesarios para localizar los cambios de luz que se originan sobre una superficie cuando se produce un contacto. Sobre ésta podemos proyectar imágenes, con un proyector estándar, sin que este hecho afecte a la capacidad de la localización del sensor. Es decir, si se obtiene una imagen procedente de la webcam, es posible procesarla y obtener, en caso de existir, qué puntos se están tocando en la otra cara de la superficie.

Figura 13: Esquema de comportamiento esperado del sistema de filtros

4. Software Para obtener los puntos de contacto es necesario realizar un proceso de tratamiento de la imagen. Para esto es necesario un software capaz de hacerlo en el mínimo tiempo posible.

La intención es permitir el uso del sistema a la máxima cantidad de gente posible, así que se ha optado por utilizar el sistema operativo Windows ya que nos proporciona las herramientas necesarias para el uso de webcams. En el mercado hay disponibles infinidad de dispositivos acompañados de sus correspondientes drivers compatibles con este sistema operativo. De sencilla instalación y utilización, estos drivers, son la característica que permite independizar el software que se va a desarrollar del hardware utilizado. De esta

6 Anexo 12: Sensibilidad a la Luz del Carrete Fotográfico

Page 19: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

19

forma se puede sustituir la webcam en cualquier momento sin la necesidad del modificar el software controlador.

4.1. Entorno de Programación Es necesario el procesamiento de imágenes constante para proporcionar el servicio que deseamos y es necesario que este proceso se repita cuantas más veces por segundo mejor. Este hecho obliga utilizar un lenguaje de programación muy rápido y que permita la comunicación con la webcam sin limitaciones. También es necesario acceder a algunas funciones del sistema operativo ya que uno de los objetivos es controlar el puntero del ratón. Este hecho obliga a programar a un nivel lo más cercano posible al sistema operativo.

Pero por otra parte, nuestra aplicación requiere una facilidad de uso notable y se hace imprescindible el uso del entorno basado en ventanas y controles interactivos que proporcionan ciertos lenguajes de programación de alto nivel, como C++.

Dentro del paquete de Microsoft Visual Studio se incluye el Visual C++: Una herramienta que nos brinda la posibilidad de programar en C y C++ al mas bajo nivel, beneficiándonos de la máxima velocidad de proceso que esta característica proporciona. A la vez, incluye librerías para crear entornos visuales agradables sin demasiado esfuerzo.

Por estas razones por las que el Visual C++ resulta la mejor opción para desarrollar el software de la aplicación controladora.

4.2. Obtención de Imágenes de la Webcam Para obtener imágenes de una webcam USB, Windows proporciona ‘Video for Windows’. Se trata de una API, de uso estándar, que permite la comunicación, a alto nivel, con dispositivos capturadores de vídeo compatibles, tales como cámaras, webcams o capturadoras de vídeo. A través de ella es posible configurar y controlar las funciones de estos dispositivos desde un entorno de programación como Visual C++. Este conjunto de librerías permite capturar imágenes de una webcam y acceder a la información, a bajo nivel, correspondiente a cada fotograma desde la aplicación controladora.

La librería ‘Vfw32.lib’, incluida en Visual C++, permite configurar las propiedades de la webcam, seleccionar la fuente de vídeo de la cual se quieren obtener imágenes y, por supuesto, iniciar la captura de imágenes para su procesado. Cada vez que el driver tiene disponible una nueva imagen, se genera una llamada a una función, previamente especificada, en la cual podremos procesar la imagen para obtener los puntos que buscamos.

En la figura 14 se ilustra la diversificación de periféricos de los que se puede tener acceso mediante el uso del API ‘Video For Windows’.

Page 20: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

20

Figura 14: Esquema de las posibilidades de adquisición de imágenes proporcionada por ‘Video For Windows’

4.3. Procesado de las Imágenes Dentro del software libre, disponemos de algunas librerías tales como TIP (Tools for Image Processing: http://www.cs.rug.nl/~cosmin/tip/ ) o OpenCV (Open Source Computer Vision: http://opencv.willowgarage.com/wiki/ ), que nos proporcionan herramientas para el tratamiento complejo de imágenes. Estas herramientas, en principio, nos facilitarían el desarrollo de software y nos proporcionarían unos resultados satisfactorios para la tarea de ubicar las zonas iluminadas en una imagen. Pero si analizamos a fondo el problema, la necesidad del uso de librerías de tratamiento complejo de imágenes no se hace del todo patente.

La cámara proporciona una imagen como la mostrada en la figura 15, dónde una serie de áreas, de un tamaño considerable (unas cuantas decenas de píxeles o más), adquieren una luminosidad mucho mayor que el fondo donde se encuentran. De esa masa de puntos, solamente necesitamos conocer su centro, lugar al que corresponde el punto dónde realmente deseamos ejercer el contacto.

Figura 15: Imagen de una posible captura de la cámara de infrarrojos sobre la superficies multitáctil

Unas librerías de tratamiento complejo de imágenes recopilarán, a la vez, una serie de información destinada a la obtención de los parámetros relativos al objeto, tales como su

Page 21: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

21

forma, orientación, etc.. Esto requiere ejecución de cálculos que, al fin y al cabo, resultan totalmente superfluos para la tarea que nos ocupa. Por otra parte, si las librerías permitieran eliminar el calculo que supone esta información extra, no sería del todo efectivo utilizar una librería compleja para utilizar un mínimo de sus funciones.

Dando por supuesto que el uso de unas librerías genéricas también proporcionarían los resultados deseados, se ha decidido implementar nuestro propio algoritmo encargado de diferenciar y clasificar las zonas iluminadas de la imagen con el fin de poder liberar a la CPU de cálculos y procesos innecesarios dando lugar a un simple algoritmo de etiquetado de píxeles.

Recorriendo la imagen de forma secuencial, se clasifican en áreas comunes aquellos píxeles iluminados que guarden una relación de contigüidad. Posteriormente se procede a calcular su centro buscando el valor medio de sus coordenadas horizontal y vertical.

4.3.1. Obtención del Threshold y Segmentación de la Imagen Antes de buscar las áreas iluminadas se debe decidir a partir de que intensidad de considera iluminado un píxel. Este nivel, conocido como threshold, debe ser calculado antes del etiquetado y requiere un conocimiento general de la composición de la imagen. Esta información se puede obtener fácilmente generando un histograma de la misma7. Éste permitirá conocer el nivel de luminosidad que compone el fondo de la imagen, y permitirá fijar el threshold de forma dinámica, adaptándolo a las condiciones de luminosidad del entorno y a la precisión de la webcam empleada.

Para fijar el valor del threshold se puede proceder de la siguiente manera: Conociendo el nivel más oscuro, el nivel más abundante y la estructura básica de la imagen (áreas claras sobre un fondo oscuro), podremos calcular la desviación existente entre el nivel del fondo (o más abundante) y ese nivel más oscuro registrado.

Esta desviación proporciona un rango parcial de niveles utilizados para representar el fondo de la imagen. Si ese interpreta que, a partir del nivel más abundante hasta el rango de niveles inferiores fijado por la desviación, encontramos niveles pertenecientes al fondo, es lógico suponer que en niveles superiores esta desviación se mantiene. Por lo menos se obtiene una referencia sobre el rango de niveles de luminosidad con los que se representa el total del fondo de la imagen. Mediante la aplicación de un factor de tolerancia a esta desviación, es posible obtener un rango completo de intensidades en el que se considera que se encuentran todos los colores del fondo. Todos aquellos puntos con un nivel de luminosidad superior a este rango, pertenecerán a las zonas iluminadas de la imagen. Éste nivel, marcado por el límite superior, será el threshold que emplearemos.

7 Anexo 6: Histograma

Page 22: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

22

Figura 16: Esquema de obtención del threshold

Éste método de cálculo del threshold difiere de los métodos habituales. Este hecho viene marcado por la ligera diferencia entre el histograma obtenido por una imagen como la de la figura 15 y la de una imagen típica de procesado de imágenes.

Habitualmente, el histograma presenta dos picos. El mayor corresponde al fondo y el menor a los objetos que deseamos segmentar. El cálculo de Threshold se basa en hallar el valle ocasionado entre ambos picos y, en este caso, el histograma obtenido solo consta de uno. Por lo tanto, el sistema convencional no es aplicable.

Una vez obtenido se procede a binarizar la imagen, marcando cada píxel según su pertenencia al fondo o no, y a etiquetar los píxeles para el cálculo de su punto central.

Figura 17: Imagen binarizada mediante a partir del Threshold

Page 23: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

23

4.3.2. Interpretación de Puntos En estos momentos se dispone de las áreas iluminadas y de sus correspondientes centros, la cual cosa pone en disposición de identificar en qué puntos de la superficie captada por la webcam se esta produciendo algún contacto. Pero estos puntos proporcionan unas coordenadas que pertenecen a una imagen captada y que, por lo tanto, son relativos a la posición y orientación del sensor. Si se desea relacionarlos con puntos reales sobre una superficie, como la pantalla, es necesario disponer de más información para establecer esta relación.

Figura 18: Relación entre puntos de webcam y puntos de pantalla

A. Calibrado En un principio la superficie multitáctil se debe asociar a la pantalla del ordenador sobre el que trabajamos. El problema radica en relacionar cada una de las coordenadas obtenidas al procesar la imagen obtenida por la webcam, con las coordenadas correspondientes en la pantalla del ordenador. Lógicamente, las coordenadas de la webcam correspondientes a cada punto de contacto, no tienen por que coincidir con las coordenadas de la imagen de la webcam. Estas últimas dependen de la resolución con la que hagamos trabajar a la webcam, de la orientación y distancia de la misma respecto a la superficie multitáctil e incluso, de si la cámara se encuentra por detrás o por delante de la superficie. Por estas razones es necesario establecer una correspondencia entre ambas coordenadas.

Una forma de establecer esta relación, se basa en obtener las coordenadas en la imagen de cuatro puntos preestablecidos de la pantalla. Los puntos más lógicos de referencia son las cuatro esquinas (No exactamente las mismas esquinas sino un poco mas hacia el interior). Estos cuatro puntos, invariables en la pantalla, formarán, en la imagen de la webcam, un tetraedro. Con esta información se puede estimar las coordenadas en la pantalla sabiendo su posición dentro del tetraedro de la imagen obtenida por la webcam.

Para obtener las coordenadas del tetraedro, se pedirá al usuario que, antes de iniciar la captura, pulse sobre cada esquina del rectángulo de la pantalla. Cada esquina será indicada por el cursor del sistema.

B. Cálculo de Parámetros Multitáctiles Ya se dispone de un sistema para mapear los puntos sobre la pantalla. Ahora se debe decidir sobre cual de ellos vamos a centrar la acción. Si existe más de un punto de contacto, la acción debería centrarse sobre un único punto ya que el sistema operativo esta pensado para actuar de esta forma. Es posible utilizar cualquiera de ellos pero, lo más lógico, es actuar sobre el centro del conjunto ya que, si realizamos acciones de escalado o rotación, su centro no varía. Si éste lo hace indica, a la vez, un movimiento de translación.

Page 24: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

24

Un objetivo era dar la posibilidad de realizar escalados y rotaciones de forma intuitiva así que se deben proporcionar a la aplicación multitáctil valores que indiquen si alguna de estas acciones se están realizando y en qué grado.

Para ello podemos calcular la distancia media de estos puntos respecto al centro, lo cual proporcionará una referencia escalar del grado de dispersión de los puntos y ésta podrá ser utilizada por la aplicación como referencia de escalado.

Para conocer la rotación aplicada en un punto, se puede calcular el ángulo existente entre el vector formado por la vertical, y el vector formado por el centro y cada uno de los puntos. Realizando la media entre los ángulos se obtiene otra referencia escalar que indicará si se está ejerciendo alguna acción de rotación.

4.4. Comunicación entre Aplicación Controladora y Aplicación Multitáctil Se han especificado dos modos de funcionamiento independientes. Uno de ellos permite utilizar el sistema como si de un dispositivo apuntador estándar se tratara. El otro proporciona, a la aplicación multimedia, la posibilidad de obtener directamente los puntos de contacto y de establecer sus propias reglas de comportamiento. Ambos modos requieren una comunicación entre la aplicación controladora y la aplicación multitáctil.

4.4.1. Modo Emulación de Dispositivo Apuntador Para el modo de emulación de dispositivo apuntador, es necesario controlar el puntero del sistema operativo. Desplazar el cursor y la simulación de pulsaciones de los botones, son acciones que se deben controlar desde la aplicación controladora. Para esta tarea es posible utilizar una función, incluida dentro de la librería ‘user32.lib’, llamada ‘mouse_event’.

Esta función proporciona la posibilidad de manipular el cursor del ratón y de simular pulsaciones de los botones. La información de las pulsaciones de los botones y del movimiento del cursor se envía a las aplicaciones correspondientes a través de mensajes preestablecidos por el sistema que, a su vez, son procesados e interpretados por cada aplicación según sus propias necesidades.

Esta técnica es el sistema básico con el que cuenta el sistema operativo Windows para informar a las aplicaciones de que ha ocurrido algún evento, no solo relacionado con el ratón, sino también con el teclado u otros dispositivos. Si se emulan estos eventos, mediante la función mencionada anteriormente, las aplicaciones reaccionarán de la misma forma que lo harían si el evento lo enviara un ratón estándar. De este modo conseguiremos emular el comportamiento de un ratón estándar.

La función ‘mouse_event’ permite decidir la posición dónde queremos situar el cursor y la acción que se desea realizar en esta posición. Esta acción está relacionada con la pulsación de botones y manipulación del botón rotatorio de los que disponen los ratones convencionales.

Además de toda esta información es necesario la posibilidad de añadir la información atinente a los parámetros de escalado y rotación calculados en cada momento. Por ello se requiere un medio de comunicación adicional.

En la función ‘mouse_event’ se incluye un parámetro, vacío por regla general, que proporciona un espacio de 32 bits donde poder incluir algún tipo de valor extra al evento y que se puede utilizar para codificar los parámetros de rotación y escalado. Se pueden utilizar 16 bits para codificar el parámetro de escalado y los otros 16 bits para codificar el parámetro de rotación.

Page 25: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

25

Con este sistema, la aplicación que desee hacer uso de las posibilidades multitáctiles podrá acceder a la información que necesite de forma sencilla y rápida y mantendremos la compatibilidad con las aplicaciones ya existentes basadas en dispositivos apuntadores estándar. En la siguiente figura se ilustra la independencia respecto del origen con que la aplicación multitáctil recibe mensajes procedentes de ambos dispositivos.

Figura 19: Esquema del paso de mensajes en modo de emulación de dispositivo apuntador

4.4.2. Modo Libre de Emulación En este modo no se tiene la posibilidad de informar a la aplicación multitáctil de que algún evento ha ocurrido. Principalmente porque si se utiliza la técnica anterior, solo dispondremos de 32 bits para hacerlo y no se podría codificar las posiciones de todos los puntos en tan poco espacio.

En caso que se hiciera, se tendría que optar por algún método basado en el envío de coordenadas en serie que eliminaría la posibilidad de mantener la compatibilidad con las aplicaciones estándar y la interacción con el sistema operativo. Por otra parte, se debe permitir la desconexión del modo emulado manteniendo intactas las posibilidades de adquisición de los puntos de contacto. Todas estas razones llevan a la necesidad de buscar un método paralelo para enviar los datos, a las aplicaciones que lo requieran, y que no interfiera con el funcionamiento de un ratón convencional.

Una opción es utilizar zonas de memoria compartida para que las aplicaciones consulten la información disponible en tiempo real y que, a su vez, la utilicen en función de sus necesidades sin que el sistema operativo se vea afectado. Por otra parte, este sistema permite la coexistencia de aplicaciones basadas en el mismo interfaz, haciendo uso de uno o ambos modos de funcionamiento de forma simultanea.

Para ello es necesario definir una zona de memoria compartida a la que puedan acceder todas las aplicaciones interesadas. Para facilitar su identificación se puede hacer uso de los ficheros mapeados en memoria, funcionalidad que proporciona la librería ‘Kernel32.lib’ también incluida en el visual C++. Estos ficheros proporcionan una zona común de datos a la que las aplicaciones pueden acceder. Windows también brinda la posibilidad de darles un identificador que permita a las aplicaciones referirse a ellas de una forma única.

El hecho de compartir memoria a la que pueden acceder diferentes aplicaciones plantea el problema de acceso simultáneo a datos compartidos. Esto obliga a establecer unas reglas de acceso basadas en la exclusión mutua entre aplicaciones a la hora de leer o de escribir.

Page 26: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

26

Por ello también es necesario la creación de un sistema que permita sincronizar el acceso a esta zona de memoria compartida y que, además, sea común a todas las aplicaciones que hacen uso de ella. Una buena opción es la utilización de objetos ‘mutex’ los cuales permiten la creación de secciones de código de exclusión mutua dónde se realizan accesos a recursos que solo permiten su utilización a un solo proceso de forma simultánea. Su uso corresponde al concepto teórico de los semáforos con la particularidad de que la restricción de acceso se reduce siempre a un solo proceso.

Esta funcionalidad también la proporciona la librería ‘Kernel32.lib’ y permite, al igual que en el caso de los ficheros mapeados en memoria, asignar un indentificador único para que las aplicaciones multitáctiles del sistema puedan solicitar el acceso en cualquier momento.

Figura 20: Esquema del acceso a memoria compartida en el modo libre de emulación de dispositivo apuntador

4.5. Estructuración de la Aplicación de Control Para favorecer la posibilidad de futuras mejoras, la aplicación de control debe estar compuesta por módulos, relativamente independientes, que se encarguen de realizar cada una de las tareas descritas con anterioridad. Al mismo tiempo el trabajo debe estar repartido en tareas básicas y la información debe seguir un proceso de filtrado y de transformación. Esta transformación de los datos irá desde su estado de imagen, obtenida por la webcam o cualquiera que sea su fuente, hasta su estado final de conjunto de puntos mapeados en pantalla. Este proceso de transformación de la información beneficia una posible adaptación a diferentes sistemas operativos y permite ofrecer soluciones específicas adaptadas a cada entorno en función de sus posibilidades de programación. Por otra parte permite conservar aquellos módulos que no estén atados a particularidades de cada sistema operativo.

La figura 21 proporciona una visión global de la composición de la aplicación de control.

Page 27: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

27

Figura 21: Módulos que componen la aplicación de control

4.5.1. Módulo Principal Inicialmente se debe contar con un módulo cuya tarea sea la de proporcionar acceso a los recursos que vayan a ser utilizados, tales como la webcam, la memoria compartida y sistemas de sincronización. Este módulo debe encargarse, también, de proporcionar un entorno de configuración lo más detallado y genérico posible sin que esto suponga un nivel de complejidad excesiva para el usuario. Este hecho obliga al uso de un entorno gráfico basado en diálogos y controles estándar, fáciles de interpretar y de manipular. Es, por tanto, el módulo más específico de todos ya que tiene que crear el proceso principal, configurar el entorno gráfico y proporcionar acceso a todos los recursos que se utilizan. Este trabajo suele estar sujeto al uso de drivers y protocolos que habitualmente carecen de un estándar entre sistemas operativos.

Una vez el módulo haya recopilado la información necesaria para iniciar la captura desde la fuente, éste se encargará de proporcionar, al módulo de procesado de imágenes, la imagen a tratar junto con la configuración establecida.

4.5.2. Módulo de Procesado de Imágenes

Visto como un solo módulo desde el módulo principal, en realidad, es conveniente que conste de dos módulos independientes. Uno que proporcione la información bruta que se extrae de la imagen, y otro que la refine y la corrija, en la medida de lo posible, siempre y cuando sea necesario.

A. Módulo de Captura de Puntos Encargado de segmentar la imagen a tratar, interpretando su formato y binarizándola usando el threshold obtenido tras el análisis del histograma. Una vez ha identificado las áreas de píxeles iluminadas y ha obtenido su centro y masa, debe enviar la información a otro módulo encargado de interpretarla y de realizar las transformaciones necesarias para obtener los puntos finales.

Este módulo únicamente esta sujeto a las particularidades del formato de cada webcam y no requeriría mas que de ligeras adaptaciones para su uso en otros sistemas operativos.

B. Módulo de Interpretación de Puntos

Page 28: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

28

Es el encargado de filtrar e interpretar la información obtenida por el módulo de captura. Debe eliminar las posibles imprecisiones del sensor, como falsos puntos de contacto provocados por ruido en la imagen o desdoblamiento de los mismos.

El ruido estará caracterizado por su baja masa en píxeles y el desdoblamiento de puntos, provocados por una presión insuficiente sobre la superficie de contacto, podrá ser identificado por la existencia de cúmulos de pequeñas áreas iluminadas.

Una vez se dispone de una información fiable sobre los puntos de contacto, éstos se deben mapear, según la calibración, y se debe actuar en función del modo de funcionamiento activo. Esto significa manipular el puntero del sistema y/o refrescar la información sobre los puntos de contacto contenidos en la zona de memoria compartida. Este módulo es el mas indicado para gestionar los modos de funcionamiento ya que tiene acceso a todas las estructuras de datos internas del módulo de captura de puntos para proporcionar la información final, y permite la liberación de cálculos y procesos superfluos asociados a estos modos de funcionamiento. Además, permite independizar el funcionamiento del módulo principal permitiendo el uso de los módulos de captura e interpretación de puntos como librerías, si fuera necesario.

Por contrapartida, esta mínima gestión de los recursos obligaría a efectuar adaptaciones un poco más severas, relacionadas con el acceso a la memoria compartida o la manipulación del puntero del sistema, aunque no requiriera la adaptación de su funcionamiento básico.

Page 29: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

29

Desarrollo Siguiendo el diseño expuesto en paginas anteriores, tenemos que llevar a cabo el desarrollo del hardware y el software que va a componer nuestro sistema.

1. Webcam Lo primero que debemos comenzar a desarrollar es el dispositivo sensible a la luz infrarroja. Si optamos por la compra de una webcam específica, no necesitaremos desarrollarlo pero, en nuestro caso, hemos decidido optar por el bajo coste. Esto implica realizar una pequeña modificación a una webcam estándar. Podemos utilizar cualquiera de las disponibles en el mercado pero tenemos que tener en cuenta algunos aspectos que pueden condicionar el rendimiento del sistema.

Una característica que tenemos que tener en cuenta es la resolución máxima a la que es capaz de trabajar la cámara. Cuanta más resolución y profundidad de color tenga, más nítidas serán las imágenes que obtendremos y, por lo tanto, más precisos serán los puntos mapeados sobre la pantalla.

Otra característica es la cantidad de imágenes por segundo que es capaz de tomar. Este parámetro limitará la sensibilidad del sistema a los movimientos rápidos.

Es cierto que cuanto mayores sean estos parámetros, mejor rendimiento obtendremos, pero hay que tener en cuenta que no siempre es necesario la máxima precisión posible. Ésta hace aumentar la cantidad de recursos consumidos por la aplicación controladora y, por lo tanto, el rendimiento general del ordenador, mientras la aplicación controladora está esta funcionando. Estos parámetros también afectaran al precio de la cámara así que, es conveniente equilibrarlos frente a nuestras necesidades reales.

Por regla general, una resolución de 640x480 píxeles y 256 niveles de luminosidad es suficiente y unos 25 fotogramas por segundo proporcionarían una capacidad de reacción de 0,04 segundos al sistema.

La mayoría de webcams actuales son perfectamente capaces de asumir estas características e incluso superarlas sin que ello implique un gran desembolso de dinero.

La webcam utilizada por nosotros es la NGS ShowCamPlus, la cual es capaz de llegar a una resolución máxima del 640x480 píxeles con 256 niveles de luminosidad y nos proporciona entre 20 y 25 fotogramas por segundo.

Figura 22: Webcam NGS-ShowCamPlus

La mayoría de webcams modernas superan estas características. A pesar de esto y para demostrar que no es necesario utilizar componentes de gran calidad, nos mantendremos fieles a la filosofía inicial del bajo coste, y utilizaremos un dispositivo de una calidad inferior a la media.

Page 30: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

30

1.1. Adaptación a la Luz Infrarroja Para la adaptación de la webcam como sensor de luz infrarroja, se tiene que retirar el filtro que evita que la luz infrarroja llegue al sensor CCD o CMOS integrado en la circuitería. Para ello, tendremos que desmontar la carcasa de la webcam.

Figura 23: webcam sin carcasa

Normalmente, el filtro se encuentra entre el sensor CCD y la lente encargada de enfocar la imagen así que, una vez desmontada la carcasa, procedemos a desenroscar la lente y conseguiremos acceder al filtro.

Figura 24: Despiece de la webcam

Se retira, teniendo cuidado de no dañar la lente, y se sustituye por unas láminas de carrete fotográfico (en color) velado. La cantidad de láminas depende de la sensibilidad que se desee que tenga la cámara a la luz infrarroja. En este caso hemos puesto dos de ellas, suficientes para el objetivo de nuestro proyecto.

Con el filtro sustituido, se vuelve a enroscar la lente y a montar la carcasa.

En estos momentos se dispone de una webcam que solo es capaz de registrar la luz infrarroja y, para comprobar su funcionamiento, se debe iluminar el entorno con alguna fuente que desprenda este tipo de luz.

El sol es una fuente de abundante luz infrarroja así que, si dirigiendo la webcam al exterior, se puede comprobar como los objetos reflejan la luz infrarroja de una forma diferente a la que lo hacen con los colores8.

Si se enfoca la cámara hacia una estancia iluminada con luz artificial se puede observar como, en realidad, se capta muy poca o ninguna iluminación. Si esta luz artificial no proviene de bombillas de incandescencia, es posible lograr una iluminación que no afecte a la superficie multitáctil. Esta característica es muy importante a la hora de decidir en que entorno se va a utilizar el sistema y la radiación infrarroja ambiental supone una gran limitación para ello. De todas formas, si se ilumina en exceso el entorno, el proyector no cumplirá su función de forma satisfactoria así que, es recomendable su uso en estancias con iluminaciones tenues o casi nulas.

8 Anexo 2: Emisión de Radiación Infrarroja

Page 31: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

31

2. Superficie Multitáctil La superficie multitáctil se debe desarrollar desde cero, ya que en el mercado no se dispone de ningún hardware similar y no se tiene ninguna base desde la cual partir. Según nuestro diseño se debe disponer de una superficie transparente, el interior de la cual hay que iluminar con luz infrarroja procedente de un unos diodos LED.

En primer lugar se debe decidir las medidas de esta superficie. No es una característica demasiado importante, en cuanto al coste se refiere, pero sí lo es en cuanto al uso que le vamos a dar.

Si se quiere utilizar la superficie para realizar presentaciones multitudinarias, es necesario una superficie amplia para que se pueda ver desde cierta distancia. Si no es así se necesita algo más pequeño y portable.

En este caso hemos optado por una superficie de 600x400 mm la cual nos proporciona una superficie de trabajo equivalente a una pantalla de 32” en formato 16:9. Para fabricarla se ha recurrido al metacrilato transparente con un grosor de 8 mm, mayor al diámetro de los diodos L.E.D. que se van a emplear para su iluminación. El metacrilato cumple las características de transparencia requerida y, en contacto con el aire, permite la reflexión total interna en su interior9.

2.1. Inducción de la Reflexión Total Interna Se debe inducir el fenómeno de la reflexión total interna mediante unos diodos LED. Para ello, es necesario situar los LED’s en los laterales del metacrilato, enfocándolos hacia su interior. Para mantenerelos en su posición, se ha fabricado un marco de madera en el que se han practicado unos orificios dónde posicionar cada uno de los diodos.

Figura 25: Marco de madera y orificios practicados

9 Anexo 7: Índices de Refracción del Metacrilato y el Aire

Page 32: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

32

Figura 26: Situación de L.E.D. en la superficie multitáctil. Corte transversal

La cantidad de diodos a usar es proporcional a la superficie del metacrilato y cuantos más diodos se usen, más sensible será la superficie al tacto. En contrapartida, cuantos más LED’s se utilicen, mayor será el consumo del dispositivo. En este caso se ha optado por utilizar diodos LED modelo LD271, fabricados por Siemens10.

Éstos proporcionarán una radiación lumínica cuya longitud de onda principal es de 950nm, perteneciente al espectro de la luz infrarroja cercana. Su sección es de 5mm y el ángulo de apertura del cono iluminado es de 50º. Este ángulo determina la cantidad mínima de LED’s a utilizar si se quiere iluminar la totalidad de nuestra superficie. Sí el ángulo es de 50º y la distancia que recorre la luz desde un extremo del metacrilato al otro es de 600mm, implica que la apertura total del cono en el extremo será de de unos 560mm (280mmx2), la cual cosa permitirá iluminar, en teoría, toda la superficie con solo dos LED’s en cada uno de los extremos.

Figura 27: Ángulo de apertura según las especificaciones del DataSheet

10 Anexo 11: Datasheet L.E.D.s

Page 33: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

33

Figura 28: Apertura teórica del cono iluminado por el LED

En realidad, en el perímetro del cono, la luz es muy tenue así que es mejor solapar los conos de luz para obtener una iluminación óptima, por lo que se ha optado por utilizar 4 diodos en cada lateral. En la siguiente figura se puede observar la intensidad del cono iluminado en función del ángulo de apertura.

Figura 29: Intensidad de la luz del L.E.D. en el cono iluminado

Ya que el diámetro del LED es de 5mm de diámetro, se pueden encastar en el interior del marco de madera que hemos fabricado. Éstos se reparten entre los laterales de menor tamaño del marco, equidistando los unos de los otros para que la iluminación sea uniforme.

Page 34: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

34

Figura 30: Situación de los diodos L.E.D. en el marco

Figura 31: Iluminación proporcionada por los L.E.D.s

Una vez situados los LED’s, se deben alimentar para que se iluminen. Según las especificaciones, la corriente máxima que pueden aceptar va en función de la temperatura de funcionamiento. Hasta los 25º de temperatura, la intensidad máxima es de 130mA aunque, lógicamente, no se debe alcanzar para evitar que éstos se calienten. Para limitar la intensidad que circula por el LED, se debe añadir una resistencia en serie que irá en función de la tensión aplicada en los extremos del conjunto11.

Figura 32: Conexionado de las resistencias limitadoras

Para favorecer la adaptación al uso en ordenadores convencionales, se puede tomar la alimentación del conector USB del ordenador, por lo tanto, la tensión de alimentación será 11 Anexo 9: Cálculo de la Resistencia Limitadora

Page 35: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

35

de 5V. Si se tiene en cuenta esta tensión de alimentación, se pueden utilizar resistencias de 75 Ω para limitar el paso de corriente a unos 40mA y proporcionar una tensión de alimentación de unos 2V.

De esta forma, son necesarios 320 mA para alimentar los 8 LED’s con los que se ha equipado la pantalla. El USB 2.0 es capaz de proporcionar 500mA como máximo, así que será suficiente para abastecer de corriente a la superficie multitáctil.

2.2. Adaptación del Sistema de Detección de Puntos a la Retroproyección Una vez iluminada nuestra superficie sensible al tacto, hay que añadirle la superficie proyectable. Ésta se debe situar por detrás de la superficie donde vamos a ejercer el contacto con la cara glaseada haciendo de separación entre las dos superficies. De esta forma, la imagen se proyectará lo mas cerca posible de la superficie de contacto y proporcionará una sensación más real de estar tocando el objeto proyectado.

Figura 33: Ensamblado de la superficie multitáctil

Para ensamblar todo el conjunto, se utilizarán cuatro perfiles de aluminio en forma de ‘L’ que aprisionarán las superficies contra el marco de madera a la vez que protegerán el cableado y las resistencias de posibles golpes.

Figura 34: Superficie multitáctil retroproyectable ensamblada

Page 36: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

36

3. Software El entorno de programación escogido es el Visual C++ de Microsoft. Este entorno nos permite la definición de estructuras y objetos que nos facilitan la modularización de la aplicación y la manipulación de conjuntos de datos relacionados entre sí.

3.1. Módulo de Procesado de Imágenes Este módulo se encarga de la obtención de los puntos de contacto sobre la superficie mediante el procesado de las imágenes obtenidas por la webcam.

Su trabajo se puede dividir en dos tareas diferenciadas:

• Segmentar la imagen y obtener los puntos de contacto según la iluminación de los píxeles que componen la imagen.

• Filtrar estos puntos para eliminar posibles imprecisiones e interpretarlos para obtener los parámetros multitáctiles.

Por ello se ha dividido este módulo en dos, más específicos, encargados de realizar cada una de las tareas de forma secuencial.

3.1.1. Módulo de Captura de Puntos: La clase ‘Ccapture’ El primer módulo a desarrollar es el encargado de procesar la imagen para obtener la situación de los puntos iluminados. Esto obligará a manejar una entidad que contenga la información relativa a la posición y a la masa, en píxeles, de cada una de las áreas iluminadas.

A. Formato de la Imagen de la Webcam Para la obtención de estos datos, hay que recorrer la imagen a tratar de forma secuencial, almacenando en la misma entidad todos los píxeles, que guardarán una relación de contigüidad los unos con los otros. Pero la imagen que proporcionara el módulo principal estará codificada en el formato que la webcam implemente, por lo tanto, hay que convertirla a un formato único para que el módulo de captura pueda procesarla.

Se han añadido algunos parámetros para configurar el módulo de captura y adaptarlo a los formatos más habituales en los que las webcams pueden enviar las imágenes: unsigned char significantByte;

Normalmente la codificación de cada uno de los píxeles de una imagen obtenida por una webcam, está relacionada con nuestra sensibilidad a la hora de percibir los parámetros que componen la luz. Éstos parámetros corresponden a la intensidad del haz del luz y a su color. Este tipo de parametrización responde al código YUV el cual almacena un parámetro que codifica la luminancia, o intensidad de la luz (Y), y otros dos codifican la crominancia o el color (UV). El ser humano es mucho mas sensible a los cambios de luminancia que a los cambios de crominancia y, por lo tanto, los fabricantes de webcams tienden a utilizar 8 bits para codificar el valor Y de cada pixel, menos que para los de U y V. A pesar que este método es mas o menos estandar, el orden en que se sitúan los datos, varía según el fabricante. Para la labor a desarrollar, el único parámetro que necesitamos conocer es el de la luminancia, codificado habitualmente, así que es necesario algún valor que indique cual de los bytes, correspondientes a cada pixel, contiene este parámetro. Ésta es, precisamente, la función del parámetro ‘significantByte’.

unsigned long ptrOffset;

Según el driver y el sistema operativo, los parámetros YUV se pueden agrupar en tres planos separados según su componente, siguiendo un orden arbitrario. También es posible

Page 37: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

37

encontrar un único plano que mezcle las componentes de una forma, también, arbitraria. El parámetro ‘ptrOffset’ permite situarse sobre el inicio del primer bloque de bytes que contiene los datos del primer pixel.

unsigned char BytesPerPixel;

Este parámetro, tal y como se intuye, informa al módulo de captura de la cantidad de bytes que se utilizan para codificar un pixel en un plano. Por regla general, este parámetro tomara el valor de 1.

CPoint resolution;

El ultimo parámetro tan solo informa de la resolución de la imagen que se ha obtenido de la cámara.

B. Histograma y Obtención de Threshold: La Clase ‘CHistogram’ Una vez informado al módulo de captura sobre el formato de la imagen, éste se encuentra en disposición de traducirla a un formato único en el que sólo se almacena la luminosidad de cada píxel. A la vez, se obtiene el histograma de la imagen para poder obtener el threshold y binarizarla. De este proceso se encarga la clase ‘CHistogram’ la cual es informada de la cantidad de píxeles que adquieren cada una de las luminosidades disponibles y decide, según esta información, a partir de qué nivel de luminosidad se va a considerar iluminado un píxel. A esta clase se le han añadido dos variaciones que afectan al cálculo definitivo del threshold.

Si la calidad de la webcam no es del todo adecuada, las imágenes varían de luminosidad total y esto dificulta la obtención del threshold de una forma precisa. Para filtrar los picos de intensidad y suavizar la adaptación del threshold a las condiciones del entorno, se ha dotado a la clase de un filtro pasa-bajos que atenúa la influencia de los picos de luminosidad y mantiene el threshold más constante durante la captura de imágenes. Esta función es desconectable, ya que en algunas ocasiones es posible que necesitemos una adaptación inmediata a las condiciones de luz del entorno y su uso entorpecería el proceso.

En condiciones de muy poca luminosidad, el fondo se acerca mucho al valor mínimo posible y la desviación respecto al valor mínimo, que permite calcular el threshold, se hace muy pequeña. En estos casos, se puede utilizar el parámetro ‘minimumThreshold’ el cual establece un valor mínimo del que nunca podrá bajar el threshold calculado.

Por último, el valor que fijará la amplitud del rango de niveles de luminosidad pertenecientes al fondo, corresponde al parámetro ‘ThresholdTolerance’. Éste indica el factor que se aplicará a la desviación del nivel de fondo respecto al mínimo nivel obtenido. El threshold corresponderá al extremo superior del rango resultante de la aplicación de este factor.

C. Segmentación de la Imagen: la Clase ‘CSegmentation’. Ahora mismo se puede adaptar la imagen proporcionada por la webcam a las necesidades del módulo de captura de puntos y se dispone de un valor a partir del cual binarizar dicha imagen. Por lo tanto es el momento de obtener las áreas iluminadas pertenecientes a los puntos de contacto sobre la superficie multitáctil.

Para facilitar esta tarea se ha creado la clase ‘CSegmentation’, la cual se encarga almacenar los grupos de píxeles y proporcionar la funcionalidad necesaria para gestionarlos. Como apoyo, dispone de la clase ‘CGroup’ en la que puede guardar el sumatorio de las coordenadas X e Y de cada uno de los píxeles componentes de cada grupo.

Page 38: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

38

class CGroup unsigned long nPoints;

long yTotal;

long xTotal;

La clse ‘CGroup’ se utilizará para ir almacenando, de forma ordenada, los datos de los píxeles que hayan superado el threshold a medida que vamos recorriendo la imagen.

D. Algoritmo de Etiquetado de Píxeles El algoritmo utilizado esta basado en un etiquetado de píxeles y en el uso de la funcionalidad proporcionada por ‘CSegmentation’. El proceso va asignando, a medida que avanza, etiquetas comunes a aquellos píxeles que se encuentran en contacto. Cada vez que encuentra un pixel iluminado, se comprueba que esté aislado. En el caso que no lo esté, suma sus datos al grupo con el que esta en contacto. En caso contrario lo etiqueta, por el momento, con un nuevo identificador.

Confidencial

Cuando este algoritmo ha finalizado de recorrer la imagen, se tiene una serie de grupos que contienen la cantidad de píxeles que los componen y el sumatorio de cada una de sus coordenadas X e Y. Además se tiene la certeza de que cada uno de los grupos pertenece a un cúmulo de píxeles contiguos entre ellos.

Si se dividen los sumatorios entre la cantidad de píxeles se obtiene el centro del área en función de su distribución espacial. Por otra parte, si se considera que estas áreas tienen una forma circular, se puede obtener el radio de circunferencia cuya área sería equivalente a la de la masa de píxeles obtenida.

2* RadioÁrea π= Fórmula 1:Área de la circunferencia

Page 39: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

39

3.1.2. Módulo de Interpretación de Puntos En estos momentos se cuenta con una relación de áreas iluminadas de las cuales es posible calcular su centro y el radio de su circunferencia equivalente. Este formato resulta mas simple y manejable y esta preparado para que la información sea tratada de una forma mas intuitiva.

A. Clases de Apoyo: La Clase ‘CPoint’ y la Clase ‘CPointFloat’ Para que la tarea de manipular puntos sea más intuitiva, se han creado dos clases que implementan dos tipos de datos para poder trabajar con puntos de una forma mas cómoda.

class CPoint

public:

unsigned int y;

unsigned int x;

class CPointFloat

public:

float y;

float x;

Ambas clases permiten trabajar con un tipo de datos encaminado al almacenamiento de coordenadas. A lo largo de la aplicación, la clase ‘CPoint’ también se utiliza para referenciar resoluciones.

B. Filtrado y Procesado de Puntos: La Clase ‘CpointsProcessor’ Una vez definidas las clases de apoyo, el siguiente paso es recoger los grupos de píxeles obtenidos por el módulo de obtención de puntos y traducirlos a una entidad que permita usar el formato mencionado en las lineas anteriores. Para ello se ha añadido una clase que se encarga de almacenar el punto central de cada grupo, así como su masa, en píxeles, y su radio medio. Éste resume la extensión del grupo de píxeles a un solo parámetro, mas manejable e intuitivo que su masa, ya que se sabe de antemano que un punto de contacto toma, mas o menos, una forma circular.

class CArea

unsigned long mass;

unsigned int radix;

CPointFloat center;

Todos los grupos de píxeles que se han obtenido, no siempre van a corresponder a zonas de contacto, por lo tanto, es necesaria una metodología que permita eliminar aquellas áreas dudosas y mantener sólo las que se puede “asegurar” que pertenecen a un punto de contacto.

Bajo el punto de vista de la fiabilidad, es prioritario que, siempre que se ejecute una acción sobre un punto, sea por que el usuario así lo desee, frente a la posibilidad de ejercer una acción sobre un punto dónde, en realidad, no se ha efectuado ningún contacto. Es por esto que se ha optado por una metodología de descarte de áreas dudosas en detrimento de la sensibilidad del sistema.

Para poder ajustar la flexibilidad de esta metodología se han introducido otra serie de parámetros que nos permitirán adaptar las normas a las condiciones de uso deseadas:

float MinPointsDistance;

Page 40: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

40

Este parámetro se utilizará para agrupar masas de pequeñas áreas que puedan estar provocadas por la falta de presión sobre un punto de contacto. Cuando dos o más áreas se encuentran a una distancia menor que la especificada, éstas se unen en una sola sumando sus masas y modificando su centro.

unsigned long MinPointMass;

Mediante este valor se puede decidir qué áreas son un punto de contacto. Es decir, aquellas que no superen una masa mínima, serán consideradas ruido o parásitos que han podido superar el threshold aplicado en el módulo de obtención de puntos. Si habían cúmulos de áreas que, por si solas, no superaban esta condición, en el paso anterior se pueden haber agrupado y, en conjunto, pasar esta fase de selección formando un punto de contacto fiable. De esta tarea se encarga la clase ‘CPointsProcessor’.

Para que el método funcione, primero se deben compactar los puntos y después de debe proceder a la eliminación de aquellos que no cumplan con los requisitos de tamaño establecidos. Estos parámetros también deben ser adaptados en función de la resolución y la distancia a la que trabaje la cámara ya que sus masas dependen de ello.

C. Calibrado del Sistema Hasta este punto, el software se ha dedicado a obtener puntos de contacto sobre la superficie y a filtrar posibles imprecisiones de la webcam. Terminado este proceso, se dispone de un conjunto fiable de puntos sobre la superficie multitáctil en los cuales existe un contacto. Ahora es necesario relacionar estos puntos, cuyas coordenadas corresponden al entorno de la cámara, con el entorno de la pantalla. Como se había apuntado anteriormente, esta operación requiere información extra que se debe tener antes de mapear los puntos de la webcam. Este proceso de calibrado se realiza, también, en este módulo de interpretación de puntos debido a que el proceso resulta muy similar al de obtención y mapeado. Por ello, en la función principal, se han implementado ambas funcionalidades.

El modo de obtención de puntos de calibrado se encarga de obtener estos puntos de calibrado consiguiendo, sencillamente, una relación entre las coordenadas de la pantalla y las coordenadas a las cuales corresponde el punto en la cámara. Siendo fieles a el diseño, debemos obtener cuatro puntos correspondientes a las cuatro esquinas de la pantalla. Para ello, situamos el cursor en cada uno de estos puntos y pedimos al usuario que pulse sobre el punto de la superficie táctil en el cual aparece el cursor. El módulo, espera hasta que se pulse sobre algún punto de la superficie multitáctil y, cuando esto ocurre, lo almacena y procede a pedir el siguiente punto. Cuando todos los puntos han sido tomados, el módulo se encuentra en disposición de realizar las traducciones entre los puntos de la superficie táctil y los puntos de la pantalla. Entonces abandona la función de calibrado y espera al inicio del funcionamiento normal.

D. Mapeado de Puntos: La Clase ‘CTetraToRect’ y la Clase ‘CRect’

Es necesario mapear los puntos del interior de un tetraedro, formado por la pantalla al visualizarla desde la webcam, y el rectángulo que, en realidad, forma la pantalla. El tetraedro formado por la vista de la pantalla proyectada sobre la superficie multitáctil es muy variable y depende de la distancia y el ángulo con el que sea dirigida a la superficie. Es por eso que hay que buscar una forma genérica que permita resolver el problema ante cualquier situación.

Del cálculo correspondiente al mapeado de puntos se encarga la clase ‘CTetraToRect’, la cual, con la ayuda de la clase ‘Crect’ y ‘CPoly’, genera las rectas necesarias y calcula las intersecciones para obtener los puntos en cada uno de los entornos. Mediante su uso, la clase ‘CtetraToRect’, es capaz de obtener la coordenada de la pantalla, correspondiente a

Page 41: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

41

cualquier punto de la webcam, suponiendo que está sobre la superficie correspondiente al calibrado establecido.

La única información de la cual dispone para realizar el mapeado, es el conjunto de relaciones de punto en pantalla con su punto en la cámara, así que debe desarrollar el calculo en base a estos datos.

Mediante estos puntos puede generar las diagonales de ambos tetraedros, el de la figura correspondiente a la cuatro puntos en la webcam y el de la figura de los cuatro puntos en pantalla tal y como se muestra en la figura 36.

Figura 35: Correspondencia los puntos de calibrado en la imagen de la webcam con los puntos reales en pantalla.

Estas diagonales representan el mismo espacio, tanto en la webcam como en la pantalla, ya que corresponden a la misma figura vista desde diferentes puntos.

Al obtener un punto de contacto, de éste se proporcionan las coordenadas correspondientes al entorno de la webcam. Si se traza una recta desde cada una de las esquinas opuestas del tetraedro, correspondiente a la webcam, se obtienen dos puntos dónde estas rectas interseccionan con las dos diagonales. Estos dos puntos de intersección corresponden al espacio de las diagonales y, por lo tanto, tienen un homólogo en las diagonales pertenecientes al rectángulo de la vista de la pantalla.

Siguiendo este razonamiento, es lógico pensar que, si se trazan las mismas rectas desde las mismas esquinas opuestas, pasando por los puntos homólogos de la diagonales en el rectángulo de la pantalla, en su punto de intersección encontraremos el punto de la pantalla al cual corresponde el punto de la webcam.

Figura 36: Correspondencia entre las coordenadas en la imagen de la webcam con los puntos reales en pantalla.

Page 42: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

42

Para la manipulación de rectas se ha desarrollado una clase llamada ‘Crect’, la cual nos permite almacenar ecuaciones de recta ,en su forma paramétrica y obtener puntos de corte entre ellas, así como puntos concretos en función de su parámetro λ.

YY

xX

PVYPVX

+=+=

··

λλ

Fórmula 2:Ecuaciones Paramétricas de la recta

class CRect

public:

CPointFloat vector;

CPointFloat destination;

CPointFloat origin;

D.1. Corrección de Perspectiva: La clase ‘CPoly’ Ahora el problema se centra en relacionar los puntos de las diagonales de la webcam con los puntos de las diagonales de la pantalla. Si representamos matemáticamente las rectas de las diagonales, usando sus ecuaciones paramétricas, se observa que, para valores de λ igual a 0 y 1, se obtienen los puntos equivalentes de cada diagonal en ambos entornos. Es decir, si se da el valor 0 o 1 al parámetro λ de la recta representante de una diagonal del entorno de la webcam, se encuentran los extremos de esta diagonal. Si se da el mismo valor a λ pero en la recta de la diagonal del entorno de la pantalla, se obtienen los puntos a los cuales corresponden en el entorno de la pantalla. Esto es cierto para los puntos de los extremos, pero si se da a λ el valor ½, está relación no resulta válida, tal y como se observa en la figura 38.

Figura 37: Error producido al utilizar λ=1/2

Éste error está provocado por que la vista que la webcam proporciona de la pantalla está deformada debido a la perspectiva. Encontramos, pues, que las λ de cada una de las diagonales no mantienen una relación directa, pero sí coinciden en sus puntos extremos. Para resolver este problema se dispone de otro dato que es posible obtener de forma indirecta y que proporcionará una referencia, sobre la perspectiva aplicada al tetraedro proporcionado por la webcam.

Es posible obtener el punto donde las dos diagonales se cortan en cada una de las vistas hallando el dato que permitirá saber qué lambda de las diagonales de la vista de la cámara

Page 43: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

43

pertenece al centro de las diagonales de la vista de la pantalla. Este dato permitirá aplicar una corección de perspectiva a toda la diagonal y proporcionara la relación entre cada punto de la diagonal de la vista de la cámara con el correspondiente de la diagonal de la vista de la pantalla. Esta corección se consigue utilizando un polinomio que relacione las λ de las diagonales de la webcam on las λ de las diagonales de la pantalla. Éste se puede obtener tomando como valores característicos los tres datos de los que disponemos y resolviendo el sistema resultante en función de A y B.

( )

⎪⎪⎭

⎪⎪⎬

=+

=+

=+

11·1·21··

00·0·

2

2

2

BA

BA

BA

mediamedia λλ

Fórmula 3:Sistema de ecuaciones a resolver para hallar el polinomio corrector

Resolviendo el sistema de ecuaciones planteado, se obtiene un polinomio que proporciona la corrección de perspectiva necesaria12. Para las operaciones con polinomios se ha desarrollado la clase ‘CPoly’, la cual proporciona la funcionalidad suficiente para su aplicación a la corrección de perspectiva de las diagonales.

class CPoly

public:

float bParam;

float aParam;

float center;

Ahora se dispone de una regla que relaciona, exactamente, las coordenadas de cada uno de los puntos correspondientes a la diagonal de la vista de la cámara, con las coordenadas de los puntos de la diagonal equivalente en la vista de la pantalla y, por tanto, podemos mapear cualquier punto de la webcam con su homólogo en la pantalla.

3.1.3. Comunicación con la Aplicación Multitáctil Para proporcionar la información multitáctil a la aplicación se debe utilizar un sistema que permita compartir la información que obtiene la aplicación controladora con cualquier otra aplicación. Para cubrir cualquier necesidad, se han desarrollado los dos modos de funcionamiento descritos anteriormente.

A. Modo de Emulación de Dispositivo Apuntador

El primero de ellos tiene como objetivo simular el funcionamiento de un ratón estándar. Para ello, una vez se disponen de las coordenadas en pantalla de cada punto de contacto, se almacenan en la zona de memoria compartida y se manipula el cursor del sistema situándolo en la posición correspondiente. En el caso que sólo exista un punto de contacto la acción será situada sobre ese punto. En el caso de que haya más de un punto de contacto, la acción sera situada sobre el punto central de los puntos implicados por las razones descritas durante el apartado de diseño.

A.1. Manipulación del Cursor del Sistema: la Clase ‘CmouseControl’ 12 Anexo 10: Cálculo del Polinomio Corrector de Perspectiva

Page 44: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

44

El cursor del sistema se maneja mediante la utilización de las funciones proporcionadas por la librería ‘kernel32.lib’. Su uso nos proporciona la posibilidad de especificar las coordenadas dónde posicionarlo en cada momento así como una serie de mensajes relacionados con la pulsación de cada uno de los botones de un ratón.

Las coordenadas se especifican entre un rango constante, independiente de la resolución con la que el sistema esté trabajando. Este rango esta comprendido entre 0 y 65535 (16 bits de resolución), tomando como esquina superior izquierda de la pantalla la posición (0,0) y la esquina inferior derecha la (65535,65535).

Por otra parte, las pulsaciones de los botones, se emiten mediante mensajes siguiendo el esquema utilizado por las pulsaciones de un teclado. Cuando uno de los botones es pulsado, se emite un mensaje de ‘Make’, sobre el indentificador correspondiente, y cuando se libera se emite un mensaje de ‘Break’ sobre el mismo identificador.

La clase ‘CMouseControl’ se ha desarrollado para proporcionar un control sobre estos parámetros tomando como únicos datos la situación donde queremos posicionar el cursor y el estado de cada botón a cada momento. Ésta se encarga de gestionar los ‘Makes’ y los ‘Breaks’ de cada uno de los botones y de enviar los mensajes correspondientes para informar a las aplicaciones del movimiento del cursor. Esta también se encarga de añadir la información extra al mensaje, informando de los parámetros referentes al interfaz multitáctil a la aplicación correspondiente.

Estos parámetros son calculados, una vez hemos mapeado los puntos sobre la pantalla, por la clase ‘CPointsProcessor’ mencionada anteriormente. Ésta calcula el ángulo y el parámetro de escalado correspondiente, según el método propuesto durante de diseño del sistema.

Page 45: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

45

B. Modo Libre de Emulación En el segundo de los modos, la aplicación no manipula el cursor del sistema operativo y se limita, únicamente, a dejar la información de los puntos de contacto en la zona de memoria compartida perteneciente al fichero mapeado en memoria. Concretamente, este modo no realiza ningún trabajo añadido sino que, sencillamente, prescinde de la emulación del dispositivo apuntador.

3.2. Módulo Principal Las clases encargadas de gestionar el intefraz multitáctil están listas para su uso, pero el funcionamiento resultaría muy poco práctico si tuvieran que ser incluidas en cada aplicación que pretendiera beneficiarse de este tipo de interfaz. Además, implicaría un conocimiento previo de su programación y obligaría al uso del entorno de programación Visual C++. Demasiadas restricciones, si uno de los objetivos es la máxima difusión entre usuarios. La incorporación de un entorno de gestión de las librerías que permita su uso sin la necesidad de conocimientos de programación, permitirá que el sistema pueda ser utilizado por la gran mayoría de usuarios que deseen beneficiarse de las propiedades de un interfaz multitáctil. Por otra parte, esta facilidad de uso también permitirá que los programadores que deseen implementar aplicaciones basadas en este sistema, se despreocupen de sus particularidades de funcionamiento y se centren en el desarrollo específico de la aplicación multitáctil. Otra ventaja de este diseño radica en el caso de mejora del sistema, puesto que seria necesario la recompilación de la aplicación multitáctil.

Estos hechos ya estaban contemplados en las especificaciones y en el diseño del proyecto pero, ya que son el objetivo básico de este módulo conviene tenerlas presentes a la hora de desarrollarlo.

3.2.1. Ventana Principal La ventana principal presenta dos áreas diferenciadas. El área superior está ocupada por una serie de menús desplegables y el resto corresponde al área de previsualización. Esta última nos permite una previsualización, en caso de estar activa, de las imágenes proporcionadas por la webcam. De este modo, podemos verificar si los valores de los parámetros de configuración tienen el efecto esperado.

Figura 38: Ventana principal de la aplicación

Los menús desplegables nos dan acceso a la configuración de las librerías de procesamiento de imagen y a la configuración de la propia aplicación de control.

Page 46: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

46

Figura 39: Menús desplegables de configuración

Antes de mostrar la ventana principal, este módulo realiza los procesos correspondientes a la obtención de la zona de memoria compartida y del objeto destinado a la exclusión mutua dentro de la misma. Se hace necesario mencionar este proceso ya que la aplicación que desee acceder a esta información deberá actuar de una forma similar.

En primer lugar se crea un fichero mapeado en memoria, de una medida adecuada, utilizando la función ‘CreateFileMapping‘ proporcionada por las librerías de gestión de este recurso. A este fichero se le ha dado el nombre de "Local\\MultutouchInfoFile" y se encuentra disponible de la misma forma que se encontraría si estuviese ubicado en disco.

Seguidamente se procede a la obtención de un puntero, el cual apunta a la zona de memoria compartida, recién obtenida, mediante la función ‘MapViewOfFile’ proporcionada por las mismas librerías. Este puntero es del tipo ‘tMultitouchInfo’ y hace referencia a la información relativa a la cantidad de puntos de contacto y sus coordenadas. A través de este puntero realizaremos todas las escrituras a la zona de memoria compartida de la misma forma que lo haríamos si éste apuntara a una zona normal de memoria pero respetando la exclusión mutua.

Una vez dispone de la memoria compartida debe obtener la herramienta de sincronización. Ésta nos la proporciona los objetos ‘mutex’, a los cuales también se le puede asignar un nombre global al que referirse desde aplicaciones externas. Para conseguirlo se utiliza otra función llamada ‘CreateMutex’ indicando el nombre, fijado como “MultitouchMutexName”. Éste también es referenciable desde aplicaciones externas.

Antes de cada acceso a la zona de memoria compartida, la llamada a la función ‘WaitForSingleObject’ dará acceso al recurso compartido. Si su acceso es posible, devolverá el valor ‘WAIT_OBJECT_0’ y se podrá realizar el acceso de forma segura.

Una vez haya finalizado los accesos a esta zona de memoria, se libera el recurso mediante la función ‘ReleaseMutex’ para que otra aplicación pueda acceder a él.

El módulo de procesado de imágenes se encuentra operativo, pero antes es necesario desarrollar una herramienta de configuración adecuada. Ésta debe permitir el acceso a todos los parámetros configurables de los que se dispone, por lo que se han desarrollado varios diálogos que permiten, de forma agrupada, su manipulación.

A. Menú ‘Capture’: Opciones

A través del menú capture es posible configurar el módulo de captura de puntos de la aplicación.

A.1. Capture Preview Esta opción proporciona la posibilidad de visualizar las imágenes que la fuente obtiene en tiempo real. De esta forma es posible comprobar si la configuración de la webcam es correcta.

A.2. Points Preview Otra opción de previsualización que permite comprobar el funcionamiento del módulo de captura de puntos. Permite ver, también en tiempo real, los puntos obtenidos después de procesado de las imágenes. Mediante esta previsualización se puede comprobar si la configuración de las librerías es lo suficientemente efectiva.

Page 47: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

47

Hay que tener en cuenta que estas opciones son útiles solo cuando deseamos testear configuraciones del sistema pero consumen recursos de CPU. Por ello, una vez probados los parámetros, conviene desactivar todas las previsualizaciones para reducir el consumo de estos recursos al mínimo.

A.3. Start Capture Mediante esta opción se inicia la captura, dejando el interfaz multitáctil operativo. El módulo principal informa de la configuración establecida al módulo de captura de puntos, y posteriormente configura las librerías ‘Video For Windows’ para que comiencen la captura de imágenes procedentes de la webcam.

La configuración del módulo de captura de puntos se establece, básicamente, a través de un diálogo de configuración.

A.4. Diálogo ‘Capture Settings’

Figura 40: Diálogo ‘Capture Settings’

Éste diálogo proporciona los parámetros de configuración, referentes al tratamiento de las imágenes obtenidas por la webcam y al filtraje de los puntos obtenidos. Mediante su óptima configuración es posible extraer el máximo rendimiento de los componentes hardware empleados.

Dentro de este diálogo se diferencian varios grupos de parámetros agrupados según su objetivo:

a). Capture Resolution Este grupo hace referencia a dos parámetros que no se habían explicado en profundidad anteriormente. Están ligados, básicamente, a la obtención de imágenes de la webcam y, por lo tanto, no hacen referencia estricta a la configuración del módulo de procesado de imágenes, pero sí guardan una estrecha relación con él.

b). Intensity Levels El primero de los parámetros que presenta este grupo se refiere a la cantidad máxima de niveles de intensidad con la que el módulo de procesado de imágenes va a trabajar. Actualmente, las webcams estándar disponen de 256 niveles luminosidad, independientemente del formato con el que trabaje. Por ello es recomendable no modificar el valor por defecto de éste parámetro.

Page 48: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

48

c). Frames/sec Este parámetro permite determinar la cantidad de imágenes por segundo que vamos a pedir a la webcam. En realidad no se trata de una imposición, sino de una petición sobre el funcionamiento de la cámara y su cumplimiento depende, en gran medida, de las posibilidades del hardware que utilicemos. Si éste no es capaz de alcanzar este valor, sencillamente proporcionara su capacidad máxima en cada momento. A partir de las 25 imágenes por segundo se consigue un funcionamiento suficientemente suave como para proporcionar una respuesta del interfaz fluida. También hay que tener en cuenta que cuanto más aumentemos este parámetro, mas tiempo emplearemos en procesar un segundo de imágenes y este hecho puede penalizar el rendimiento general del sistema operativo.

d). Capture Format En este grupo de parámetros es posible adaptar el funcionamiento de nuestras librerías a los diferentes formatos de imagen de las webcams estandar. El significado de todos ellos se ha especificado anteriormente y, por lo tanto, no profundizaremos en su función.

Se proporcionan tres formatos predeterminados (i420,YUYV y UYVY), pero es posible una configuración porpia por parte del usuario en caso que el formato requerido no se encuentre entre ellos. Hay que tener en cuenta que éste formato esta relacionado con la forma en que las librerías acceden a la zona de memoria del driver de la webcam, por lo tanto, una configuración deficiente de éstos, puede provocar accesos no permitidos a memoria y, en consecuencia, el cierre de la aplicación controladora. Es pues, importante que se verifique la equivalencia entre el formato especificado en la configuración de la webcam y el formato especificado en la configuración de las librerías puesto que, a diferencia de la resolución, su valor no se toma automáticamente de la información especificada por el driver de la webcam.

e). Threshold En este grupo es posible configurar la flexibilidad con la cual se escoge el threshold a partir del cual se realiza la binarización de las imágenes. Sus parámetros también han sido explicados durante el desarrollo de los módulos anteriores, pero cabe destacar que la sensibilidad al tacto del sistema depende de una buena elección de éstos.

Es conveniente fijar un threshold mínimo por encima del valor 0 ya que favorece el funcionamiento en condiciones de oscuridad total y no perjudica de forma notable el rendimiento del sistema. También conviene fijar una tolerancia por encima de 2 para compensar las correcciones de la luz asociadas al proceso de normalización que realizan la mayoría de drivers de webcam, con la intención de favorecer el contraste de las imágenes.

Teóricamente el threshold debería mantenerse relativamente constante ya que, en principio, las condiciones de luz del entorno siempre serán las mismas durante toda la captura. Pero en realidad, debido al proceso de adaptación de niveles de luminosidad que algunos drivers de webcam implementan, el método de calculo del threshold puede verse negativamente afectado. Por regla general, los drivers de webcam proporcionan la posibilidad de ajustar automáticamente la sensibilidad del sensor a la luz y es en estos casos cuando el calculo del threshold puede provocar picos que mermen la fiabilidad del sistema en momentos puntuales. Para evitar este fenómeno, las librerías incorporan un sistema de filtraje que permite eliminar estos picos manteniendo el threshold estable a la vez que no evita su adaptación a los cambios graduales de las condiciones de luz. Es posible desconectar el filtraje de estos picos pero, por regla general, se recomienda mantenerlo activo.

f). Pixel Areas

Page 49: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

49

Éste grupo se refiere a los conjuntos de píxeles contiguos que el módulo de captura de puntos almacena. El valor de cantidad máxima no se refiere a la cantidad máxima final de grupos obtenidos, sino a la cantidad que es posible tener durante el proceso de etiquetado de píxleles. Es conveniente mantener un valor relativamente alto, por encima de la cantidad final prevista, y aumentarlo en caso de emplear altas resoluciones. También permite la configuración de la masa mínima, en píxeles, de un grupo para que sea considerado un punto de contacto.

g). Translated Points En este grupo sí que nos referimos a la cantidad máxima de puntos que el módulo de procesado es capaz de gestionar, así como a la distancia mínima que tiene que haber entre ellos para que sean considerados dos puntos de contacto diferentes.

B. Menú Multitouch: Opciones A través de este menú es posible seleccionar los modos de funcionamiento de la aplicación controladora, activando o desactivando la opción ‘Pointing Device Emulation’, y de modificar los puntos que proporcionan el calibrado. A través de la opción ‘New Calibration’ se accede al modo de calibrado en el cual se pide al usuario que pulse sobre los puntos de calibración y, mediante la opción ‘Show calibration Points’ es posible consultar el valor de estos puntos.

A través de este menú, también es posible acceder a la configuración del modo emulado de dispositivo apuntador el cual nos ofrece un diálogo con diferentes opciones.

B.1. Diálogo ‘Multitouch Settings’

Figura 41: Diálogo ‘Multitouch Settings’

Básicamente permite configurar el comportamiento del cursor frente a la cantidad de puntos de contacto sobre la superficie. Configurando estos parámetros es posible conseguir ejecutar diferentes acciones, asociadas por el sistema operativo a los botones de un ratón estandar, en función de la cantidad de puntos de contacto sobre la superficie táctil.

Por ejemplo, es posible desplazar el Scroll de una página web, normalmente asociado al botón central de un ratón, situando tres dedos sobre la ventana si, previamente hemos especificado en la casilla ‘When’, la opción ‘Touching 3 points at once’.

Esto permite flexibilizar el uso del sistema si se destina a la interacción con el sistema operativo.

En este diálogo se encuentra una parámetro que nos permite aumentar la sensibilidad del sistema a movimientos rápidos sobre la superficie táctil. Se trata del valor ‘Persistence’.

Cuando se realiza un movimiento rápido manteniendo el dedo sobre la superficie multitáctil, es habitual que el dedo rebote a causa de la fricción. Es difícil mantener la

Page 50: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

50

presión constante sobre ella y esto provoca que la iluminación sobre el punto de contacto sea más tenue de lo habitual. Este hecho, unido a la limitación de las webcams a la hora de enfocar los objetos en movimiento, provoca la pérdida momentánea del punto de contacto sobre la superficie. Esto también ocurre cuando se utilizan mas de dos puntos de contacto para ejecutar una acción, como la utilizada anteriormente de ejemplo, ya que es habitual que en algún momento se pierda el contacto de alguno de los puntos. Cuando esto ocurre, el valor del parámetro ‘Persistence’ indica al módulo de procesado de puntos que mantenga memorizada la acción que se estaba realizando, antes de la perdida del punto de contacto, durante los fotogramas indicados. El funcionamiento de esta ‘memoria’ del sistema se basa, una vez mas, en un filtraje de picos. Si en los últimos fotogramas existían una cantidad de puntos de contacto, lo normal es que, en momentos posteriores, este hecho se mantenga. Si ésta particularidad no se mantiene, es decir, la cantidad de puntos de contacto no vuelven a ser los que antes se consideraban normales, ésta situación dejara de ser particular para pasar a ser la nueva situación habitual.

C. Menú ‘Boot’ Este menú da acceso al diálogo de configuración de arranque del sistema. En este módulo se pueden especificar las condiciones en las cuales arranca la aplicación de control, permitiendo a ésta ejecutar ciertas acciones de forma automática al iniciarse.

C.1. Diálogo ‘Boot Settings’

Figura 42: Diálogo ‘Boot Settings’

En primer lugar se encuentran dos opciones englobadas en un mismo conjunto llamado ‘Capture Settings on boot’.

a). Start Capture on boot La primera de ellas, indica a la aplicación controladora que inicie la captura, con la configuración de la que disponga, al ejecutarse. Esta opción nos permite iniciar el interfaz multitáctil al arranque del sistema operativo si se especifica su ejecución al inicio del mismo.

b). Hide on start capture La segunda opción indica a la aplicación que deseamos esconder la ventana principal durante la captura. Más adelante se ampliara la información sobre esta posibilidad de funcionamiento.

Las otras dos opciones hacen referencia a la configuración general del sistema. Al iniciar, existe la posibilidad de mantener una configuración por defecto o, si interesa, utilizar una configuración concreta que haya almacenada en un fichero. Ésta posibilidad es útil cuando

Page 51: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

51

se utiliza el sistema sobre una plataforma permanente y evita tener que configurar el sistema cada vez que queramos utilizarlo. Si se combina con la opción de ‘Hide on start capture’ y con ‘Start capture on boot’ se obtiene un sistema que puede resultar completamente transparente para el usuario final, permitiendo que la configuración sea realizada por personal especializado a pesar de que éste no sea el usuario final del interfaz multitáctil.

3.2.2. Salvado de la Configuración: La Clase ‘CConfiguration’ y ‘CBootConfig’ Se ha indicado la posibilidad de restaurar configuraciones preestablecidas en el momento del inicio de la aplicación controladora, así que debe proporcionar la posibilidad de grabar estas configuraciones en un archivo. Estas configuraciones se tienen que almacenar provisionalmente en memoria antes de ser guardadas para lo cual se ha desarrollado una clase llamada ‘CConfiguration’. Ésta se encarga de almacenar toda la información relacionada con la aplicación controladora. En esta clase se almacenan todos los parámetros de configuración de la captura, emulación de dispositivo apuntador, calibrado del sistema y algunos parámetros referentes a la configuración de arranque. Cada vez que algún diálogo de configuración o alguna opción de los menús es modificada, esta alteración es notificada a esta clase, la cual la almacena en memoria. Cuando la captura de inicia, se toma la información contenida en esta clase y se configuran las librerías de procesado de imágenes con los parámetros almacenados. Es pues, el contenido de esta clase, el que se puede almacenar y/o recuperar mediante ficheros en caso que sea necesario.

Por otro lado, la clase ‘CBootConfig’ realiza el mismo trabajo pero con los parámetros relacionados únicamente con el arranque de la aplicación.

Por defecto, la aplicación controladora establece unos parámetros iniciales pero no tienen porque adaptarse a todas las fuentes de captura así que es conveniente repasar todos los parámetros y verificar su valor antes de comenzar a usar el dispositivo.

A. El Menú ‘Device’ El menú ‘Device’ proporciona la funcionalidad de almacenar y restaurar configuraciones mediante ficheros, además de la posibilidad de ocultar la ventana principal de la aplicación controladora. La opción ‘Hide’, de este menu, oculta la ventana de la aplicación creando, en su lugar, un icono en la zona de programas residentes, conocida como la zona de ‘systray’. Pulsando, con el botón derecho del ratón, sobre el icono representativo, se desplega un menú flotante con las opciones básicas de control de la aplicación. Lógicamente también es posible restaurar la ventana principal a través de este menu resumido, así como iniciar o parar la captura.

B. El Menú ‘Source’:Opciones Es posible que el ordenador tenga más de un dispositivo compatible con Vfw instalado. Incluso es posible que dispongamos de más de una superficie multitáctil y deseemos alternar su uso en un mismo ordenador. Las librerías Vfw permiten el uso de más de un dispositivo compatible, incluso de forma simultanea. No es éste el caso, pero sí se hace necesario alguna medida de selección de la fuente activa en cada momento. El menú ‘Source’ nos proporciona dos opciones con las que gestionar este recurso.

Page 52: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

52

B.1. Select Source Esta opción da paso a un diálogo estándar de selección de fuente de vídeo, proporcionado por las propias librerías de ‘Video for Windows’ de Microsoft. Mediante su uso se selecciona el origen de la captura que va a proporcionar los puntos de contacto sobre la superficie. El diálogo al que da paso esta opción nos permite configurar, además, algunos aspectos relacionados con el comportamiento de la webcam. Los aspectos concretos de la configuración deben venir explicados en las especificaciones del hardware proporcionadas por el fabricante pero la mayoría comparten ciertos parámetros tales como la adaptación automática a la sensibilidad a la luz, contraste, nitidez, etc...

B.2. Source Settings Da acceso a otro diálogo estándar donde se puede especificar la resolución de trabajo de la webcam y el formato en el que se va a obtener las imágenes. Recordamos que este formato debe coincidir con el especificado en el diálogo de ‘Capture Settings’.

Mediante este entorno basado en menús y diálogos de configuración es posible controlar el funcionamiento global de la aplicación dando acceso tanto a los parámetros referentes al comportamiento de los módulos de obtención e interpretación de puntos como a los que afectan al funcionamiento de la aplicación de control. En términos generales, se ha creado una herramienta que permite el uso del interfaz multitáctil a cualquier persona con unos conocimiento medios o incluso permite aislar al usuario final de la configuración de sistema.

Page 53: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

53

Evaluación Para la evaluación de cada uno de los objetivos se ha procedido a comprobar el funcionamiento del sistema en las situaciones indicadas en el apartado de objetivos.

a). Detección de puntos de contacto sobre la superficie multitáctil El funcionamiento de la webcam junto con la superficie multitáctil ha resultado correcta. Con la superficie conectada al USB, ejercemos cierta presión sobre la superficie táctil y en la cámara podemos registrar unas imágenes como estas:

Figura 43: Imagen captada al tocar la superficie multitáctil retroproyectable con los dedos

La interacción con el sistema operativo: El uso del modo emulado de dispositivo apuntador, ha permitido interactuar de una forma cómoda con el sistema operativo, evidenciando como punto débil la acción de ejecutar aplicaciones mediante el doble click sobre su icono. Debido a que el dedo no proporciona la suficiente precisión a la hora de seleccionar un punto concreto de la pantalla, cuando se intenta generar un doble click sobre un icono, resulta muy difícil hacerlo sobre el mismo punto dos veces seguidas. De todas formas, es posible ejecutar cualquier aplicación emulando una pulsación con el botón derecho y seleccionando la opción ‘Abrir’ del menú que aparece.

En este caso, la necesidad de personalizar el diálogo ‘Multitouch Settings’ ha resultado muy útil, ya se ha podido escoger de qué forma queríamos que reaccionara el puntero del ratón al contacto con nuestros dedos y hemos podido hallar el sistema que ha resultado más cómodo para interactuar con el sistema operativo. Por lo tanto, configurando el diálogo anterior de forma adecuada, se ha podido ejecutar aplicaciones, acceder a los menús de configuración de cada icono y llevar a cabo desplazamientos del scroll de una ventana del Microsoft Explorer manteniendo los tres dedos sobre la superficie y controlando el movimiento con desplazamientos de los mismos.

La efectividad del parámetro ‘Persistence’ también ha sido comprobada en movimientos rápidos. Gracias a esta posibilidad, la aplicación, ha permitido arrastrar iconos y realizar selecciones y copias de archivos de una carpeta a otra.

b). Rotación, escalado y translación de forma simultánea Se ha podido comprobar mediante el desarrollo de una aplicación de demostración que obtiene la información del parámetro extra contenido en los mensajes de ratón. Ésta permite la previsualización de fotografías situadas en una carpeta, a especificar por el usuario. Una vez especificada, permite la rotación y escalado de las fotografías mediante el uso de múltiples puntos de contacto sobre la superficie.

Page 54: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

54

La aplicación presenta un entorno dividido en dos partes. La parte superior permite navegar a través de las fotografías disponibles a la espera de que alguna de ellas sea arrastrada a la parte inferior. En esta zona se puede manipular, aplicando acciones de translación, rotación y escalado de la forma intuitiva. Todas ellas se han podido aplicar de forma simultánea mediante los movimientos adecuados.

Figura 44: Aplicación demostración 1

Esta aplicación se vale del modo de emulación de dispositivo apuntador para su funcionamiento. También se puede comprobar la efectividad del parámetro de persistencia el cual mantiene la acción a realizar incluso cuando los movimientos se realizan con cierta velocidad. Con la ejecución de esta aplicación, se ha podido verificar el funcionamiento del modo emulado permitiendo la manipulación esperada en cada una de las situaciones.

c). Obtención de todos los puntos de contacto existentes Para ello se ha desarrollado otra aplicación que pretende mostrar el uso del modo libre de emulación. Obteniendo los puntos de contacto mediante el acceso a la memoria compartida, esta aplicación simula la generación de humo en los puntos en los que existe contacto con la superficie multitáctil. Además, permite el cambio de color y tamaño del mismo, manipulando los controles situados en los laterales de la pantalla. Esta manipulación se puede realizar pulsando de forma simultanea en cuantos controles deseemos y, por supuesto, mientras se genera humo en el área habilitada para tal efecto.

Page 55: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

55

Figura 45: Aplicación de demostración 2

Mediante el uso de esta aplicación se ha podido comprobar el uso del modo libre de emulación, demostrando las posibilidades que brinda el acceso a la información, en formato bruto, que el interfaz pone a disposición de las aplicaciones. Mediante el análisis del código también es posible hacerse una idea de la facilidad con la que es posible acceder a los datos compartidos y de la ventaja que esto supone para el programador.

d). Dos modos independientes de funcionamiento de forma simultánea Ambas aplicaciones de demostración han sido ejecutadas a la vez pudiendo coexistir y aprovechando de forma independiente las posibilidades del modo de funcionamiento para el que fueron implementadas. A la vez, el sistema operativo respondía del modo esperado cuando la interacción se realizaba con él.

e). Alto grado de configurabilidad y adaptación al hardware La selección de fuentes de vídeo se realiza sin problemas y las librerías ‘Vfw’ detectan cualquier dispositivo compatible y lo añaden a la lista de forma automática a partir del momento en que el sistema operativo lo detecta. Solo se han encontrado disponibles aquellas fuentes que estén activas antes del momento de arranque de la aplicación, por lo tanto, no se ha reconocido ninguna fuente de vídeo que se haya conectado durante la ejecución. Cerrando la aplicación y volviendo a ejecutar, hemos logrado tener disponible el nuevo dispositivo.

Una vez seleccionada la fuente, ha sido posible manipular los parámetros de configuración proporcionados por el driver del fabricante a través del cuadro de diálogo correspondiente. Su funcionamiento ha sido comprobado, tanto con la cámara empleada para desarrollar el proyecto, una NGS modelo ShowCam Plus, de cierta veteranía, como con la cámara integrada en el portátil SONY VAIO VGN-SZ1XP, utilizado también en el desarrollo del proyecto. A pesar de la imposibilidad, de esta última, de ser utilizada para la captura de puntos, presenta un hardware distinto y nos ha permitido verificar el funcionamiento con diferentes tipos de hardware de captura. Ambas cámaras han dado los resultados esperados permitiendo, sin problemas, su selección y configuración a través del software desarrollado.

Modificando los valores referentes al threshold se ha podido ajustar la sensibilidad del sistema utilizando la cámara NGS ShowCamPlus modificada.

Page 56: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

56

Al incrementar por encima de 2 el parámetro ‘Threshold tolerance’ hemos obtenido un sistema mucho más fiable y estable pero con una sensibilidad inferior a la deseada. Al decrementarlo, hemos conseguido aumentar la sensibilidad del sistema al tacto pero, a la a vez, hemos provocado un descenso de fiabilidad y estabilidad, incurriendo en algunas imprecisiones y provocado falsos puntos de contacto. Manteniendo el valor en 2, el

comportamiento del sistema ha sido óptimo.

La iluminación ambiental ha sido también evaluada y se ha evidenciado una preferencia por iluminaciones tenues o nulas, tanto para el funcionamiento del sistema multitáctil como para el uso de proyectores para trasladar la pantalla del ordenador a la superficie multitáctil. Este problema se ha podido solucionar, en algunas ocasiones, activando la selección automática de sensibilidad a la luz del driver de la webcam.

Las pruebas indican que los parámetros de configuración del módulo de captura y procesado de puntos proporcionan un potente sistema de procesado de imágenes que permite exprimir al máximo las posibilidades que nos brinda el hardware empleado. Esto evidencia una alta adaptación a las particularidades de cada conjunto de hardware.

f). Almacenado restauración de configuraciones Las opciones de arranque de la aplicación se han verificado mediante la especificación de ficheros de configuración iniciales y mediante la manipulación de las opciones de captura automática y ocultación de la ventana principal. Éstas posibilidades han permitido que, provocando la ejecución en el arranque del sistema y especificando las opciones pertinentes, al arrancar el ordenador el sistema haya quedado operativo. Se ha mantenido el calibrado almacenado en el fichero de configuración y esto ha permitido el uso del interfaz desde el inicio, de forma automática y sin manipulación extra por parte del usuario. Por consiguiente, queda también verificado el funcionamiento del almacenamiento y recuperación de configuraciones y de la ocultación de la ventana principal incluidas en el menú ‘Device’.

Page 57: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

57

Conclusiones y Trabajo Futuro Desde un principio, el proyecto no pretendía sustituir el actual hardware de interfaz multitáctil pero sí pretendía probar que no es necesario la inversión de excesivas cantidades de dinero para disfrutar de una sensación similar a la proporcionada por estos dispositivos. El resultado obtenido permite el uso de un interfaz multitáctil que brinda la posibilidad de desarrollar aplicaciones más intuitivas y más eficientes con un coste de desarrollo mucho menor que el de los dispositivos proporcionados por Microsoft o Apple.

También se puede deducir, del proceso de testeo, que adquiriendo un hardware dedicado de mayor calidad (como una webcam de infrarrojos) es posible aumentar el rendimiento y atenuar las limitaciones procedentes del entorno físico donde se utiliza el sistema. A esta inversión se podría añadir el uso de filtros de infrarrojos más específicos adaptados a la longitud de onda correspondiente a la iluminación de la superficie táctil. Mediante estos avances lograríamos aislar, con mayor efectividad, la luz procedente de un contacto con la superficie, sin que ello conlleve la variación del software controlador.

También mejoraría el rendimiento, el uso de materiales mejor adaptados a la reflexión total interna y con una sensibilidad mayor al contacto con el dedo. De la misma manera, la posibilidad de reducir la fricción entre la superficie y el dedo ayudaría a facilitar los desplazamientos rápidos y a mejorar, por lo tanto, la eficacia del sistema en general. Asimismo, una iluminación de mayor intensidad de la superficie multitáctil también contribuiría a la mejora en este aspecto.

Como trabajo futuro sobre el software controlador, ayudaría la incorporación de filtros para el threshold que se adapten a nuevas situaciones, y la mejora del cálculo del mismo basándose en algoritmos más complejos de procesado del histograma y la imagen.

También sería útil la incorporación de un nuevo módulo de interpretación de puntos que permitiera el escalado y rotación de diferentes objetos de la pantalla a la vez.

A su vez, la programación de librerías para su uso en lenguajes de programación de alto nivel, tales como Visual Basic, Java o incluso aplicaciones en formato Web basadas en Flash, favorecería la difusión del sistema y el desarrollo de aplicaciones basadas en él.

Otra característica a tener en cuenta es que el sistema ha sido desarrollado mediante un ordenador relativamente antiguo, lo cual demuestra que no es necesaria una gran potencia para la ejecución de la aplicación y, por lo tanto, hace pensar que en configuraciones más modernas de hardware la fluidez con la que el sistema es capaz de actuar resulta mucho mayor. Además, este incremento en la velocidad de proceso favorece a la precisión permitiendo el incremento de las resoluciones y la cantidad de fotogramas por segundo empleadas por la webcam.

Mediante estas conclusiones, y la evaluación general del sistema, es posible afirmar que los objetivos iniciales de bajo coste y adaptabilidad a diversos tipos de hardware, han sido alcanzados, al igual que la posibilidad de disfrutar de una interfaz multitáctil de funcionalidad plena sin la necesidad de someterse a las exigencias económicas de las grandes empresas informáticas.

Page 58: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

58

Recursos Utilizados A. Hardware

• Webcam NGS ShowCam Plus (modificada)

• Superficie sensible al tacto de 600x400mm

• Ordenador SONY Vaio VGN-SZ1XP

• Proyector SONY Bravia

B. Desarrollo de Software controlador

• Windows XP Professional Edition, version 2002, con Service Pack 2

• Driver de webcam NGS ShowCam Plus para Windows 98

• Microsoft Visual Studio 98 (licencia MSDNAA estudiante)

C. Desarrollo de aplicaciones de demostración

• Windows XP Professional Edition, versión 2002, con Service Pack 2

• Microsoft Visual Studio 2005 (licencia MSDNAA estudiante)

• DirectX 9.0 SDK

D. Bibliografía

• Tipler Física** – Traducció de la tercera edició normalitzada: Editorial Reverté S.A. - 1994

E. Bibliografía Web

• http://es.wikipedia.org/wiki/Webcam (sensores de webcam)

• http://j.orellana.free.fr/textos/luz_solar.htm (Emisión de radiación infrarroja)

• http://es.wikipedia.org/wiki/Luz (Espectro Lumínico)

• http://es.wikipedia.org/wiki/Infrarrojos (Radiación Infrarroja)

• http://es.wikipedia.org/wiki/Fotograf%C3%ADa_infrarroja (Filtro Pasa-Infrarrojos)

• http://www.resopal.com/IT/ES/PT/Metacrilato.htm (Índ.Refr. del metraquilato)

• http://es.wikipedia.org/wiki/%C3%8Dndice_de_refracci%C3%B3n (Ind.Refr. del aire)

• http://es.wikipedia.org/wiki/Reflexi%C3%B3n_interna_total (Reflexión total interna)

• http://es.wikipedia.org/wiki/Escala_de_sensibilidad_fotogr%C3%A1fica (Sensibilidad a la luz del carrete fotográfico)

Page 59: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

59

• http://es.wikipedia.org/wiki/Emulsi%C3%B3n_fotogr%C3%A1fica (Emulsión fotográfica)

Page 60: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

60

Anexos 1. Anexo 1: Sensores de Imagen http://es.wikipedia.org/wiki/Webcam

Los sensores de imagen pueden ser CCD (charge coupled device) o CMOS (complementary metal oxide semiconductor). Este último suele ser el habitual en cámaras de bajo coste, aunque eso no signifique necesariamente que cualquier cámara CCD sea mejor que cualquiera CMOS. Las webcams para usuarios medios suelen ofrecer una resolución VGA (640x480) con una tasa de unos 30 frames por segundo, si bien en la actualidad están ofreciendo resoluciones medias de 1 - 1,3 MP.La circuitería electrónica es la encargada de leer la imagen del sensor y transmitirla a la computadora. Algunas cámaras usan un sensor CMOS integrado con la circuitería en un único chip de silicio para ahorrar espacio y costes. El modo en que funciona el sensor es equivalente al de una cámara digital normal.

Figura 46: Sensor CCD

Figura 47: Sensor CMOS

Page 61: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

61

2. Anexo 2: Emisión de Radiación Infrarroja http://j.orellana.free.fr/textos/luz_solar.htm

El hecho de que la energía infrarroja es una forma de luz invisible fue descubierto a principios del siglo XIX por sir William Herschel, uno de los más grandes científicos de su época, y uno de los primeros en astronomía estelar, el cual se interesó por las manchas solares y comenzó a examinar la luz con una gran variedad de filtros de diversos colores. En 1800 descubrió que si bien algunos producían un efecto calorífico, otros no lo hacían, e investigó la causa de esa diferencia. Utilizando un prisma extendió un haz de luz solar formando la banda continua de color llamada espectro, roja en un extremo, y que pasa a través del anaranjado y amarillo al verde, azul y violeta al otro extremo. Observó que el amarillo era la luz más brillante, que el rojo era el que emitía más calor, y vio con sorpresa que la mayor temperatura de todas se hallaba en radiación invisible justo por bajo de la luz roja visible. Esta luz infrarroja - "bajo el rojo" - es una parte prominente de la radiación emitida por cualquier objeto caliente

Estas imágenes nos dan una idea de la diferencia entre una imagen obtenida mediante la detección de la luz emitida en el rango visible y en el rango infrarrojo, y cómo, la de luz infrarroja, brinda información que no podríamos obtener a través de una imagen de luz visible.

Figura 48: Imagen en color estándar

Figura 49: Imagen infrarroja

Page 62: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

62

3. Anexo 3: Espectro Lumínico http://es.wikipedia.org/wiki/Luz

El espectro electromagnético está constituido por todos los posibles niveles de energía que la luz puede tomar. Hablar de energía es equivalente a hablar de longitud de onda; luego, el espectro electromagnético abarca, también, todas las longitudes de onda que la luz pueda tener, desde miles de kilómetros hasta femtómetros. Es por eso que la mayor parte de las representaciones esquemáticas del espectro suelen tener escala logarítmica.

Figura 50: Espectro lumínico

El Sol emite radiaciones dentro de un amplio rango de este espectro, incluyendo el rango de los infrarrojos. En cambio, la iluminación artificial emite una cantidad muy baja de esta radiación, la cual cosa permite iluminar cualquier entorno para que el ser humano pueda verlo, sin que esto suponga una modificación de la radiación infrarroja existente.

Page 63: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

63

4. Anexo 4: La radiación Infrarroja http://es.wikipedia.org/wiki/Infrarrojos

La radiación infrarroja, radiación térmica o radiación IR es un tipo de radiación electromagnética de mayor longitud de onda que la luz visible, pero menor que la de las microondas. Consecuentemente, tiene menor frecuencia que la luz visible y mayor que las microondas. Su rango de longitudes de onda va desde unos 700 nanómetros hasta 1 milímetro. La radiación infrarroja es emitida por cualquier cuerpo cuya temperatura sea mayor que 0 Kelvin, es decir, −273,15 grados Celsius (cero absoluto).

Características de la radiación infrarroja El nombre de infrarrojo significa ‘por debajo del rojo’ pues su comienzo se encuentra adyacente al color rojo del espectro visible.

Los infrarrojos se pueden categorizar en:

• infrarrojo cercano (0,78-1,1 µm)

• infrarrojo medio (1,1-15 µm)

• infrarrojo lejano (15-100 µm)

La materia, por su caracterización energética emite radiación. En general, la longitud de onda donde un cuerpo emite el máximo de radiación es inversamente proporcional a la temperatura de éste (Ley de Wien). De esta forma la mayoría de los objetos a temperaturas cotidianas tienen su máximo de emisión en el infrarrojo. Los seres vivos, en especial los mamíferos, emiten una gran proporción de radiación en la parte del espectro infrarrojo, debido a su calor corporal.

Page 64: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

64

5. Anexo 5: Filtro Pasa-infrarrojos http://es.wikipedia.org/wiki/Fotograf%C3%ADa_infrarroja

Los filtros infrarrojos tienen como misión excluir la radiación ultravioleta y la totalidad o gran parte del espectro visible, dejando pasar a través del objetivo de la cámara solamente el espectro infrarrojo. Sin un filtro de infrarrojo, la película absorbería todo el espectro dejando el negativo inservible.

En el mercado se pueden encontrar diferentes tipos de filtros infrarrojo, según las necesidades. Básicamente, difieren, en la cantidad de espectro infrarrojo que dejan pasar. A mayor cantidad de espectro infrarrojo, el efecto en la película se acentuará. De las marcas más populares que comercializan estos filtros, se destacan Hoya, Tiffen y Kodak.

Hoy en día, la experimentación con el infrarrojo en cámaras fotográficas digitales se basa en desposeer a estas del filtro "hot mirror" que las protege de esta radiación. Con esta pequeña operación, se consigue, que algunas máquinas digitales del mercado, acompañadas de un filtro infrarrojo, consigan fotografías infrarrojas.

Page 65: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

65

6. Anexo 6: Histograma En estadística, un histograma es una representación gráfica de una variable en forma de barras, donde la superficie de cada barra es proporcional a la frecuencia de los valores representados. En el eje vertical se representan las frecuencias, y en el eje horizontal los valores de las variables, normalmente señalando las marcas de clase, es decir, la mitad del intervalo en el que están agrupados los datos.

En este caso, el histograma representa la frecuencia con la que un color aparece en una imagen.

Figura 51: Imagen analizada

Figura 52: Histograma resultante

Page 66: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

66

7. Anexo 7: Índices de Refracción del Metacrilato y el Aire http://www.resopal.com/IT/ES/PT/Metacrilato.htm

PROPIEDADES OPTICAS(de tipos incoloros) Norma Unidad Colada Extrusión

Transmisión del material en 3 mm, campo visible (380...780mm)Iluminación standard D65 DIN 5036 % 92 92

Pérdida por reflexión en el campo visible (para cada superficie límite) - % 4 4

Transmisión total de energía (Espesor 3 mm) DIN67507 % 85 85 Grado de absorción en el campo visible (Esp. 3 mm) - % <0.05 <0.05

Índice de refracción n 20/D DIN53491 - 1.491 1.491

http://es.wikipedia.org/wiki/%C3%8Dndice_de_refracci%C3%B3n

Material Índice de refracción

Aire (*) 1,00029

Ángulo crítico13:

º1.41)716708853118.0arcsin(491.1

00029.1arcsinarcsin1

2 ==⎟⎠⎞

⎜⎝⎛=⎟⎟

⎞⎜⎜⎝

⎛=

nn

Fórmula 4:Obtención del ángulo crítico del paso de luz del metacrilato transparente al aire

Es decir, aquellos rayos de luz que incidan en el aire contiguo al metacrilato con un ángulo superior a los 41.1º, serán reflejados nuevamente hacia su interior con el mismo ángulo de incidencia. Al llegar al otro extremo del metacrilato sufrirán el mismo efecto repitiéndose hasta incidir con un ángulo inferior al crítico.

Si el medio con el que se encuentra el rayo de luz, es un dedo en vez del aire, se modificará el ángulo crítico, ya que su índice de refracción es diferente al del aire, permitiendo el paso del rayo e iluminando la superficie del dedo. Esto provocara que el rayo de luz retorne al interior con un ángulo inferior al crítico y, por consiguiente, al llegar al otro lado del metacrilato, lo atravesará saliendo al exterior.

13 Anexo 8: Reflexión total Interna

Page 67: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

67

8. Anexo 8: Reflexión total Interna http://es.wikipedia.org/wiki/Reflexi%C3%B3n_interna_total

Se denomina reflexión interna total al fenómeno que se produce cuando un rayo de luz, atravesando un medio de índice de refracción n más grande que el índice de refracción en el que este se encuentra, se refracta de tal modo que no es capaz de atravesar la superficie entre ambos medios reflejándose completamente.

Este fenómeno solo se produce para ángulos de incidencia superiores a un cierto valor crítico, θc. Para ángulos mayores la luz deja de atravesar la superficie y es reflejada internamente de manera total. La reflexión interna total solamente ocurre en rayos viajando de un medio de alto índice refractivo hacia medios de menor índice de refracción.

El ángulo crítico también es el ángulo mínimo de incidencia en el cual se produce la reflexión interna total. El ángulo de incidencia se mide respecto a la normal de la separación de los medios. El ángulo crítico viene dado por:

Fórmula 5:ángulo crítico

Page 68: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

68

9. Anexo 9: Cálculo de la Resistencia Limitadora Para el cálculo de la resistencia limitadora de corriente es necesario conocer la tensión de alimentación y la tensión que queremos proporcionar al diodo, así como la intensidad de corriente que queremos que circule. La combinación de ambos parámetros determinara la intensidad con la cual se iluminará el diodo L.E.D.

Figura 53: Esquema del circuito para la iluminación de un diodo LED

f

fdd

IVV

Rs−

=

Fórmula 6:Resistencia limitadora

Ω=⇒−

=⇒

⎪⎪⎭

⎪⎪⎬

=

=

=

− 6010·50

25

50

2

5

3 ss

f

f

dd

RR

mAI

VV

VV

Fórmula 7:Cálculo de la resistencia limitadora un caso concreto

El valor de resistencia estándar más cercano es el de 47 Ohm el cual nos proporcionará una corriente suficiente para la iluminación del L.E.D.

Page 69: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

69

10. Anexo 10: Cálculo del Polinomio Corrector de Perspectiva Resolución del sistema con los datos disponibles

( ) ( )( )

( ) ⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

−⎟⎠⎞

⎜⎝⎛

=

−=

⇒⎪⎭

⎪⎬⎫

⎪⎩

⎪⎨⎧

=+

=+

2

22

2

21

1

21··

1)1·()1·(

médiamédia

médiamédiamédia B

BA

BA

BA

λλ

λλλ

Fórmula 8:Cálculo del polinomio corrector

Polinomio corrector en función de los valores hallando los valores A y B

corregidaXBXA λ=+ ·· 2

Cálculo de la λ corregida utilizando el polinomio corrector

⎪⎭

⎪⎬⎫

⎪⎩

⎪⎨⎧

=

+=

original

Corregida

XXBXA

λ

λ ·· 2

Fórmula 9:Cálculo de la λ corregida utilizando el polinomio corrector

Por ejemplo, para si obtenemos un punto central de la diagonal de la imagen de la cámara correspondiente a λmedia=0.6, obtendríamos una corrección como esta:

Figura 54: Representación del polinomio corrector cuando λmedia=0.6

Page 70: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

70

Si observamos la gráfica, veremos que en el punto 0.6, correspondiente al centro de la diagonal con perspectiva, obtenemos el valor 0.5, que correspondería al centro de la diagonal de la pantalla. Asimismo, podemos comprobar como en los extremos 0 y 1 esta relación también resulta válida.

Si, por otro lado, el parámetro λ nos indicara un valor 0.4 la corrección aplicada correspondería a la siguiente gráfica dónde también es posible verificar las relaciones anteriores:

Figura 55: Representación del polinomio corrector cuando λmedia=0.4

Page 71: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

71

11. Anexo 11: Datasheet L.E.D.s

Page 72: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

72

Page 73: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

73

Page 74: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

74

Page 75: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

75

Page 76: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

76

12. Anexo 12: Sensibilidad a la Luz del Carrete Fotográfico http://es.wikipedia.org/wiki/Escala_de_sensibilidad_fotogr%C3%A1fica

Físicamente se define la sensibilidad como la inversa de la entrada necesaria para obtener una respuesta predeterminada en un sistema.

En fotografía la entrada es la exposición y la salida es la densidad obtenida. La sensibilidad fotográfica por tanto puede definirse como la inversa de la exposición necesaria para obtener una densidad predeterminada.

Las distintas escalas de sensibilidad fotográfica están clasificadas en función del tipo de emulsión fotográfica presente en la película.

Page 77: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

77

13. Anexo 13: Emulsión Fotográfica http://es.wikipedia.org/wiki/Emulsi%C3%B3n_fotogr%C3%A1fica

Una emulsión fotográfica es una fina capa sensible a la luz sobre un soporte como cristal, celulosa o poliéster. La emulsión fotográfica es la base de una película o placa fotográfica.

En realidad no se trata de ninguna emulsión sino más bien una suspensión, una colmatación de finos cristales sensibles a la luz repartidos en una gelatina, por tanto un gel. Sin embargo el término emulsión, aunque erróneo, quedó generalizado. Esos cristales sensibles a la luz son conocidos como sales o haluros de plata.

Tras la exposición a la luz los cristales suficientemente iluminados se transforman en plata metálica, y los demás todavía en forma de sales serán lavados (eliminados) durante el proceso de fijación quedando así la emulsión estabilizada. Éste es el principio del negativo.

Aunque los cristales de plata son sensibles a la luz, no lo son a toda la gama cromática sino sólo a la de onda más corta, es decir a los tonos azules. Para hacer una emulsión sensible a todo el espectro electromagnético visible, se recubren las partículas con unos tintes moleculares que captan fotones y los envían a los cristales.

En película de color y diapositiva se emplea un proceso más complejo de distintas capas de emulsiones sensibles a distintas longitudes de onda separadas por filtros de colores. De modo que la primera capa recibe la luz azul, debajo se encuentra un filtro amarillo que permite el paso de las restantes longitudes de ondas y la siguiente emulsión que al no ser sensible al rojo solo recogerá los tonos verdes, luego otro filtro rojo para la tercera emulsión que es sensible a éste color.

A. Emulsión Ortocromática La emulsión ortocromática es sensible a todas las longitudes de onda visibles excepto el rojo. Es por ello que en los comienzos de la fotografía solían maquillarse bastamente a los fotografiados, causando en ocasiones una sensación extraña.

Suelen usarse hoy día las emulsiones ortocromáticas para el trabajo de fotografía en blanco y negro, por ejemplo en la ampliación del negativo (paso al papel) donde la emulsión del papel no necesita ser sensible al rojo pues sólo ha de recibir la imagen en blanco y negro del negativo y de este modo se facilita el trabajo en el laboratorio mediante una luz roja que no vela el papel.

B. Emulsión Pancromática La emulsión pancromática es sensible a todo el espectro electromagnético visible. Ello se consigue mediante la fabricación de la emulsión con unos aditivos especiales que absorben la luz.

Las películas pancromáticas recogen el tono correcto de los colores, es decir la sensación de tonos de grises que corresponden a la impresión de luminosidad del ojo humano. La película en blanco y negro usada aún hoy día son casi sin excepción sensibilizadas de modo pancromático.

Para la producción de fotografía en blanco y negro con un tono correcto a partir de negativos de color existen algunos papeles fotográficos de emulsión pancromática, por ejemplo: Kodak Panalure. Sin embargo éstos no pueden revelarse en un típico laboratorio con luz roja. Existen no obstante unas lámparas de vapor de sodio que pueden usarse de modo controlado debido a su escasa franja cromática de 589nm.

Page 78: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

78

C. Conclusión Útil Si exponemos un negativo a todo el rango de radiaciones lumínicas excepto a la infrarroja, éste se transformará en un filtro que eliminará todas las radiaciones excepto esta última debido a su carácter negativo.

Las cámaras fotográficas también incorporan un filtro tapa-infrarrojos en su lente, por lo tanto, cualquier negativo velado no habrá recibido, en principio, radiación procedente de la franja infrarroja.

Page 79: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

79

14. Anexo 14: Declaración de confidencialidad

Esta declaración de confidencialidad afecta tanto a los algoritmos a los que se hace referencia en este documento como al software resultante de la implementación de este proyecto.

Ambos se encuentran a la espera de obtener las patentes y registros pertinentes.

La titularidad, gestión y licencia de los resultados de este proyecto están sometidos a la normativa establecida por la Universitat Rovira i Virgili para tal efecto el 18 de Febrero del 2004.

Page 80: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

80

Manual de Usuario 1. Descripción ‘Multitouch’ se trata de una aplicación que se encarga de proporcionar un interfaz multitáctil a través de la captura de imágenes infrarrojas. Toda parte iluminada de la imagen obtenida mediante la webcam, será considerada un punto de contacto.

1.1. Modos de Funcionamiento:

1.1.1. Modo Emulación de Dispositivo Apuntador Es necesaria su activación en la configuración de la aplicación. En este modo, la aplicación emula el funcionamiento de un ratón estándar controlando el puntero del sistema.

La emulación de las pulsaciones en los botones se realiza enviando los mensajes necesarios al sistema operativo según la configuración establecida. La información referente al interfaz multitáctil se envía en la parte de información extra contenida en el mensaje de ratón estándar.

Se puede acceder a esta información mediante el uso de la función ‘GetMessageExtraInfo’, la cual nos proporcionará un valor de 32 bits. Este valor nos indicará el ángulo de rotación en sus 16 bits bajos y el parámetro de escalado en los 16 bits altos.

El acceso a esta información extra del mensaje del ratón, se encuentra descrita en http://msdn.microsoft.com/en-us/library/ms644937(VS.85).aspx

1.1.2. Modo libre de Emulación Este modo se encuentra siempre activo, dejando la información en una zona de memoria compartida.

Ésta es generada a través de un fichero mapeado en memoria llamado "Local\\MultitouchInfoFile".

Para el acceso seguro a esta zona de memoria es necesario la sincronización, entre todas las aplicaciones que la utilizan, mediante el uso de zonas de exclusión mutua. Esta exclusión mutua debe estar controlada por un objeto ‘mutex’ llamado “MultitouchMutexName”.

Antes de la lectura de la memoria compartida es necesario esperar a que dicho objeto nos de permiso para hacerlo mediante la función ‘WaitForSingleObject’.

La información que se almacena en la zona de memoria compartida se encuentra definida por un fichero de cabecera ‘MultitocuhInfo.h’ que contiene el siguiente código:

#define MULTITOUCH_SHARED_FILENAME TEXT("Local\\MultitouchInfoFile")

#define MULTITOUCH_MUTEX_NAME TEXT("MultitouchMutexName")

typedef struct tMultitouchInfo

unsigned char nPoints;

float pX[100];

float pY[100];

;

Page 81: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

81

El valor ‘nPoints’ nos indicará la cantidad de puntos de contacto en la superficie, las coordenadas de los cuales estarán contenidas en pX[n] y pY[n], siendo 0≤n<nPoints.

El uso de los ficheros mapeados en memoria y de los objetos mutex se encuentra descrito en http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx y http://msdn.microsoft.com/en-us/library/ms687032.aspx respectivamente.

En http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx es posible encontrar ejemplos del uso de memoria compartida.

Page 82: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

82

2. Instalación El software consta de un único fichero ejecutable (‘Multitouch.exe’) que contiene la aplicación controladora. Es posible situarla en cualquier localización sin necesidad de adjuntar ningún fichero en su mismo directorio.

Si la aplicación no encuentra los ficheros de configuración iniciales, ésta los creará de nuevo con la configuración por defecto.

Es posible utilizar el instalador, el cual copiará la aplicación en el lugar indicado e incluirá este manual de uso y el fichero ‘MultitocuhInfo.h’.

Figura 56: Aplicación de instalación

Page 83: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

83

3. Configuración 3.1. Menú ‘Device’

• Load Settings: Permite la recuperación de configuraciones del sistema almacenadas en un fichero.

• Save Settings: Permite el almacenamiento de configuraciones del sistema en un fichero

• Hide: Oculta la ventana principal y deja, en su lugar, un icono en la zona de ‘systray’ del sistema operativo. Pulsando sobre este icono con el botón derecho del ratón, se accede a un menú resumido que permite la manipulación de las opciones básicas del sistema.

• Quit: Finaliza la aplicación

3.2. Menú ‘Source’

• Select Source: Permite seleccionar el hardware de captura de imágenes que vamos a emplear

• Source Settings: Permite acceder a la configuración proporcionada por el driver del fabricante del hardware de captura

3.3. Menú ‘Capture’

• Points Preview: Permite la visualización en tiempo real de los puntos que obtiene el software de procesado de imágenes

• Image Preview: Permite la visualización en tiempo real de las imágenes que obtiene el hardware de captura

• Start Capture: Inicia la captura de imágenes y, por lo tanto, el funcionamiento del interfaz multitáctil

• Stop Capture: Cesa la captura de imágenes y la actividad del interfaz multitáctil

• Settings: Da acceso al diálogo de configuración del módulo de captura de puntos de la aplicación

Figura 57: Diálogo ‘Capture Settings’

Page 84: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

84

o Intensity Levels: Cantidad máxima de niveles de intensidad con la que el módulo de procesado de imágenes va a trabajar.

o Frames/sec: Este parámetro nos permite determinar la cantidad de imágenes por segundo que vamos a pedir a la webcam. Si ésta no es capaz de alcanzar este valor, sencillamente nos proporcionara su capacidad máxima en cada momento.

o Image Format: Se proporcionan tres formatos predeterminados (i420,YUYV y UYVY). Es importante que se verifique la equivalencia entre el formato especificado en la configuración de la webcam y éste el formato. Si se desea, es posible especificar un formato propio.

o Threshold tolerance: Indica la amplitud, dentro de la gama de intensidades de la imagen, de aquellas que van a ser consideradas como intensidades el fondo. Aquellas partes de la imagen que no estén dentro de esta zona, serán consideradas como puntos iluminados y, por lo tanto, puntos de contacto.

o Threshold mínimo: Valor mínimo que el threshold puede tomar.

o Maximum Pixel Areas: Cantidad máxima de áreas de píxeles con el que el sistema será capaz de funcionar durante la segmentación de la imagen.

o Minimum Area’s mass: Masa mínima, en píxeles, necesaria para que una masa de píxeles sea considerada un punto de contacto. Si es menor, ésta será considerada como ruido y será desechada.

o Maximum Translated Points: Cantidad máxima de puntos de contacto con la que va a trabajar el sistema.

o Minimum Points Distance: Distancia mínima entre dos puntos para que sean considerados dos puntos independientes. Si no es así, serán unidos en uno solo.

3.4. Menú ‘Multitouch’

• Pointing Device Emulation: Activa el modo de emulación de dispositivo multitáctil

• Calibrate: Accede a las opciones de calibrado del sistema

o New Calibration: Permite calibrar el interfaz. Pide al usuario que pulse sobre los puntos de la superficie multitáctil en los cuales se situa el cursor del sistema.

o Show Calibration Points: Muestra los puntos de calibrado actuales.

• Settings: Da acceso al diálogo de configuración del módulo de interpretación de puntos de la aplicación.

Figura 58: Diálogo Multitouch Settings

Page 85: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

85

Cuando el modo de emulación de dispositivo apuntador está activo, el sistema recurre a esta configuración para decidir que botón debe apretar en cada situación. Esta decisión se basa en la cantidad de puntos de contacto simultáneos existentes en cada momento.

o When: Seleccionando de la lista ‘When’ la cantidad de puntos de contacto simultáneos, podemos decidir que botón será emulado en cada momento. Esta decisión se especifica en las opciones de ‘Emulate Options’.

o Persistence: Este parámetro indica al sistema que memorice, durante los fotogramas indicados, la acción que estamos realizando a pesar de haber perdido alguno de los puntos de contacto implicados.

3.5. Menu ‘Boot’

• Settings: Nos da acceso a la configuración de arranque de la aplicación.

Figura 59: Diálogo ‘Boot Settings’

o Start Capture on Boot: Si esta opción se encuentra activa, al iniciarse la aplicación, esta comenzará la captura de imágenes automáticamente con la configuración que tenga en ese momento.

o Hide on Start Capture: En caso de estar activa, esta opción indica al sistema que oculte la ventana principal en cuanto comience la captura de imágenes.

o Keep Default Settings: Esta alternativa indica al sistema que, después del arranque, la configuración por defecto sea la que se encuentre activa.

o Load Existing Settings File: En esta opción podemos establecer una configuración inicial que esté contenida en algún fichero almacenado con anterioridad

Page 86: Diseño e Implementación de un Sistema Multitáctil de …deim.urv.cat/~pfc/docs/pfc901/d1244098633.pdf · 2009-06-04 · La gran limitación del ratón se encuentra en la imposibilidad

86

4. Requisitos del sistema 4.1. Hardware

• Superficie emisora de luz infrarroja

• Proyector estándar

• Webcam sensible a luz infrarroja

• Procesador 32 bits (Intel/AMD)

• 64 MB de RAM

4.2. Software

• Windows XP