Inicio | Software y utilidades | Bundler SFM: más fotogrametría open-source

Bundler SFM: más fotogrametría open-source

Miércoles, 28 de Noviembre de 2012 23:49

bundler fotogrametria patrimonio digitalizacionBundler es una herramienta para procesos conocidos como Structure from motion basados en la reconstrucción de escenas en 3D a partir de imágenes en 2D desarrollado por Noah Snavely. Frente a otro tipo de herramientas que exigen de una cierta planificación en la toma de imágenes, las SFM permiten trabajar con grupos de imágenes desordenadas a través de las cuales se buscan puntos o aspectos comunes que permiten obtener un modelo 3D.

Hoy en día estas herramientas se están volviendo tremendamente populares en los ámbitos de la arqueología, arte rupestre y en tareas del patrimonio cultural ya que son muy ágiles de emplear sobre el terreno y con unos costes muy bajos, y permite una documentación tridimensional muy potente, ya que aunque los escáneres láser 3D tienen unas ciertas virtudes, sus costes los hacen muy poco asequibles en la mayoría de procesos, teniendo el agravante que no recogen información colorimétrica de las escenas.

El resultado de este tipo de herramientas será una nube de puntos densa con la información geométrica y colorimétrica de nuestra escena u objeto. Este tipo de modelos poseen las mismas características que los modelos resultantes de trabajos de fotogrametría, salvo que necesitaremos aplicarles una escala posteriormente con herramientas tipo Meshlab, para poder dotarlos de un valor geométrico o dimensional.

En artículos anteriores hablaba de VisualSFM, herramienta que comparte herramientas y procesos con Bundler pero con un entorno visual, y de una cierta dificultad para su instalación. En este artículo voy a describir el proceso de instalación y trabajo con Bundler para Mac Os X, ya que recientemente se ha lanzado una versión por parte de Ivan Rodriguez Murillo perfectamente compilada para Mac Os X que nos simplifican considerablemente las tareas de instalación de esta herramienta, ya que al poseer un buen número de dependencias, su compilación en nuestros Mac no suele ser especialmente sencilla.

Instalación de Bundler para Mac Os X

La versión para Mac Os X 64bits puede ser descargada desde esta url:

http://dl.dropbox.com/u/3952686/bundler-v0.4-osx-4.zip

Tras descomprimir el zip podemos albergar el directorio Bundler en la raíz de nuestro usuario, aunque podríamos colocarlo en cualquier otra parte de nuestro SO.

A continuación es necesario añadir al PATH la ruta a los binarios de Bundler. Para ello editamos el archivo .profile de nuestro usuario con nuestro editor favorito, en mi caso:

vim /Users/jpereira/.profile

Al final de dicho archivo debemos indicar el PATH a nuestro Bundler:

export PATH="~/bundler:~/bundler/bin:$PATH"

Usaremos ~/ para indicar que bundler esta instalado en la raíz del usuario, o lo que es lo mismo para mi caso /Users/jpereira/

Con estos sencillos pasos Bundler ya esta listo para ser usado.

Uso de Bundler

Primeramente situamos nuestra terminal en el directorio que contiene las imágenes que vamos a usar para la reconstrucción del modelo 3D.

A continuación ejecutamos:

RunBundler.sh

Si acabamos de editar nuestro .profile es probable que nuestra terminal no localice correctamente los programas y scripts de Bundler por lo que para evitar reiniciar la sesión podemos pegar la instrucción export en nuestra terminal:

export PATH="~/bundler:~/bundler/bin:$PATH"

De forma que ahora ya estará disponible RunBundler.sh para el análisis y catalogación de nuestro banco de imágenes.

