Guía de procesamiento de proyectos fotogramétricos con Capturing Reality

March 27, 2020

En este post trato de redactar una guía rápida del procedimiento fotogramétrico que realizaría con Capturing Reality, desde la toma de datos en la que no voy a centrarme, la preparación de las imágenes y sobre todo los pasos y parámetros que suelo utilizar cuando proceso en el software que puedes descargar desde aquí, pues es totalmente gratuita la licencia PPI (procesar, no exportar :P).

Captura de las imágenes

Si por casualidad acabas leyendo este post y lo que te interesa es aprender a capturar imágenes para hacer fotogrametría, mejor échale un ojo a https://joancano.gitbook.io/lifemmetry/ antes de continuar aquí.

En primer lugar y cómo no, hay que tomar las imágenes. Asegúrate de llevarte contigo además de todo tu set fotográfico:

  • Un metro
  • Carta de balance de blancos
  • Algunos targets de CR, que los puedes generar desde la pestaña de ALIGNMENT > Detect Markers y se abrirá el menú debajo. Dentro de Generator ajústalo para crearte cuantos targets necesites
  • Flashes o luces estáticas (nunca se sabe)

Transforma las imágenes de RAW a JPG

  • Nunca corrijas la distorsión de la lente, solo color, contraste, luz y sombras
  • Normalmente utilizo Darktable para realizar procesos en batch
  • Puede que acabe utilizando los JPG que me da la cámara SOLO para procesar la geometría

Reducir imágenes para proyectos Low Cost

La manera que de procesar con la licencia PPI para los que por afición nos gusta crear modelos fotogramétricos puede suponer gastar bastante dinero, si lo que quieres es exportar tu malla 3D!. Por suerte hay una manera de obtener nuestro modelo a un bajo coste. Si es lo que quieres, tan solo tendrás que reducir el tamao de tus imágenes, lo que equivale a menos megapíxeles.

Modo 1. IrfanView

Realiza un proceso en lote de reducción de tus imágenes. Aquí un video. !!! conserva el nombre original de las imágenes ¡¡¡

Modo 2. Por consola con ImageMagick

Tendrás que instalar el programa y ejecutarel siguiente comando desde la terminal

for i in *.JPG; do convert -resize 50% %i carpetaImgReducidas/$i.JPG; done

Aquí un video rápido

Prepara las imágenes para el proyecto

En el caso de que hayas reducido tus imágenes de tamaño, sepáralas de la siguiente manera:

  • una carpeta con nombre _geometry contendrá las imágenes que se utilizarán para la generación del modelo, es decir para la reconstrucción de malla

  • una carpeta con nombre _texture contendrá por lo tanto las imágenes que se utilizarán para la textura. Éstas serán las que hayamos procesado en el paso anterior Transforma las imágenes de RAW a JPG

Importar las imágenes y configura CR

  • Arrastraremos las dos carpeta juntas a CR (_geometry y _texture). Como comparten el mismo nombre no se duplicarán

  • Desde el panel workflow > Setting podríamos modificar dependiendo del proyecto:

  • La información GPS, a veces viene bien desactivar la lectura de GPS del Exif desde Import Settings > Ignore GPS exif.
  • Cambiar el sistema de coordenadas Coordinate systems > Output coordinate systems
  • La ruta donde se almacena el caché de CR a una personalizada desde Application settings > Cache custom location. Intentar trabajar desde un disco duro sólido y con bastante espacio (depende del proyecto) pero diría que mínimo 500Gb.
  • Agrupa las imágenes en el caso de que tengas un grupo de imágenes con las mismas características (diferente focal, rango de tiempo, sensor, etc.)

  • No recomiendo utilizar el botón START para realizar todos los pasos de golpe. Mejor procesar primero la alineación, y luego configurar la caja de procesamiento

Paso 1. ALIGNMENT

Los parámetros por defecto suelen funcionar bien.

  • Si tienes problemas en la alineación, por que te han salido muchos componentes y estás segur@ de que el solape está bien:
  • dirígite a ALIGNMENT > Alignment settings y cambia el máximo a 80.000 y overlap a low

  • Si todavía sale mal, desde Advanced selecciona Force component rematch
  • Puedes cambiar la sensitividad a high si crees que tienes por ejemplo paredes con una textura homogénea y no hay suficiente contraste

