Вы находитесь на странице: 1из 86

Departament dEnginyeria Informtica i M atemtiques

Diseo e Implementacin de un Sistema Multitctil de Bajo Coste

TITULACIN: Enginyeria Tcnica en Informtica de Sistemes

AUTOR: Manuel Melgarejo Buera DIRECTOR: Helio Tejedor Navarro FECHA: Junio / 2009.

ndice
ndice..................................................................................................................................... 2 Introduccin.......................................................................................................................... 4 1. 2. 3. El Ratn .................................................................................................................... 4 Dispositivos Tctiles ................................................................................................ 4 2.1. Tecnologas Tctiles .......................................................................................... 4 Evolucin de los Dispositivos Tctiles.................................................................... 5

Objetivos................................................................................................................................ 7 Especificaciones.................................................................................................................... 9 1. 2. Descripcin Bsica del Funcionamiento ................................................................ 9 Modos de Funcionamiento...................................................................................... 9 2.1. Modo Emulacin de Dispositivo Apuntador ..................................................... 9 2.2. Modo Libre de Emulacin............................................................................... 10 Componentes del sistema ...................................................................................... 10 3.1. Webcam ........................................................................................................... 11 3.2. Superficie Multitctil....................................................................................... 11 3.3. Proyector.......................................................................................................... 12 3.4. Software Controlador ...................................................................................... 12 Condiciones de Uso................................................................................................ 13 WebCam ................................................................................................................. 15 Superficie Sensible al Tacto .................................................................................. 15 2.1. Adaptacin de la Superficie Sensible al Tacto a la Retroproyeccin.............. 16 2.2. Adaptacin del Sistema de Deteccin de Puntos a la Retroproyeccin .......... 16 2.3. Captura de la Luz Infrarroja ............................................................................ 17 Visin Global del Hardware ................................................................................. 18 Software.................................................................................................................. 18 4.1. Entorno de Programacin ................................................................................ 19 4.2. Obtencin de Imgenes de la Webcam............................................................ 19 4.3. Procesado de las Imgenes .............................................................................. 20 4.4. Comunicacin entre Aplicacin Controladora y Aplicacin Multitctil......... 24 4.5. Estructuracin de la Aplicacin de Control..................................................... 26 Webcam .................................................................................................................. 29 1.1. Adaptacin a la Luz Infrarroja......................................................................... 30 Superficie Multitctil............................................................................................. 31 2.1. Induccin de la Reflexin Total Interna .......................................................... 31 2.2. Adaptacin del Sistema de Deteccin de Puntos a la Retroproyeccin .......... 35 Software.................................................................................................................. 36 3.1. Mdulo de Procesado de Imgenes ................................................................. 36 2

3.

4. 1. 2.

Diseo.................................................................................................................................. 15

3. 4.

Desarrollo............................................................................................................................ 29 1. 2.

3.

3.2.

Mdulo Principal ............................................................................................. 45

Evaluacin .......................................................................................................................... 53 Conclusiones y Trabajo Futuro ......................................................................................... 57 Recursos Utilizados............................................................................................................. 58 Anexos ................................................................................................................................. 60 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 1. 2. 3. Anexo 1: Sensores de Imagen ............................................................................... 60 Anexo 2: Emisin de Radiacin Infrarroja......................................................... 61 Anexo 3: Espectro Lumnico ................................................................................ 62 Anexo 4: La radiacin Infrarroja ........................................................................ 63 Anexo 5: Filtro Pasa-infrarrojos .......................................................................... 64 Anexo 6: Histograma............................................................................................. 65 Anexo 7: ndices de Refraccin del Metacrilato y el Aire.................................. 66 Anexo 8: Reflexin total Interna .......................................................................... 67 Anexo 9: Clculo de la Resistencia Limitadora .................................................. 68 Anexo 10: Clculo del Polinomio Corrector de Perspectiva.......................... 69 Anexo 11: Datasheet L.E.D.s ............................................................................ 71 Anexo 12: Sensibilidad a la Luz del Carrete Fotogrfico .............................. 76 Anexo 13: Emulsin Fotogrfica...................................................................... 77 Anexo 14: Declaracin de confidencialidad .................................................... 79

Manual de Usuario............................................................................................................. 80 Descripcin............................................................................................................. 80 1.1. Modos de Funcionamiento: ............................................................................. 80 Instalacin .............................................................................................................. 82 Configuracin ........................................................................................................ 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 Requisitos del sistema............................................................................................ 86 4.1. Hardware ......................................................................................................... 86 4.2. Software........................................................................................................... 86

4.

Introduccin
Desde que los ordenadores hicieran su entrada en el mundo domstico, la forma de comunicarse ha evolucionado de forma constante. El ritmo que ha impuesto el abaratamiento de la tecnologa requerida para fabricar perifricos ha permitido una interaccin ms intuitiva entre el hombre y la mquina.

1.

El Ratn

La revolucin lleg en 1968 cuando Douglas Engelbart present el primer ratn de la historia. Hoy en da ste perifrico est totalmente extendido y sin l no se concibe la comunicacin entre el usuario y el ordenador. Cualquiera que sea el sistema operativo que se utilice, este dispositivo, permite bsicamente situar un cursor sobre una posicin concreta. Su velocidad y precisin hace que pueda ser utilizado tanto en una aplicacin de C.A.D. como en un juego de accin.

2.

Dispositivos Tctiles

En 1983, Hewlett-Packard, comercializ el primer ordenador con una pantalla que permita al usuario pulsar con un dedo directamente sobre la pantalla. Esta posibilidad eliminaba la necesidad de situar un cursor sobre una posicin y, sobretodo, evitaba la necesidad de manipular ningn mando para ejercer una accin sobre ese punto. En este caso, el hecho de pulsar, ya indicaba la accin que se deseaba hacer. 2.1. Tecnologas Tctiles Desde entonces la tecnologa tctil se ha ido incorporando a los dispositivos informticos y electrnicos, gracias a su uso ms intuitivo, y ha evolucionado dando lugar a diferentes tecnologas. Resistiva: Basada en los cambios de resistencia que el contacto de algn elemento provoca en una capa de material conductor translcido situado sobre la superficie dnde se genera la imagen. Onda Acstica Superficial (SAW): Esta tecnologa se vale de la transmisin de ondas de ultrasonidos a travs de la superficie tctil y el procesamiento de los cambios sufridos por estas ondas cuando algn 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 tctil, detectan el haz de infrarrojos emitidos por otra serie de emisores situados en el lado contrario. En el momento que algn elemento entra en contacto con la superficie, el haz es interrumpido y los receptores registran su posicin 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 Extensiomtrica: La pantalla se sita sobre unas galgas extensiomtricas que se encargan de registrar la presin ejercida en varios puntos preestablecidos de la pantalla. Esta informacin se utiliza para calcular el punto exacto donde se ha ejercido la presin sobre la superficie.

Tecnologa de Seal Dispersiva: Mediante la medicin de la energa mecnica producida al tocar la superficie, se calcula el punto exacto el cual origin la energa a travs complejos algoritmos. Reconocimiento de Pulso Acstico: Cuatro transductores piezoelctricos situados en las esquinas de la superficie tctil se encargan de convertir la energa mecnica, generada por el contacto de algn elemento con la superficie, en una onda de sonido. sta es comparada con una serie de patrones preestablecidos que permiten situar la posicin originaria del contacto. Imagen ptica: Mediante luz infrarroja se iluminan dos laterales de la superficie tctil y dos cmaras procesan las sombras formadas en cada lateral. Mediante esta informacin se triangula la posicin del plano donde se produjo en contacto.

Todas estas tecnologas han ido evolucionando y disminuyendo su precio de forma progresiva. Esta razn ha permitido su utilizacin en dispositivos cada vez ms populares y ms baratos y que, a su vez, ha dado lugar a nuevas formas de interactuar con las mquinas. Se hace muy difcil elegir cual de estas tecnologas es la mejor o la mas til, ya que todas ellas tienen ventajas y desventajas, pero la lgica dice que la ms utilizada es, en principio, la ms econmica y fcil de implementar. Al final el resultado es siempre el mismo: Que el dispositivo reaccione al tocar su superficie.

3.

Evolucin de los Dispositivos Tctiles

La evolucin llega en el momento que la tecnologa permite mltiples puntos de contacto. Este tipo de interfaz proporciona una interaccin mucho ms intuitiva con el entorno representado por la pantalla. Acciones como escalados y rotaciones resultan ms directas que con los sistemas anteriores. Como contrapartida, sta tecnologa resulta excesivamente cara para su popularizacin y, de momento, queda reservada a dispositivos muy selectos. Actualmente, empresas como Microsoft o Apple, disponen dispositivos basados en interfaces multitctiles tales como el iPhone (Apple) o el Touch Wall (Microsoft). En el caso de Apple, se ha apostado por una pantalla evolucionada sobre una tecnologa capacitiva. Su coste obliga a limitar su tamao lo cual lo hace ideal para dispositivos pequeos tales como los telfonos mviles pero no para grandes pantallas donde realizar presentaciones multitudinarias.

Figura 1: Fotografa del iPhone de Apple Con pantalla multitcil capacitiva

Es en este campo donde Microsoft ofrece su dispositivo, basado en una tecnologa ptica, que utiliza una serie de cmaras para recoger imgenes de la superficie tctil. Despus de su procesado, stas proporcionan los puntos de contacto sobre la superficie. ste sistema

permite dispositivos de mayor superficie multitctil sin que este parmetro 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

Pequeas empresas y usuarios se encuentran con la barrera que la inversin econmica 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.

Objetivos
El objetivo general de este proyecto es proporcionar una plataforma bsica sobre la cual poder desarrollar aplicaciones multitctiles de forma barata. Es necesario un hardware que permita la deteccin de puntos de contacto sobre una superficie en la cual se puedan ver imgenes. La forma ms barata, hoy en da, es la proyeccin de imgenes mediante un proyector estndar. En concreto, la retroproyeccin, evita la sombra que genera el usuario sobre la superficie de proyeccin, por ello, la superficie sensible al tacto debe permitir la retroproyeccin de imgenes. El proyector debe ser usado en condiciones de luz tenue o prcticamente nulas, por lo tanto, el sistema de deteccin de puntos debe ser efectivo en estas condiciones. Es necesario captar los puntos de contacto mediante algn tipo de sensor que no implique una inversin 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 dnde realicemos la retroproyeccin. Se pretende procesar las imgenes que nos proporcionen este perifrico para detectar los puntos dnde ejercemos algn contacto con la superficie sensible al tacto. A pesar de la popularizacin del ratn, ste slo resulta intuitivo a la hora de posicionar el cursor sobre un punto. Para ejercer cualquier otro tipo de accin sobre ese punto, se requiere la manipulacin de algn tipo de mando. Los botones y las ruedas giratorias son aadidos al interfaz, y obligan al usuario a adquirir cierta prctica para utilizar el perifrico con la suficiente soltura. Otro objetivo es el de proporcionar un interfaz ms intuitivo que el del ratn convencional. La interaccin con el sistema operativo mediante el nuevo interfaz debe ser posible, por lo tanto, es necesario emular el funcionamiento de un ratn estndar. De este modo, el nuevo interfaz, podr ser usado como una pantalla tctil convencional. Este hecho extender la compatibilidad a cualquier aplicacin ya existente. La gran limitacin del ratn se encuentra en la imposibilidad de actuar sobre ms de un punto a la vez. Para poder mejorarlo, es necesario superar esta limitacin. Por lo tanto, otro de los objetivos se encuentra en desarrollar un interfaz que sea capaz de tratar con ms 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 multitctiles una forma fcil de detectar estos movimientos. Hasta ahora, estas acciones eran posibles mediante la manipulacin de los botones del ratn y el movimiento del cursor de forma simultnea. Esto limitaba a slo una accin de forma simultnea. Mediante este proyecto se trata de solucionar este problema y permitir las acciones de escalado, rotacin y translacin de forma simultnea. Es posible que los programadores de las aplicaciones multitctiles no deseen obtener parmetros de translacin, rotacin 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 parmetros mencionados anteriormente.

Como consecuencia de la necesidad de compatibilizar el nuevo interfaz con el de un ratn estndar, la posibilidad de obtener todos los puntos de contacto no se puede realizar del mismo modo que la emulacin. 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 emulacin del ratn, proporcionando los parmetros multitctiles. Ambos modos deben poder funcionar de forma simultnea. Tambin se desea que, a pesar de que la filosofa 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 caracterstica tambin est destinada a que pueda utilizarse, no solo como dispositivo apuntador tctil, sino para cualquier otra funcionalidad relacionada con sistema de procesado de imgenes y el interfaz multitctil. Finalmente, este alto grado de configurabilidad evidencia la necesidad del almacenado y restauracin del las opciones de la aplicacin. Esto permitir que los usuarios que no tengan los conocimientos necesarios para su configuracin tengan acceso a su uso. La manipulacin de los parmetros de configuracin pueden dejarse en manos de personas ms cualificadas. Esto deriva en el objetivo de implementar alguna medida que permita el almacenado y restauracin de configuraciones.

Especificaciones
Diseo e implementacin de un sistema capaz de captar varios puntos simultneos de contacto sobre una superficie, sobre la cual es posible proyectar una imagen mediante un proyector estndar.

1.

Descripcin Bsica 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 tamao 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 utilizarn conceptos de geometra afn y correccin de perspectiva.

2.

Modos de Funcionamiento

