Tratamiento de datos masivos 3D con software libre
Este articulo habla sobre el Tratamiento de datos masivos 3D con software libre y de los plugins Canupo y CSF en Cloudcompare.
En esta ocasión os damos a conocer este artículo publicado en la revista TOPCART nº175 del Colegio Oficial de Ingeniería en Geomática y Topografía.
El autor es Pablo Pérez Rodríguez, Ingeniero Técnico en Topografía perteneciente al Equipo docente Postgrado TDDG “Tecnologías Digitales de Documentación Geométrica y Representación del Patrimonio”, SIC - Incipit.
Puedes consultar el artículo original en este enlace
En la actualidad, gracias al desarrollo y mejora de las nuevas tecnologías aplicadas a las técnicas y sistemas de medición, llámese lídar (ALS Y TLS), fotogrametría de objeto cercano, con drones y otros sistemas autónomos, o incluso como la combinación de ambas, la labor de nuestra profesión ha mejorado sustancialmente en calidad, eficiencia y productividad.
Surge así una nueva fuente de información de datos masivos que nos sirve como base o referencia con la que empezar a trabajar para obtener estos resultados más precisos, vistosos y detallados; las nubes de puntos 3D.
Sin embargo, el tratamiento de estos datos es complicado por no decir imposible sin el correspondiente software específico, que generalmente viene acompañado junto a la reciente adquisición de nuestro nuevo instrumental de medición o adquirido como nueva inversión extra y que, en la mayoría de los casos nos damos cuenta que no nos dan los resultados que esperamos, ya que estas soluciones suelen ir ligeramente desfasadas en comparación con su instrumento de medición.
Por tanto, podremos cubrir hectáreas y hectáreas de terreno con nuestro equipo lídar-fotogramétrico en un breve espacio de tiempo para obtener millones y millones de puntos 3D del terreno para posteriormente, perder el tiempo ganado en incansables horas de trabajo en gabinete depurando y limpiando nuestra maravillosa y llamativa nube 3D con color RGB, para poder obtener un MDT modelo digital de terreno (no MDS), necesario para un encaje o unas cubicaciones de nuestra obra. Quizás pueda resultar rentable para una empresa, aunque no para todas, ya que estas nuevas tecnologías no se encuentran al alcance de cualquier usuario.
Desconocidos por muchos y orgullos de pocos, son los softwares “Open Source” y “Free Software”** (programas de código abierto y libre distribución) los elegidos para solventar esta falta de medios y herramientas profesionales a la hora de editar y tratar los datos masivos de nubes de puntos 3D. En concreto, disponemos
de CloudCompare (http://www.danielgm.net/cc/) , una apuesta segura debida a su estabilidad de funcionamiento y a la diversidad de herramientas que ofrece para el tratamiento de nuestros datos que, unidos a los Plugins Canupo y recientemente, CSF filter, resultan de un gran potencial.
** A menudo se suele confundir el término “Open Source” y “Free Software” como software gratuito cuando en realidad hace referencia al software que permite su libre distribución y modificación del mismo en función de las necesidades de cada usuario. En este caso, la descarga es gratuita pudiendo realizar aportaciones y donaciones de forma voluntaria para contribuir al desarrollo y mejora de las futuras versiones del programa.
CloudCompare
El proyecto CloudCompare nació en el año 2.003 por Daniel Girardeau-Montaut, con la colaboración entre Telecom ParisTech y la compañía EDF (Electricity of France), con el objetivo de detectar los cambios en nubes densas de puntos 3D obtenidas mediante mediciones con instrumentación Laser Scanner (“Change Detection on Points Cloud Data acquired with a Ground Laser Scanner”, D. Girardeau-Montaut, M. Roux, R. Marc & G. Thibault, ISPRS Workshop Laser Scanning 2005, Enschede, the Netherlands, September 12–14, 2005). De hecho, tras convertirse en un proyecto independiente “Open Source”, uno de los puntos fuertes que ofrece este software, es el análisis y comparación de diferencias entre nubes masivas de puntos 3D con otras nubes e incluso con mallas 3D, ideal para el análisis de precisiones entre fuentes de datos de naturaleza diversa, para la determinación de deformaciones e incluso para el estudio de movimientos de laderas entre tantas otras aplicaciones posibles.
Detección de marcas y señales ocultas en petroglifos mediante MRM (Morphological Residuals Model) con la ayuda de herramientas de edición de mallas y nubes de puntos de CloudCompare
Actualmente, los usuarios pueden disponer de una versión 2.9 “Beta” en fase de pruebas y de la última versión estable 2.8.1 para las plataformas de Windows, con soporte NVDIA 3D Visión y Oculus Rift para la versión de 64 bits, Linux y Mac O, aunque en su repositorio podremos disponer de versiones anteriores.
Aunque el objetivo de este artículo es la presentación de algunas de los plugins disponibles para el tratamiento y gestión de nuestros datos masivos 3D, es conveniente mostrar a los lectores algunas de las funcionalidades que ofrece CloudCompare para que cualquier interesado quiera iniciarse desde este mismo instante.
Importación y exportación de datos:
- Reconoce multitud de formatos de datos masivos de nubes de puntos 3D, entre ellos los creados en formato ASCII (txt, asc, xyz, pts), Lídar (LAS, LAZ), PLY, E57, PCD, los datos procedentes de marcas comerciales como Leica (PTX), Faro (fls), Riegl, DotProduct, Aveva PDMS e incluso los obtenidos a partir de procesos fotogramétricos o de visión artificial SFM como Photoscan (psz y en breve psx), AirPhoto SE, Bundler, etc.
- A nivel de mallas 3D importa los formatos Wavefront OBJ, mallas de polígonos PLY, Stereolithographiy STL, Autodesk FBX, OFF, etc.
- Además puede trabajar con imágenes ráster gracias a GDAL o con datos vectoriales como por ejemplo, Shape SHP o DXF.
Operaciones de manipulación y edición:
- Tanto a nivel de nubes de puntos como de mallas 3D podemos realizar operaciones básicas como traslaciones, giros y/o escalado, así como la copia de objetos (clonado), segmentación y fusión de éstos, muestreos, etc.
- Dispone de herramientas para el registro de nubes de puntos a partir de puntos característicos o tomando como referencia de cálculo las mismas nubes de puntos (fine registration).
- Cálculo de superficies topográficas por mallas “2D” y “2.5D” o mallas 3D estancas.
- Modelado de sólidos y primitivas a partir de nubes de puntos o parte de ellas.
- Filtrado de datos en función del valor, ruido, etc.
- Plugin de limpieza de datos QBroom.
Consulta de información y extracción de datos:
- Visualización de Información sobre coordenadas de puntos sobre sistema de referencia local y global, valores RGB puntuales, distancia y ángulos entre puntos y superficies mediante etiquetas o mediante la exportación de éstos a otros formatos.
- Extracción de secciones y perfiles.
- Cálculo de volúmenes.
- Obtención de modelos digitales a través de la rasterización de datos 3D y curvas de nivel con ficheros de exportación geotiff o shapes.
- Análisis mediante comparación de datos masivos entre nubes densas, con mallas o mallas con mallas.
- Representaciones de prácticamente cualquier valor o resultado con el analicemos nuestros datos masivos, a través de las escalas de visualización (Scalar Fields), incluso pudiendo obtener nuevos resultados a través de operaciones aritméticas entre estas escalas de representación.
Combinación de herramientas de consulta y extracción de información
Ejemplo de aplicación
Un ejemplo de las funcionalidades de este programa sin tener que recurrir al empleo de los plugins CSF y Canupo, para la limpieza del terreno de nuestra nube de puntos podría ser la aplicación de una escala de representación con la separación de los canales RGB, una operación aritmética entre ellas y finalmente una operación de filtrado a partir de un valor determinado. El proceso, de escasamente 5-10 min en función de nuestro ordenador, sería el siguiente:
- Abrir nuestro archivo lidar en formato “LAS”, aceptando las opciones por defecto e incluso la representación de dicha nube a un sistema de referencia local, recortando la longitud de las coordenadas UTM (operación que CloudCompare realiza por defecto y automáticamente).
- Una vez cargada nuestra nube, siempre deberemos seleccionar el objeto con que deseemos trabajar antes de aplicar algunas de las herramientas. Hecho este paso, aplicaremos la herramienta “Edit > Colors > Convert to Scalar Field”, seleccionando tanto los tres canales como la combinación de ellos. En el cuadro de propiedades podremos activar la visualización “Scalar Fields” y seleccionar cualquiera de las obtenidas dejando por defecto la banda de colores para su representación.
- A continuación, vamos a proceder a calcular la diferencia entre la escala de color R con la escala de color G a través de la herramienta “Edit > Scalar Fields >Arithmetics” (Los resultados serán más vistosos escogiendo la banda de color “Blue-White-Red”.
- Finalmente, sólo quedará calcular el valor del color de la vegetación (azul) para aplicar la herramienta de filtrado de nubes por valor (Edit > Scalar Field > Filter by Value).
Composición de las nubes de puntos separadas mediante el comando de filtrado según valor (Filter by Value)
Otro ejemplo de aplicación que os animamos a probar, sin necesidad de usar los plugins a tratar sería utilizar un filtrado en función de la rugosidad de estos datos masivos (Tools > Others > Roughness).
Representación de la diferencia del canal R menos canal G con banda de colores “Blue – White – Red”.
Composición de las nubes de puntos separadas mediante el comando de filtrado según valor (Filter by Value)
Plugin CANUPO
En 2.012 a través de las herramientas de CANUPO, CAractérisation de NUages de POints, presentaron un algoritmo eficaz de clasificación de superficies naturales complejas a través del análisis local de cambios en las propiedades geométricas de una nube de puntos, mediante la aplicación de múltiples escalas (“Multi -Scalar Dimensionality”).
Para ello, se proyecta sobre un punto del escenario, una esfera de con un radio en función a la escala de trabajo y sobre este espacio se analiza el comportamiento geométrico de los puntos vecinos en 1, 2 y 3 dimensiones. Un ejemplo de ello es el expuesto en su ponencia sobre un tramo del río Otira (Nueva Zelanda), en el que en un rango de escala de 2 a 5 cm las rocas, tienen un aspecto superficial (2D), la gravilla se asemeja a partículas 3D y la vegetación se parece más a la combinación de elementos lineales (1D) y superficiales como sus hojas (2D). Conforme vayamos aumentando esta escala, a 30 cm por ejemplo, las rocas seguirán teniendo un comportamiento superficial (2D), en cambio, la gravilla tendrá un aspecto bidimensional y por el contrario, la vegetación tendrá un aspecto de volumen (3D).
Representación gráfica sobre el comportamiento de los grupos de nubes de puntos de diversos materiales en las componentes 1D, 2D y 3D en función del rango de escalas de medición establecido.
Por tanto y a través de la combinación de estos resultados a diferentes escalas, es posible establecer una clasificación propia de cada objeto en función de su naturaleza geométrica.
La integración de Canupo como plugin de CloudCompare permite trabajar de dos formas:
1. A través del comando “Plugins > Canupo Classification > Classify” utilizando los “clasificadores” ya creados por defecto y disponibles, junto al resto documentación adicional para que podamos comprobar todo el proceso, en https://geosciences.univ-rennes1.fr/spip.php?article1284&lang=fr
Seleccionaremos el fichero de clasificación que deseamos utilizar en correspondencia a la clasificación que necesitamos obtener, la nube densa para su filtrado bien seleccionando su fichero bien estableciendo un porcentaje o muestreo de puntos a utilizar en el proceso de cálculo y finalmente, activar o no, si queremos obtener una representación de la bondad y calidad del procesado mediante una escala de visualización SF de CloudCompare (Scalar Fields), así como una escala de representación asociada a cada escala local analizada.
2. Creando previamente nuestros propios “clasificadores” a partir de un proceso de “entrenamiento” que realiza la herramienta “Plugins > Canupo Classification > Train Classifier”. Estos clasificadores se guardan como ficheros con extensión “*.prn”, los cuales podremos utilizarlos para cualquier nube densa que queramos clasificar y en función de las escalas o rangos de medición.
Descrito en la ponencia citada anteriormente y disponible también mediante el link http://www.cloudcompare.org/doc/wiki/index.php?title=CANUPO_(plugin), debemos realizar en CloudCompare y antes de la utilización de este comando de entrenamiento, una varias segmentaciones de nuestra nube densa en función de las superficies que queremos clasificar. Ejecutando este comando de entrenamiento bastará con designar las nubes que queremos diferenciar, el rango de medición o una lista de las escalas de medida y un muestreo de los puntos que queremos utilizar sobre cada nube.
Vista previa de una nube de puntos 3D importada a partir de un fichero lídar (“LAS”) obtenido mediante UAV “Ala fija”. Filtrado de la vegetación existente utilizando el clasificador predefinido “VegetLongRange.prn” a través del Plugin Canupo Classify.
Plugin CSF
PLUGIN CSF
Zhang W, Qi J, Wan P, Wang H, Xie D, Wang X, Yan G. An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation. Remote Sensing. 2016; 8(6):501.
El filtro CSF “Cloth Simulation Filter”, desarrollado por Wuming Zhang, Jianbo Qi, Pen Wan y Hongtao Wang, de la Escuela de Geografía de la Universidad de Beijing, es una herramienta que extrae los puntos útiles para el posterior cálculo del Modelo Digital del Terreno a partir de datos masivos de nubes 3D. Similar a otros softwares de clasificación de datos Lidar, separa la nube principal en las dos categorías principales de clasificación; terreno o suelo “Ground” y resto de elementos “No Ground”.
Lo que le hace singular respecto a las demás aplicaciones es que, como bien hacen referencia sus siglas, se base en un algoritmo de simulación de tejidos a través de operadores o cálculos físicos como por ejemplo el efecto de la gravedad o el factor de rigidez del mismo tejido.
La idea es sencilla, partiendo de la representación de un terreno cualquiera a partir de sus datos masivos 3D, se invierte en sentido de la gravedad para luego dejar caer sobre éste un tejido con unas cualidades físicas específicas, que harán que se adapte al terreno de una forma determinada creando una especie de modelo digital de terreno básico. Los datos clasificados como suelo o terreno serán aquellos que tengan un comportamiento coincidente, con ciertos márgenes de tolerancia, con este modelo digital básico que representa la envoltura del tejido.
Representación gráfica sobre el fundamento del Plugin CSF para realizar la clasificación de puntos terreno y no terreno.
Con la adaptación de esta herramienta a plugin de CloudCompare, se reducen substancialmente los parámetros de configuración del algoritmo original hasta convertirlos en dos pestañas básicas; elección del tipo de escenas a procesar y parámetros avanzados:
- Elección del tipo de escena: Elegiremos nuestra escena en función de la orografía media de nuestros datos masivos; llana (“Flat”), ondulada (“Relief”) o fuerte (“Steep Slope”), siendo esencial y de vital importancia la activación de la casilla inferior “Slope Processing”, la cual hace referencia a aquellas situaciones en que nuestro terreno presenta accidentes verticales, como por ejemplo, las bancadas y bermas de explotación de una cantera.
- Opciones avanzadas: Generalmente, las opciones que vienen por defecto son las establecidas como óptimas para cualquier situación. No obstante conviene modificarlas, en función de la extensión de terreno y de la densidad de nuestras nubes 3D, sobre todo para la opción sobre la resolución de nuestro tejido “Cloth Resolution”, que cuanto mayor sea este valor mayor rigidez aparentará este tejido. Finalmente, tenemos la posibilidad de disponer o no del modelo digital calculado y que hace referencia a este tejido envolvente a través de la casilla inferior “Export Cloth Mesh”.