¿Alguna vez has deseado poder fácilmente transferir un objeto real a un archivo digital? La tecnología está aquí, pero la mayoría de nosotros simplemente no tenemos acceso a escáneres 3D de alta gama que puede reconstruir la geometría digital de un modelo físico. Sin mencionar que algunos objetos pueden ser demasiado grandes para cualquier escáner 3D tradicional. Sin embargo, hay otra forma mucho más económica de crear modelos 3D correspondientes a objetos del mundo real.

¿Qué es la fotogrametría?

Fotogrametría (o SFM – Structure From Motion) es un proceso que estima las coordenadas tridimensionales de los puntos de superficie usando imágenes de un solo objeto físico tomadas desde diferentes ángulos. Al menos esa es la explicación de una línea demasiado simplificada. Toma muchas fotos del objeto desde todas las direcciones posibles,luego usa estas fotos como entrada para un software especializado. Este software buscará características visibles en varias imágenes e intentará adivinar desde qué punto se tomó la imagen. Conociendo las posiciones y orientaciones de la cámara, crea un punto 3D que corresponde a la función 2D en la foto (básicamente un píxel). Idealmente, obtendría una malla 3D terminada como salida. Pero a menudo puede ser mejor procesar los puntos reconstruidos en una malla manualmente para obtener resultados mucho mejores.

Software

La lista del software de fotogrametría disponible es bastante largo. El problema es que la mayoría de los programas son muy caros o tienen funciones limitadas en la versión gratuita. Algunos programas incluso ofrecen cómputo basado en la nube, lo cual es útil, pero aumenta aún más el costo.

Hemos intentado elegir software gratuito:

  • Colmap (Win/Mac/Linux) – vamos a usarlo en este artículo
  • 3DF Zephyr (Win) – Gratis con una limitación de 50 fotos
  • Visual SFM (Win/Mac/Linux)

También necesitaremos algún tipo de software para el procesamiento posterior de los datos de salida. La elección es bastante fácil aquí – Meshlab.
El cálculo es bastante exigente en el hardware. Ejecutarlo en un ordenador portátil vieja podría no ser factible ya que los tiempos de cálculo serían extremadamente largos. Muchas aplicaciones también dependen de la interfaz NVIDIA CUDA (Colmap), que no se ejecuta en tarjetas gráficas AMD.

Taking pictures for photogrammetry

Obviamente, necesitará una cámara. Una cámara de teléfono inteligente funcionará bien, pero si tiene una DSLR, es aún mejor. Si vas a utilizar DSLR, gire la apertura al menos a 7-8 para aumentar la nitidez y evitar poca profundidad de campo.
Querrás capturar al menos 20 imágenes. Durante nuestras pruebas, a menudo tomamos imágenes, 50-80 , para capturar cada detalle. Tenga en cuenta que algunas imágenes pueden descartarse si el programa no encuentra suficientes similitudes con otras imágenes.

  1. Moverse alrededor del objeto de destino en círculos. No mueva el objeto o su entorno entre imágenes.
  2. ¡Superposición! Desea que cada parte del modelo sea capturada por al menos 2 imágenes. Idealmente, tendría una superposición del 60-80% en las imágenes siguientes.
  3. Evite las sombras duras ,use iluminación difusa o tome las fotos afuera en un día semi nublado.
  4. El objeto debe formar una parte significativa de cada imagen.
  5. Evite objetivos en movimiento (por ejemplo, mascotas, a menos que estén durmiendo).
  6. Evite objetivos muy brillantes o transparentes .(Más sobre esto más adelante)

Los objetivos ideales para la fotogrametría son elementos texturizados o rugosos (estatuas). Si es una opción, puede cubrir objetos brillantes o transparentes con polvo (harina) para evitar reflejos. O cubra la superficie brillante con una cinta de pintores.

Los usuarios avanzados también pueden capturar un video del objetivo y luego convertirlo en cuadros individuales. En este caso, mantenga la velocidad de obturación alta (por ejemplo, 1/80) para evitar cuadros borrosos.

Reconstruyendo geometría a partir de fotos

Sugerimos crear una carpeta que contenga todos los archivos para una sola reconstrucción. Dentro de esa carpeta, cree otra carpeta llamada «Fotos» y coloque todas sus imágenes aquí. Revise rápidamente las fotos y elimine las borrosas. Estaremos usando Colmap en Windows 10 para la reconstrucción.

  1. Inicia Colmap usando Colmap.bat
  2. Desde el menú superior usa Reconstruction – Automatic reconstruction
  3. Establece la carpeta de Workspace, esta carpeta se usará para almacenar cálculos de reconstrucción y la malla de salida
    • Crea otro directorio al lado de la carpeta Fotos para este propósito
  4. Establece la carpeta Imagen en la carpeta Fotos que contiene todas sus imágenes
  5. Puede dejar el árbol de vocabulario vacío, alternativamente, puede descargar y usar uno de esta página de descarga
  6. Mantenga el tipo de datos como imágenes individuales o cámbielo a cuadros de video si creó las imágenes del video
  7. Cambie la calidad a Medio
    • Puedes probar Alta calidad, pero en nuestra experiencia, Colmap se bloquea muy a menudo con esta configuración
  8. Deje otras configuraciones con valores predeterminados y presiona Run
  9. Este proceso puede llevar de 5 minutos a la eternidad, dependiendo de la cantidad de fotos y especificaciones de su PC

Cuando Colmap termine la reconstrucción, se le presentará una vista reconstruida de la escena y las posiciones estimadas de la cámara.

Configuración de Colmap y vista terminada de la escena reconstruida

Salida de Colmap

Como salida, Colmap crea 2 archivos que nos interesan, fused.ply y meshed.ply. Los encontrará en una subcarpeta en la carpeta del espacio de trabajo que creó antes (Carpeta del espacio de trabajo / denso / 0 /). Meshed.ply es, como su nombre indica, una malla ya triangulada. Colmap no es el mejor para crear mallas a partir de los datos rastreados, pero si desea ahorrarse algo de trabajo, la malla es definitivamente utilizable. PLY se puede convertir fácilmente a STL en Meshmixer o Meshlab, por ejemplo. Sin embargo, no es una buena idea intentar imprimir esta malla directamente. Todas las mallas creadas por escaneo 3D o fotogrametría generalmente contienen muchos errores y carecen de la base plana que podría colocarse fácilmente en la cama de impresión. Sigue nuestra guía en raparando modelos corruptos 3D y laminando modelospara aprender a solucionar estos problemas. Además, tenga en cuenta que la escala del objeto escaneado será bastante aleatoria, así que ajústelo en consecuencia.

El segundo archivo es el más interesante. El archivo fused.ply contiene una llamada nube de puntos . Es solo un conjunto de puntos en el espacio, sin triángulos y, por lo tanto, sin malla. Tendremos que crear la malla nosotros mismos, es un trabajo extra, pero el resultado suele ser mucho mejor.

Crear malla a partir de datos de nube de puntos

  1. Abre Meshlab, Selecciona File – Import Meshy elige el archivo fused.ply
  2. Se te presentará la escena capturada hecha de puntos 3D
  3. Elige la herramienta Select vertexes desde la barra de herramientas principal (arriba) y úsela para seleccionar todos los puntos que desea eliminar
    • La herramienta funciona como una selección de cuadro, mantenga presionado el botón izquierdo del mouse para crear una selección
    • Puede mantener presionada la tecla Ctrl para agregar más vértices a los ya seleccionados
  4. Clickea en el botón Delete vertices en la barra de herramientas principal. Los vértices seleccionados desaparecerán
  5. Repita los pasos 3 y 4 hasta que quede solo los puntos que desea utilizar para crear la malla del objeto escaneado
  6. Selecciona Filters – Remeshing, Simplification and Reconstruction – Screened Poisson Surface Reconstruction
    • La Reconstruction Depth tiene un efecto importante en el resultado final. Valores entre13-15 generalmente se ven mejor y se toman un tiempo razonable para calcular
    • Otras configuraciones generalmente funcionan mejor con los valores predeterminados, pero siéntase libre de experimentar con ellas
  7. Usa Apply para crear un Mesh
  8. Los bordes de su modelo generalmente terminarán como una forma extraña o incluso se enrollarán y crearán una gran mancha.
    • De manera similar a la selección y eliminación de vértices, puede hacer lo mismo con triángulos usando las herramientas Select in triangular region y Delete facesde la barra principal
  9. Selecciona File – Export Mesh
    • Si desea poder compartir el escaneo en forma digital con la textura, usa formatos como PLY, 3DS u OBJ
    • Para imprimir en 3D elige el STL

Consejos para mejorar tu modelo reconstruido

Aquí hay algunos consejos más para deshacerse de algunas imperfecciones y mejorar su modelo reconstruido en Meshlab:

  1. Suaviza tu modelo desde el menú Filters – Smoothing, Fairing and Deformation – Laplacian Smooth
    • Intenta aumentar losvalores Smoothing steps a 8-15
    • Puedes repetir este proceso tantas veces como lo desee, sin embargo, al suavizar demasiado su modelo se eliminarán detalles valiosos
  2. Para deshacerse de las caras adicionales generadas a menudo por la reconstrucción, puede elegir Filters – Selection – Select Faces with edges longer than…
    • Marca vista previa
    • Cambia el valor Edge threshold por lo que la gran mayoría de las caras que desea eliminar están seleccionadas, pero todas las caras que desea conservar aún no están seleccionadas
  3. Si su modelo tiene una gran cantidad de vértices y caras , puede ser difícil trabajar con él, sin mencionar el corte, lo que llevaría una eternidad. Disminuya su cantidad usando Filters – Smoothing, Fairing and Deformation – Quadric Edge Collapse Decimation
    • Establecer el número deseado de caras
    • Cualquier cosa por encima de 1 millón de caras es definitivamente exagerado. Incluso 100k caras suelen ser más que suficientes

