Handleiding

Hoofdstuk 9 — SfM-backends

De Inspector in Expert-modus met de zes secties Presets, Cameras & Capture, Training, Progress, Look en Export — elk met een subregel die aangeeft wanneer hij van toepassing is
De Inspector in Expert-modus. Hij is opgedeeld in zes secties — Presets, Cameras & Capture, Training, Progress, Look en Export —, die elk een subregel dragen die aangeeft wanneer de instelling van toepassing is. De keuze van de SfM-methode zit in de sectie „Cameras & Capture".
Het uitgeklapte Camera-Alignment-menu met precies twee items: Apple Photogrammetry en Native
Het uitgeklapte Camera-Alignment-menu in de uitgeleverde versie: precies twee items — Apple Photogrammetry en Native. COLMAP staat hier niet, en „Native" draagt geen Beta-toevoeging meer.

De Camera-Alignment-picker zit in de Inspector-sectie „Cameras & Capture" en is een uitklapmenu, geen segmented control (de backend-namen zijn te lang voor segmenten en zouden de smalle Inspector-kolom laten overlopen). Hoeveel items er zijn, hangt af van de build: de App-Store-versie toont er precies twee — Apple Photogrammetry (standaard) en Native. COLMAP ontbreekt daar als backend volledig en verschijnt alleen in Developer-/DMG-builds als derde item (zie Q2). Het native item heet simpelweg „Native"; de vroegere toevoeging „(experimental)" resp. „(Beta)" is verwijderd — Native is geen experimenteel pad meer, maar het kwaliteitspad. Het is sterk bij laag-bij-de-grond orbit- en fotoscènes, maar momenteel zwak bij lucht-/dronemapping (te dunne puntenwolk); Apple Photogrammetry blijft de veilige standaardinstelling. Is als opnametype een ongeordende fotoset gekozen, dan lijnt de app altijd uit met Native, ongeacht wat de picker toont — een aanwijzingsregel onder de picker vermeldt dat uitdrukkelijk, en de picker blijft bedienbaar, omdat zijn waarde niet onbeschikbaar is, maar alleen overstemd. Externe SfM-resultaten uit Metashape, COLMAP of andere fotogrammetriesoftware kunnen bovendien via het File-menu geïmporteerd worden (Q3 COLMAP-tekstformaat, Q6 workspace-import) — de picker wisselt niet, maar de geïmporteerde poses vervangen het SfM-resultaat. Deze import heeft niets met de COLMAP-backendvraag te maken en werkt in elke build.

SfM staat voor Structure from Motion. Uit een reeks overlappende foto's reconstrueert de software voor elke afbeelding de positie en kijkrichting van de camera in een gemeenschappelijk 3D-coördinatensysteem. Daarbij wordt een grove 3D-puntenwolk gegenereerd, die de training met Gaussian Splatting initialiseert. Het SfM-resultaat is de invoer voor de eigenlijke training en bepaalt in belangrijke mate de latere beeldkwaliteit.

RadianceKit biedt vijf SfM-wegen: twee in de app ingebouwde backends (Q1 Apple Photogrammetry, Q4/Q5 Native), twee importpaden uit externe tools (Q3 COLMAP-tekstformaat, Q6 binaire workspace-import) en Q2 COLMAP-Binary, dat alleen in Developer-builds buiten de App Store beschikbaar is. Welke de juiste is, hangt af van het scènetype (orbit rond een object, binnenruimte, dronevlucht) en of externe software al een reconstructie oplevert.

Q1 — Apple Photogrammetry

WAAR

Expert View → Inspector → sectie „Cameras & Capture" → Camera-Alignment-picker, item „Apple Photogrammetry". Standaardinstelling in elke build.

TECHNISCH

Omwikkelt Apples ingebouwde Photogrammetry-framework, dat oorspronkelijk voor Object Capture ontwikkeld is. Apple extraheert intern features met een propriëtaire pipeline (stappen zijn niet openbaar gedocumenteerd), verifieert ze via multi-view-matching en lost bundle-adjustment op de Apple Silicon Neural Engine + GPU op. Het backend is volledig App-Store-conform (geen externe binary, Sandbox=true, on-device), levert echter alleen camera-poses plus een grove puntenwolk — geen diagnostische metrieken zoals tracklengte of reprojectiefout. Schaalt volgens Apples aanbeveling tot een paar honderd afbeeldingen. Bij meer dan ~500 frames in lineaire dronevluchten of grote buitenscènes zijn reproduceerbare crashes of het stilzwijgend verwerpen van afzonderlijke camera's waargenomen.