Una vez calibrado, los puntos obtenidos son procesados de dos manera distintas, segn el objetivo del software que lo utiliza. 2.1. Modo Emulacin de Dispositivo Apuntador Sobre este modo, el software controlador se encarga de determinar los parmetros de escalado y rotacin aplicados sobre un punto en concreto. El centro correspondiente al total de los puntos obtenidos determina la posicin de la accin ya que se mantiene relativamente constante durante todo el proceso. ste tambin proporciona una referencia sobre el movimiento de translacin del total del conjunto de puntos. Una vez calculados dichos parmetros, el software controlador manipula el puntero del sistema operativo para desplazarlo al punto en cuestin y enva la informacin de los parmetros calculados a la aplicacin correspondiente. Adems de la manipulacin del puntero, el software controlador, tambin es capaz de emular las pulsaciones de los botones de un ratn estndar en funcin de la cantidad de puntos de contacto existentes. El botn a emular en cada uno de los casos, es configurable desde el software controlador. En la figura 4 se puede ver representada de forma esquemtica el sistema de comunicacin que emplea este modo de funcionamiento. Se intenta ilustrar el recorrido que realiza la informacin generada por la aplicacin controladora hasta llegar a la aplicacin multitctil. La aplicacin controladora comunica al sistema operativo una localizacin del puntero y un estado de los botones junto con la informacin multitctil. El sistema operativo enva el mensaje a la aplicacin multitctil como si fuera un mensaje de ratn estndar

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

Este modo es desconectable y permite el uso del interfaz multitctil sin la manipulacin del puntero del sistema. 2.2. Modo Libre de Emulacin 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 aplicacin que desee obtener esta informacin del sistema. En este caso, la aplicacin interesada deber efectuar, por s misma, el calculo de los parmetros que desee ya que la nica informacin proporcionada son los puntos de contacto mapeados sobre la pantalla. La aplicacin 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 comunicacin respecto el modo anterior. En este caso, el sistema operativo proporciona una zona de memoria comn a la aplicacin controladora y la aplicacin multitctil dnde se almacenan los datos de los puntos de contacto.

Figura 5: Diagrama del funcionamiento del modo libre de emulacin

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

3.

Componentes del sistema

El sistema funciona a travs del uso combinado de varios recursos, lo cuales tienen una tarea especfica dentro del sistema. El software controlador se encarga de procesar la 10

informacin proporcionada por todos los componentes hardware para conseguir la funcionalidad multitctil deseada. 3.1. Webcam El software controlador obtiene los puntos de contacto mediante el procesado de imgenes obtenidas desde una webcam USB (o cmara compatible), a travs del driver proporcionado por el fabricante del hardware. El acceso a este recurso se realiza de forma estndar utilizando la API Video for Windows. La base sobre la cual se ha diseado el sistema de deteccin de puntos es la posibilidad de generar y detectar luz infrarroja localizndola sobre una superficie y, por lo tanto, la webcam debe filtrar toda radiacin lumnica excepto la que ocupa el rango de frecuencias correspondientes a la luz infrarroja. La calidad general de este elemento, y en concreto su precisin y resolucin, determina, en gran medida, la precisin 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 Multitctil 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 direccin de la webcam. Generalmente la parte que se encuentre en observacin ser la contraria a la parte tctil, as que es necesario que la superficie no sea totalmente opaca y que permita el paso de la luz infrarroja a travs de ella. Si se desean proyectar imgenes sobre esta superficie Ser necesario intercalar otra (cristal glaseado o una lmina de retroproyeccin) que cumpla los requisitos del paso de luz infrarroja especificados anteriormente y que, adems, permita la retroproyeccin de imgenes. En la siguiente figura se puede observar la disposicin habitual de los perifricos si se desean retroproyectar imgenes sobre la superficie multitctil.

Figura 6: Esquema de la disposicin habitual de dispositivos para el uso del sistema

Tambin es posible utilizar el sistema como dispositivo apuntador remoto para lo que es necesario disponer de alguna fuente emisora de luz infrarroja, como lser 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 lser y que, si se desean proyectar imgenes, 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 disposicin 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 imgenes sobre la superficie tctil, el uso de un proyector se hace prcticamente indispensable. Se debe utilizar un proyector estndar 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 radiacin infrarroja en su superficie. 3.4. Software Controlador El software controlador es el encargado de procesar las imgenes obtenidas por la webcam y de realizar los clculos necesarios para obtener los puntos de contacto sobre la superficie. Mediante la configuracin de este software es posible, tanto la adaptacin de la calidad del hardware utilizado a los requisitos del sistema, como la seleccin de los modos funcionamiento y su comportamiento. Principalmente permite la configuracin de: 12

Fuente de imgenes: Es posible seleccionar la fuente de la cual proceden las imgenes a tratar as como la configuracin concreta proporcionada por el driver del fabricante. Previsualizacin: Es posible activar o desactivar la visualizacin en tiempo real de las imgenes procedentes de la fuente y de los puntos que el software va obteniendo. Tratamiento de la imagen: Es posible configurar muchos de los parmetros que afectan a la precisin con la que se realiza el tratamiento de las imgenes procedente de la fuente. Tambin es posible limitar de la cantidad de puntos mximos que se desean tratar. Mediante la seleccin meticulosa de estos parmetros es posible obtener el mximo rendimiento en cmaras tanto de alta como baja calidad as como limitar la influencia de la luz ambiental sobre el sistema. Emulacin del mouse: Es posible activar o desactivar el modo emulado de dispositivo apuntador. El modo libre de emulacin se encuentra siempre activo, motivo por el cual es posible utilizar ambos modos de forma simultnea en caso que sea necesario Calibrado del sistema: Para la asociacin de los puntos de la superficie con los puntos correspondientes a la pantalla, el sistema necesita conocer la situacin 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 mxima precisin. Configuracin del comportamiento del modo emulado de mouse: Para ajustar el comportamiento de la emulacin a las necesidades de cada usuario, es posible seleccionar la activacin / desactivacin del posicionamiento del cursor y determinar la pulsacin de qu botn es emulada, en funcin de la cantidad de puntos de contacto simultneos que se encuentran activos sobre la superficie. Almacenaje de configuraciones: La aplicacin controladora permite el almacenaje de la configuracin existente en archivos y su recuperacin posterior. De este modo se permite la asociacin de sistemas a configuraciones concretas sin la necesidad de configurar completamente la aplicacin controladora a cada momento. Configuracin de parmetros de arranque: Es posible configurar el comportamiento de la aplicacin en el momento de su arranque. Se permite el inicio de la captura automtico as como la ocultacin la ventana principal al iniciarla, con el fin de automatizar el uso del dispositivo en el arranque del ordenador. Tambin es posible especificar la recuperacin de un fichero de configuracin concreto antes de iniciar la captura automtica. Los parmetros de arranque no son almacenados en el propio fichero de configuracin.

4.

Condiciones de Uso

Para el uso del sistema es imprescindible eliminar, en la medida de lo posible, cualquier fuente de luz infrarroja. La iluminacin procedente del Sol, fuego o lmparas basadas en incandescencia, generan una gran cantidad de radiacin infrarroja por lo que es conveniente utilizar el sistema lejos de su alcance. Un exceso de esta radiacin sobre la superficie multitctil puede provocar un funcionamiento deficiente.

13

Es recomendable hacer uso del sistema en habitaciones interiores con una iluminacin tenue o nula, para favorecer la proyeccin de imgenes y no interferir en la captura de los puntos. En caso que la iluminacin ambiental sea necesaria, se recomienda el uso de fuentes de luz basadas en lmparas fluorescentes o L.E.D.s. ya que la radiacin infrarroja que emiten de estas fuentes de luz es muy reducida.

14

Diseo
Los objetivos planteados en la parte inicial nos llevan a buscar soluciones de bajo coste y de una relativa facilidad de implementacin.

1.

WebCam

Como dispositivo sensible a la luz, podemos recurrir a las populares webcams. Estos dispositivos nos proporcionan una forma econmica de registrar los cambios de luz que se producen en nuestro entorno y transformarlos en imgenes1. Estas imgenes, generalmente, se envan a travs 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 opcin 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 reaccin debe poder ser captada por la webcam para que podamos procesar su informacin. Adems, esta reaccin debe poder ser captada en condiciones de luz ambiental muy baja. Una de las soluciones y, probablemente, la ms econmica se basa en aprovechar un fenmeno fsico conocido como reflexin total interna2 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 fsicas que permiten la existencia de este fenmeno, es posible frustrar esta reflexin total interna en un punto concreto de la superficie. La variacin del medio con el que est en contacto, modifica los parmetros que mantienen activa la reflexin total interna, y la luz, contenida dentro del material, sale al exterior e ilumina el objeto que ha provocado la variacin. De forma ms concreta, en el caso de nuestra superficie multitctil, 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 cuestin y ocasiona que la luz contenida en el interior de la superficie multitctil salga al exterior y lo ilumine. Si posicionamos ms de un dedo sobre la superficie, este fenmeno se repite en cada uno de los puntos de contacto. Aprovechando esta caracterstica podemos obtener una superficie que reacciona al contacto con un dedo y que, adems, permite el seguimiento de esta reaccin por algn dispositivo sensible a la luz, como la webcam.

Figura 9: Reflexin Total Interna y Reflexin total interna frustrada


1 2

Anexo 1: Sensores de Imagen Anexo 8: Reflexin total Interna

15

2.1.

Adaptacin de la Superficie Sensible al Tacto a la Retroproyeccin

La superficie sensible al tacto debe ser lo ms transparente posible, para permitir la reflexin total interna y para que pueda ser traspasada cuando sta se vea frustrada. Por esta razn la propia superficie tctil no puede ser utilizada como superficie de proyeccin. Si la utilizramos de este modo obtendramos un resultado poco satisfactorio como se puede observar en la figura 10.

Figura 10: Esquema del resultado de la retroproyeccin sobre una superficie transparente

Para conseguir retroproyectar imgenes, necesitamos una superficie que se pueda anteponer a la superficie multitctil, y que permita el paso de luz para poder captar la frustracin de la reflexin total interna. Bsicamente necesitamos una superficie translcida. Estas caractersticas coinciden con la de un cristal glaseado convencional. ste nos proporciona una superficie lo suficientemente translcida como para permitir la proyeccin de imgenes sobre l y lo suficientemente transparente como para dejar pasar luz a travs. Adems, su coste no es demasiado elevado. Una vez aadido el cristal glaseado, obtendremos un resultado ms satisfactorio, como muestra la figura 11.

Figura 11: Esquema del resultado de una retroproyeccin sobre una superficie translcida

2.2.

Adaptacin del Sistema de Deteccin de Puntos a la Retroproyeccin

Se ha llegado a un punto en que se plantea un nuevo problema: El proyector emite luz de diferentes colores para proyectar imgenes sobre el cristal glaseado y, por lo tanto, no es posible utilizar luz normal para crear la reflexin total interna. Si se proyectan imgenes

16

sobre la superficie multitctil 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 fenmeno fsico que se transmite a travs de ondas electromagnticas de longitudes de onda comprendidas dentro de un amplio rango3. El ser humano slo puede ver algunas de ellas, por lo tanto, las imgenes 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 electrnicos. Uno de estos tipos es la luz infrarroja4. Los proyectores estndar disponen de filtros en sus lentes que eliminan la radiacin infrarroja procedente de las bombillas de incandescencia que utilizan. Por esta razn, si iluminamos el interior de la superficie multitctil 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 ms econmica y verstiles el diodo LED. Ampliamente difundido en los aparatos electrnicos, debido a su reducido tamao y consumo, tiene un coste muy bajo y es muy fcil de adquirir en cualquier tienda de componentes.

Figura 12: Diodos L.E.D.

2.3.

Captura de la Luz Infrarroja

Las webcams estndar tambin 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 imgenes 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 multitctil.

Anexo 3: Espectro Lumnico 4 Anexo 4: La radiacin 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 fotografa o incluso es posible adquirir directamente una webcam especializada pero, obviamente, se trata de una solucin que requiere una inversin econmica extra. Siendo fieles a los objetivos, se puede fabricar un filtro de una forma mucho ms econmica: 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.

Visin 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 imgenes, con un proyector estndar, sin que este hecho afecte a la capacidad de la localizacin 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 estn 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 mnimo tiempo posible. La intencin es permitir el uso del sistema a la mxima 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 acompaados de sus correspondientes drivers compatibles con este sistema operativo. De sencilla instalacin y utilizacin, estos drivers, son la caracterstica que permite independizar el software que se va a desarrollar del hardware utilizado. De esta

Anexo 12: Sensibilidad a la Luz del Carrete Fotogrfico

18

