Brukerveiledning

Kapittel 9 — SfM-backends

Ekspertmodus med Camera Alignment-velger i Inspector (Apple Photogrammetry / Native (Beta))
Ekspertmodus med Camera Alignment-velger i Inspector (Apple Photogrammetry / Native (Beta))
Inspector med Native (Beta) aktiv — andre alternativ i Camera Alignment-velgeren valgt, alle andre treningskonfigurasjonsparametere uendret
Inspector med Native (Beta) aktiv — andre alternativ i Camera Alignment-velgeren valgt, alle andre treningskonfigurasjonsparametere uendret

Camera Alignment-velgeren i Inspector er en segmentert kontroll med to alternativer — Apple Photogrammetry (standard for App Store-builds, fullt sandbox-konform) og Native (Beta) (RadianceKits eget FAST+BRIEF+GLOMAP-pipeline-backend, utviklet i fase 3.8/3.9, per 2026-05). Native (Beta) er orbit-only validert og raskere ved ≥1 000 frames enn Apple Photogrammetry, men oppfyller ennå ikke fase-3-§5-kvalitetsgaten (finalLoss ≤ 0.0115) — derav Beta-merket. Eksterne SfM-resultater fra Metashape, COLMAP eller annen fotogrammetri-programvare kan dessuten importeres via File-menyen (Q3 COLMAP-tekstformat, Q6 Workspace-import) — velgeren skifter ikke, men de importerte posisjonene erstatter SfM-resultatet.

SfM står for Structure from Motion. Ut fra en mengde overlappende fotos rekonstruerer programvaren for hvert bilde kameraets posisjon og blikkretning i et felles 3D-koordinatsystem. Underveis genereres en grov 3D-punktsky som initialiserer treningen med Gaussian Splatting. SfM-resultatet er input til selve treningen og er avgjørende for den senere bildekvaliteten.

RadianceKit tilbyr fem SfM-veier: to backends innebygd i appen (Q1 Apple Photogrammetry, Q4/Q5 Native), to importstier fra eksterne verktøy (Q3 COLMAP-tekstformat, Q6 binær Workspace-import) samt Q2 COLMAP-binary, som bare er tilgjengelig i developer-builds utenfor App Store. Hvilken som er den rette, avhenger av scenetypen (orbit rundt et objekt, innendørs rom, droneflyging), og av om en ekstern programvare allerede leverer en rekonstruksjon.

Q1 — Apple Photogrammetry

HVOR

Expert View → Inspector → Treningskonfigurasjon → Camera Alignment-velger, oppføringen „Apple Photogrammetry".

TEKNISK

Innkapsler Apples innebygde fotogrammetri-framework, som opprinnelig ble utviklet til Object Capture. Apple trekker internt ut features med en proprietær pipeline (trinn er ikke offentlig dokumentert), verifiserer dem via multi-view-matching og løser bundle-adjustment på Apple Silicon Neural Engine + GPU. Backenden er fullt App Store-konform (ingen ekstern binary, Sandbox=true, on-device), men leverer bare kameraposisjoner pluss en grov punktsky — ingen diagnose-metrikker som spor-lengde eller reprojeksjonsfeil. Skalerer ifølge Apples anbefaling opp til et par hundre bilder. Ved mer enn ~500 frames i lineære droneflyginger eller store outdoor-scener er det reproduserbart observert krasj eller stille frasortering av enkelte kameraer.

Q3 — COLMAP-tekstformat (Metashape / ETH3D)

HVOR

Menyen „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) ELLER dra-og-slipp av en mappe med sparse/0/cameras.txt.

TEKNISK

Leser den standardiserte COLMAP-teksteksporten — tre tekstfiler cameras.txt, images.txt, points3D.txt i undermappen sparse/0/ — og konverterer til den interne SfM-resultat-modellen. Samme formatdefinisjon som COLMAP-binær-eksporten, bare som ASCII i stedet for binær. Skrives ut av Agisoft Metashape, RealityCapture, PolyCam og ETH3D-benchmarken i nøyaktig dette oppsettet. Parseren deler kameramodell-deteksjon med binary-parseren (alle gjengse modeller: SIMPLE_PINHOLE, PINHOLE, OPENCV, OPENCV_FISHEYE, FULL_OPENCV). Robust mot kommentarlinjer og tomme linjer. Skalerer i tester opp til ~1 400 kameraer (ETH3D Tunnel) uten problemer.

Q4 — Native SfM (inkrementell)

HVOR

Expert View → Inspector → Treningskonfigurasjon → Camera Alignment-velger, oppføringen „Native (Beta)". Inkrementell er standardmodus for denne backenden — det finnes ingen separat mapper-velger i Inspector. Via CLI kan modus settes eksplisitt med –native-sfm eller –sfm-mapper incremental.

