CloudCompare, análisis de nubes de puntos para fotogrametría
Jueves, 11 de Octubre de 2012 12:55
Dentro de las herramientas libres para aplicaciones relacionadas con la fotogrametría en digitalización de patrimonio que he estado revisando estos días, me he encontrado con CloudCompare que me ha resultado un buen complemento a la falta de herramientas de análisis de MeshLab.
CloudCompare es una herramienta diseñada por el ingeniero francés Daniel Girardeau-Montaut, y como su nombre indica sirve para comparar y realizar estudios sobre nubes de puntos. Uno de los objetivos principales de estas comparaciones es realizar estimaciones sobre las diferencias entre dos mediciones de un mismo objeto o grupo de objetos, de esta forma es posible determinar por ejemplo deformaciones, etc. Esta situación es muy habitual en la medición con escáneres láser y quizás no sea tan precisa en fotogrametría, por lo pequeños márgenes de error, aún así sin duda nos puede ser útil para realizar ciertas estimaciones geométricas.
Sin embargo esta herramienta me ha sido muy útil para recuperar los valores RGB de un punto concreto, con el fin de poder realizar evaluaciones relativas al control de calidad en la captura del color gracias a la ayuda de cartas o escalas de color con colorimetría conocida. Con la herramienta "Point Picking", además de calcular distancias entre puntos podemos conocer al instante las coordenadas de un punto y sus valores RGB.
Como relataba en el artículo anterior “Fotogrametría y colorimetría en digitalización del patrimonio“ la fotogrametría no sólo nos puede aportar información geométrica sino que también colorimétrica debido a la capacidad de la nubes de puntos densas para almacenar esta información. Además esta información colorimétrica esta construida a partir de la información de varias imágenes por lo que los errores son promediados y minimizados en cierta forma.
Dada esta situación, cuando trabajamos con fotogrametría con una finalidad orientada a la digitalización de patrimonio, ya sea arqueológico, arquitectónico o la conservación de bienes culturales, debemos respetar los habituales protocolos de gestión de color relacionado con los perfiles de cámara y los perfiles de caracterización ICC.
Para realizar una evaluación colorimétrica de una nube de puntos densa procedente de una reconstrucción 3D tenemos que tener en cuenta ciertas características:
- Las nubes de puntos están descritas en un modelo RGB, sin embargo nosotros necesitamos valores LAB para poder realizar los habituales cálculos de delta-e para la evaluación de la calidad de nuestro proceso. Por tanto necesitamos representar los valores RGB de la nube en un espacio CIELAB, este proceso se hace describiendo los valores RGB a través de un perfil de color ICC y esto nos lleva al segundo punto.
- Si realizamos las tareas de gestión de color oportunas en las imágenes que usamos para la reconstrucción 3D, no hay que olvidar en convertir nuestras imágenes a un espacio de color de trabajo o pantalla (sRGB, Adobe, Prophoto, etc) ya que durante la creación de la nube de puntos densa, se toman datos RGB descartando la información de caracterización de nuestro perfil de caraterización, por lo cual es necesario realizar una “conversión” a un espacio de trabajo o pantalla, para aplicar los aspectos de caracterización de nuestro perfil de entrada a los valores RGB de la imagen.
- Partiendo de la idea, de que por ejemplo nuestras imágenes han sido convertidas a un espacio de destino suficientemente amplio como el Adobe RGB, sabemos entonces que para obtener unos valores CIELAB a partir de los valores RGB tenemos que describir estos valores RGB en dicho espacio a través del perfil de color ICC Adobe RGB. Para esta tarea podemos usar la herramienta transicc de LittleCMS, la línea de comandos necesaria sería la siguiente:
transicc -i AdobeRGB1998.icc -o *Lab
De esta forma la herramienta nos solicitará que le indiquemos los valores R, G y B y nos devolverá los valores CIELAB.
Si tenemos problemas con la terminal, podemos usar un pequeño truco con nuestro Photoshop: creamos una imagen con el espacio de color RGB y luego en la paleta de colores introducimos los valores RGB, al instante en el mismo panel podemos conocer los valores CIELAB correspondientes.
Con estos pequeños conceptos ya estamos en disposición de realizar las típicas evaluaciones de deltas ya sean CIEDE00 o CIE76 a partir de los valores CIELAB deducidos de nuestra nube de puntos y los valores CIELAB de nuestra carta de color de esta forma podemos obtener tablas como la siguiente:
ake confcleanNube puntos | RGB->Adobe RGB->LAB | Colorchecker | Deltas | ||||||||
R | G | B | L | a | b | L | a | b | CIEDE00 | CIE76 | |
---|---|---|---|---|---|---|---|---|---|---|---|
A01 | 109 | 82 | 69 | 38,95 | 14,41 | 14,77 | 34,84 | 11,45 | 12,37 | 4,09 | 5,39 |
A02 | 189 | 148 | 132 | 67,07 | 19,35 | 17,35 | 60,01 | 17,25 | 16,20 | 6,00 | 7,35 |
A03 | 98 | 122 | 155 | 50,17 | -6,12 | -22,97 | 45,34 | -3,46 | -21,55 | 5,66 | 5,92 |
A04 | 100 | 109 | 69 | 44,60 | -11,00 | 22,00 | 39,69 | -12,45 | 20,99 | 4,75 | 5,48 |
A05 | 135 | 134 | 177 | 58,01 | 7,98 | -23,37 | 50,05 | 8,68 | -23,33 | 7,74 | 8,06 |
A06 | 130 | 191 | 174 | 71,65 | -33,81 | -0,53 | 64,45 | -31,37 | -0,93 | 5,64 | 7,28 |
B01 | 205 | 123 | 50 | 63,55 | 37,52 | 59,82 | 63,68 | 36,00 | 58,10 | 0,86 | 2,24 |
B02 | 74 | 91 | 171 | 40,36 | 10,99 | -48,47 | 40,63 | 12,61 | -46,06 | 2,25 | 2,83 |
B03 | 179 | 82 | 96 | 52,36 | 50,31 | 17,78 | 52,33 | 48,83 | 17,75 | 0,68 | 2,00 |
B04 | 89 | 60 | 105 | 31,56 | 24,29 | -21,02 | 31,30 | 22,86 | -20,19 | 1,00 | 2,24 |
B05 | 170 | 190 | 74 | 73,62 | -23,17 | 58,45 | 72,69 | -24,28 | 56,65 | 1,24 | 2,45 |
B06 | 215 | 161 | 51 | 72,57 | 19,83 | 69,31 | 72,64 | 17,42 | 68,03 | 1,10 | 2,24 |
C01 | 46 | 66 | 149 | 29,88 | 14,23 | -52,31 | 29,39 | 13,73 | -50,17 | 0,44 | 2,24 |
C02 | 104 | 154 | 79 | 57,76 | -39,39 | 34,53 | 56,36 | -39,73 | 32,31 | 1,25 | 2,24 |
C03 | 161 | 56 | 58 | 44,36 | 53,20 | 30,74 | 43,79 | 52,47 | 29,90 | 1,02 | 1,73 |
C04 | 235 | 206 | 48 | 84,69 | 2,76 | 83,33 | 82,16 | 1,91 | 80,76 | 1,58 | 3,74 |
C05 | 174 | 86 | 150 | 53,38 | 50,88 | -14,32 | 52,51 | 50,97 | -13,21 | 1,08 | 1,41 |
C06 | 54 | 136 | 167 | 51,27 | -31,40 | -28,54 | 50,00 | -27,77 | -28,06 | 2,06 | 4,12 |
D01 | 251 | 251 | 242 | 98,48 | -1,17 | 4,36 | 96,25 | -0,50 | 2,72 | 2,52 | 3,00 |
D02 | 215 | 216 | 213 | 86,59 | -0,89 | 1,34 | 80,34 | -0,05 | 0,11 | 4,14 | 6,08 |
D03 | 168 | 167 | 164 | 69,25 | 0,08 | 1,80 | 66,17 | -0,50 | -0,31 | 2,58 | 3,16 |
D04 | 126 | 125 | 124 | 53,18 | 0,40 | 0,77 | 50,05 | -0,31 | -0,15 | 2,98 | 3,00 |
D05 | 84 | 84 | 86 | 36,07 | 0,36 | -1,26 | 35,89 | -0,48 | -0,71 | 1,28 | 1,41 |
D06 | 46 | 47 | 48 | 18,96 | -0,45 | -0,93 | 20,81 | 0,44 | -0,17 | 1,37 | 2,00 |
Promedio | 2,63 | 3,65 | |||||||||
Max | 7,74 | 8,06 |
En el artículo anterior "Fotogrametría y colorimetría en digitalización del patrimonio" detallo los procesos de creación de nubes de puntos densas con software libre y sus connotaciones en la preseravación y documentación del patrimonio cultural.
Como se puede ver en los resultados de la tabla anterior, la gestión de color juega un papel bastante relevane en los trabajos de fotogrametría, en circustancias donde el color constituya un atributo relevante de nuestro objeto, inmueble o escena a modelar.
Instalación de CloudCompare en Ubuntu 12
La instalación de CloudCompare esta bastante orientada a su uso en Windows, por lo que quizás la instalación sea un poco más sencilla, pero sin embargo es posible instalarla en Linux, e incluso en su foro podemos encontrar una propuesta, para hacerlo en Mac Os X.
En la web del programa tenemos acceso a una wiki donde se indican los requisitos y dependencias de la instalación y un foro donde podemos plantear cuestiones.
Dependiendo de las librerías que tengamos instaladas en nuestro sistema, la instalación puede ser más o menos tediosa, a continuación voy a indicar los pasos que he tenido que realizar yo, y que por supuesto pueden variar:
Primeramente hay que descargar el código fuente de:
https://github.com/cloudcompare/trunk
O usar Git para descargarnos el trunk directamente a nuestro equipogit clone https://github.com/cloudcompare/trunk.git
Se nos pedirá un usuario y contraseña que son: invite_cc/invite_cc
Para compilar podemos usar
cmake CMakeLists.txt
Aunque quizás sea más cómodo usar la GUI de cmake por que hay que realizar algunas configuraciones. Primeramente hay que indicar que como compilador vamos a usar CodeBlocks, después habrá que configurar diversas rutas entre ellas PCL, o LIBLAS. Por ejemplo el uso de LIBE57, LIBLAS y XIOT son opcionales. En el momento de intentar conseguir XIOT su web no esta operativa, por lo que me fue imposible, el resto de librerías si me fue posible conseguirlas. Sobre los plugins, aunque marque su instalación y no obtuve errores, en la aplicación no me aparecen, de hecho algunos de ellos solo son operativos en Windows.
Las librerías que he tenido que instalar fueron:
Antes de comenzar hay que asegurarse de tener instalado QT4:
sudo apt-get install libqt4-dev
Primero LIBLAS que se hace con el siguiente procedimiento:
wget http://download.osgeo.org/liblas/libLAS-1.7.0.tar.gz tar xf libLAS-1.7.0.tar.gz cd libLAS-1.7.0/ mkdir makefiles cd makefiles cmake -G "Unix Makefiles" ../ make sudo make install
Después he instalado XERCES ya que de el depende LIBE57, para ello hacemos:
wget http://apache.rediris.es//xerces/c/3/sources/xerces-c-3.1.1.zip cd xerces-c-3.1.1/ ./configure make sudo make install
Ahora ya podemos instalar E57 de la siguiente forma:
wget http://netcologne.dl.sourceforge.net/project/e57-3d-imgfmt/E57Refimpl-src/E57RefImpl_src-1.1.312.zip unzip E57RefImpl_src-1.1.312 cd ../E57RefImpl_src-1.1.312 cmake CMakeLists.txt make
Quizás antes de instalar E57 hay que hacer un “updatedb” para actualizar la herramienta “locate” de nuestro Ubuntu, de la contra es probable que E57 no localice correctamente XERCES
Finalmente es necesario, instalar PCL. Point Cloud Library es un conocido framework para el trabajo con nubes de puntos.
En su web hay abundante documentación para la instalación de las librerías, aunque la mas cómoda que he podido encontrar es a través de los repositorios, para ello hacemos:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl sudo apt-get update sudo apt-get install libpcl-1.6-all-dev
Ahora ya estamos en condiciones de compilar CloudCompare, ya sea con la GUI de Cmake o con el habitual make.
< Prev | Próximo > |
---|