forma se puede sustituir la webcam en cualquier momento sin la necesidad del modificar el software controlador. 4.1. Entorno de Programacin Es necesario el procesamiento de imgenes constante para proporcionar el servicio que deseamos y es necesario que este proceso se repita cuantas ms veces por segundo mejor. Este hecho obliga utilizar un lenguaje de programacin muy rpido y que permita la comunicacin con la webcam sin limitaciones. Tambin es necesario acceder a algunas funciones del sistema operativo ya que uno de los objetivos es controlar el puntero del ratn. Este hecho obliga a programar a un nivel lo ms cercano posible al sistema operativo. Pero por otra parte, nuestra aplicacin 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 programacin 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, beneficindonos de la mxima velocidad de proceso que esta caracterstica proporciona. A la vez, incluye libreras para crear entornos visuales agradables sin demasiado esfuerzo. Por estas razones por las que el Visual C++ resulta la mejor opcin para desarrollar el software de la aplicacin controladora. 4.2. Obtencin de Imgenes de la Webcam Para obtener imgenes de una webcam USB, Windows proporciona Video for Windows. Se trata de una API, de uso estndar, que permite la comunicacin, a alto nivel, con dispositivos capturadores de vdeo compatibles, tales como cmaras, webcams o capturadoras de vdeo. A travs de ella es posible configurar y controlar las funciones de estos dispositivos desde un entorno de programacin como Visual C++. Este conjunto de libreras permite capturar imgenes de una webcam y acceder a la informacin, a bajo nivel, correspondiente a cada fotograma desde la aplicacin controladora. La librera Vfw32.lib, incluida en Visual C++, permite configurar las propiedades de la webcam, seleccionar la fuente de vdeo de la cual se quieren obtener imgenes y, por supuesto, iniciar la captura de imgenes para su procesado. Cada vez que el driver tiene disponible una nueva imagen, se genera una llamada a una funcin, previamente especificada, en la cual podremos procesar la imagen para obtener los puntos que buscamos. En la figura 14 se ilustra la diversificacin de perifricos de los que se puede tener acceso mediante el uso del API Video For Windows.

19

Figura 14: Esquema de las posibilidades de adquisicin de imgenes proporcionada por Video For Windows

4.3.

Procesado de las Imgenes

Dentro del software libre, disponemos de algunas libreras 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 imgenes. Estas herramientas, en principio, nos facilitaran el desarrollo de software y nos proporcionaran 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 libreras de tratamiento complejo de imgenes no se hace del todo patente. La cmara proporciona una imagen como la mostrada en la figura 15, dnde una serie de reas, de un tamao considerable (unas cuantas decenas de pxeles o ms), 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 dnde realmente deseamos ejercer el contacto.

Figura 15: Imagen de una posible captura de la cmara de infrarrojos sobre la superficies multitctil

Unas libreras de tratamiento complejo de imgenes recopilarn, a la vez, una serie de informacin destinada a la obtencin de los parmetros relativos al objeto, tales como su

20

forma, orientacin, etc.. Esto requiere ejecucin de clculos que, al fin y al cabo, resultan totalmente superfluos para la tarea que nos ocupa. Por otra parte, si las libreras permitieran eliminar el calculo que supone esta informacin extra, no sera del todo efectivo utilizar una librera compleja para utilizar un mnimo de sus funciones. Dando por supuesto que el uso de unas libreras genricas tambin proporcionaran 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 clculos y procesos innecesarios dando lugar a un simple algoritmo de etiquetado de pxeles. Recorriendo la imagen de forma secuencial, se clasifican en reas comunes aquellos pxeles iluminados que guarden una relacin de contigidad. Posteriormente se procede a calcular su centro buscando el valor medio de sus coordenadas horizontal y vertical. 4.3.1. Obtencin del Threshold y Segmentacin de la Imagen Antes de buscar las reas iluminadas se debe decidir a partir de que intensidad de considera iluminado un pxel. Este nivel, conocido como threshold, debe ser calculado antes del etiquetado y requiere un conocimiento general de la composicin de la imagen. Esta informacin se puede obtener fcilmente 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 dinmica, adaptndolo a las condiciones de luminosidad del entorno y a la precisin de la webcam empleada. Para fijar el valor del threshold se puede proceder de la siguiente manera: Conociendo el nivel ms oscuro, el nivel ms abundante y la estructura bsica de la imagen (reas claras sobre un fondo oscuro), podremos calcular la desviacin existente entre el nivel del fondo (o ms abundante) y ese nivel ms oscuro registrado. Esta desviacin proporciona un rango parcial de niveles utilizados para representar el fondo de la imagen. Si ese interpreta que, a partir del nivel ms abundante hasta el rango de niveles inferiores fijado por la desviacin, encontramos niveles pertenecientes al fondo, es lgico suponer que en niveles superiores esta desviacin 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 aplicacin de un factor de tolerancia a esta desviacin, 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, pertenecern a las zonas iluminadas de la imagen. ste nivel, marcado por el lmite superior, ser el threshold que emplearemos.

Anexo 6: Histograma

21

Figura 16: Esquema de obtencin del threshold

ste mtodo de clculo del threshold difiere de los mtodos 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 tpica de procesado de imgenes. Habitualmente, el histograma presenta dos picos. El mayor corresponde al fondo y el menor a los objetos que deseamos segmentar. El clculo 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 pxel segn su pertenencia al fondo o no, y a etiquetar los pxeles para el clculo de su punto central.

Figura 17: Imagen binarizada mediante a partir del Threshold

22

4.3.2.

Interpretacin de Puntos

En estos momentos se dispone de las reas iluminadas y de sus correspondientes centros, la cual cosa pone en disposicin de identificar en qu puntos de la superficie captada por la webcam se esta produciendo algn contacto. Pero estos puntos proporcionan unas coordenadas que pertenecen a una imagen captada y que, por lo tanto, son relativos a la posicin y orientacin del sensor. Si se desea relacionarlos con puntos reales sobre una superficie, como la pantalla, es necesario disponer de ms informacin para establecer esta relacin.

Figura 18: Relacin entre puntos de webcam y puntos de pantalla

A.

Calibrado

En un principio la superficie multitctil 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. Lgicamente, 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 resolucin con la que hagamos trabajar a la webcam, de la orientacin y distancia de la misma respecto a la superficie multitctil e incluso, de si la cmara se encuentra por detrs o por delante de la superficie. Por estas razones es necesario establecer una correspondencia entre ambas coordenadas. Una forma de establecer esta relacin, se basa en obtener las coordenadas en la imagen de cuatro puntos preestablecidos de la pantalla. Los puntos ms lgicos 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, formarn, en la imagen de la webcam, un tetraedro. Con esta informacin se puede estimar las coordenadas en la pantalla sabiendo su posicin 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 rectngulo de la pantalla. Cada esquina ser indicada por el cursor del sistema. B. Clculo de Parmetros Multitctiles 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 accin. Si existe ms de un punto de contacto, la accin debera 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 ms lgico, es actuar sobre el centro del conjunto ya que, si realizamos acciones de escalado o rotacin, su centro no vara. Si ste lo hace indica, a la vez, un movimiento de translacin.

23

Un objetivo era dar la posibilidad de realizar escalados y rotaciones de forma intuitiva as que se deben proporcionar a la aplicacin multitctil valores que indiquen si alguna de estas acciones se estn 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 dispersin de los puntos y sta podr ser utilizada por la aplicacin como referencia de escalado. Para conocer la rotacin 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 accin de rotacin. 4.4. Comunicacin entre Aplicacin Controladora y Aplicacin Multitctil Se han especificado dos modos de funcionamiento independientes. Uno de ellos permite utilizar el sistema como si de un dispositivo apuntador estndar se tratara. El otro proporciona, a la aplicacin multimedia, la posibilidad de obtener directamente los puntos de contacto y de establecer sus propias reglas de comportamiento. Ambos modos requieren una comunicacin entre la aplicacin controladora y la aplicacin multitctil. 4.4.1. Modo Emulacin de Dispositivo Apuntador Para el modo de emulacin de dispositivo apuntador, es necesario controlar el puntero del sistema operativo. Desplazar el cursor y la simulacin de pulsaciones de los botones, son acciones que se deben controlar desde la aplicacin controladora. Para esta tarea es posible utilizar una funcin, incluida dentro de la librera user32.lib, llamada mouse_event. Esta funcin proporciona la posibilidad de manipular el cursor del ratn y de simular pulsaciones de los botones. La informacin de las pulsaciones de los botones y del movimiento del cursor se enva a las aplicaciones correspondientes a travs de mensajes preestablecidos por el sistema que, a su vez, son procesados e interpretados por cada aplicacin segn sus propias necesidades. Esta tcnica es el sistema bsico con el que cuenta el sistema operativo Windows para informar a las aplicaciones de que ha ocurrido algn evento, no solo relacionado con el ratn, sino tambin con el teclado u otros dispositivos. Si se emulan estos eventos, mediante la funcin mencionada anteriormente, las aplicaciones reaccionarn de la misma forma que lo haran si el evento lo enviara un ratn estndar. De este modo conseguiremos emular el comportamiento de un ratn estndar. La funcin mouse_event permite decidir la posicin dnde queremos situar el cursor y la accin que se desea realizar en esta posicin. Esta accin est relacionada con la pulsacin de botones y manipulacin del botn rotatorio de los que disponen los ratones convencionales. Adems de toda esta informacin es necesario la posibilidad de aadir la informacin atinente a los parmetros de escalado y rotacin calculados en cada momento. Por ello se requiere un medio de comunicacin adicional. En la funcin mouse_event se incluye un parmetro, vaco por regla general, que proporciona un espacio de 32 bits donde poder incluir algn tipo de valor extra al evento y que se puede utilizar para codificar los parmetros de rotacin y escalado. Se pueden utilizar 16 bits para codificar el parmetro de escalado y los otros 16 bits para codificar el parmetro de rotacin.

24

Con este sistema, la aplicacin que desee hacer uso de las posibilidades multitctiles podr acceder a la informacin que necesite de forma sencilla y rpida y mantendremos la compatibilidad con las aplicaciones ya existentes basadas en dispositivos apuntadores estndar. En la siguiente figura se ilustra la independencia respecto del origen con que la aplicacin multitctil recibe mensajes procedentes de ambos dispositivos.

Figura 19: Esquema del paso de mensajes en modo de emulacin de dispositivo apuntador

4.4.2.

Modo Libre de Emulacin

En este modo no se tiene la posibilidad de informar a la aplicacin multitctil de que algn evento ha ocurrido. Principalmente porque si se utiliza la tcnica anterior, solo dispondremos de 32 bits para hacerlo y no se podra codificar las posiciones de todos los puntos en tan poco espacio. En caso que se hiciera, se tendra que optar por algn mtodo basado en el envo de coordenadas en serie que eliminara la posibilidad de mantener la compatibilidad con las aplicaciones estndar y la interaccin con el sistema operativo. Por otra parte, se debe permitir la desconexin del modo emulado manteniendo intactas las posibilidades de adquisicin de los puntos de contacto. Todas estas razones llevan a la necesidad de buscar un mtodo paralelo para enviar los datos, a las aplicaciones que lo requieran, y que no interfiera con el funcionamiento de un ratn convencional. Una opcin es utilizar zonas de memoria compartida para que las aplicaciones consulten la informacin disponible en tiempo real y que, a su vez, la utilicen en funcin 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 identificacin se puede hacer uso de los ficheros mapeados en memoria, funcionalidad que proporciona la librera Kernel32.lib tambin incluida en el visual C++. Estos ficheros proporcionan una zona comn de datos a la que las aplicaciones pueden acceder. Windows tambin 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 simultneo a datos compartidos. Esto obliga a establecer unas reglas de acceso basadas en la exclusin mutua entre aplicaciones a la hora de leer o de escribir. 25

Por ello tambin es necesario la creacin de un sistema que permita sincronizar el acceso a esta zona de memoria compartida y que, adems, sea comn a todas las aplicaciones que hacen uso de ella. Una buena opcin es la utilizacin de objetos mutex los cuales permiten la creacin de secciones de cdigo de exclusin mutua dnde se realizan accesos a recursos que solo permiten su utilizacin a un solo proceso de forma simultnea. Su uso corresponde al concepto terico de los semforos con la particularidad de que la restriccin de acceso se reduce siempre a un solo proceso. Esta funcionalidad tambin la proporciona la librera Kernel32.lib y permite, al igual que en el caso de los ficheros mapeados en memoria, asignar un indentificador nico para que las aplicaciones multitctiles del sistema puedan solicitar el acceso en cualquier momento.

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

4.5.

Estructuracin de la Aplicacin de Control

Para favorecer la posibilidad de futuras mejoras, la aplicacin de control debe estar compuesta por mdulos, 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 bsicas y la informacin debe seguir un proceso de filtrado y de transformacin. Esta transformacin 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 transformacin de la informacin beneficia una posible adaptacin a diferentes sistemas operativos y permite ofrecer soluciones especficas adaptadas a cada entorno en funcin de sus posibilidades de programacin. Por otra parte permite conservar aquellos mdulos que no estn atados a particularidades de cada sistema operativo. La figura 21 proporciona una visin global de la composicin de la aplicacin de control.

26

Figura 21: Mdulos que componen la aplicacin de control

4.5.1.

Mdulo Principal

Inicialmente se debe contar con un mdulo 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 sincronizacin. Este mdulo debe encargarse, tambin, de proporcionar un entorno de configuracin lo ms detallado y genrico posible sin que esto suponga un nivel de complejidad excesiva para el usuario. Este hecho obliga al uso de un entorno grfico basado en dilogos y controles estndar, fciles de interpretar y de manipular. Es, por tanto, el mdulo ms especfico de todos ya que tiene que crear el proceso principal, configurar el entorno grfico 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 estndar entre sistemas operativos. Una vez el mdulo haya recopilado la informacin necesaria para iniciar la captura desde la fuente, ste se encargar de proporcionar, al mdulo de procesado de imgenes, la imagen a tratar junto con la configuracin establecida. 4.5.2. Mdulo de Procesado de Imgenes Visto como un solo mdulo desde el mdulo principal, en realidad, es conveniente que conste de dos mdulos independientes. Uno que proporcione la informacin 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. Mdulo de Captura de Puntos Encargado de segmentar la imagen a tratar, interpretando su formato y binarizndola usando el threshold obtenido tras el anlisis del histograma. Una vez ha identificado las reas de pxeles iluminadas y ha obtenido su centro y masa, debe enviar la informacin a otro mdulo encargado de interpretarla y de realizar las transformaciones necesarias para obtener los puntos finales. Este mdulo nicamente esta sujeto a las particularidades del formato de cada webcam y no requerira mas que de ligeras adaptaciones para su uso en otros sistemas operativos. B. Mdulo de Interpretacin de Puntos