Q3 — COLMAP-tekstformaat (Metashape / ETH3D)

WAAR

Menu „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) OF drag-and-drop van een map met sparse/0/cameras.txt.

TECHNISCH

Leest de gestandaardiseerde COLMAP-tekstexport — drie tekstbestanden cameras.txt, images.txt, points3D.txt in de submap sparse/0/ — en converteert naar het interne SfM-resultaatmodel. Zelfde formaatdefinitie als de COLMAP-binaire export, alleen als ASCII in plaats van binair. Wordt door Agisoft Metashape, RealityCapture, PolyCam en de ETH3D-benchmark in precies deze lay-out uitgegeven. De parser deelt de camera-model-herkenning met de binary-parser en kent alle elf standaard-cameramodellen van COLMAP — van SIMPLE_PINHOLE en PINHOLE via SIMPLE_RADIAL (COLMAPs eigen standaardinstelling) en OPENCV tot de fisheye-varianten. Robuust tegen commentaarregels en lege regels. Schaalt in tests tot ~1 400 camera's (ETH3D Tunnel) zonder problemen.

Q4 — Native SfM (incrementeel)

WAAR

Expert View → Inspector → sectie „Cameras & Capture" → Camera-Alignment-picker, item „Native" (zonder de vroegere toevoeging „(experimental)"). Incrementeel is de standaardmodus van dit backend; voor Native is er geen mapper-keuze. De regel „Mapper" eronder hoort uitsluitend bij COLMAP: in Developer-builds staat hij zichtbaar, maar uitgegrijsd, zolang Native gekozen is, in de App-Store-versie ontbreekt hij helemaal. De echt native regels — „FOV Override", „High-Quality" en „Native SfM Recipe" — verdwijnen bij andere backends niet meer, maar blijven uitgegrijsd staan en vermelden in een regel eronder wat je moet veranderen om ze weer vrij te schakelen. Tussen de incrementele en de globale methode kun je niet zelf omschakelen: incrementeel staat vast ingesteld, en naar de globale methode schakelt de app alleen zelf over (zie Q5).

TECHNISCH

Eigen GPU-versnelde implementatie van de complete SfM-pipeline: FAST+BRIEF-features OF SuperPoint+LightGlue via CoreML (ingeschakeld via de schakelaar „High-Quality"; bij ongeordende fotosets sowieso actief), gevolgd door Hamming-KNN-matching, RANSAC-fundamentaalmatrix, track-building, initial-pair-selectie, two-view-bootstrap (F→E plus DLT), greedy incrementele mapper met PnP-registratie en multi-view-triangulatie en uiteindelijke bundle-adjustment via Schur-gereduceerde Levenberg-Marquardt met Huber-loss en analytische Jacobians via Cholesky-oplossing. Volledig App-Store-conform: geen externe binary, Sandbox=true. Met de ingebouwde collapse-detector: hij classificeert een resultaat als gedegenereerd wanneer minder dan 60 % van de invoerframes geregistreerd werd, wanneer de points-per-camera-rate onder 13 valt of wanneer de puntenwolk nagenoeg plat is. Daarop volgt niet meteen de wisseling van methode — de app herhaalt eerst de incrementele run (ze neemt het eerste onopvallende resultaat over, anders het beste van de pogingen) en wijkt pas dan uit naar de globale mapper (Q5), wanneer ook de beste poging gedegenereerd blijft. Empirisch schoon op orbit-/turntable-scènes; bij algemenere bewegingen (dronevlucht, binnenruimtes met complexe geometrie) is het slagingspercentage lager — de detector vangt deze gevallen echter op. Schaalt tot ~200 camera's betrouwbaar, hoger met duidelijk langere looptijd.

Q5 — Native SfM (globaal)

WAAR

Wordt automatisch aangeroepen, wanneer de incrementele mapper (Q4) de collapse-detector activeert (minder dan 60 % van de invoerframes geregistreerd, points-per-camera-rate onder 13 of nagenoeg platte puntenwolk) — en wel pas nadat de incrementele run herhaald is en ook de beste poging gedegenereerd bleef. Handmatig laat het zich niet aanvragen: in de Inspector is daar geen picker voor en ook verder geen schakelaar — de app beslist zelf wanneer ze overschakelt.

TECHNISCH

Globale variant van de native pipeline. Eerst feature-extractie + matching zoals Q4, dan relatieve-pose-schatting voor alle geverifieerde paren, aansluitend rotation-averaging (synchroniseert alle camera-rotaties in het wereldcoördinatensysteem) en translation-averaging (LSQR-gebaseerd op een matrix-vrije sparse-formulering, om integer-overflow bij grote camera-aantallen te vermijden). Schaalt in principe tot ~5 000 camera's, in de praktijk valt de kwaliteit boven een paar honderd camera's merkbaar terug. Wordt behandeld als „fallback-tier": komt in actie wanneer de incrementele mapper ook na herhaling degenereert, en wordt zelf niet nogmaals aan de collapse-detector voorgelegd — blijft het resultaat dun, meldt zich in plaats daarvan de algemene kwaliteitswaarschuwing van de pipeline.

Q6 — Metashape / COLMAP-tekst-workspace import

WAAR

File-menu → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Drag-and-drop van een map met sparse/0/cameras.{bin,txt} en images/.

TECHNISCH

Herkent automatisch of een via drag-and-drop of open-panel gekozen map overeenkomt met een van de drie COLMAP-workspace-lay-outs (sparse/0/, sparse/, of root) en of de reconstruction binair (cameras.bin) of tekst (cameras.txt) voorligt. Het binaire pad gebruikt de COLMAP-binaire parser, het tekstpad de ETH3D-loader — beide produceren hetzelfde SfM-resultaatmodel en de rest van de pipeline (afbeeldingen importeren, MCMC-training starten) is agnostisch ten opzichte van de bron. De afbeeldingen worden via het app-sandbox-bookmark-systeem security-scoped geopend, zodat de import ook in de App-Store-versie werkt. Speciaal bedacht voor het geval „Metashape-export zonder reconstructie opnieuw te berekenen". De in het File-menu-item genoemde herkenning waarschuwt in het app-log, als de gekozen map geen herkenbare workspace is.

Q7 — Native-recepten (Standard / Professional / E3 High-Accuracy)

WAAR

Expert View → Inspector → sectie „Cameras & Capture" → regel „Native SfM Recipe". De regel is alleen bedienbaar, wanneer als Camera Alignment „Native" gekozen is en als opnametype een ongeordende fotoset ingesteld is — anders staat hij uitgegrijsd en vermeldt hij daaronder wat er veranderd moet worden (de beschikbaarheidsregels staan in hoofdstuk 2).

TECHNISCH

Drie niveaus van hetzelfde native backend. Ze veranderen niet het algoritme, maar hoe grondig het werkt:

Standard — het basisrecept zonder extra stappen.

Professional — stelt bovendien twee dingen in: herkende AprilTag-markers gaan als starre lichamen in mapping en bundle-adjustment mee, en op de definitieve poses wordt dicht nagetrianguleerd (dichtere startpuntenwolk). Bevat de opname geen markers, dan vindt de detector niets en blijft alleen de dichte re-triangulatie effectief.

E3 High-Accuracy — bouwt voort op Professional en schakelt bovendien het HQ-frontend bij (3×3-SuperPoint-tegeling, LightGlue met 4096 keypoints, covisibility-paren) evenals de gezamenlijke focal-refinement over alle camera's. Dat levert de scherpste camera-poses en de langste matching-looptijd op.

Welke backend wanneer?

ScenarioAanbevolen backend
Eerste resultaat, zonder nadenkenQ1 Apple Photogrammetry (standaardinstelling)
Objectscan, 50–200 foto'sQ1 Apple Photogrammetry
Maximale kwaliteit op dezelfde scènePreset „Maximum Quality (Native)" — Q4 Native + Q7-recept E3
Opname met afgedrukte AprilTag-markersQ4 Native + Q7-recept Professional
Groot buiten / drone / >500 afbeeldingenQ6 Workspace-import (berekenen in Metashape of COLMAP, daarna inladen)
Metashape/RealityCapture-export beschikbaarQ6 Import (geen SfM nodig)
ETH3D / academische COLMAP-tekstsetQ3 COLMAP-tekstimport
Q4 loopt vastQ5 Native global (schakelt automatisch om)

Snelle vergelijking

BackendApp StoreSandboxExterne BinaryBest UseMax ~Cams
Q1 Apple PGOrbit-Object~300
Q2 COLMAP Binary❌ (alleen Developer-Build)colmap/glomapOutdoor large~5 000
Q3 COLMAP-Text-ImportBench rigs~1 500
Q4 Native incrementalOrbit-Object~200
Q5 Native globalQ4-Fallback~5 000
Q6 Workspace-ImportMetashape-Reuseper bron