50

Kinect: Como funciona su 3D body tracking

Publicado el: 23/11/2010
Kinect
Microsoft quiere que podamos jugar en la Xbox 360 moviéndonos delante de la pantalla. Para ello se ha gastado cientos de millones en desarrollar un dispositivo para realizar el reconocimiento y seguimiento, no sólo de una persona completa si no de varias a la vez, incluyendo además información 3D, su nombre es Kinect y empezó a comercializarse a principios de este mes por unos 150 €. En esta entrada descubriréis como funciona viendo, tanto el hardware como los algoritmos de inteligencia artificial que usa.

Para obtener la imagen 3D cuenta con un proyector de luz infrarroja y una cámara que capta sólo este tipo de luz, de manera que la intensidad de la luz infrarroja que llega rebotada a la cámara, le indica a la consola la profundidad a la que se encuentra ese pixel, creando, de esta manera, un mapa de alturas en blanco y negro de 320x240 píxeles, dónde el color más blanco indica que está más cerca y el color más oscuro más lejos. Este método no es el único para dotar a una máquina de visión estereográfica, también se puede reconstruir una imagen 3D de la realidad usando dos o más cámaras, pero el método elegido funciona aunque las condiciones de iluminación sean malas.

esquema del funcionamiento de Kinect

También tiene una cámara a color a 640x480 píxeles con sensor CMOS y autofocus para grabar en video a los jugadores, hacer reconocimiento facial, y separar a las personas del fondo, ya que la información de color y texturas es fundamental para esta tarea. Separar algo del fondo técnicamente se llama segmentación y antes de hacer esto también se debe utilizar algún algoritmo para alinear la imagen en color con el mapa de alturas, para lo cual es necesario conocer el espacio entre las dos cámaras y, supongo, que las tendrán bien calibradas, ya que de no ser así, sus lentes, provocarían deformaciones distintas, dificultando la tarea de hacer la correspondencia de píxeles, mientras que con la calibración se pueden anular las deformaciones antes de hacer la correspondencia.

Una vez segmentada la persona se deben reconocer sus partes y asignar cada una a un esqueleto virtual, cuya posición determinará la acción que vamos a realizar en el juego.

En la base tiene un motor para calibrar su posición con la ayuda de un acelerómetro interno, lo cual indica que los algoritmos que usa para identificar las partes de una persona producen errores si las cámaras no están mirando justo de frente al sujeto.

Terminado el reconocimiento del cuerpo, en los siguientes fotogramas usará algún algoritmo de seguimiento para saber a dónde nos movemos, de esta forma no tendrá que hacer tantos cálculos para segmentarnos y reconocer nuestras partes del cuerpo, como en el primer fotograma.

Como todo sistema de inteligencia artificial, necesita un entrenamiento para que pueda aprender a reconocernos. Esto se hace dejando la mano quieta delante del dispositivo y haciendo algunos movimientos delante de la pantalla. De esta manera el sistema extrae los patrones necesarios para identificar las características propias de nuestras manos (color de piel, tamaño, etc.) y de nuestro cuerpo (anchura, altura, etc.).

Sin duda es un dispositivo interesante y no me extrañaría nada que se usara su tecnología para la fabricación de robots. Habrá que probarlo para ver si supera el nivel de precisión del Wii remote plus o el Playstation Move.

En la próxima entrada explicaré otra funcionalidad interesante de Kinect, el micrófono multiarray.

Pensamientos (0): Comentar
Categorías: , ,

Comparte:

Copia y pega en tu página:

Comparte
Escribe tus pensamientos computables

Respondiendo a los siguientes comentarios:

Para comprobar que eres un humano responde correctamente:

Esta pregunta no me gusta, ¡cambialá!

Ninguno de estos datos será almacenado.

(Escribe el correo electrónico)

Campo obligatorio.

(Escribe el correo eléctronico o los correos electrónicos separados por comas)

Campo obligatorio.

Para comprobar que eres un humano responde correctamente:

Esta pregunta no me gusta, ¡cambialá!