27

Es el encargado de filtrar e interpretar la informacin obtenida por el mdulo 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 pxeles y el desdoblamiento de puntos, provocados por una presin insuficiente sobre la superficie de contacto, podr ser identificado por la existencia de cmulos de pequeas reas iluminadas. Una vez se dispone de una informacin fiable sobre los puntos de contacto, stos se deben mapear, segn la calibracin, y se debe actuar en funcin del modo de funcionamiento activo. Esto significa manipular el puntero del sistema y/o refrescar la informacin sobre los puntos de contacto contenidos en la zona de memoria compartida. Este mdulo es el mas indicado para gestionar los modos de funcionamiento ya que tiene acceso a todas las estructuras de datos internas del mdulo de captura de puntos para proporcionar la informacin final, y permite la liberacin de clculos y procesos superfluos asociados a estos modos de funcionamiento. Adems, permite independizar el funcionamiento del mdulo principal permitiendo el uso de los mdulos de captura e interpretacin de puntos como libreras, si fuera necesario. Por contrapartida, esta mnima gestin de los recursos obligara a efectuar adaptaciones un poco ms severas, relacionadas con el acceso a la memoria compartida o la manipulacin del puntero del sistema, aunque no requiriera la adaptacin de su funcionamiento bsico.

28

Desarrollo
Siguiendo el diseo 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 especfica, no necesitaremos desarrollarlo pero, en nuestro caso, hemos decidido optar por el bajo coste. Esto implica realizar una pequea modificacin a una webcam estndar. 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 caracterstica que tenemos que tener en cuenta es la resolucin mxima a la que es capaz de trabajar la cmara. Cuanta ms resolucin y profundidad de color tenga, ms ntidas sern las imgenes que obtendremos y, por lo tanto, ms precisos sern los puntos mapeados sobre la pantalla. Otra caracterstica es la cantidad de imgenes por segundo que es capaz de tomar. Este parmetro limitar la sensibilidad del sistema a los movimientos rpidos. Es cierto que cuanto mayores sean estos parmetros, mejor rendimiento obtendremos, pero hay que tener en cuenta que no siempre es necesario la mxima precisin posible. sta hace aumentar la cantidad de recursos consumidos por la aplicacin controladora y, por lo tanto, el rendimiento general del ordenador, mientras la aplicacin controladora est esta funcionando. Estos parmetros tambin afectaran al precio de la cmara as que, es conveniente equilibrarlos frente a nuestras necesidades reales. Por regla general, una resolucin de 640x480 pxeles y 256 niveles de luminosidad es suficiente y unos 25 fotogramas por segundo proporcionaran una capacidad de reaccin de 0,04 segundos al sistema. La mayora de webcams actuales son perfectamente capaces de asumir estas caractersticas 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 resolucin mxima del 640x480 pxeles con 256 niveles de luminosidad y nos proporciona entre 20 y 25 fotogramas por segundo.

Figura 22: Webcam NGS-ShowCamPlus

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

29

1.1.

Adaptacin a la Luz Infrarroja

Para la adaptacin 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 circuitera. 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 daar la lente, y se sustituye por unas lminas de carrete fotogrfico (en color) velado. La cantidad de lminas depende de la sensibilidad que se desee que tenga la cmara 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 cmara hacia una estancia iluminada con luz artificial se puede observar como, en realidad, se capta muy poca o ninguna iluminacin. Si esta luz artificial no proviene de bombillas de incandescencia, es posible lograr una iluminacin que no afecte a la superficie multitctil. Esta caracterstica es muy importante a la hora de decidir en que entorno se va a utilizar el sistema y la radiacin infrarroja ambiental supone una gran limitacin para ello. De todas formas, si se ilumina en exceso el entorno, el proyector no cumplir su funcin de forma satisfactoria as que, es recomendable su uso en estancias con iluminaciones tenues o casi nulas.

Anexo 2: Emisin de Radiacin Infrarroja

30

2.

Superficie Multitctil

La superficie multitctil se debe desarrollar desde cero, ya que en el mercado no se dispone de ningn hardware similar y no se tiene ninguna base desde la cual partir. Segn nuestro diseo 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 caracterstica 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 ms pequeo 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 dimetro de los diodos L.E.D. que se van a emplear para su iluminacin. El metacrilato cumple las caractersticas de transparencia requerida y, en contacto con el aire, permite la reflexin total interna en su interior9. 2.1. Induccin de la Reflexin Total Interna Se debe inducir el fenmeno de la reflexin total interna mediante unos diodos LED. Para ello, es necesario situar los LEDs en los laterales del metacrilato, enfocndolos hacia su interior. Para mantenerelos en su posicin, se ha fabricado un marco de madera en el que se han practicado unos orificios dnde posicionar cada uno de los diodos.

Figura 25: Marco de madera y orificios practicados

Anexo 7: ndices de Refraccin del Metacrilato y el Aire

31

Figura 26: Situacin de L.E.D. en la superficie multitctil. Corte transversal

La cantidad de diodos a usar es proporcional a la superficie del metacrilato y cuantos ms diodos se usen, ms sensible ser la superficie al tacto. En contrapartida, cuantos ms LEDs se utilicen, mayor ser el consumo del dispositivo. En este caso se ha optado por utilizar diodos LED modelo LD271, fabricados por Siemens10. stos proporcionarn una radiacin lumnica cuya longitud de onda principal es de 950nm, perteneciente al espectro de la luz infrarroja cercana. Su seccin es de 5mm y el ngulo de apertura del cono iluminado es de 50. Este ngulo determina la cantidad mnima de LEDs 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 teora, toda la superficie con solo dos LEDs en cada uno de los extremos.

Figura 27: ngulo de apertura segn las especificaciones del DataSheet

10

Anexo 11: Datasheet L.E.D.s

32

Figura 28: Apertura terica del cono iluminado por el LED

En realidad, en el permetro del cono, la luz es muy tenue as que es mejor solapar los conos de luz para obtener una iluminacin 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 funcin del ngulo de apertura.

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

Ya que el dimetro del LED es de 5mm de dimetro, se pueden encastar en el interior del marco de madera que hemos fabricado. stos se reparten entre los laterales de menor tamao del marco, equidistando los unos de los otros para que la iluminacin sea uniforme.

33

Figura 30: Situacin de los diodos L.E.D. en el marco

Figura 31: Iluminacin proporcionada por los L.E.D.s

Una vez situados los LEDs, se deben alimentar para que se iluminen. Segn las especificaciones, la corriente mxima que pueden aceptar va en funcin de la temperatura de funcionamiento. Hasta los 25 de temperatura, la intensidad mxima es de 130mA aunque, lgicamente, no se debe alcanzar para evitar que stos se calienten. Para limitar la intensidad que circula por el LED, se debe aadir una resistencia en serie que ir en funcin de la tensin aplicada en los extremos del conjunto11.

Figura 32: Conexionado de las resistencias limitadoras

Para favorecer la adaptacin al uso en ordenadores convencionales, se puede tomar la alimentacin del conector USB del ordenador, por lo tanto, la tensin de alimentacin ser
11

Anexo 9: Clculo de la Resistencia Limitadora

34

de 5V. Si se tiene en cuenta esta tensin de alimentacin, se pueden utilizar resistencias de 75 para limitar el paso de corriente a unos 40mA y proporcionar una tensin de alimentacin de unos 2V. De esta forma, son necesarios 320 mA para alimentar los 8 LEDs con los que se ha equipado la pantalla. El USB 2.0 es capaz de proporcionar 500mA como mximo, as que ser suficiente para abastecer de corriente a la superficie multitctil. 2.2. Adaptacin del Sistema de Deteccin de Puntos a la Retroproyeccin Una vez iluminada nuestra superficie sensible al tacto, hay que aadirle la superficie proyectable. sta se debe situar por detrs de la superficie donde vamos a ejercer el contacto con la cara glaseada haciendo de separacin entre las dos superficies. De esta forma, la imagen se proyectar lo mas cerca posible de la superficie de contacto y proporcionar una sensacin ms real de estar tocando el objeto proyectado.

Figura 33: Ensamblado de la superficie multitctil

Para ensamblar todo el conjunto, se utilizarn cuatro perfiles de aluminio en forma de L que aprisionarn las superficies contra el marco de madera a la vez que protegern el cableado y las resistencias de posibles golpes.

Figura 34: Superficie multitctil retroproyectable ensamblada

35

3.

Software

El entorno de programacin escogido es el Visual C++ de Microsoft. Este entorno nos permite la definicin de estructuras y objetos que nos facilitan la modularizacin de la aplicacin y la manipulacin de conjuntos de datos relacionados entre s. 3.1. Mdulo de Procesado de Imgenes Este mdulo se encarga de la obtencin de los puntos de contacto sobre la superficie mediante el procesado de las imgenes obtenidas por la webcam. Su trabajo se puede dividir en dos tareas diferenciadas: Segmentar la imagen y obtener los puntos de contacto segn la iluminacin de los pxeles que componen la imagen. Filtrar estos puntos para eliminar posibles imprecisiones e interpretarlos para obtener los parmetros multitctiles.

Por ello se ha dividido este mdulo en dos, ms especficos, encargados de realizar cada una de las tareas de forma secuencial. 3.1.1. Mdulo de Captura de Puntos: La clase Ccapture El primer mdulo a desarrollar es el encargado de procesar la imagen para obtener la situacin de los puntos iluminados. Esto obligar a manejar una entidad que contenga la informacin relativa a la posicin y a la masa, en pxeles, de cada una de las reas iluminadas. A. Formato de la Imagen de la Webcam Para la obtencin de estos datos, hay que recorrer la imagen a tratar de forma secuencial, almacenando en la misma entidad todos los pxeles, que guardarn una relacin de contigidad los unos con los otros. Pero la imagen que proporcionara el mdulo principal estar codificada en el formato que la webcam implemente, por lo tanto, hay que convertirla a un formato nico para que el mdulo de captura pueda procesarla. Se han aadido algunos parmetros para configurar el mdulo de captura y adaptarlo a los formatos ms habituales en los que las webcams pueden enviar las imgenes:
unsigned char significantByte;

Normalmente la codificacin de cada uno de los pxeles de una imagen obtenida por una webcam, est relacionada con nuestra sensibilidad a la hora de percibir los parmetros que componen la luz. stos parmetros corresponden a la intensidad del haz del luz y a su color. Este tipo de parametrizacin responde al cdigo YUV el cual almacena un parmetro 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 mtodo es mas o menos estandar, el orden en que se sitan los datos, vara segn el fabricante. Para la labor a desarrollar, el nico parmetro que necesitamos conocer es el de la luminancia, codificado habitualmente, as que es necesario algn valor que indique cual de los bytes, correspondientes a cada pixel, contiene este parmetro. sta es, precisamente, la funcin del parmetro significantByte.
unsigned long ptrOffset;

Segn el driver y el sistema operativo, los parmetros YUV se pueden agrupar en tres planos separados segn su componente, siguiendo un orden arbitrario. Tambin es posible 36

encontrar un nico plano que mezcle las componentes de una forma, tambin, arbitraria. El parmetro ptrOffset permite situarse sobre el inicio del primer bloque de bytes que contiene los datos del primer pixel.
unsigned char BytesPerPixel;

Este parmetro, tal y como se intuye, informa al mdulo de captura de la cantidad de bytes que se utilizan para codificar un pixel en un plano. Por regla general, este parmetro tomara el valor de 1.
CPoint resolution;

El ultimo parmetro tan solo informa de la resolucin de la imagen que se ha obtenido de la cmara. B. Histograma y Obtencin de Threshold: La Clase CHistogram Una vez informado al mdulo de captura sobre el formato de la imagen, ste se encuentra en disposicin de traducirla a un formato nico en el que slo se almacena la luminosidad de cada pxel. 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 pxeles que adquieren cada una de las luminosidades disponibles y decide, segn esta informacin, a partir de qu nivel de luminosidad se va a considerar iluminado un pxel. A esta clase se le han aadido dos variaciones que afectan al clculo definitivo del threshold. Si la calidad de la webcam no es del todo adecuada, las imgenes varan de luminosidad total y esto dificulta la obtencin del threshold de una forma precisa. Para filtrar los picos de intensidad y suavizar la adaptacin del threshold a las condiciones del entorno, se ha dotado a la clase de un filtro pasa-bajos que atena la influencia de los picos de luminosidad y mantiene el threshold ms constante durante la captura de imgenes. Esta funcin es desconectable, ya que en algunas ocasiones es posible que necesitemos una adaptacin inmediata a las condiciones de luz del entorno y su uso entorpecera el proceso. En condiciones de muy poca luminosidad, el fondo se acerca mucho al valor mnimo posible y la desviacin respecto al valor mnimo, que permite calcular el threshold, se hace muy pequea. En estos casos, se puede utilizar el parmetro minimumThreshold el cual establece un valor mnimo 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 parmetro ThresholdTolerance. ste indica el factor que se aplicar a la desviacin del nivel de fondo respecto al mnimo nivel obtenido. El threshold corresponder al extremo superior del rango resultante de la aplicacin de este factor. C. Segmentacin de la Imagen: la Clase CSegmentation. Ahora mismo se puede adaptar la imagen proporcionada por la webcam a las necesidades del mdulo 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 multitctil. Para facilitar esta tarea se ha creado la clase CSegmentation, la cual se encarga almacenar los grupos de pxeles 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 pxeles 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 pxeles que hayan superado el threshold a medida que vamos recorriendo la imagen. D. Algoritmo de Etiquetado de Pxeles El algoritmo utilizado esta basado en un etiquetado de pxeles y en el uso de la funcionalidad proporcionada por CSegmentation. El proceso va asignando, a medida que avanza, etiquetas comunes a aquellos pxeles 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 pxeles que los componen y el sumatorio de cada una de sus coordenadas X e Y. Adems se tiene la certeza de que cada uno de los grupos pertenece a un cmulo de pxeles contiguos entre ellos. Si se dividen los sumatorios entre la cantidad de pxeles se obtiene el centro del rea en funcin de su distribucin espacial. Por otra parte, si se considera que estas reas tienen una forma circular, se puede obtener el radio de circunferencia cuya rea sera equivalente a la de la masa de pxeles obtenida.

rea = * Radio2
Frmula 1:rea de la circunferencia

38

3.1.2.

Mdulo de Interpretacin de Puntos

En estos momentos se cuenta con una relacin 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 informacin 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 ms intuitiva, se han creado dos clases que implementan dos tipos de datos para poder trabajar con puntos de una forma mas cmoda.
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 aplicacin, la clase CPoint tambin 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 pxeles obtenidos por el mdulo de obtencin de puntos y traducirlos a una entidad que permita usar el formato mencionado en las lineas anteriores. Para ello se ha aadido una clase que se encarga de almacenar el punto central de cada grupo, as como su masa, en pxeles, y su radio medio. ste resume la extensin del grupo de pxeles a un solo parmetro, 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 pxeles que se han obtenido, no siempre van a corresponder a zonas de contacto, por lo tanto, es necesaria una metodologa que permita eliminar aquellas reas dudosas y mantener slo 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 accin sobre un punto, sea por que el usuario as lo desee, frente a la posibilidad de ejercer una accin sobre un punto dnde, en realidad, no se ha efectuado ningn contacto. Es por esto que se ha optado por una metodologa de descarte de reas dudosas en detrimento de la sensibilidad del sistema. Para poder ajustar la flexibilidad de esta metodologa se han introducido otra serie de parmetros que nos permitirn adaptar las normas a las condiciones de uso deseadas:
float MinPointsDistance;

39

Este parmetro se utilizar para agrupar masas de pequeas reas que puedan estar provocadas por la falta de presin sobre un punto de contacto. Cuando dos o ms 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 mnima, sern consideradas ruido o parsitos que han podido superar el threshold aplicado en el mdulo de obtencin de puntos. Si haban cmulos de reas que, por si solas, no superaban esta condicin, en el paso anterior se pueden haber agrupado y, en conjunto, pasar esta fase de seleccin formando un punto de contacto fiable. De esta tarea se encarga la clase CPointsProcessor. Para que el mtodo funcione, primero se deben compactar los puntos y despus de debe proceder a la eliminacin de aquellos que no cumplan con los requisitos de tamao establecidos. Estos parmetros tambin deben ser adaptados en funcin de la resolucin y la distancia a la que trabaje la cmara 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 multitctil en los cuales existe un contacto. Ahora es necesario relacionar estos puntos, cuyas coordenadas corresponden al entorno de la cmara, con el entorno de la pantalla. Como se haba apuntado anteriormente, esta operacin requiere informacin extra que se debe tener antes de mapear los puntos de la webcam. Este proceso de calibrado se realiza, tambin, en este mdulo de interpretacin de puntos debido a que el proceso resulta muy similar al de obtencin y mapeado. Por ello, en la funcin principal, se han implementado ambas funcionalidades. El modo de obtencin de puntos de calibrado se encarga de obtener estos puntos de calibrado consiguiendo, sencillamente, una relacin entre las coordenadas de la pantalla y las coordenadas a las cuales corresponde el punto en la cmara. Siendo fieles a el diseo, 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 tctil en el cual aparece el cursor. El mdulo, espera hasta que se pulse sobre algn punto de la superficie multitctil y, cuando esto ocurre, lo almacena y procede a pedir el siguiente punto. Cuando todos los puntos han sido tomados, el mdulo se encuentra en disposicin de realizar las traducciones entre los puntos de la superficie tctil y los puntos de la pantalla. Entonces abandona la funcin 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 rectngulo que, en realidad, forma la pantalla. El tetraedro formado por la vista de la pantalla proyectada sobre la superficie multitctil 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 genrica que permita resolver el problema ante cualquier situacin. Del clculo 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 informacin de la cual dispone para realizar el mapeado, es el conjunto de relaciones de punto en pantalla con su punto en la cmara, 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 dnde estas rectas interseccionan con las dos diagonales. Estos dos puntos de interseccin corresponden al espacio de las diagonales y, por lo tanto, tienen un homlogo en las diagonales pertenecientes al rectngulo de la vista de la pantalla. Siguiendo este razonamiento, es lgico pensar que, si se trazan las mismas rectas desde las mismas esquinas opuestas, pasando por los puntos homlogos de la diagonales en el rectngulo de la pantalla, en su punto de interseccin 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 manipulacin de rectas se ha desarrollado una clase llamada Crect, la cual nos permite almacenar ecuaciones de recta ,en su forma paramtrica y obtener puntos de corte entre ellas, as como puntos concretos en funcin de su parmetro . X = V X + Px Y = VY + PY
Frmula 2:Ecuaciones Paramtricas de la recta

class CRect public: CPointFloat vector; CPointFloat destination; CPointFloat origin;

D.1.

Correccin 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 matemticamente las rectas de las diagonales, usando sus ecuaciones paramtricas, 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 parmetro 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 relacin no resulta vlida, 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 relacin 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 cmara

42

pertenece al centro de las diagonales de la vista de la pantalla. Este dato permitir aplicar una coreccin de perspectiva a toda la diagonal y proporcionara la relacin entre cada punto de la diagonal de la vista de la cmara con el correspondiente de la diagonal de la vista de la pantalla. Esta coreccin 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 caractersticos los tres datos de los que disponemos y resolviendo el sistema resultante en funcin de A y B.
A0 2 + B0 = 0 A( media ) + B media
2

A12 + B1 = 1

1 = 2

Frmula 3:Sistema de ecuaciones a resolver para hallar el polinomio corrector

Resolviendo el sistema de ecuaciones planteado, se obtiene un polinomio que proporciona la correccin de perspectiva necesaria12. Para las operaciones con polinomios se ha desarrollado la clase CPoly, la cual proporciona la funcionalidad suficiente para su aplicacin a la correccin 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 cmara, 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 homlogo en la pantalla. 3.1.3. Comunicacin con la Aplicacin Multitctil Para proporcionar la informacin multitctil a la aplicacin se debe utilizar un sistema que permita compartir la informacin que obtiene la aplicacin controladora con cualquier otra aplicacin. Para cubrir cualquier necesidad, se han desarrollado los dos modos de funcionamiento descritos anteriormente. A. Modo de Emulacin de Dispositivo Apuntador El primero de ellos tiene como objetivo simular el funcionamiento de un ratn estndar. 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 situndolo en la posicin correspondiente. En el caso que slo exista un punto de contacto la accin ser situada sobre ese punto. En el caso de que haya ms de un punto de contacto, la accin sera situada sobre el punto central de los puntos implicados por las razones descritas durante el apartado de diseo. A.1.
12

Manipulacin del Cursor del Sistema: la Clase CmouseControl

Anexo 10: Clculo del Polinomio Corrector de Perspectiva

43

El cursor del sistema se maneja mediante la utilizacin de las funciones proporcionadas por la librera kernel32.lib. Su uso nos proporciona la posibilidad de especificar las coordenadas dnde posicionarlo en cada momento as como una serie de mensajes relacionados con la pulsacin de cada uno de los botones de un ratn. Las coordenadas se especifican entre un rango constante, independiente de la resolucin con la que el sistema est trabajando. Este rango esta comprendido entre 0 y 65535 (16 bits de resolucin), tomando como esquina superior izquierda de la pantalla la posicin (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 parmetros tomando como nicos datos la situacin donde queremos posicionar el cursor y el estado de cada botn 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 tambin se encarga de aadir la informacin extra al mensaje, informando de los parmetros referentes al interfaz multitctil a la aplicacin correspondiente. Estos parmetros son calculados, una vez hemos mapeado los puntos sobre la pantalla, por la clase CPointsProcessor mencionada anteriormente. sta calcula el ngulo y el parmetro de escalado correspondiente, segn el mtodo propuesto durante de diseo del sistema.

44

B.

Modo Libre de Emulacin

En el segundo de los modos, la aplicacin no manipula el cursor del sistema operativo y se limita, nicamente, a dejar la informacin de los puntos de contacto en la zona de memoria compartida perteneciente al fichero mapeado en memoria. Concretamente, este modo no realiza ningn trabajo aadido sino que, sencillamente, prescinde de la emulacin del dispositivo apuntador. 3.2. Mdulo Principal Las clases encargadas de gestionar el intefraz multitctil estn listas para su uso, pero el funcionamiento resultara muy poco prctico si tuvieran que ser incluidas en cada aplicacin que pretendiera beneficiarse de este tipo de interfaz. Adems, implicara un conocimiento previo de su programacin y obligara al uso del entorno de programacin Visual C++. Demasiadas restricciones, si uno de los objetivos es la mxima difusin entre usuarios. La incorporacin de un entorno de gestin de las libreras que permita su uso sin la necesidad de conocimientos de programacin, permitir que el sistema pueda ser utilizado por la gran mayora de usuarios que deseen beneficiarse de las propiedades de un interfaz multitctil. Por otra parte, esta facilidad de uso tambin 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 especfico de la aplicacin multitctil. Otra ventaja de este diseo radica en el caso de mejora del sistema, puesto que seria necesario la recompilacin de la aplicacin multitctil. Estos hechos ya estaban contemplados en las especificaciones y en el diseo del proyecto pero, ya que son el objetivo bsico de este mdulo 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 mens desplegables y el resto corresponde al rea de previsualizacin. Esta ltima nos permite una previsualizacin, en caso de estar activa, de las imgenes proporcionadas por la webcam. De este modo, podemos verificar si los valores de los parmetros de configuracin tienen el efecto esperado.

Figura 38: Ventana principal de la aplicacin

Los mens desplegables nos dan acceso a la configuracin de las libreras de procesamiento de imagen y a la configuracin de la propia aplicacin de control.

45

Figura 39: Mens desplegables de configuracin

Antes de mostrar la ventana principal, este mdulo realiza los procesos correspondientes a la obtencin de la zona de memoria compartida y del objeto destinado a la exclusin mutua dentro de la misma. Se hace necesario mencionar este proceso ya que la aplicacin que desee acceder a esta informacin deber actuar de una forma similar. En primer lugar se crea un fichero mapeado en memoria, de una medida adecuada, utilizando la funcin CreateFileMapping proporcionada por las libreras de gestin 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 encontrara si estuviese ubicado en disco. Seguidamente se procede a la obtencin de un puntero, el cual apunta a la zona de memoria compartida, recin obtenida, mediante la funcin MapViewOfFile proporcionada por las mismas libreras. Este puntero es del tipo tMultitouchInfo y hace referencia a la informacin relativa a la cantidad de puntos de contacto y sus coordenadas. A travs de este puntero realizaremos todas las escrituras a la zona de memoria compartida de la misma forma que lo haramos si ste apuntara a una zona normal de memoria pero respetando la exclusin mutua. Una vez dispone de la memoria compartida debe obtener la herramienta de sincronizacin. sta nos la proporciona los objetos mutex, a los cuales tambin se le puede asignar un nombre global al que referirse desde aplicaciones externas. Para conseguirlo se utiliza otra funcin llamada CreateMutex indicando el nombre, fijado como MultitouchMutexName. ste tambin es referenciable desde aplicaciones externas. Antes de cada acceso a la zona de memoria compartida, la llamada a la funcin 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 funcin ReleaseMutex para que otra aplicacin pueda acceder a l. El mdulo de procesado de imgenes se encuentra operativo, pero antes es necesario desarrollar una herramienta de configuracin adecuada. sta debe permitir el acceso a todos los parmetros configurables de los que se dispone, por lo que se han desarrollado varios dilogos que permiten, de forma agrupada, su manipulacin. A. Men Capture: Opciones A travs del men capture es posible configurar el mdulo de captura de puntos de la aplicacin. A.1. Capture Preview Esta opcin proporciona la posibilidad de visualizar las imgenes que la fuente obtiene en tiempo real. De esta forma es posible comprobar si la configuracin de la webcam es correcta. A.2. Points Preview Otra opcin de previsualizacin que permite comprobar el funcionamiento del mdulo de captura de puntos. Permite ver, tambin en tiempo real, los puntos obtenidos despus de procesado de las imgenes. Mediante esta previsualizacin se puede comprobar si la configuracin de las libreras 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 parmetros, conviene desactivar todas las previsualizaciones para reducir el consumo de estos recursos al mnimo. A.3. Start Capture Mediante esta opcin se inicia la captura, dejando el interfaz multitctil operativo. El mdulo principal informa de la configuracin establecida al mdulo de captura de puntos, y posteriormente configura las libreras Video For Windows para que comiencen la captura de imgenes procedentes de la webcam. La configuracin del mdulo de captura de puntos se establece, bsicamente, a travs de un dilogo de configuracin. A.4. Dilogo Capture Settings

Figura 40: Dilogo Capture Settings

ste dilogo proporciona los parmetros de configuracin, referentes al tratamiento de las imgenes obtenidas por la webcam y al filtraje de los puntos obtenidos. Mediante su ptima configuracin es posible extraer el mximo rendimiento de los componentes hardware empleados. Dentro de este dilogo se diferencian varios grupos de parmetros agrupados segn su objetivo: a). Capture Resolution Este grupo hace referencia a dos parmetros que no se haban explicado en profundidad anteriormente. Estn ligados, bsicamente, a la obtencin de imgenes de la webcam y, por lo tanto, no hacen referencia estricta a la configuracin del mdulo de procesado de imgenes, pero s guardan una estrecha relacin con l. b). Intensity Levels El primero de los parmetros que presenta este grupo se refiere a la cantidad mxima de niveles de intensidad con la que el mdulo de procesado de imgenes va a trabajar. Actualmente, las webcams estndar disponen de 256 niveles luminosidad, independientemente del formato con el que trabaje. Por ello es recomendable no modificar el valor por defecto de ste parmetro.

