Estaba yo pensando… ¿Y qué aspecto tiene una nube de puntos?
Vamos a tratar de averiguarlo.
Ya hemos visto cómo se representa una nube de puntos en un fichero. Ésta es una representación muy conveniente para procesar estos datos con la librería PCL. También hemos visto algún ejemplo de procesado, y veremos más. Esta representación facilita la implementación de estos algoritmos pero, aunque el fichero está codificado en ASCII, leerlo así en plan Matrix, pues no es fácil; y tratar de construir una imagen de la escena en tu cabeza, yo diría que es imposible.
Tener una realimentación intuitiva de las transformaciones que está sufriendo tu escena según se va procesando es muy importante. Es necesario ir confirmando o, al menos disponer de las herramientas para poder hacerlo, que lo que estás buscando es lo que estás consiguiendo, o no. Un visualizador es, desde mi punto de vista, una herramienta de depuración muy valiosa.
Para visualizar ficheros pcd he usado dos herramientas:
Primero, el visualizador que incorpora la librería PCL. Su funcionalidad es muy básica. Te permite hacer zoom con la rueda del ratón y girar la nube alrededor de los ejes de una esfera que abarca todos sus puntos mientras pinchas arrastrando el ratón. Enseguida se da uno cuenta de que necesita algo más y se pone a buscar otro visualizador.
De todas maneras, aunque el visualizador no dé para mucho, la primera vez que uno ve una escena familiar que acabas de escanear y vas trasteando con el ratón girando para un sitio y para otro, se te dibuja una sonrisa y se te pone cara de felicidad. No es para menos: has escaneado tu habitación y la estás viendo dando vueltas en tu ordenador.
Segundo y definitivo, CloudCompare. Es un software de procesado de nubes de puntos en 3D. Desarrollado en EDF R&D y publicado bajo licencia GNU General Public License (GPL), por lo que puede ser usado para cualquier propósito, incluyendo fines comerciales.
La página oficial de CloudCompare es http://www.danielgm.net/cc/. Es una página de Daniel Girardeau-Montaut, que imagino que habrá tenido algo que ver con su desarrollo y, por eso, le agradezco a EDF su publicación y a él su intervención en el desarrollo y su trabajo de mantenimiento.
CloudCompare está desarrollado en Qt y está disponible para Windows, Mac OS y Linux. También están disponibles los fuentes. Yo lo he usado en Windows y en Linux (Ubuntu) y mi experiencia ha sido positiva.
Para usarlo en Windows podéis bajaros un fichero comprimido, descomprimirlo en un directorio y ejecutarlo con el fichero start.bat. Muy fácil. También está disponible la opción de bajaros un instalador.
Para instalarlo en Linux, se puede hacer a través de un repositorio publicado por Romain Janvier con los siguientes comandos:
sudo add-apt-repository ppa:romain-janvier/cloudcompare
sudo apt-get update
sudo apt-get install cloudcompare
También bastante fácil. Después de esto encontraréis un ejecutable llamado “CloudCompare” en el directorio /usr/bin.
Aunque sólo lo he usado para visualizar ficheros, dispone de una serie de funcionalidades avanzadas como desplazar nubes, fusionarlas en un único fichero, segmentar zonas, aplicar filtros, calcular estadísticas, etc.
También es capaz de cargar nubes de puntos en otros muchos formatos distintos al pcd y está diseñado para gestionar ficheros con millones de puntos. Podéis encontrar más información en la página que he mencionado antes y algún tutorial en YouTube.
Una de las ventajas del visualizador de la librería PCL es que http://pointclouds.org lo ha embebido en una página html que publica en su web.
Para que podáis ver el aspecto real de una nube de puntos he conseguido, contra todo pronóstico, incrustar el visualizador en el post y pasarle uno de mis ficheros. Para tener percepción de la profundidad de la nube hay que verla en movimiento, por esto es necesario un visualizador y no vale una foto en 2D.
La nube representa la composición en un cuadrante de 90º de varias instantáneas tomadas en un barrido horizontal cada 15º de una habitación. Para tener la percepción real del escenario hay que mirar la nube desde la orientación desde la que se ha escaneado. En este escenario, la puerta está en la pared del fondo.
Para colocarla en su posición y mirar la escena desde donde estaba el sensor de profundidad hay que ir girando sobre el eje z pinchando y arrastrando el ratón en horizontal hasta que se vea la puerta en la pared del fondo.
Para visualizar la nube pincha en el play con el logo de PCL. Tardará unos segundos, no te impacientes. Puedes usar la rueda del ratón para cambiar el zoom y girar la nube alrededor de los tres ejes pinchando y arrastrando el ratón. Pinchando el logo de la esquina inferior derecha aparecen algunas opciones de visualización. Prueba a representar los ejes.
En los siguientes posts explicaré cómo he compuesto la escena a partir de varias instantáneas con la ayuda de una plataforma de pan&tilt y la librería PCL.