Interacción con el usuario
Interacción con el usuario
En este apartado se comentarán las técnicas más usuales que permiten a una aplicación interactuar con un usuario de forma intuitiva mediante un interfaz visual. Para ello nos plantearemos el problema y veremos como lo solucionaríamos de la forma más sencilla posible, y como se ha conseguido evolucionar desde los primeros sistemas de interacción visual como el Eye toy, hasta los evolucionados sistemas actuales como el kinect.
Como se ha comprobado en el tema anterior en la práctica de detección de caras, el reconocimiento de objetos por la forma es un proceso costoso y, especialmente complejo (pues requiere un entrenamiento con cientos o miles de patrones para funcionar decentemente). Así pues, si nos planteamos el problema de interactuar con un usuario de forma visual, la opción de reconocer objetos en principio la dejaríamos apartada y se buscarían soluciones más simples. La solución más simple que se puede ocurrir, y de hecho una de las más clásicas ya que sigue siendo usada hoy en día en sistemas como CamSpace o Playstation Move, es la utilización de un marcador fácilmente reconocible, que normalmente será un color concreto que no esté en el entorno en el que se ejecuta la aplicación. Por lo general se escoge un color especialmente llamativo (saturado), de forma que sea muy facil de detectar, y a la vez que no sea muy común, evitando especialmente colores poco saturados o colores marrones (común en armarios de madera, color piel de las personas, etc). En el ejemplo se muestra como se ha cogido como color el color verde del capuchón del rotulador, por ser un color que no se haya en la escena en ese momento, por lo tanto, es fácil de detectar. El problema con este tipo de sistemas es que no siempre se puede encontrar un color que no esté en el entorno en que se ejecuta el sistema, lo que provocaría que el sistema fallase o no funcionase correctamente.
Una solución fácil y sencilla para evitar el problema de que haya en el entorno colores parecidos al color usado como marcador para el sistema, es no usar un color concreto para detectar los movimientos y gestos del usuario, sino usar movimiento. En este caso se detectará cualquier "cosa" que se mueva. Si el objetivo es detectar movimiento, lo primero que habría que hacer es capturar el fondo de la habitación o lugar donde se vaya a ejecutar el sistema, y luego simplemente detectar cualquier objeto nuevo en la escena mediante una comparación entre la imagen capturada como fondo y las imágenes nuevas (como en los cromas del hombre del tiempo o de las películas). Sin embargo, nuevamente, nos encontramos con un problema y es que, a no ser que se trate de un entorno controlado, el entorno puede cambiar fácilmente, ya sea porque en el momento de hacer la captura del fondo hubiese un objeto o persona que luego se ha movido, o simplemente por la variación de la iluminación a lo largo del día.
Como solución a este nuevo problema, está el usar un fondo "variable". Es decir, en vez de de usar un fondo fijo y conocido, se van comparando cada imagen con la capturada anteriormente. Con esta forma de detección de movimiento se evita el problema del fondo variable, pero tampoco es posible detectar un objeto completamente, pues solo se detectan las partes en movimiento.
Así pues, y tras ver los pros y los contras de las técnicas más usuales, la industria finalmente ha optado por opciones alternativas como el uso de la kinect (que mediante infrarrojos soluciona muchos de los problemas comentados). Sin embargo, en este tema se está estudiando la interacción con el usuario con una cámara web, por lo que se estudiarán la:
- Detección de color.
- Detección de movimiento con fondo fijo y fondo variable.