47

c).

Frames/sec

Este parmetro permite determinar la cantidad de imgenes por segundo que vamos a pedir a la webcam. En realidad no se trata de una imposicin, sino de una peticin sobre el funcionamiento de la cmara 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 mxima en cada momento. A partir de las 25 imgenes por segundo se consigue un funcionamiento suficientemente suave como para proporcionar una respuesta del interfaz fluida. Tambin hay que tener en cuenta que cuanto ms aumentemos este parmetro, mas tiempo emplearemos en procesar un segundo de imgenes y este hecho puede penalizar el rendimiento general del sistema operativo. d). Capture Format En este grupo de parmetros es posible adaptar el funcionamiento de nuestras libreras 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 funcin. Se proporcionan tres formatos predeterminados (i420,YUYV y UYVY), pero es posible una configuracin 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 libreras acceden a la zona de memoria del driver de la webcam, por lo tanto, una configuracin deficiente de stos, puede provocar accesos no permitidos a memoria y, en consecuencia, el cierre de la aplicacin controladora. Es pues, importante que se verifique la equivalencia entre el formato especificado en la configuracin de la webcam y el formato especificado en la configuracin de las libreras puesto que, a diferencia de la resolucin, su valor no se toma automticamente de la informacin 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 binarizacin de las imgenes. Sus parmetros tambin han sido explicados durante el desarrollo de los mdulos anteriores, pero cabe destacar que la sensibilidad al tacto del sistema depende de una buena eleccin de stos. Es conveniente fijar un threshold mnimo 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. Tambin conviene fijar una tolerancia por encima de 2 para compensar las correcciones de la luz asociadas al proceso de normalizacin que realizan la mayora de drivers de webcam, con la intencin de favorecer el contraste de las imgenes. Tericamente el threshold debera mantenerse relativamente constante ya que, en principio, las condiciones de luz del entorno siempre sern las mismas durante toda la captura. Pero en realidad, debido al proceso de adaptacin de niveles de luminosidad que algunos drivers de webcam implementan, el mtodo de calculo del threshold puede verse negativamente afectado. Por regla general, los drivers de webcam proporcionan la posibilidad de ajustar automticamente 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 fenmeno, las libreras incorporan un sistema de filtraje que permite eliminar estos picos manteniendo el threshold estable a la vez que no evita su adaptacin 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 pxeles contiguos que el mdulo de captura de puntos almacena. El valor de cantidad mxima no se refiere a la cantidad mxima final de grupos obtenidos, sino a la cantidad que es posible tener durante el proceso de etiquetado de pxleles. Es conveniente mantener un valor relativamente alto, por encima de la cantidad final prevista, y aumentarlo en caso de emplear altas resoluciones. Tambin permite la configuracin de la masa mnima, en pxeles, de un grupo para que sea considerado un punto de contacto. g). Translated Points En este grupo s que nos referimos a la cantidad mxima de puntos que el mdulo de procesado es capaz de gestionar, as como a la distancia mnima que tiene que haber entre ellos para que sean considerados dos puntos de contacto diferentes. B. Men Multitouch: Opciones A travs de este men es posible seleccionar los modos de funcionamiento de la aplicacin controladora, activando o desactivando la opcin Pointing Device Emulation, y de modificar los puntos que proporcionan el calibrado. A travs de la opcin New Calibration se accede al modo de calibrado en el cual se pide al usuario que pulse sobre los puntos de calibracin y, mediante la opcin Show calibration Points es posible consultar el valor de estos puntos. A travs de este men, tambin es posible acceder a la configuracin del modo emulado de dispositivo apuntador el cual nos ofrece un dilogo con diferentes opciones. B.1. Dilogo Multitouch Settings

Figura 41: Dilogo Multitouch Settings

Bsicamente permite configurar el comportamiento del cursor frente a la cantidad de puntos de contacto sobre la superficie. Configurando estos parmetros es posible conseguir ejecutar diferentes acciones, asociadas por el sistema operativo a los botones de un ratn estandar, en funcin de la cantidad de puntos de contacto sobre la superficie tctil. Por ejemplo, es posible desplazar el Scroll de una pgina web, normalmente asociado al botn central de un ratn, situando tres dedos sobre la ventana si, previamente hemos especificado en la casilla When, la opcin Touching 3 points at once. Esto permite flexibilizar el uso del sistema si se destina a la interaccin con el sistema operativo. En este dilogo se encuentra una parmetro que nos permite aumentar la sensibilidad del sistema a movimientos rpidos sobre la superficie tctil. Se trata del valor Persistence. Cuando se realiza un movimiento rpido manteniendo el dedo sobre la superficie multitctil, es habitual que el dedo rebote a causa de la friccin. Es difcil mantener la 49

presin constante sobre ella y esto provoca que la iluminacin sobre el punto de contacto sea ms tenue de lo habitual. Este hecho, unido a la limitacin de las webcams a la hora de enfocar los objetos en movimiento, provoca la prdida momentnea del punto de contacto sobre la superficie. Esto tambin ocurre cuando se utilizan mas de dos puntos de contacto para ejecutar una accin, como la utilizada anteriormente de ejemplo, ya que es habitual que en algn momento se pierda el contacto de alguno de los puntos. Cuando esto ocurre, el valor del parmetro Persistence indica al mdulo de procesado de puntos que mantenga memorizada la accin 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 existan 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 situacin dejara de ser particular para pasar a ser la nueva situacin habitual. C. Men Boot Este men da acceso al dilogo de configuracin de arranque del sistema. En este mdulo se pueden especificar las condiciones en las cuales arranca la aplicacin de control, permitiendo a sta ejecutar ciertas acciones de forma automtica al iniciarse. C.1. Dilogo Boot Settings

Figura 42: Dilogo 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 aplicacin controladora que inicie la captura, con la configuracin de la que disponga, al ejecutarse. Esta opcin nos permite iniciar el interfaz multitctil al arranque del sistema operativo si se especifica su ejecucin al inicio del mismo. b). Hide on start capture La segunda opcin indica a la aplicacin que deseamos esconder la ventana principal durante la captura. Ms adelante se ampliara la informacin sobre esta posibilidad de funcionamiento. Las otras dos opciones hacen referencia a la configuracin general del sistema. Al iniciar, existe la posibilidad de mantener una configuracin por defecto o, si interesa, utilizar una configuracin 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 opcin 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 configuracin sea realizada por personal especializado a pesar de que ste no sea el usuario final del interfaz multitctil. 3.2.2. Salvado de la Configuracin: La Clase CConfiguration y CBootConfig Se ha indicado la posibilidad de restaurar configuraciones preestablecidas en el momento del inicio de la aplicacin 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 informacin relacionada con la aplicacin controladora. En esta clase se almacenan todos los parmetros de configuracin de la captura, emulacin de dispositivo apuntador, calibrado del sistema y algunos parmetros referentes a la configuracin de arranque. Cada vez que algn dilogo de configuracin o alguna opcin de los mens es modificada, esta alteracin es notificada a esta clase, la cual la almacena en memoria. Cuando la captura de inicia, se toma la informacin contenida en esta clase y se configuran las libreras de procesado de imgenes con los parmetros 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 parmetros relacionados nicamente con el arranque de la aplicacin. Por defecto, la aplicacin controladora establece unos parmetros iniciales pero no tienen porque adaptarse a todas las fuentes de captura as que es conveniente repasar todos los parmetros 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, adems de la posibilidad de ocultar la ventana principal de la aplicacin controladora. La opcin Hide, de este menu, oculta la ventana de la aplicacin creando, en su lugar, un icono en la zona de programas residentes, conocida como la zona de systray. Pulsando, con el botn derecho del ratn, sobre el icono representativo, se desplega un men flotante con las opciones bsicas de control de la aplicacin. Lgicamente tambin es posible restaurar la ventana principal a travs de este menu resumido, as como iniciar o parar la captura. B. El Men Source:Opciones Es posible que el ordenador tenga ms de un dispositivo compatible con Vfw instalado. Incluso es posible que dispongamos de ms de una superficie multitctil y deseemos alternar su uso en un mismo ordenador. Las libreras Vfw permiten el uso de ms de un dispositivo compatible, incluso de forma simultanea. No es ste el caso, pero s se hace necesario alguna medida de seleccin 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 opcin da paso a un dilogo estndar de seleccin de fuente de vdeo, proporcionado por las propias libreras 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 dilogo al que da paso esta opcin nos permite configurar, adems, algunos aspectos relacionados con el comportamiento de la webcam. Los aspectos concretos de la configuracin deben venir explicados en las especificaciones del hardware proporcionadas por el fabricante pero la mayora comparten ciertos parmetros tales como la adaptacin automtica a la sensibilidad a la luz, contraste, nitidez, etc... B.2. Source Settings Da acceso a otro dilogo estndar donde se puede especificar la resolucin de trabajo de la webcam y el formato en el que se va a obtener las imgenes. Recordamos que este formato debe coincidir con el especificado en el dilogo de Capture Settings. Mediante este entorno basado en mens y dilogos de configuracin es posible controlar el funcionamiento global de la aplicacin dando acceso tanto a los parmetros referentes al comportamiento de los mdulos de obtencin e interpretacin de puntos como a los que afectan al funcionamiento de la aplicacin de control. En trminos generales, se ha creado una herramienta que permite el uso del interfaz multitctil a cualquier persona con unos conocimiento medios o incluso permite aislar al usuario final de la configuracin de sistema.

52

Evaluacin
Para la evaluacin 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). Deteccin de puntos de contacto sobre la superficie multitctil El funcionamiento de la webcam junto con la superficie multitctil ha resultado correcta. Con la superficie conectada al USB, ejercemos cierta presin sobre la superficie tctil y en la cmara podemos registrar unas imgenes como estas:


Figura 43: Imagen captada al tocar la superficie multitctil retroproyectable con los dedos

La interaccin con el sistema operativo: El uso del modo emulado de dispositivo apuntador, ha permitido interactuar de una forma cmoda con el sistema operativo, evidenciando como punto dbil la accin de ejecutar aplicaciones mediante el doble click sobre su icono. Debido a que el dedo no proporciona la suficiente precisin a la hora de seleccionar un punto concreto de la pantalla, cuando se intenta generar un doble click sobre un icono, resulta muy difcil hacerlo sobre el mismo punto dos veces seguidas. De todas formas, es posible ejecutar cualquier aplicacin emulando una pulsacin con el botn derecho y seleccionando la opcin Abrir del men que aparece. En este caso, la necesidad de personalizar el dilogo Multitouch Settings ha resultado muy til, ya se ha podido escoger de qu forma queramos que reaccionara el puntero del ratn al contacto con nuestros dedos y hemos podido hallar el sistema que ha resultado ms cmodo para interactuar con el sistema operativo. Por lo tanto, configurando el dilogo anterior de forma adecuada, se ha podido ejecutar aplicaciones, acceder a los mens de configuracin 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 parmetro Persistence tambin ha sido comprobada en movimientos rpidos. Gracias a esta posibilidad, la aplicacin, ha permitido arrastrar iconos y realizar selecciones y copias de archivos de una carpeta a otra. b). Rotacin, escalado y translacin de forma simultnea Se ha podido comprobar mediante el desarrollo de una aplicacin de demostracin que obtiene la informacin del parmetro extra contenido en los mensajes de ratn. sta permite la previsualizacin de fotografas situadas en una carpeta, a especificar por el usuario. Una vez especificada, permite la rotacin y escalado de las fotografas mediante el uso de mltiples puntos de contacto sobre la superficie.

53

La aplicacin presenta un entorno dividido en dos partes. La parte superior permite navegar a travs de las fotografas disponibles a la espera de que alguna de ellas sea arrastrada a la parte inferior. En esta zona se puede manipular, aplicando acciones de translacin, rotacin y escalado de la forma intuitiva. Todas ellas se han podido aplicar de forma simultnea mediante los movimientos adecuados.

Figura 44: Aplicacin demostracin 1

