Proyecto Fin de Carrera

Robótica, software y telecomunicaciones.

Por qué calibrar la Kinect

Hace tiempo publiqué una entrada en la que hablaba del último cambio de rumbo del proyecto, cambio que entre otras cosas me llevaba a usar la kinect. En la siguiente, os contaba sobre la kinect, y los primeros problemas que tenía para hacerla funcionar, pero que finalmente solucioné.

Trabajando con ella conseguí pintar encima de la imagen de la cámara de vídeo en función de la profundidad que detectaba el sistema de infrarojos, y conseguí pintar en otro color, los objetos a determinada distancia y determinado margen de error, todo controlado con unos sliders (barras desplazadoras) de QT4. En otra entrada comentaré lo que he aprendido sobre la GUI con QT4 y el tema de los sliders.

Al observar la imagen resultante por la pantalla se apreciaba claramente un nuevo problema, y era que la imagen de la cámara RGB y la información de profundidad que nos da el sistema infrarojo no coincidían. Se puede apreciar claramente en la siguiente imagen. El error se incrementaba con la distancia, pero una barra vertical derecha sin información de profundidad permanecía constante.

Entonces, tenía que buscar una explicación al problema, y una vez entendido, intentar solucionarlo.

La explicación de la barra vertical derecha puede observarse en la siguiente imagen, se trata de la diferencia del ángulo de visión de ambas cámaras (IR y RGB) y la distancia ente ellas:

En cuanto al otro error es algo más complejo. Por una parte tenemos que entender que existe una traslación entre la imagen de la cámara RGB y de la imagen captada por la cámara IR debido a la separación que hay entre ambas. Por otro lado hay que tener en cuenta que la lámpara IR está desplazada hacia la derecha respecto a la cámara IR, lo que generará una “sombra IR” a la izquierda de cualquier objeto.

En este caso, la cámara infraroja sólo podría ver la cara b.

La traslación entre los ejes focales de las dos cámaras (IR y RGB), se puede calcular a groso modo midiendo la distancia entre las dos cámaras, que nos la podría dar el fabricante. Sin embargo, hay que tenen en cuenta que la precision en la fase de construcción de la Kinect no es perfecta, y por este motivo cada Kinect tiene una traslación específica. Es más, estamos suponiendo que existe una traslación entre los dos ejes focales, pero que estos se mantienen paralelos entre sí, cuando en realidad, por el mismo motivo anterior, cada kinect tiene una desviación característica entre esos dos ejes.

De ahí la necesidad de calibrar cada kinect con la que queramos trabajar.

Hasta ahora he encontrado 2 formas de calibrar las kinects, una que desarrollan desde la gente de ROS(un sistema operativo para robots), y otra que se está desarrollando en el entorno de OpenKinect.

La gente de ROS ha calculado los valores de las matrices de Traslación y Rotación genéricos que podemos encontrarlos aquí.

Por su parte, Nicolas Burrus junto con la comunidad OpenKinect desarrollan un programa llamado RGBDemo para que cada uno calibre su kinect, calculando los valores de las matrices basándose en el método de la calibración de cámaras estéreo de OpenCV. Además están trabajando en añadir características al programa como estabilizador de imagen de profundidad, relleno de huecos predecibles, detección de objetos, tracking humano, etc.

Anuncios

3 marzo 2011 - Posted by | all | , , , ,

3 comentarios »

  1. […] de Kinect En esta entrada os comentaba sobre la calibración de la Kinect, y en esta otra algunas mejoras del componente de […]

    Pingback por Calibración de Kinect « Proyecto Fin de Carrera | 7 abril 2011 | Responder

  2. Muy buen aporte, facil de entender =)

    Comentario por robotic87 | 9 julio 2012 | Responder

  3. Gracias. Me ayudó mucho a entender los problemas de sombras del kinect que yo mismo estoy experimentando. Saludos desde Argentina

    Comentario por Fernando Nellmeldin (@fern17) | 8 agosto 2012 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: