Kapittel 9 — SfM-backends


Camera-Alignment-velgeren ligger i inspektør-avsnittet „Cameras & Capture" og er en nedtrekksmeny, ikke en segmented-control (backend-navnene er for lange for segmenter og ville sprengt den smale inspektør-kolonnen). Hvor mange oppføringer den har, avhenger av byggversjonen: App Store-versjonen viser nøyaktig to — Apple Photogrammetry (standard) og Native. COLMAP mangler der som backend fullstendig og vises bare i utvikler-/DMG-bygg som en tredje oppføring (se Q2). Den native oppføringen heter rett og slett „Native"; det tidligere tillegget „(experimental)" hhv. „(Beta)" er fjernet — Native er ikke lenger en utprøvingssti, men kvalitetsstien. Den er sterk ved bakkenære orbit- og fotoopptak, men foreløpig svak ved luft-/dronekartlegging (for tynn punktsky); Apple Photogrammetry forblir den trygge standardinnstillingen. Hvis en uordnet fotoserie er valgt som opptakstype, retter appen alltid opp med Native, uansett hva velgeren viser — en hjelpelinje under velgeren sier dette uttrykkelig, og velgeren forblir brukbar, fordi verdien ikke er utilgjengelig, men bare overstyrt. Eksterne SfM-resultater fra Metashape, COLMAP eller annen fotogrammetri-programvare kan i tillegg importeres via File-menyen (Q3 COLMAP-tekstformat, Q6 Workspace-import) — velgeren bytter ikke, men de importerte posene erstatter SfM-resultatet. Denne importen har ingenting med COLMAP-backend-spørsmålet å gjøre og fungerer i alle bygg.
SfM står for Structure from Motion. Fra en mengde overlappende bilder rekonstruerer programvaren for hvert bilde kameraets posisjon og synsretning i et felles 3D-koordinatsystem. Til dette lages en grov 3D-punktsky, som initialiserer treningen med Gaussian Splatting. SfM-resultatet er inndata for selve treningen og avgjør i stor grad den senere bildekvaliteten.
RadianceKit tilbyr fem SfM-veier: to innebygde backends 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-binær, som bare er tilgjengelig i utviklerbygg utenfor App Store. Hvilken som er riktig, avhenger av scenetypen (orbit rundt et objekt, innendørs, droneflyging) og av om en ekstern programvare allerede leverer en rekonstruksjon.
Q1 — Apple Photogrammetry
HVOR
Expert View → Inspector → avsnittet „Cameras & Capture" → Camera-Alignment-velgeren, oppføringen „Apple Photogrammetry". Standardinnstilling i alle bygg.
TEKNISK
Pakker Apples innebygde Photogrammetry-rammeverk, som opprinnelig ble utviklet for Object Capture. Apple trekker internt ut features med en proprietær pipeline (trinnene er ikke offentlig dokumentert), verifiserer dem via multi-view-matching og løser bundle-adjustment på Apple Silicon Neural Engine + GPU. Backenden er fullstendig App Store-kompatibel (ingen ekstern binærfil, Sandbox=true, on-device), men leverer bare kameraposer pluss en grov punktsky — ingen diagnosemetrikker som sporlengde eller reprojeksjonsfeil. Skalerer etter Apples anbefaling opp til noen hundre bilder. Ved mer enn ~500 bilder i lineære droneflyginger eller store utendørsscener er det observert reproduserbare krasj eller stille forkasting av enkeltkameraer.
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-tekst-eksporten — tre tekstfiler cameras.txt, images.txt, points3D.txt i sparse/0/-undermappen — og konverterer til den interne SfM-resultatmodellen. Samme formatdefinisjon som COLMAPs binære eksport, bare som ASCII i stedet for binær. Leveres av Agisoft Metashape, RealityCapture, PolyCam og ETH3D-benchmarken i nettopp dette oppsettet. Parseren deler kamera-modell-gjenkjenningen med den binære parseren og kjenner alle elleve standard kameramodellene til COLMAP — fra SIMPLE_PINHOLE og PINHOLE via SIMPLE_RADIAL (COLMAPs egen standardinnstilling) og OPENCV til fisheye-variantene. 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 → avsnittet „Cameras & Capture" → Camera-Alignment-velgeren, oppføringen „Native" (uten det tidligere tillegget „(experimental)"). Inkrementell er standardmodusen for denne backenden; for Native finnes det ikke noe mapper-valg. Linjen „Mapper" under hører utelukkende til COLMAP: i utviklerbygg står den synlig, men gråtonet, så lenge Native er valgt, i App Store-versjonen mangler den helt. De virkelig native linjene — „FOV Override", „High-Quality" og „Native SfM Recipe" — forsvinner ikke lenger under andre backends, men forblir gråtonet og oppgir på en linje under hva du må endre for å låse dem opp igjen. Mellom den inkrementelle og den globale metoden kan du ikke bytte selv: inkrementell er fast forhåndsinnstilt, og appen bytter kun til den globale metoden av seg selv (se Q5).
TEKNISK
Egen GPU-akselerert implementering av hele SfM-pipelinen: FAST+BRIEF-features ELLER SuperPoint+LightGlue via CoreML (slås på med bryteren „High-Quality"; er uansett aktivt ved uordnede fotosett), etterfulgt av Hamming-KNN-matching, RANSAC-fundamentalmatrise, track-building, valg av initielt bildepar, two-view bootstrap (F→E pluss DLT), grådig inkrementell mapper med PnP-registrering og multi-view-triangulering, og avsluttende bundle-adjustment via Schur-redusert Levenberg-Marquardt med Huber-loss og analytiske jacobianer via Cholesky-løsning. Fullstendig App Store-kompatibel: ingen ekstern binærfil, Sandbox=true. Med den innebygde kollaps-detektoren: den klassifiserer et resultat som degenerert hvis mindre enn 60 % av inndataframene ble registrert, hvis punkter-per-kamera-raten faller under 13, eller hvis punktskyen nesten er flat. Deretter byttes ikke metoden umiddelbart — appen gjentar først det inkrementelle forsøket (den bruker det første upåfallende resultatet, ellers det beste av forsøkene) og går først over til den globale mapperen (Q5) hvis også det beste forsøket forblir degenerert. Empirisk ren på orbit-/dreieskive-scener; på mer generelle bevegelser (droneflyging, innendørsrom med kompleks geometri) er suksessraten lavere — men detektoren fanger opp disse tilfellene. Skalerer pålitelig opp til ~200 kameraer, høyere med betydelig lengre kjøretid.
Q5 — Native SfM (global)
HVOR
Kalles automatisk opp når den inkrementelle mapperen (Q4) utløser kollaps-detektoren (mindre enn 60 % av inndataframene registrert, punkter-per-kamera-rate under 13 eller nesten flat punktsky) — og det først etter at det inkrementelle forsøket er gjentatt og også det beste forsøket forble degenerert. Den kan ikke etterspørres manuelt: i inspektøren finnes det ingen velger for dette og heller ingen annen bryter — appen bestemmer selv når den bytter.
TEKNISK
Global variant av den native pipelinen. Først feature-ekstraksjon + matching som i Q4, deretter relativ-pose-estimering for alle verifiserte par, deretter rotation-averaging (synkroniserer alle kamerarotasjoner i verdenskoordinatsystemet) og translation-averaging (LSQR-basert på en matrisefri sparse-formulering, for å unngå integer-overflow ved store kameramengder). Skalerer i prinsippet til ~5 000 kameraer, i praksis faller kvaliteten merkbart over noen hundre kameraer. Håndteres som „fallback-nivå": kommer i bruk når den inkrementelle mapperen forblir degenerert også etter gjentakelse, og legges selv ikke frem for kollaps-detektoren på nytt — forblir resultatet tynt, melder i stedet pipelinens generelle kvalitetsvarsel seg.
Q6 — Metashape / COLMAP-tekst-Workspace-import
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-panel samsvarer med en av de tre COLMAP-workspace-oppsettene (sparse/0/, sparse/, eller rot) og om rekonstruksjonen foreligger binært (cameras.bin) eller som tekst (cameras.txt). Den binære stien bruker COLMAP-binærparseren, tekststien ETH3D-loaderen — begge produserer den samme SfM-resultatmodellen, og resten av pipelinen (importere bilder, starte MCMC-trening) er agnostisk overfor kilden. Bildene åpnes security-scoped via app-sandkassens bokmerkesystem, slik at importen fungerer også i App Store-versjonen. Spesielt tenkt for tilfellet „gjenbruk av Metashape-eksport uten å beregne rekonstruksjonen på nytt". Gjenkjenningen nevnt i File-menyoppføringen varsler i app-loggen hvis den valgte mappen ikke er et gjenkjennelig workspace.
Q7 — Native-oppskrifter (Standard / Professional / E3 High-Accuracy)
HVOR
Expert View → Inspector → avsnittet „Cameras & Capture" → linjen „Native SfM Recipe". Linjen er kun brukbar hvis „Native" er valgt som Camera Alignment og en uordnet fotoserie er innstilt som opptakstype — ellers står den gråtonet og oppgir under hva som må endres (tilgjengelighetsreglene står i kapittel 2).
TEKNISK
Tre nivåer av samme native backend. De endrer ikke algoritmen, men hvor grundig den arbeider:
Standard — basisoppskriften uten ekstra trinn.
Professional — setter i tillegg inn to ting: gjenkjente AprilTag-markører inngår som stive legemer i mapping og bundle-adjustment, og de ferdige posene retrianguleres tett i etterkant (tettere startpunktsky). Inneholder opptaket ingen markører, finner detektoren ingenting, og bare den tette retrianguleringen forblir virksom.
E3 High-Accuracy — bygger på Professional og slår i tillegg på HQ-frontenden (3×3-SuperPoint-fliser, LightGlue med 4096 keypoints, covisibility-par) samt den felles fokal-forfiningen over alle kameraer. Dette gir de skarpeste kameraposene og den lengste matching-kjøretiden.
Hvilken backend når?
| Scenario | Anbefalt backend |
|---|---|
| Første resultat, uten å tenke | Q1 Apple Photogrammetry (forvalg) |
| Objekt-skanning, 50–200 bilder | Q1 Apple Photogrammetry |
| Maksimal kvalitet på samme scene | Preset «Maximum Quality (Native)» — Q4 Native + Q7-oppskrift E3 |
| Opptak med utskrevne AprilTag-markører | Q4 Native + Q7-oppskrift Professional |
| Stor utendørs / drone / >500 bilder | Q6 Workspace-import (regn i Metashape eller COLMAP, importer deretter) |
| Metashape/RealityCapture-eksport foreligger | Q6 Import (ingen SfM nødvendig) |
| ETH3D / akademisk COLMAP-tekstsett | Q3 COLMAP-tekstimport |
| Q4 kollapser | Q5 Native global (bytter automatisk) |
Rask sammenligning
| Backend | App Store | Sandbox | Ekstern binærfil | Best egnet til | Maks ~kamera |
|---|---|---|---|---|---|
| Q1 Apple PG | ✅ | ✅ | — | Orbit-objekt | ~300 |
| Q2 COLMAP-binærfil | ❌ (kun Developer-build) | — | colmap/glomap | Store utendørsscener | ~5 000 |
| Q3 COLMAP-tekstimport | ✅ | ✅ | — | Benkerigger | ~1 500 |
| Q4 Native inkrementell | ✅ | ✅ | — | Orbit-objekt | ~200 |
| Q5 Native global | ✅ | ✅ | — | Q4-fallback | ~5 000 |
| Q6 Workspace-import | ✅ | ✅ | — | Metashape-gjenbruk | per kilde |