Esta aplicacin se vale del modo de emulacin de dispositivo apuntador para su funcionamiento. Tambin se puede comprobar la efectividad del parmetro de persistencia el cual mantiene la accin a realizar incluso cuando los movimientos se realizan con cierta velocidad. Con la ejecucin de esta aplicacin, se ha podido verificar el funcionamiento del modo emulado permitiendo la manipulacin esperada en cada una de las situaciones. c). Obtencin de todos los puntos de contacto existentes Para ello se ha desarrollado otra aplicacin que pretende mostrar el uso del modo libre de emulacin. Obteniendo los puntos de contacto mediante el acceso a la memoria compartida, esta aplicacin simula la generacin de humo en los puntos en los que existe contacto con la superficie multitctil. Adems, permite el cambio de color y tamao del mismo, manipulando los controles situados en los laterales de la pantalla. Esta manipulacin 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: Aplicacin de demostracin 2

Mediante el uso de esta aplicacin se ha podido comprobar el uso del modo libre de emulacin, demostrando las posibilidades que brinda el acceso a la informacin, en formato bruto, que el interfaz pone a disposicin de las aplicaciones. Mediante el anlisis del cdigo tambin 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 simultnea Ambas aplicaciones de demostracin 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 responda del modo esperado cuando la interaccin se realizaba con l. e). Alto grado de configurabilidad y adaptacin al hardware La seleccin de fuentes de vdeo se realiza sin problemas y las libreras Vfw detectan cualquier dispositivo compatible y lo aaden a la lista de forma automtica a partir del momento en que el sistema operativo lo detecta. Solo se han encontrado disponibles aquellas fuentes que estn activas antes del momento de arranque de la aplicacin, por lo tanto, no se ha reconocido ninguna fuente de vdeo que se haya conectado durante la ejecucin. Cerrando la aplicacin y volviendo a ejecutar, hemos logrado tener disponible el nuevo dispositivo. Una vez seleccionada la fuente, ha sido posible manipular los parmetros de configuracin proporcionados por el driver del fabricante a travs del cuadro de dilogo correspondiente. Su funcionamiento ha sido comprobado, tanto con la cmara empleada para desarrollar el proyecto, una NGS modelo ShowCam Plus, de cierta veterana, como con la cmara integrada en el porttil SONY VAIO VGN-SZ1XP, utilizado tambin 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 cmaras han dado los resultados esperados permitiendo, sin problemas, su seleccin y configuracin a travs del software desarrollado. Modificando los valores referentes al threshold se ha podido ajustar la sensibilidad del sistema utilizando la cmara NGS ShowCamPlus modificada. 55

Al incrementar por encima de 2 el parmetro Threshold tolerance hemos obtenido un sistema mucho ms 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 iluminacin ambiental ha sido tambin evaluada y se ha evidenciado una preferencia por iluminaciones tenues o nulas, tanto para el funcionamiento del sistema multitctil como para el uso de proyectores para trasladar la pantalla del ordenador a la superficie multitctil. Este problema se ha podido solucionar, en algunas ocasiones, activando la seleccin automtica de sensibilidad a la luz del driver de la webcam. Las pruebas indican que los parmetros de configuracin del mdulo de captura y procesado de puntos proporcionan un potente sistema de procesado de imgenes que permite exprimir al mximo las posibilidades que nos brinda el hardware empleado. Esto evidencia una alta adaptacin a las particularidades de cada conjunto de hardware. f). Almacenado restauracin de configuraciones Las opciones de arranque de la aplicacin se han verificado mediante la especificacin de ficheros de configuracin iniciales y mediante la manipulacin de las opciones de captura automtica y ocultacin de la ventana principal. stas posibilidades han permitido que, provocando la ejecucin 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 configuracin y esto ha permitido el uso del interfaz desde el inicio, de forma automtica y sin manipulacin extra por parte del usuario. Por consiguiente, queda tambin verificado el funcionamiento del almacenamiento y recuperacin de configuraciones y de la ocultacin de la ventana principal incluidas en el men Device.

56

Conclusiones y Trabajo Futuro


Desde un principio, el proyecto no pretenda sustituir el actual hardware de interfaz multitctil pero s pretenda probar que no es necesario la inversin de excesivas cantidades de dinero para disfrutar de una sensacin similar a la proporcionada por estos dispositivos. El resultado obtenido permite el uso de un interfaz multitctil que brinda la posibilidad de desarrollar aplicaciones ms intuitivas y ms eficientes con un coste de desarrollo mucho menor que el de los dispositivos proporcionados por Microsoft o Apple. Tambin 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 fsico donde se utiliza el sistema. A esta inversin se podra aadir el uso de filtros de infrarrojos ms especficos adaptados a la longitud de onda correspondiente a la iluminacin de la superficie tctil. Mediante estos avances lograramos aislar, con mayor efectividad, la luz procedente de un contacto con la superficie, sin que ello conlleve la variacin del software controlador. Tambin mejorara el rendimiento, el uso de materiales mejor adaptados a la reflexin total interna y con una sensibilidad mayor al contacto con el dedo. De la misma manera, la posibilidad de reducir la friccin entre la superficie y el dedo ayudara a facilitar los desplazamientos rpidos y a mejorar, por lo tanto, la eficacia del sistema en general. Asimismo, una iluminacin de mayor intensidad de la superficie multitctil tambin contribuira a la mejora en este aspecto. Como trabajo futuro sobre el software controlador, ayudara la incorporacin de filtros para el threshold que se adapten a nuevas situaciones, y la mejora del clculo del mismo basndose en algoritmos ms complejos de procesado del histograma y la imagen. Tambin sera til la incorporacin de un nuevo mdulo de interpretacin de puntos que permitiera el escalado y rotacin de diferentes objetos de la pantalla a la vez. A su vez, la programacin de libreras para su uso en lenguajes de programacin de alto nivel, tales como Visual Basic, Java o incluso aplicaciones en formato Web basadas en Flash, favorecera la difusin del sistema y el desarrollo de aplicaciones basadas en l. Otra caracterstica 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 ejecucin de la aplicacin y, por lo tanto, hace pensar que en configuraciones ms modernas de hardware la fluidez con la que el sistema es capaz de actuar resulta mucho mayor. Adems, este incremento en la velocidad de proceso favorece a la precisin permitiendo el incremento de las resoluciones y la cantidad de fotogramas por segundo empleadas por la webcam. Mediante estas conclusiones, y la evaluacin 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 multitctil de funcionalidad plena sin la necesidad de someterse a las exigencias econmicas de las grandes empresas informticas.

57

Recursos Utilizados
A. B. C. D. Hardware Webcam NGS ShowCam Plus (modificada) Superficie sensible al tacto de 600x400mm Ordenador SONY Vaio VGN-SZ1XP Proyector SONY Bravia Desarrollo de Software controlador Windows XP Professional Edition, version 2002, con Service Pack 2 Driver de webcam NGS ShowCam Plus para Windows 98 Microsoft Visual Studio 98 (licencia MSDNAA estudiante)

Desarrollo de aplicaciones de demostracin Windows XP Professional Edition, versin 2002, con Service Pack 2 Microsoft Visual Studio 2005 DirectX 9.0 SDK Bibliografa Tipler Fsica** Traducci de la tercera edici normalitzada: Editorial Revert S.A. - 1994 Bibliografa Web http://es.wikipedia.org/wiki/Webcam (sensores de webcam) http://j.orellana.free.fr/textos/luz_solar.htm (Emisin de radiacin infrarroja) http://es.wikipedia.org/wiki/Luz (Espectro Lumnico) http://es.wikipedia.org/wiki/Infrarrojos (Radiacin 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 (Reflexin total interna) http://es.wikipedia.org/wiki/Escala_de_sensibilidad_fotogr%C3%A1fica (Sensibilidad a la luz del carrete fotogrfico) (licencia MSDNAA estudiante)

E.

58

http://es.wikipedia.org/wiki/Emulsi%C3%B3n_fotogr%C3%A1fica (Emulsin fotogrfica)

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 cmaras de bajo coste, aunque eso no signifique necesariamente que cualquier cmara CCD sea mejor que cualquiera CMOS. Las webcams para usuarios medios suelen ofrecer una resolucin VGA (640x480) con una tasa de unos 30 frames por segundo, si bien en la actualidad estn ofreciendo resoluciones medias de 1 - 1,3 MP.La circuitera electrnica es la encargada de leer la imagen del sensor y transmitirla a la computadora. Algunas cmaras usan un sensor CMOS integrado con la circuitera en un nico chip de silicio para ahorrar espacio y costes. El modo en que funciona el sensor es equivalente al de una cmara digital normal.

Figura 46: Sensor CCD

Figura 47: Sensor CMOS

60

2.

Anexo 2: Emisin de Radiacin Infrarroja

http://j.orellana.free.fr/textos/luz_solar.htm El hecho de que la energa infrarroja es una forma de luz invisible fue descubierto a principios del siglo XIX por sir William Herschel, uno de los ms grandes cientficos de su poca, y uno de los primeros en astronoma 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 producan un efecto calorfico, otros no lo hacan, 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 travs del anaranjado y amarillo al verde, azul y violeta al otro extremo. Observ que el amarillo era la luz ms brillante, que el rojo era el que emita ms calor, y vio con sorpresa que la mayor temperatura de todas se hallaba en radiacin invisible justo por bajo de la luz roja visible. Esta luz infrarroja - "bajo el rojo" - es una parte prominente de la radiacin emitida por cualquier objeto caliente Estas imgenes nos dan una idea de la diferencia entre una imagen obtenida mediante la deteccin de la luz emitida en el rango visible y en el rango infrarrojo, y cmo, la de luz infrarroja, brinda informacin que no podramos obtener a travs de una imagen de luz visible.

Figura 48: Imagen en color estndar

Figura 49: Imagen infrarroja

61

3.

Anexo 3: Espectro Lumnico

http://es.wikipedia.org/wiki/Luz El espectro electromagntico est constituido por todos los posibles niveles de energa que la luz puede tomar. Hablar de energa es equivalente a hablar de longitud de onda; luego, el espectro electromagntico abarca, tambin, todas las longitudes de onda que la luz pueda tener, desde miles de kilmetros hasta femtmetros. Es por eso que la mayor parte de las representaciones esquemticas del espectro suelen tener escala logartmica.

Figura 50: Espectro lumnico

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

62

4.

Anexo 4: La radiacin Infrarroja

http://es.wikipedia.org/wiki/Infrarrojos La radiacin infrarroja, radiacin trmica o radiacin IR es un tipo de radiacin electromagntica 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 nanmetros hasta 1 milmetro. La radiacin infrarroja es emitida por cualquier cuerpo cuya temperatura sea mayor que 0 Kelvin, es decir, 273,15 grados Celsius (cero absoluto). Caractersticas de la radiacin 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 caracterizacin energtica emite radiacin. En general, la longitud de onda donde un cuerpo emite el mximo de radiacin es inversamente proporcional a la temperatura de ste (Ley de Wien). De esta forma la mayora de los objetos a temperaturas cotidianas tienen su mximo de emisin en el infrarrojo. Los seres vivos, en especial los mamferos, emiten una gran proporcin de radiacin 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 misin excluir la radiacin ultravioleta y la totalidad o gran parte del espectro visible, dejando pasar a travs del objetivo de la cmara solamente el espectro infrarrojo. Sin un filtro de infrarrojo, la pelcula absorbera todo el espectro dejando el negativo inservible. En el mercado se pueden encontrar diferentes tipos de filtros infrarrojo, segn las necesidades. Bsicamente, difieren, en la cantidad de espectro infrarrojo que dejan pasar. A mayor cantidad de espectro infrarrojo, el efecto en la pelcula se acentuar. De las marcas ms populares que comercializan estos filtros, se destacan Hoya, Tiffen y Kodak. Hoy en da, la experimentacin con el infrarrojo en cmaras fotogrficas digitales se basa en desposeer a estas del filtro "hot mirror" que las protege de esta radiacin. Con esta pequea operacin, se consigue, que algunas mquinas digitales del mercado, acompaadas de un filtro infrarrojo, consigan fotografas infrarrojas.

64

6.

Anexo 6: Histograma

En estadstica, un histograma es una representacin grfica 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 sealando las marcas de clase, es decir, la mitad del intervalo en el que estn 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 Refraccin del Metacrilato y el Aire


OPTICAS

http://www.resopal.com/IT/ES/PT/Metacrilato.htm
PROPIEDADES (de tipos incoloros) Norma Unidad
%

Colada
92

Extrusin
92

Transmisin del material en 3 mm, campo visible (380...780mm) DIN 5036 Iluminacin standard D65 Prdida por reflexin (para cada superficie lmite) en el campo visible DIN67507 -

% % %

4 85 <0.05

4 85 <0.05

Transmisin total de energa (Espesor 3 mm) Grado de absorcin en el campo visible (Esp. 3 mm)

ndice de refraccin n 20/D

DIN53491

1.491

1.491

http://es.wikipedia.org/wiki/%C3%8Dndice_de_refracci%C3%B3n
Material Aire (*) ndice de refraccin 1,00029

ngulo crtico13:
n2 1.00029 = arcsin = arcsin(0.670885311871) = 41.1 1.491 n1

c = arcsin

Frmula 4:Obtencin del ngulo crtico 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, sern reflejados nuevamente hacia su interior con el mismo ngulo de incidencia. Al llegar al otro extremo del metacrilato sufrirn el mismo efecto repitindose hasta incidir con un ngulo inferior al crtico. Si el medio con el que se encuentra el rayo de luz, es un dedo en vez del aire, se modificar el ngulo crtico, ya que su ndice de refraccin 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 crtico y, por consiguiente, al llegar al otro lado del metacrilato, lo atravesar saliendo al exterior.

13

Anexo 8: Reflexin total Interna

66

8.

Anexo 8: Reflexin total Interna

