En este episodio de la serie básica de fotogrametría con plataforma giratoria, analizaremos las características fundamentales de un proyecto en Meshroom para reconstruir geometría a partir de fotografías.
Transcripción del video
¡Hola a todos! En este episodio de la serie básica de fotogrametría con plataforma giratoria, analizaremos las características fundamentales de un proyecto en Meshroom para reconstruir geometría a partir de fotografías.
Primero, daré una visión general de la interfaz y el flujo de trabajo de Meshroom y luego pasaré a los pasos prácticos para cargar imágenes.
Después de descargar e instalar Meshroom, vamos a ejecutarlo. Se abrirán dos ventanas. La ventana de la consola muestra datos e información sobre la ejecución del programa, mientras que la ventana principal es donde trabajamos en nuestros proyectos. Si se cierra alguna de estas ventanas, el programa se cerrará, por lo que ambas deben permanecer abiertas.

Meshroom permite diferentes tipos de proyectos, como se puede ver al hacer clic en New Pipeline en el menú File. Por supuesto, nos interesa un proyecto de Photogrammetry.
Lo primero que debemos hacer es guardar el proyecto. Recomiendo crear una carpeta dedicada donde se pueda guardar el archivo del proyecto, ya que al ejecutar el proceso de fotogrametría se generará toda una estructura de carpetas, la cual examinaremos en breve.
El archivo del proyecto tendrá la extensión MG, que significa Meshroom Graphs. Los términos Pipeline y Graphs enfatizan que los procesos en Meshroom siguen un orden secuencial, paso a paso. Esto se puede visualizar en el panel Graph Editor en la parte inferior, donde se muestran los nodos y sus conexiones.
Antes de examinar este pipeline, echemos un vistazo rápido a la interfaz del programa.

El panel Image Gallery contendrá las imágenes que queremos usar para la reconstrucción. Inicialmente, está vacío e indica que también podemos arrastrar y soltar archivos desde una carpeta en este espacio. Si recuerdo bien, esta función de drag and drop no funciona en Windows si ejecutas Meshroom en modo administrador. De todos modos, las imágenes también se pueden importar a través de Import Images en el menú File.
En el panel Image Viewer, podemos ver las imágenes cargadas una por una, lo que nos permite descartar aquellas de mala calidad o extraer datos relevantes. Esta ventana también mostrará algunos datos generados por Meshroom, como el Depth Map, como veremos más adelante.
El panel 3D Viewer mostrará la point cloud, que representa la escena reconstruida. Aquí también podemos redefinir el volumen que se reconstruirá, conocido como bounding box, lo que nos permite enfocarnos solo en elementos específicos.
El panel Graph Editor muestra la secuencia de nodes a procesar y sus conexiones. Cada node representa una tarea específica que se ejecuta paso a paso, utilizando datos de entrada desde los input ports y generando una o más salidas desde los output ports.
Un nuevo proyecto de Photogrammetry tendrá un pipeline básico con parámetros predeterminados, que funcionará bien para muchos proyectos. Cuando iniciamos el proyecto, Meshroom creará una subcarpeta llamada Cache, dentro de la cual generará subcarpetas adicionales, una para cada node presente en el pipeline.
El pipeline no tiene que permanecer en su configuración predeterminada; se puede modificar agregando nuevos nodes o cambiando las conexiones entre ellos, como veremos más adelante en este episodio.
En cualquier caso, al hacer clic en un node, podemos ver sus parámetros y configuraciones en el panel Node a la derecha. Cada node proporciona acceso a múltiples tipos de información, que se muestran en las pestañas Attributes, Log, y otras en la parte inferior.

El último panel en la interfaz predeterminada es el Task Manager, que inicialmente está vacío. Aquí veremos más adelante los detalles de ejecución de los distintos nodes.
En el menú View, notarás que falta el panel Live Reconstruction. Sin embargo, no lo usaré en esta serie introductoria, por lo que podemos dejarlo deshabilitado.
La opción Fullscreen, como era de esperarse, permite que la ventana principal del programa se muestre en modo de pantalla completa.
Antes de pasar a los pasos prácticos, permíteme introducir brevemente el pipeline, que representa la secuencia de ejecución de los nodes.
El pipeline se puede dividir en dos partes. En la primera parte, que llega hasta el Structure From Motion node, Meshroom carga las imágenes y extrae información específica llamada Features, que le permite identificar puntos de referencia en varias fotografías.

