Guía del usuario

Capítulo 9 — Backends de SfM

Modo Experto con selector de Camera Alignment en el Inspector (Apple Photogrammetry / Native (Beta))
Modo Experto con selector de Camera Alignment en el Inspector (Apple Photogrammetry / Native (Beta))
Inspector con Native (Beta) activo — segunda opción del selector de Camera Alignment seleccionada, el resto de parámetros de configuración del entrenamiento sin cambios
Inspector con Native (Beta) activo — segunda opción del selector de Camera Alignment seleccionada, el resto de parámetros de configuración del entrenamiento sin cambios

El selector de Camera Alignment en el Inspector es un control segmentado con dos opciones — Apple Photogrammetry (predeterminado para builds de App Store, totalmente compatible con el sandbox) y Native (Beta) (el backend propio de la pipeline FAST+BRIEF+GLOMAP de RadianceKit, desarrollado durante la Fase 3.8/3.9, estado 2026-05). Native (Beta) está validado únicamente en escenas orbitales y es más rápido que Apple Photogrammetry con ≥1 000 fotogramas, pero todavía no alcanza la puerta de calidad de la Fase 3 §5 (finalLoss ≤ 0.0115) — de ahí la etiqueta Beta. Los resultados de SfM externos de Metashape, COLMAP u otro software de fotogrametría se pueden importar adicionalmente mediante el menú File (Q3 formato de texto COLMAP, Q6 Workspace Import) — el selector no cambia, pero las poses importadas reemplazan al resultado de SfM.

SfM significa Structure from Motion. A partir de un conjunto de fotos solapadas, el software reconstruye para cada imagen la posición y la dirección de visión de la cámara en un sistema de coordenadas 3D común. En el proceso se genera una nube de puntos 3D gruesa, que inicializa el entrenamiento con Gaussian Splatting. El resultado de SfM es la entrada para el entrenamiento propiamente dicho y determina de forma decisiva la calidad final de la imagen.

RadianceKit ofrece cinco vías de SfM: dos backends integrados en la app (Q1 Apple Photogrammetry, Q4/Q5 Native), dos vías de importación desde herramientas externas (Q3 formato de texto COLMAP, Q6 Workspace Import binario) y Q2 COLMAP binario, que solo está disponible en builds de desarrollador fuera del App Store. Cuál es la adecuada depende del tipo de escena (órbita alrededor de un objeto, espacio interior, vuelo de dron) y de si un software externo ya proporciona una reconstrucción.

Q1 — Apple Photogrammetry

DÓNDE

Expert View → Inspector → Configuración del entrenamiento → Selector Camera Alignment, entrada "Apple Photogrammetry".

TÉCNICO

Envuelve el framework de fotogrametría integrado de Apple, desarrollado originalmente para Object Capture. Apple extrae internamente las características con una pipeline propietaria (los pasos no están documentados públicamente), las verifica mediante matching multi-vista y resuelve el bundle adjustment en el Apple Silicon Neural Engine + GPU. El backend es totalmente compatible con el App Store (sin binario externo, Sandbox=true, on-device), pero solo entrega poses de cámara más una nube de puntos gruesa — sin métricas de diagnóstico como longitud de track o error de reproyección. Escala según la recomendación de Apple hasta unos pocos cientos de imágenes. Con más de ~500 fotogramas en vuelos lineales de dron o grandes escenas exteriores se han observado de forma reproducible bloqueos o descarte silencioso de cámaras individuales.

Q3 — Formato de texto COLMAP (Metashape / ETH3D)

DÓNDE

Menú "File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) O arrastrar y soltar una carpeta con sparse/0/cameras.txt.

TÉCNICO

Lee la exportación de texto COLMAP estandarizada — tres archivos de texto cameras.txt, images.txt, points3D.txt en la subcarpeta sparse/0/ — y la convierte en el modelo interno de resultado de SfM. Misma definición de formato que la exportación binaria de COLMAP, solo que como ASCII en lugar de binario. Lo exportan Agisoft Metashape, RealityCapture, PolyCam y el benchmark ETH3D exactamente en este layout. El parser comparte la detección de modelo de cámara con el parser binario (todos los modelos comunes: SIMPLE_PINHOLE, PINHOLE, OPENCV, OPENCV_FISHEYE, FULL_OPENCV). Robusto frente a líneas de comentario y líneas vacías. Escala en las pruebas hasta ~1 400 cámaras (ETH3D Tunnel) sin problemas.

Q4 — Native SfM (incremental)

DÓNDE

Expert View → Inspector → Configuración del entrenamiento → Selector Camera Alignment, entrada "Native (Beta)". Incremental es el modo predeterminado de este backend — no hay un selector de mapper separado en el Inspector. Por CLI, el modo se puede establecer explícitamente con –native-sfm o –sfm-mapper incremental.