Puedes ayudarte de la harramienta Draft para hacer un primer procesamiento y saber si tienes que añadir más imágenes para obtener un buen modelo

  • Pulsa Align images para alinearlas
  • Chequea el error obtenido y genera más alineaciones con distintos parámetros para reducirlo si es necesario
  • Ctrl + Z para colocar de nuevo la caja
  • Regula la caja y el plano de suelo. Recomiendo cambiar la vista a ortométrica (top) y luego desde los diferentes lados

  • Coloca Puntos de control en el caso de que tengas. Puedes ayudarte separando las imágenes por grupos de colores.

  • Si has colocado puntosde contro -> Update

Paso 2. RECONSTRUCTION

  • Los parámetros predefinidos suelen darn buenos resultados. No los suelo cambiar, únicamente cuando proceso proyectos de fotogrametría y escáner, que en ese caso subo un pelín el espacio entre puntos, o directamente reduzco las nubes de puntos en un software externo.
  • Pulsa Normal Detail, y una vez terminado:
  • Check integrity
  • Check topology. Si todo está bien, no hay necesidad de utilizar herramientas de selección y filtro para limpiar el modelo.

  • Si de lo contrario quieres limpiar el modelo, utiliza las herramientas Lasso, Rect y Box. Selecciona la zona a eliminar y si quieres añadir más elementos a la selección pulsa Ctrl y selecciona de nuevo. Ctrl + Shift para deseleccionar.

  • Truquillo. Si te ha generado ruido en la malla, ayúdate de las harramientas avanzadas de selección (Advaced Selection Tool).

Paso 3.Texturización (RECONSTRUCTION)

Antes de texturizar realiza un Unwrap del modelo y busca la manera de alcanzar la máxima calidad (100%) de tu modelo. ¿Cómo?

  • Haz una prueba con los parámetros predefinidos. Pulsa Unwrap y siguidamente en Calculate Unwrap > Unwrap. Lo que estamos calculando es el texel óptimo, que se trata de la unidad mínima de la textura aplicada a la superficie de nuestro objeto (como los píxeles de una imagen vamos..). Para conseguir la mejor relación entre tamaño y resolución jugaremos con los parámetros
  • Gutter
  • Maximal Texture Resolution

Una vez tenemos nuestra textura generada, pinchamos sobre nuestro modelo (que si no le hemos cambiado el nombre será component 0), abrimos el árbol de archivos y clicamos en el modelo (Model 1 en mi caso). Veremos una casilla llamada Texture quality. Su máximo es 100%, lo cual indicará que con nuestra configuración hemos aprovechado al máximo la resolución obtenida con nuestra cámara y su aplicación a la malla (que se trata de una matriz).

Si vuestro % es bajo o muy alto, probad a modificar los valores que os he comentado arriba. Fijaros también en el tamaño del texel que os ha salido y el óptimo, que puede servir como guía. Cada vez que volvamos a procesar la malla tendremos que hacer un nuevo Unwrap.

Una vez tengamos nuestra textura, podríamos utilizar la herramienta color correction

Tip: si has hecho algún modelo como una estatua y por lo tanto varios círculos a su alrededor. Si has tomado algunas imágenes desde lejos, está bien hecho para generar la malla pero desactívalas antes de generar la texturización.

Paso 4. Exportar


Paso 4.1 Simplifica

  • Si tu malla tiene millones y millones de polígonos, simplifícala. En la pestaña RECONSTRUCTION > Simplification selecciona:
  • absolut: si quieres que la simplificación sea a partir de los polígonos que le digamos. Yo normalmente utilizo entre 300.000 y 700.000 para sketchfab; y 3.000.000 para proyectos grandes.
  • relativa: para reducir mediante un porcentaje la malla en general. Puedes probar con un 50%, suele quedar bien.
  • Mantén la reproyección desactivada.

Paso 4.2 Reproyección de la textura

Seguramente tengas varios modelos creados. Quédate con el original, con el que tengas tu malla de alta densidad y con de malla a baja densidad.

  • Dirígete a RECONSTRUCTION > Texture Reprojection y rellena los campos:
  • Source model: con el que tengas generada la textura / en alta densidad
  • Result mode: será el que tenga una baja densidad
  • Supersampling: 64
  • Color reprojection: enable
  • Normal displacement: enable

Antes de reproyectar, asegúrate de hacer un Unwrap manualmente a tu modelo, sino lo hará automáticamente. Por ejemplo si lo que quieres es subirlo a Skechfab, ajústalo de la siguiente manera:

  • Resolution: 4K
  • Style: Maximal texture count
  • Count: 1