Tras este comando se nos indicará el siguiente mensaje:

  @@ Conversion complete, execute "sh pmvs/prep_pmvs.sh" to finalize
  @@ (you will first need to edit prep_pmvs.sh to specify your bundler path, 

Esto significa que debemos ir al directorio pmvs que ha generado RunBundler.sh y editar el script prep_pmvs.sh de forma que la línea 4 que nos indica:

BUNDLER_BIN_PATH= # Edit this line before running

Deberíamos especificar la ruta al directorio de Bundler de forma que:

BUNDLER_BIN_PATH=~/bundler/bin # Edit this line before running

A continuación ya podemos ejecutar:

sh pmvs/prep_pmvs.sh
cmvs pmvs/
genOption pmvs/

En este punto tenemos una nube de puntos dispersa y para mejorar el proyecto es más adecuado crear una nube densa, para ello Bundler incluye la herramienta pmvs2 del Dr. Yasutaka Furukawa, de la siguiente forma:

pmvs2 pmvs/ option-0000

Si por algún motivo se ha generado más de una vista o modelo, suele suceder cuando existen conjuntos de imágenes sin puntos en común con otras, podemos ejecutar

sh pmvs/pmvs.sh

Esto es todo el proceso necesario para la creación de un modelo 3D. Para poder visualizarlo podemos recurrir a Meshlab y abrir el modelo en la ruta:

pmvs/models/option-0000.ply

Bundler para Linux

Aunque el proyecto inicial del Noah Snavely teóricamente puede ser compilado en Linux, en la practica, en las actuales versiones de Ubuntu 12 el proceso se hace bastante complejo por no decir imposible.

Afortunadamente van apareciendo en la red cada vez más versiones de esta herramienta. Una de las últimas con las que me he encontrado ha sido ha sido la de Ngihia Ho, la cual compila y funciona realmente bien al menos en mi Ubuntu 12

La distribución de este Bundler puede ser descargada desde aqui:

wget  http://nghiaho.com/uploads/code/RunSFM-1.4.3.tar.bz2

O a través de la web de Ngihia.

La instalación tiene muy pocos requisitos, ya que incorpora el detector de Sift y sólo hay que cumplir alguna dependencias:

Los que nos va a exigir Bundler al ejecutar un make son las siguientes dependencias:

ImageMagick installed ... YES
libXext installed ... YES
libX11 installed ... YES
libjpeg installed ... YES
gfortran installed ... YES
minpack installed ... YES
lapack installed ... YES
blas installed ... YES
zlib installed ... YES
atlas installed ... YES
boost installed ... YES

En mi caso sólo he tenido que instalar las siguientes librerías:

sudo apt-get install libatlas-base-dev
sudo apt-get install minpack-dev
sudo apt-get install gfortran-4.6
sudo apt-get install liblapack3gf

Puede ser que otros usuarios necesiten instalar algún otro proyecto.
Según advierte el autor también es necesario ajustar el tipo de sistema que tenemos ya sea 64 o 32 bits en los archivos:

graclus1.2/Makefile.in
 
cmvs/program/main/Makefile

Y localizar el parámetro -DNUMBITS=64 y cambiarlo a nuestras necesidades, por defecto ya viene para 64 bits.
Tras la compilación hay que cambiar de lugar la librería LibANN.so con la operación:

sudo cp bundler-v0.4-source/lib/libANN_char.so /usr/lib/

El funcionamiento de la herramienta es la habiutal de estos Bundler, nos movemos con nuestra terminal hasta el directorio donde están contenidas las imágenes y una vez allí ejecutamos RunSFM.sh, para ello o trazamos la ruta hasta este script, o incluimos en el PATH su ubicación.

Yo personalmente he editado el archivo .profile ubicado en la raiz del home del usuario

vim .profile

Y he añadido al final:

export PATH=$PATH:/opt/RunSFM/

Así ya dispongo de RunSFM.sh desde cualquier ubicación sin andar trazando la ruta hacia ella.

Otros proyectos Bundler SFM

Existen otras versiones con unos principios de funcionamiento bastante similares como:

TheFrenchLeaf en GitHub

O el proyecto ArcheOS de Arc-Team, desarrollado en Pyton con una pequeña interfaz gráfica hecha en QT, por lo que se propone como una buena solución multiplataforma, con una orientación hacia la arqueología y patrimonio, y que quizás profundice más en su instalación en artículos posteriores.

x-rite Professional LED Lighting, DSLR Support and Accessories for Photo and Video BabelColor asociacion española de imagen cientifica y forense