Ya os comenté hace un tiempillo alguna cosa sobre las Pantallas Multitáctiles, y ya di alguna idea de cómo montarse una en casa en plan baratillo.
Hoy vamos a ver uno de los métodos para conseguir puntos de luz justo donde ponemos los dedos.
La idea en este caso es crear un plano de luz con un láser. Quizás conozcais alguno de estos niveles, que tienen un láser para ayudar. Lo que hacen es dibujar una línea en la pared. El caso es que si algo se interpone entre la línea y la pared, también queda iluminado. Seguro que habeis visto cantidad de veces ese efecto en películas futuristas, cuando usan algún tipo de escáner para comprobar cosas.
Bueno, pues para hacer pruebas me conseguí un láser rojo con una lente que dibuja una línea (en vez del típico punto)
Si el dedo no corta el plano de luz, no se ilumina:
Pero si toca el plano de luz....
La idea es fácil de entender, ahora solo queda preparar una superficie sobre la que tocar, y crear un plano de luz justo encima, de modo que al tocar la superficie, los dedos queden iluminados.
Esta fue la superficie que improvisé:
Es una lámina de acetato apoyada en el escritorio por un lado, y en una pila de cajas y libros por el otro.
Puse unas marcas para delimitar la superficie en la que se podía tocar, llegaba el láser, y se veía en la webcam.
El laser lo coloqué en una esquina.
Y con ayuda de una silla y una camiseta, ajusté más o menos el plano de luz justo encima de la superficie.
Por último coloqué la WebCam en el suelo, apuntando hacia arriba.
Una vez montado todo este tinglado, apagué las luces e hice algunas pruebas con tBeta, que es la librería encargada de filtrar las imágenes, sacar de ahí los puntos iluminados, y convertirlos a coordenadas.
Esta es la pinta que tenía tBeta mientras hacía las pruebas:
En el cuadradito superior izquierdo aparece la imagen de la webcam, y en el superior derecho, la imagen una vez filtrada. Se puede ver cómo detecta los puntos claros sobre el fondo oscuro, y como saca coordenadas de ellos.
Una cosa que también se puede ver en el video, es que los planos de luz tienen un gran defecto, y es que los dedos hacen sombra, de modo que detrás de cada dedo hay un espacio en sombra donde no se detectan más pulsaciones. Esto se soluciona facilmente utilizando tres o cuatro láseres, y no solo uno como hice yo. Además, al utilizar varios láseres, se consigue que cada dedo aparezca como un punto gordo (o como un aro) y no como una luna. Se puede ver que en ocasiones no detecta bien las pulsaciones, por que la "luna" es muy fina. Con varios láseres este problema se solucionaría.
El paso siguiente es pensar. "Bien, ya puedo meter los dedos aquí y me reconoce las pulsaciones ¿Cómo hago ahora para que además esto sea una pantalla?". La solución es utilizar un proyector. Como de momento no tengo uno, no puedo hacer pruebas en ese aspecto, pero si puedo avanzaros el siguiente problema:
¿Y si en la imagen proyectada hay puntos rojos? ¿Los reconocerá como pulsaciones?
La respuesta es sí, los reconocería como pulsaciones, y el resultado sería horroroso, es más, la luz del proyector podría borrar completamente la luz de los láseres.
La solución a esto es utilizar láseres de un color no visible, en este caso infrarrojos, y poner en la cámara un filtro que solo deje pasar ese espectro de frecuencias (este filtro puede ser un carrete velado, por ejemplo).
Así que al final la idea es que tenemos un láser que crea un plano de luz infrarroja justo por encima de la pantalla, donde estamos proyectando la imagen, y por debajo, la webcam, que lleva un filtro que bloquea la luz visible, con lo que no es capaz de grabar nada de lo que se proyecta en la pantalla, pero sí la luz infrarroja de los láseres.
Aún hay dos soluciones más que se utilizan para hacer pantallas multipunto con webcams, pero esas las veremos otro día.