Ejemplos

Estatuas

Las estatuas son perfectas para la fotogrametría. Su superficie es rugosa, incapaz de emitir ningún reflejo. El software puede rastrear muchos detalles y características. Las estatuas suelen ser demasiado grandes para los escáneres 3D tradicionales, sin mencionar los inconvenientes de llevar un escáner 3D al exterior e intentar instalarlo allí. Pero con la fotogrametría es fácil, solo toma tu cámara y comienza a tomar fotos. Sin embargo, como generalmente se colocan afuera, hay algunas cosas a tener en cuenta. Intenta evitar tener objetivos en movimiento en su imagen. Si hay personas caminando, déjelos pasar y mientras tanto tome fotos de las direcciones donde las personas no son visibles. Si es posible, espere a que una nube bloquee el sol, para que no haya sombras duras.

 

La estatua de la mujer sentada de Václav Bejček de 1967, el modelo 3D reconstruido (check the 3D view on Sketchfab), y la versión impresa

Baby Groot

Escanear una impresión en 3D puede parecer estúpido, usar el archivo STL original es obviamente mucho mejor. Pero es un buen punto de referencia de esta técnica, podemos comparar fácilmente el modelo reconstruido con el STL original utilizado para imprimir. Otra razón legítima para usar la fotogrametría para digitalizar la impresión en 3D es si la pintó a mano y desea compartir el modelo con la textura pintada a mano.

Como puede ver en la vista 3D a continuación, en términos de geometría, hay una evidente pérdida de calidad. Dicho esto, la mayoría de las características se reconstruyeron con éxito y con un par de pequeños retoques, el modelo se vería bastante bien. Y la textura también es un buen toque.

Presiona I y selecciona Matcap para ocultar la textura y comparar solo la geometría de los modelos

Paleta de Ping Pong – lidiando con superficies brillantes

Reconstruir una paleta de ping pong fue bastante fácil, con una excepción. Las dos grandes superficies (las que golpean la pelota) no tienen ningún detalle para ser reconocidas por el software y, para empeorar las cosas, son brillantes. A medida que la cámara gira alrededor de la paleta, la superficie brillante cambia de apariencia y refleja las fuentes de luz circundantes. Esto da como resultado que apenas se reconstruyan puntos en esta superficie. En última instancia, esto conducirá a forma de malla incorrecta. Para evitar que esto suceda, se deben agregar algunos detalles a estas superficies. Esto se puede hacer fácilmente con, por ejemplo, cinta para pintores. Pegue unas franjas sobre superficies brillantes para evitar reflejos y crear un aspecto de textura mate. En la vista 3D, puede ver la diferencia que hizo este truco rápido.

Vidrio – superficies transparentes

De manera similar a las superficies brillantes, los objetos transparentes son un problema. El software de fotogrametría puede capturar bordes afilados, pero las áreas transparentes lisas se ignorarán por completo, lo que conducirá a datos incompletos para la reconstrucción de la malla. Nuevamente, puede usar cinta de pintores para cubrir estas superficies. Alternativamente, puede usar colores solubles en agua con un rociador y ensuciar el vidrio.

Conclusión

Las mallas creadas por fotogrametría pueden fácilmente superar a los escáneres 3D baratos. Puede recrear objetos enormes que serían casi imposibles de capturar con las herramientas de escaneo 3D tradicionales. Es extremadamente asequible y es probable que ya tenga todo lo que necesita para fotogrametría: una cámara (teléfono inteligente) y una PC algo poderosa. Y no tiene que terminar con la reconstrucción de una estatua. ¿Tienes un drone? Tome algunas fotos, reconstruya e imprima su casa. Entonces…

¿Es la fotogrametría una herramienta de escaneo 3D viable? Definitivamente . ¿Debería imprimir modelos reconstruidos sin retoques? Probablemente no.

Al igual que cualquier otra técnica de escaneo 3D, la malla final no será perfecta. Es posible que falten detalles en algunas áreas, las superficies planas pueden no resultar completamente planas, la malla puede contener agujeros, bordes no múltiples u otros errores. Sin embargo, si puede solucionar estos problemas, el resultado final valdrá la pena.

Fuentes

Schonberger, Johannes Lutz and Frahm, Jan-Michael, Structure-from-Motion Revisited. University of North Carolina at Chapel Hill, Eidgenossische Technische Hochschule Zurich.

All3DP – Autodesk 123D Catch Review