http://es.wikipedia.org/wiki/Reflexi%C3%B3n_interna_total Se denomina reflexin interna total al fenmeno que se produce cuando un rayo de luz, atravesando un medio de ndice de refraccin n ms grande que el ndice de refraccin en el que este se encuentra, se refracta de tal modo que no es capaz de atravesar la superficie entre ambos medios reflejndose completamente. Este fenmeno solo se produce para ngulos de incidencia superiores a un cierto valor crtico, c. Para ngulos mayores la luz deja de atravesar la superficie y es reflejada internamente de manera total. La reflexin interna total solamente ocurre en rayos viajando de un medio de alto ndice refractivo hacia medios de menor ndice de refraccin. El ngulo crtico tambin es el ngulo mnimo de incidencia en el cual se produce la reflexin interna total. El ngulo de incidencia se mide respecto a la normal de la separacin de los medios. El ngulo crtico viene dado por:

Frmula 5:ngulo crtico

67

9.

Anexo 9: Clculo de la Resistencia Limitadora

Para el clculo de la resistencia limitadora de corriente es necesario conocer la tensin de alimentacin y la tensin que queremos proporcionar al diodo, as como la intensidad de corriente que queremos que circule. La combinacin de ambos parmetros determinara la intensidad con la cual se iluminar el diodo L.E.D.

Figura 53: Esquema del circuito para la iluminacin de un diodo LED

Vdd V f Rs = If
Frmula 6:Resistencia limitadora

Vdd = 5V

52 V f = 2V Rs = Rs = 60 3 50 10 I f = 50mA
Frmula 7:Clculo de la resistencia limitadora un caso concreto

El valor de resistencia estndar ms cercano es el de 47 Ohm el cual nos proporcionar una corriente suficiente para la iluminacin del L.E.D.

68

10.

Anexo 10: Clculo del Polinomio Corrector de Perspectiva


A = 1 B 1 2 (mdia ) 1 B = 2 2 2 ( ) mdia mdia

Resolucin del sistema con los datos disponibles A(1) 2 + B(1) = 1 2 A(mdia ) + B(mdia ) =

Frmula 8:Clculo del polinomio corrector

Polinomio corrector en funcin de los valores hallando los valores A y B


A X 2 + B X = corregida

Clculo de la corregida utilizando el polinomio corrector


2 Corregida = A X + B X X = original

Frmula 9:Clculo de la corregida utilizando el polinomio corrector

Por ejemplo, para si obtenemos un punto central de la diagonal de la imagen de la cmara correspondiente a media=0.6, obtendramos una correccin como esta:

Figura 54: Representacin del polinomio corrector cuando media=0.6

69

Si observamos la grfica, veremos que en el punto 0.6, correspondiente al centro de la diagonal con perspectiva, obtenemos el valor 0.5, que correspondera al centro de la diagonal de la pantalla. Asimismo, podemos comprobar como en los extremos 0 y 1 esta relacin tambin resulta vlida. Si, por otro lado, el parmetro nos indicara un valor 0.4 la correccin aplicada correspondera a la siguiente grfica dnde tambin es posible verificar las relaciones anteriores:

Figura 55: Representacin 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 Fotogrfico

http://es.wikipedia.org/wiki/Escala_de_sensibilidad_fotogr%C3%A1fica Fsicamente se define la sensibilidad como la inversa de la entrada necesaria para obtener una respuesta predeterminada en un sistema. En fotografa la entrada es la exposicin y la salida es la densidad obtenida. La sensibilidad fotogrfica por tanto puede definirse como la inversa de la exposicin necesaria para obtener una densidad predeterminada. Las distintas escalas de sensibilidad fotogrfica estn clasificadas en funcin del tipo de emulsin fotogrfica presente en la pelcula.

76

13.

Anexo 13: Emulsin Fotogrfica

http://es.wikipedia.org/wiki/Emulsi%C3%B3n_fotogr%C3%A1fica Una emulsin fotogrfica es una fina capa sensible a la luz sobre un soporte como cristal, celulosa o polister. La emulsin fotogrfica es la base de una pelcula o placa fotogrfica. En realidad no se trata de ninguna emulsin sino ms bien una suspensin, una colmatacin de finos cristales sensibles a la luz repartidos en una gelatina, por tanto un gel. Sin embargo el trmino emulsin, aunque errneo, qued generalizado. Esos cristales sensibles a la luz son conocidos como sales o haluros de plata. Tras la exposicin a la luz los cristales suficientemente iluminados se transforman en plata metlica, y los dems todava en forma de sales sern lavados (eliminados) durante el proceso de fijacin quedando as la emulsin estabilizada. ste es el principio del negativo. Aunque los cristales de plata son sensibles a la luz, no lo son a toda la gama cromtica sino slo a la de onda ms corta, es decir a los tonos azules. Para hacer una emulsin sensible a todo el espectro electromagntico visible, se recubren las partculas con unos tintes moleculares que captan fotones y los envan a los cristales. En pelcula de color y diapositiva se emplea un proceso ms 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 emulsin que al no ser sensible al rojo solo recoger los tonos verdes, luego otro filtro rojo para la tercera emulsin que es sensible a ste color. A. Emulsin Ortocromtica La emulsin ortocromtica es sensible a todas las longitudes de onda visibles excepto el rojo. Es por ello que en los comienzos de la fotografa solan maquillarse bastamente a los fotografiados, causando en ocasiones una sensacin extraa. Suelen usarse hoy da las emulsiones ortocromticas para el trabajo de fotografa en blanco y negro, por ejemplo en la ampliacin del negativo (paso al papel) donde la emulsin del papel no necesita ser sensible al rojo pues slo 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. Emulsin Pancromtica La emulsin pancromtica es sensible a todo el espectro electromagntico visible. Ello se consigue mediante la fabricacin de la emulsin con unos aditivos especiales que absorben la luz. Las pelculas pancromticas recogen el tono correcto de los colores, es decir la sensacin de tonos de grises que corresponden a la impresin de luminosidad del ojo humano. La pelcula en blanco y negro usada an hoy da son casi sin excepcin sensibilizadas de modo pancromtico. Para la produccin de fotografa en blanco y negro con un tono correcto a partir de negativos de color existen algunos papeles fotogrficos de emulsin pancromtica, por ejemplo: Kodak Panalure. Sin embargo stos no pueden revelarse en un tpico laboratorio con luz roja. Existen no obstante unas lmparas de vapor de sodio que pueden usarse de modo controlado debido a su escasa franja cromtica de 589nm.

77

C.

Conclusin til

Si exponemos un negativo a todo el rango de radiaciones lumnicas excepto a la infrarroja, ste se transformar en un filtro que eliminar todas las radiaciones excepto esta ltima debido a su carcter negativo. Las cmaras fotogrficas tambin incorporan un filtro tapa-infrarrojos en su lente, por lo tanto, cualquier negativo velado no habr recibido, en principio, radiacin procedente de la franja infrarroja.

78

14.

Anexo 14: Declaracin de confidencialidad

Esta declaracin de confidencialidad afecta tanto a los algoritmos a los que se hace referencia en este documento como al software resultante de la implementacin de este proyecto. Ambos se encuentran a la espera de obtener las patentes y registros pertinentes. La titularidad, gestin y licencia de los resultados de este proyecto estn 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. Descripcin
Multitouch se trata de una aplicacin que se encarga de proporcionar un interfaz multitctil a travs de la captura de imgenes infrarrojas. Toda parte iluminada de la imagen obtenida mediante la webcam, ser considerada un punto de contacto. 1.1. 1.1.1. Modos de Funcionamiento: Modo Emulacin de Dispositivo Apuntador

Es necesaria su activacin en la configuracin de la aplicacin. En este modo, la aplicacin emula el funcionamiento de un ratn estndar controlando el puntero del sistema. La emulacin de las pulsaciones en los botones se realiza enviando los mensajes necesarios al sistema operativo segn la configuracin establecida. La informacin referente al interfaz multitctil se enva en la parte de informacin extra contenida en el mensaje de ratn estndar. Se puede acceder a esta informacin mediante el uso de la funcin GetMessageExtraInfo, la cual nos proporcionar un valor de 32 bits. Este valor nos indicar el ngulo de rotacin en sus 16 bits bajos y el parmetro de escalado en los 16 bits altos. El acceso a esta informacin extra del mensaje del ratn, se encuentra descrita en http://msdn.microsoft.com/en-us/library/ms644937(VS.85).aspx 1.1.2. Modo libre de Emulacin Este modo se encuentra siempre activo, dejando la informacin en una zona de memoria compartida. sta es generada a travs "Local\\MultitouchInfoFile". de un fichero mapeado en memoria llamado

Para el acceso seguro a esta zona de memoria es necesario la sincronizacin, entre todas las aplicaciones que la utilizan, mediante el uso de zonas de exclusin mutua. Esta exclusin 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 funcin WaitForSingleObject. La informacin que se almacena en la zona de memoria compartida se encuentra definida por un fichero de cabecera MultitocuhInfo.h que contiene el siguiente cdigo:
#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 estarn contenidas en pX[n] y pY[n], siendo 0n<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.

Instalacin

El software consta de un nico fichero ejecutable (Multitouch.exe) que contiene la aplicacin controladora. Es posible situarla en cualquier localizacin sin necesidad de adjuntar ningn fichero en su mismo directorio. Si la aplicacin no encuentra los ficheros de configuracin iniciales, sta los crear de nuevo con la configuracin por defecto. Es posible utilizar el instalador, el cual copiar la aplicacin en el lugar indicado e incluir este manual de uso y el fichero MultitocuhInfo.h.

Figura 56: Aplicacin de instalacin

82

3.
3.1.

Configuracin
Men Device Load Settings: Permite la recuperacin 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 botn derecho del ratn, se accede a un men resumido que permite la manipulacin de las opciones bsicas del sistema. Quit: Finaliza la aplicacin Men Source Select Source: Permite seleccionar el hardware de captura de imgenes que vamos a emplear Source Settings: Permite acceder a la configuracin proporcionada por el driver del fabricante del hardware de captura Men Capture Points Preview: Permite la visualizacin en tiempo real de los puntos que obtiene el software de procesado de imgenes Image Preview: Permite la visualizacin en tiempo real de las imgenes que obtiene el hardware de captura Start Capture: Inicia la captura de imgenes y, por lo tanto, el funcionamiento del interfaz multitctil Stop Capture: Cesa la captura de imgenes y la actividad del interfaz multitctil Settings: Da acceso al dilogo de configuracin del mdulo de captura de puntos de la aplicacin

3.2. 3.3.

Figura 57: Dilogo Capture Settings

83

o Intensity Levels: Cantidad mxima de niveles de intensidad con la que el mdulo de procesado de imgenes va a trabajar. o Frames/sec: Este parmetro nos permite determinar la cantidad de imgenes por segundo que vamos a pedir a la webcam. Si sta no es capaz de alcanzar este valor, sencillamente nos proporcionara su capacidad mxima 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 configuracin 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 estn dentro de esta zona, sern consideradas como puntos iluminados y, por lo tanto, puntos de contacto. o Threshold mnimo: Valor mnimo que el threshold puede tomar. o Maximum Pixel Areas: Cantidad mxima de reas de pxeles con el que el sistema ser capaz de funcionar durante la segmentacin de la imagen. o Minimum Areas mass: Masa mnima, en pxeles, necesaria para que una masa de pxeles sea considerada un punto de contacto. Si es menor, sta ser considerada como ruido y ser desechada. o Maximum Translated Points: Cantidad mxima de puntos de contacto con la que va a trabajar el sistema. o Minimum Points Distance: Distancia mnima entre dos puntos para que sean considerados dos puntos independientes. Si no es as, sern unidos en uno solo. 3.4. Men Multitouch Pointing Device Emulation: Activa el modo de emulacin de dispositivo multitctil 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 multitctil en los cuales se situa el cursor del sistema. o Show Calibration Points: Muestra los puntos de calibrado actuales. Settings: Da acceso al dilogo de configuracin del mdulo de interpretacin de puntos de la aplicacin.

Figura 58: Dilogo Multitouch Settings

84

Cuando el modo de emulacin de dispositivo apuntador est activo, el sistema recurre a esta configuracin para decidir que botn debe apretar en cada situacin. Esta decisin se basa en la cantidad de puntos de contacto simultneos existentes en cada momento. o When: Seleccionando de la lista When la cantidad de puntos de contacto simultneos, podemos decidir que botn ser emulado en cada momento. Esta decisin se especifica en las opciones de Emulate Options. o Persistence: Este parmetro indica al sistema que memorice, durante los fotogramas indicados, la accin 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 configuracin de arranque de la aplicacin.

Figura 59: Dilogo Boot Settings

o Start Capture on Boot: Si esta opcin se encuentra activa, al iniciarse la aplicacin, esta comenzar la captura de imgenes automticamente con la configuracin que tenga en ese momento. o Hide on Start Capture: En caso de estar activa, esta opcin indica al sistema que oculte la ventana principal en cuanto comience la captura de imgenes. o Keep Default Settings: Esta alternativa indica al sistema que, despus del arranque, la configuracin por defecto sea la que se encuentre activa. o Load Existing Settings File: En esta opcin podemos establecer una configuracin inicial que est contenida en algn fichero almacenado con anterioridad

85

4.
4.1.

Requisitos del sistema


Hardware Superficie emisora de luz infrarroja Proyector estndar Webcam sensible a luz infrarroja Procesador 32 bits (Intel/AMD) 64 MB de RAM Windows XP

4.2.

Software

86

Вам также может понравиться