TEKNISK

Egen GPU-akselerert implementasjon av hele SfM-pipelinen: FAST+BRIEF-features ELLER SuperPoint+LightGlue via CoreML (med –coreml-features), etterfulgt av Hamming-KNN-matching, RANSAC-fundamentalmatrise, track-building, initial-par-utvelgelse, two-view-bootstrap (F→E pluss DLT), grådig inkrementell mapper med PnP-registrering og multi-view-triangulering og til slutt bundle-adjustment via Schur-redusert Levenberg-Marquardt med Huber-tap og analytiske jacobianer over Cholesky-løsning. Fullt App Store-konform: ingen ekstern binary, Sandbox=true. Med R2-collapse-detektoren som ble levert i fase 3.10: registrerer appen mindre enn 60 % av input-frames eller faller points-per-camera-raten under 13, byttes det automatisk til den globale mapperen (Q5). Empirisk ren på orbit-/turntable-scener; ved mer generelle bevegelser (droneflyging, innendørs rom med kompleks geometri) er suksessraten lavere — detektoren fanger imidlertid disse tilfellene. Skalerer pålitelig opp til ~200 kameraer, høyere med markant lengre kjøretid.

Q5 — Native SfM (global)

HVOR

Kalles automatisk når den inkrementelle mapperen (Q4) utløser collapse-detektoren (mindre enn 60 % av input-frames registrert eller points-per-camera-rate under 13). Manuelt tvangs-aktiverbar kun via CLI –sfm-mapper global. I Inspector er den globale metoden ikke tilgjengelig via en separat velger — appen bestemmer selv når den skifter.

TEKNISK

Global variant av den native pipelinen. Først feature-ekstraksjon + matching som i Q4, deretter relativ pose-estimering for alle verifiserte par, etterfulgt av rotation-averaging (synkroniserer alle kamerarotasjoner i verdens-koordinatsystemet) og translation-averaging (LSQR-basert på en matrix-fri sparse-formulering for å unngå integer-overflow ved store kameramengder). Skalerer i prinsippet til ~5 000 kameraer, i praksis kvalitetsforringet over noen hundre kameraer — fase-3.8-§5-akseptans-gate-målingen på K-1351 ga finalLoss 0.07 i stedet for de tilstrebte 0.0115. Håndteres som „fallback-tier": kommer i spill når den inkrementelle mapperen degenererer, men kontrolleres ikke selv på nytt for kvalitet.

Q6 — Metashape / COLMAP-tekst-workspace-import (fase Q7)

HVOR

File-menyen → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Dra-og-slipp av en mappe med sparse/0/cameras.{bin,txt} og images/.

TEKNISK

Gjenkjenner automatisk om en mappe valgt via dra-og-slipp eller åpne-panelet svarer til ett av de tre COLMAP-workspace-layoutene (sparse/0/, sparse/ eller roten), og om rekonstruksjonen finnes som binær (cameras.bin) eller tekst (cameras.txt). Den binære stien bruker COLMAP-binær-parseren, tekst-stien ETH3D-lasteren — begge produserer samme SfM-resultat-modell, og resten av pipelinen (importer bilder, start MCMC-trening) er agnostisk overfor kilden. Bildene åpnes via app-sandbox-bokmerkesystemet security-scoped, slik at importen også virker i App Store-versjonen. Spesifikt tiltenkt situasjonen „Metashape-eksport uten å regne rekonstruksjonen om". Deteksjonen som nevnes i File-meny-oppføringen, advarer i app-loggen hvis den valgte mappen ikke er et gjenkjennelig workspace.

Hvilken backend når?

ScenarioAnbefalt backend
Objektskanning, 50–200 fotosQ1 Apple Photogrammetry
Stor outdoor / drone / >500 bilderQ6 Workspace-import (regn i Metashape eller COLMAP, last så inn)
Metashape/RealityCapture-eksport foreliggerQ6 Import (ingen SfM nødvendig)
ETH3D / akademisk COLMAP-tekstsettQ3 COLMAP-tekst-import
Strengt App Store-konform + orbit-sceneQ4 Native inkrementell
Q4 feilerQ5 Native global (automatisk)
ETH3D-benchmark-dataQ3 (autotest precomputed)

Rask sammenligning

BackendApp StoreSandboxEkstern binaryBest tilMaks ~kameraer
Q1 Apple PGOrbit-objekt~300
Q2 COLMAP Binary❌ (kun developer-build)colmap/glomapOutdoor stor~5 000
Q3 COLMAP-tekst-importBench-rigger~1 500
Q4 Native inkrementellOrbit-objekt~200
Q5 Native globalQ4-fallback~1 351
Q6 Workspace-importMetashape-gjenbrukpr. kilde