Fusión de nubes de puntos en tiempo real

El Grupo MoBiVAP imparte docencia relacionada con Vídeo 3D en una asignatura optativa vinculada al Máster de Ingeniería Informática de la Universidad de Valladolid. En este caso vamos a describir brevemente los contenidos de la asignatura y a mostrar los resultados obtenidos de las prácticas realizadas por los dos alumnos matriculados en este curso 2014-2015.

¿En qué consiste?

El vídeo 3D y la televisión de punto de vista libre son dos áreas de investigación activa en los últimos años que marcarán el futuro de los contenidos audiovisuales. Si bien los televisores actuales son capaces de reproducir vídeo que ofrece al espectador la sensación de profundidad (mediante un paralaje entre dos imágenes diferentes que son percibidas por cada ojo), la televisión 3D del futuro deberá permitir reproducir vídeos desde cualquier punto de vista. En otras palabras, será el espectador el que decida donde se coloca la cámara en cada momento, permitiendo visualizar los contenidos desde cualquier ángulo no pensado por el director o el realizador del evento.

La televisión de punto de vista libre permite colocar la cámara virtual en cualquier posición dentro de la semiesfera que envuelve a la escena
La televisión de punto de vista libre permite colocar la cámara virtual en cualquier posición dentro de la semiesfera que envuelve a la escena

Esta idea surge originalmente en Japón y ha sido utilizada de forma limitada en los últimos juegos olímpicos de Londres 2012 para las repeticiones de saltos en las competiciones de gimnasia. La empresa encargada de proporcionar esta tecnología es Replay Technologies Inc que también la ha aplicado a otros eventos deportivos. Las soluciones ofrecidas actualmente se basan en interpolar múltiples vistas de la escena obtenidas de cámaras cercanas a la cámara virtual que no generan verdaderos volúmenes 3D. Sin embargo es difícil conseguir una cobertura completa de todos los ángulos de la escena en todas las posiciones de la cámara. También hay complicaciones en cuanto al equipamiento, el rendimiento y el elevado ancho de banda necesario para transmitir este tipo de contenidos. No existe aún un estándar para representar este tipo de contenidos.

La televisión 3D del futuro permitirá observar la escena desde cualquier punto de vista

Entorno

El grupo MoBiVAP, a través de la docencia que imparte en el Máster de Ingeniería Informática de la Universidad de Valladolid oferta la asignatura Vídeo 3D: Fusión y Calibración de múltiples Cámaras Sincronizadas. La docencia es impartida por:

En las prácticas de este año el trabajo ha consistido en fusionar nubes de puntos procedentes de diferentes dispositivos (eligiendo libremente si eran estéreo o cámaras de tiempo de vuelo). Los resultados aparecen en el siguiente vídeo, en el que ha colaborado la Escuela Superior de Arte Dramático de Castilla y León:

  • Claudio Alberto Casero Altube (Director de escena/coreografía)
  • Natalia Mota Ibañez (Coordinadora)
  • Onintze Pablogorrán Prieto (Actriz)
  • Alejandro Fernández Gutiérrez (Actor)

Desarrollo

Para el desarrollo se ha utilizado el Robot Operating System junto con otros proyectos relacionados como la Point Cloud Library, Eigen y OpenCV. Para la captura se han utilizado 3 tipos de cámaras:

  • Una Creative HD Webcam con una sola lente y con un ángulo de visión horizontal aproximado de 60º.
  • Una Bumblebee XB3 con tres lentes sobre la misma línea base situadas en estéreo y separadas 12 cm.
  • Dos Microsoft Kinect v1 con sensor de infrarrojos para obtener directamente el mapa de profundidad.
Imagen RGB y mapa de profundidad registrado por una cámara Kinect
Imagen RGB y mapa de profundidad registrado por una cámara Kinect

La fusión de múltiples cámaras requiere calibrar, sincronizar y poner en el mismo sistema de referncias sus nubes de puntos.

La idea utilizada es sencilla y ha consistido en los siguientes pasos:

  1. Preparar y desarrollar (Bumblebee XB3) los drivers de las cámaras, calibrar las lentes de cada cámara y los relojes del sistema operativo mediante NTP.
  2. Capturar la coreografía de los actores en bags de ROS, incluyendo las marcas de tiempo y la calibración de la cámaras.
  3. Extraer las nubes de puntos de las Kinect mediante la información de calibración proporcionada por el fabricante de la cámara.
  4. Sincronizar los tiempos y velocidad de reproducción de los flujos obtenidos en las dos máquinas (debido a errores al lanzar el proceso de captura en red).
  5. Calcular las posiciones relativas entre las 2 Kinect mediante alineamiento ICP cuya transformación inicial se ha establecido de forma manual con MeshLab.
  6. Publicar la transformación utilizando el paquete tf de ROS.
  7. Visualizar ambas nubes de puntos en RViz. Las imágenes de profundidad y RGB son extraídas directamente del bag utilizando la misma marca de tiempo con la que se grabaron.
Nube de puntos compuesta a partir de 2 Kinect desde dos puntos de vista diferentes
Nube de puntos compuesta a partir de 2 Kinect desde dos puntos de vista diferentes

El código generado utiliza múltiples paquetes de ROS, en especial freenect_launch, basado en el proyecto de código abierto freenect.

El resultado es el que aparece en el vídeo. Las nubes de puntos son reproducidas a un framerate de 5 Hz para evitar saturar el ancho de banda de la máquina donde se estaban reproduciendo. El código desarrollado durante las prácticas (combinando C++, Python y XML) ha sido recopilado y está públicamente accesible en el siguiente repositorio git

El curso siguiente el trabajo de los alumnos matriculados consistirá en mejorar aspectos del proceso para obtener mejores resultados. Hay diferentes aspectos de los resultados obtenidos a mejorar, desde suavizar el mapa de profundidad mediante filtros que preserven los bordes hasta segmentar el fondo, pasando por la generación de mapas de normales o la triangulación de la nube de puntos.

Por último no olvidéis compartir la publicación y dejar vuestros comentarios y sugerencias más abajo.

Anímate y dinos que opinas sobre esta entrada