Estas Features luego se utilizarán para reconstruir la geometría de la escena, pero este proceso ocurre después del Structure From Motion node. Específicamente, en la segunda fase, Meshroom calcula los datos de profundidad para las Features detectadas, generando una 3D point cloud. Luego, reconstruye la geometría, que se llama Mesh porque está compuesta de vertices conectados por edges, que a su vez definen caras triangulares.
Finalmente, las fotografías originales se combinarán en una imagen llamada Texture, que representa los colores de las diferentes partes del objeto 3D original, pero organizados en una imagen 2D.

A partir de las Features detectadas en las fotografías, comenzamos con puntos en el espacio que inicialmente no están conectados. Luego, estos puntos se enlazan entre sí para formar geometría, compuesta por superficies, sobre las cuales se aplica una imagen de Texture para darle a la geometría reconstruida los colores del objeto original.
Hay mucho más que discutir sobre el pipeline, los nodes y el proceso de ejecución en general, pero explicaré estos detalles a medida que avancemos con el proyecto.
Ahora pasemos a los pasos prácticos. Primero, arrastro las fotografías originales al panel Image Gallery.
En el panel Image Gallery, podemos ver el número total de fotos agregadas y cuántas cameras fueron reconocidas por Meshroom, basado en los datos intrínsecos extraídos de las imágenes. Este número se muestra junto al ícono de obturador en la parte inferior del panel.

Para cada fotografía, podemos examinar estos metadata, si están disponibles, pasando el mouse sobre el ícono de obturador en la vista previa de la imagen. En este caso, los metadata están presentes, por lo que el ícono de obturador aparece en verde. Si los metadata faltan, el ícono será rojo y Meshroom procederá con la reconstrucción lo mejor que pueda sin esa información.
En un proyecto de fotogrametría con plataforma giratoria, se recomienda seleccionar el Feature Matching node y establecer el parámetro Minimal 2D Motion en 2. Una vez hecho este ajuste, guardo el proyecto.

En un proyecto donde se utilizó un fondo de green screen en las fotos, como en este caso, es posible intentar que Meshroom excluya el fondo verde antes de extraer las Features. Esto se puede hacer agregando un Image Masking node en el Graph Editor, haciendo clic derecho en un área vacía del panel e insertando el node.
En la entrada Structure From Motion Data del nuevo node, debemos conectar la salida Structure From Motion Data del Camera Init node, haciendo clic y arrastrando entre los dos ports.
La salida del nuevo node debe conectarse a las entradas Mask Folder de los Feature Extraction node y Prepare Dense Scene node.
Ahora, al seleccionar el Image Masking node, podemos definir el color a excluir y ajustar los valores de tolerancia para hue, saturation e intensity en el panel Node. Sin embargo, este método para excluir el fondo verde no es muy práctico, ya que no proporciona una buena retroalimentación sobre el resultado y no permite configurar parámetros personalizados para cada foto. Este último punto podría ser útil en nuestro caso, ya que la iluminación sobre la tela de fondo no es uniforme.
Por estas razones, elimino el Image Masking node haciendo clic derecho y seleccionando Remove Node. Como referencia, una conexión entre nodes se puede eliminar haciendo clic derecho sobre el enlace y seleccionando Remove.

También estoy eliminando todas las fotografías, porque en el próximo episodio les mostraré una pequeña configuración en Blender que nos permitirá no solo eliminar el fondo verde más fácilmente, sino también eliminar el green spill, que es el tinte verde que afecta a los objetos fotografiados contra una pantalla verde.
La única configuración personalizada que mantendré es el valor 2 para el parámetro Minimal 2D Motion en el Feature Matching node.
Ahora guardo el proyecto con estos ajustes, cierro Meshroom y nos vemos en el próximo episodio.