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

Transcripción

Diseño e Implementación de un Sistema Multitáctil de Bajo Coste
Departament d’Enginyeria Informàtica i M atemàtiques
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.
Í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
2
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
3
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.
4
•
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
5
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.
6
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.
7
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.
8
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
9
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
10
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
11
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:
12
4.
•
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.
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.
13
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.
14
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
2
Anexo 1: Sensores de Imagen
Anexo 8: Reflexión total Interna
15
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
16
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
17
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
18
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’.
19
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
20
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
21
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
22
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.
23
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.
24
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.
25
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.
26
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
27
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.
28
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.
29
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
30
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
31
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
32
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.
33
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
34
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
35
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
36
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.
37
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.
Área = π * Radio2
Fórmula 1:Área de la circunferencia
38
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;
39
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
40
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.
41
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 λ.
X = λ ·V X + Px
Y = λ ·VY + PY
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
42
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.
A·0 2 + B·0 = 0
A·(λ media ) + B·λ media
2
A·12 + B·1 = 1
⎫
⎪
1⎪
= ⎬
2⎪
⎪⎭
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
43
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.
44
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.
45
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.
46
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.
47
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
48
É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
49
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
50
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.
51
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.
52
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.
53
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.
54
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.
55
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’.
56
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.
57
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
C.
(licencia MSDNAA estudiante)
Desarrollo de aplicaciones de demostración
•
Windows XP Professional Edition, versión 2002, con Service Pack 2
•
Microsoft Visual Studio 2005
•
DirectX 9.0 SDK
D.
•
E.
(licencia MSDNAA estudiante)
Bibliografía
Tipler Física** – Traducció de la tercera edició normalitzada: Editorial Reverté
S.A. - 1994
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)
58
•
http://es.wikipedia.org/wiki/Emulsi%C3%B3n_fotogr%C3%A1fica (Emulsión
fotográfica)
59
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
60
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
61
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.
62
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.
63
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.
64
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
65
7.
Anexo 7: Índices de Refracción del Metacrilato y el Aire
http://www.resopal.com/IT/ES/PT/Metacrilato.htm
PROPIEDADES
(de tipos incoloros)
OPTICAS
Unidad
Colada
Extrusión
Transmisión del material en 3 mm, campo visible (380...780mm)
DIN 5036
Iluminación standard D65
%
92
92
Pérdida
por
reflexión
(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
en
el
campo
visible
Norma
http://es.wikipedia.org/wiki/%C3%8Dndice_de_refracci%C3%B3n
Material
Índice de refracción
Aire (*)
1,00029
Ángulo crítico13:
⎛ n2 ⎞
⎛ 1.00029 ⎞
⎟⎟ = arcsin⎜
⎟ = arcsin(0.670885311871) = 41.1º
⎝ 1.491 ⎠
⎝ n1 ⎠
θ c = arcsin⎜⎜
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
66
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
67
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
Vdd − V f
Rs =
If
Fórmula 6:Resistencia limitadora
Vdd = 5V
⎫
⎪
5−2
⎪
V f = 2V ⎬ ⇒ Rs =
⇒ Rs = 60Ω
−3
50
·
10
⎪
I f = 50mA⎪
⎭
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.
68
10.
Anexo 10: Cálculo del Polinomio Corrector de Perspectiva
Resolución del sistema con los datos disponibles
⎧ A·(1) 2 + B·(1) = 1
⎪
⎨
2
⎪ A·(λmédia ) + B·(λmédia ) =
⎩
⎧A = 1− B
⎫
⎫ ⎪
⎪
⎪ ⎪
⎛1⎞
2 ⎪
⇒
⎜ ⎟ − (λmédia ) ⎬
1⎬ ⎨
⎪ ⎪B = ⎝ 2 ⎠
⎪
2⎭ ⎪
2
⎪⎭
(
)
λ
−
λ
média
média
⎩
Fórmula 8:Cálculo del polinomio corrector
Polinomio corrector en función de los valores hallando los valores A y B
A· X 2 + B· X = λcorregida
Cálculo de la λ corregida utilizando el polinomio corrector
⎧⎪λCorregida = A· X 2 + B· X ⎫⎪
⎨
⎬
⎪⎩ X = λoriginal
⎪⎭
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
69
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
70
11.
Anexo 11: Datasheet L.E.D.s
71
72
73
74
75
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.
76
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.
77
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.
78
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.
79
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
"Local\\MultitouchInfoFile".
de
un
fichero
mapeado
en
memoria
llamado
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];
} ;
80
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.
81
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
82
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’
83
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
84
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
85
4.
Requisitos del sistema
4.1.
Hardware
4.2.
•
Superficie emisora de luz infrarroja
•
Proyector estándar
•
Webcam sensible a luz infrarroja
•
Procesador 32 bits (Intel/AMD)
•
64 MB de RAM
Software
•
Windows XP
86

Documentos relacionados