TÉCNICO

Implementación propia acelerada por GPU de toda la pipeline de SfM: características FAST+BRIEF O SuperPoint+LightGlue vía CoreML (con –coreml-features), seguidas de matching Hamming-KNN, matriz fundamental RANSAC, construcción de tracks, selección del par inicial, two-view bootstrap (F→E más DLT), mapper incremental greedy con registro PnP y triangulación multi-vista, y bundle adjustment final vía Levenberg-Marquardt reducido por Schur con loss Huber y jacobianos analíticos a través de Cholesky solve. Totalmente compatible con App Store: sin binario externo, Sandbox=true. Con el detector de colapso R2 entregado en la Fase 3.10: si la app registra menos del 60 % de los fotogramas de entrada o la tasa de puntos por cámara cae por debajo de 13, conmuta automáticamente al mapper global (Q5). Empíricamente limpio en escenas orbitales o de plato giratorio; en movimientos más generales (vuelo de dron, espacios interiores con geometría compleja) la tasa de éxito es menor — pero el detector atrapa esos casos. Escala con fiabilidad hasta ~200 cámaras, más con un tiempo de ejecución claramente mayor.

Q5 — Native SfM (global)

DÓNDE

Se llama automáticamente cuando el mapper incremental (Q4) dispara el detector de colapso (menos del 60 % de los fotogramas de entrada registrados o tasa de puntos por cámara por debajo de 13). Forzable manualmente solo vía CLI –sfm-mapper global. En el Inspector, el método global no es accesible por un selector aparte — la app decide por sí misma cuándo conmutar.

TÉCNICO

Variante global de la pipeline nativa. Primero extracción de características + matching como en Q4, después estimación de pose relativa para todos los pares verificados, seguido de rotation averaging (sincroniza todas las rotaciones de cámara en el sistema de coordenadas mundial) y translation averaging (basado en LSQR sobre una formulación sparse libre de matrices, para evitar overflow de enteros con grandes cantidades de cámaras). Escala en principio a ~5 000 cámaras, en la práctica con calidad degradada por encima de unos pocos cientos — la medición de la puerta de aceptación de la Fase 3.8 §5 sobre K-1351 dio finalLoss 0.07 en lugar de los 0.0115 objetivo. Se trata como "fallback tier": entra en juego cuando el mapper incremental degenera, pero no se reverifica en cuanto a calidad.

Q6 — Importación de workspace de texto Metashape / COLMAP (Fase Q7)

DÓNDE

Menú File → "Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Arrastrar y soltar una carpeta con sparse/0/cameras.{bin,txt} e images/.

TÉCNICO

Detecta automáticamente si una carpeta seleccionada mediante arrastrar y soltar o panel de apertura coincide con uno de los tres layouts de workspace de COLMAP (sparse/0/, sparse/ o raíz) y si la reconstrucción es binaria (cameras.bin) o texto (cameras.txt). La vía binaria utiliza el parser binario de COLMAP, la vía de texto el loader de ETH3D — ambas producen el mismo modelo de resultado de SfM y el resto de la pipeline (importar imágenes, iniciar entrenamiento MCMC) es agnóstica a la fuente. Las imágenes se abren mediante el sistema de bookmarks del sandbox de la app, con seguridad por ámbito, de modo que la importación también funciona en la versión de App Store. Pensado específicamente para el caso "exportación de Metashape sin recalcular la reconstrucción". La detección mencionada en la entrada del menú File avisa en el registro de la app si la carpeta elegida no es un workspace reconocible.

¿Qué backend en cada caso?

EscenarioBackend recomendado
Escaneo de objeto, 50–200 fotosQ1 Apple Photogrammetry
Exteriores grandes / dron / >500 imágenesQ6 Workspace Import (calcular en Metashape o COLMAP y luego cargar)
Exportación de Metashape/RealityCapture disponibleQ6 Import (sin SfM necesario)
Conjunto académico de texto COLMAP / ETH3DQ3 importación de texto COLMAP
Estrictamente compatible con App Store + escena orbitalQ4 Native incremental
Q4 fallaQ5 Native global (automático)
Datos de benchmark ETH3DQ3 (autotest precomputado)

Comparativa rápida

BackendApp StoreSandboxBinario externoMejor usoMáx. ~cámaras
Q1 Apple PGObjeto orbital~300
Q2 COLMAP binario❌ (solo build de desarrollador)colmap/glomapExteriores grandes~5 000
Q3 importación de texto COLMAPBench rigs~1 500
Q4 Native incrementalObjeto orbital~200
Q5 Native globalFallback de Q4~1 351
Q6 Workspace ImportReutilizar Metashapepor fuente