Uživatelská příručka

Kapitola 9 — SfM Backendy

Expertní režim s výběrem Camera Alignment v Inspektoru (Apple Photogrammetry / Native (Beta))
Expertní režim s výběrem Camera Alignment v Inspektoru (Apple Photogrammetry / Native (Beta))
Inspektor s aktivním Native (Beta) — Camera Alignment picker, druhá možnost vybrána, všechny ostatní parametry konfigurace tréninku beze změny
Inspektor s aktivním Native (Beta) — Camera Alignment picker, druhá možnost vybrána, všechny ostatní parametry konfigurace tréninku beze změny

Camera Alignment picker v Inspektoru je segmentovaný ovládací prvek se dvěma možnostmi — Apple Photogrammetry (výchozí pro App Store buildy, plně sandbox-kompatibilní) a Native (Beta) (vlastní FAST+BRIEF+GLOMAP pipeline backend RadianceKitu, vyvinutý během fáze 3.8/3.9, stav 2026-05). Native (Beta) je validován pouze pro orbitální záběry a je rychlejší než Apple Photogrammetry při ≥1 000 snímcích, ale ještě nesplňuje quality gate fáze 3 §5 (finalLoss ≤ 0.0115) — odtud označení Beta. Externí SfM výsledky z Metashape, COLMAP nebo jakéhokoli jiného fotogrammetrického softwaru lze navíc importovat přes File menu (Q3 textový formát COLMAP, Q6 Workspace Import) — picker se nezmění, ale importované pozice nahradí výsledek SfM.

SfM znamená Structure from Motion. Z množiny překrývajících se fotografií software pro každý snímek rekonstruuje pozici a směr pohledu kamery ve společném 3D souřadnicovém systému. Při tom vzniká hrubý 3D mrak bodů, kterým se inicializuje trénink Gaussian Splatting. Výsledek SfM je vstupem pro samotný trénink a rozhodujícím způsobem určuje pozdější kvalitu obrazu.

RadianceKit nabízí pět SfM cest: dva backendy vestavěné v aplikaci (Q1 Apple Photogrammetry, Q4/Q5 Native), dvě importní cesty z externích nástrojů (Q3 textový formát COLMAP, Q6 binární Workspace Import), plus Q2 COLMAP binary, který je dostupný pouze ve vývojářských buildech mimo App Store. Která je ta správná, závisí na typu scény (orbit kolem objektu, interiér, dronový let) a na tom, zda externí software již poskytuje rekonstrukci.

Q1 — Apple Photogrammetry

KDE

Expert View → Inspektor → Konfigurace tréninku → Camera Alignment picker, položka „Apple Photogrammetry".

TECHNICKY

Obaluje vestavěný fotogrammetrický framework od Apple, který byl původně vyvinut pro Object Capture. Apple interně extrahuje features proprietární pipelinou (kroky nejsou veřejně dokumentovány), ověřuje je přes multi-view matching a řeší bundle adjustment na Apple Silicon Neural Engine + GPU. Backend je plně App Store kompatibilní (žádná externí binárka, Sandbox=true, on-device), ale dodává pouze pozice kamer plus hrubý mrak bodů — žádné diagnostické metriky jako délka tracku nebo reprojektovaná chyba. Podle doporučení Apple škáluje do několika set obrázků. Při více než ~500 snímcích v lineárních dronových letech nebo velkých outdoorových scénách byly reprodukovatelně pozorovány pády nebo tiché zahození jednotlivých kamer.

Q3 — COLMAP textový formát (Metashape / ETH3D)

KDE

Menu „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) NEBO drag-and-drop složky s sparse/0/cameras.txt.

TECHNICKY

Čte standardizovaný textový export COLMAP — tři textové soubory cameras.txt, images.txt, points3D.txt v podsložce sparse/0/ — a převádí je do interního modelu výsledku SfM. Stejná definice formátu jako binární export COLMAP, jen jako ASCII místo binárky. V přesně tomto rozložení je exportován Agisoft Metashape, RealityCapture, PolyCam a ETH3D benchmark. Parser sdílí detekci modelu kamery s binárním parserem (všechny běžné modely: SIMPLE_PINHOLE, PINHOLE, OPENCV, OPENCV_FISHEYE, FULL_OPENCV). Robustní vůči komentářovým a prázdným řádkům. V testech škáluje až do ~1 400 kamer (ETH3D Tunnel) bez problémů.

Q4 — Native SfM (inkrementální)

KDE

Expert View → Inspektor → Konfigurace tréninku → Camera Alignment picker, položka „Native (Beta)". Inkrementální je výchozí režim tohoto backendu — v Inspektoru není samostatný picker pro mapper. Přes CLI lze režim explicitně nastavit pomocí –native-sfm nebo –sfm-mapper incremental.

TECHNICKY

Vlastní GPU-akcelerovaná implementace celé SfM pipeline: FAST+BRIEF features NEBO SuperPoint+LightGlue přes CoreML (s –coreml-features), následované Hamming-KNN matchingem, RANSAC fundamentální maticí, budováním tracků, výběrem počátečního páru, two-view bootstrapem (F→E plus DLT), greedy inkrementálním mapperem s PnP registrací a multi-view triangulací, a finálním bundle adjustmentem přes Schur-redukovaný Levenberg-Marquardt s Huber loss a analytickými Jakobiány přes Cholesky solve. Plně App Store kompatibilní: žádná externí binárka, Sandbox=true. S detektorem R2-collapse dodaným ve fázi 3.10: pokud aplikace zaregistruje méně než 60 % vstupních snímků nebo pokud poměr points-per-camera klesne pod 13, automaticky se přepne na globální mapper (Q5). Empiricky čistý na orbit/turntable scénách; u obecnějších pohybů (dronový let, interiéry s komplexní geometrií) je úspěšnost nižší — detektor ale tyto případy zachytí. Spolehlivě škáluje do ~200 kamer, výše s výrazně delším časem běhu.

Q5 — Native SfM (globální)

KDE

Volá se automaticky, když inkrementální mapper (Q4) spustí collapse detektor (méně než 60 % vstupních snímků zaregistrováno nebo poměr points-per-camera pod 13). Ručně lze vynutit pouze přes CLI –sfm-mapper global. V Inspektoru není globální metoda dostupná přes samostatný picker — aplikace sama rozhoduje, kdy se přepnout.

TECHNICKY

Globální varianta nativní pipeline. Nejprve extrakce features + matching jako u Q4, poté odhad relativní pozice pro všechny ověřené páry, následované rotation averaging (synchronizuje všechny rotace kamer ve světovém souřadnicovém systému) a translation averaging (LSQR-založené na matrix-free sparse formulaci, aby se zabránilo přetečení integeru u velkých počtů kamer). V principu škáluje na ~5 000 kamer, v praxi je kvalita degradovaná nad několika sty kamerami — měření Phase 3.8 §5 akceptační brány na K-1351 dalo finalLoss 0.07 místo cílových 0.0115. Považováno za „fallback tier": nasazuje se, když inkrementální mapper degeneruje, ale samo se znovu nekontroluje na kvalitu.

Q6 — Import Metashape / COLMAP textového Workspace (fáze Q7)

KDE

File menu → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Drag-and-drop složky s sparse/0/cameras.{bin,txt} a images/.

TECHNICKY

Automaticky detekuje, zda složka vybraná přes drag-and-drop nebo Open Panel odpovídá jednomu ze tří layoutů COLMAP workspace (sparse/0/, sparse/, nebo root) a zda je rekonstrukce binární (cameras.bin) nebo textová (cameras.txt). Binární cesta používá COLMAP binární parser, textová cesta ETH3D loader — oba produkují stejný model výsledku SfM a zbytek pipeline (import obrázků, spuštění MCMC tréninku) je agnostický ke zdroji. Obrázky se otevírají přes sandboxový bookmark systém aplikace jako security-scoped, takže import funguje i v App Store verzi. Speciálně určeno pro případ „Metashape export bez nutnosti přepočítat rekonstrukci". Detekce zmíněná v položce File menu varuje v logu aplikace, pokud vybraná složka není rozpoznatelný workspace.

Který backend kdy?

ScénářDoporučený backend
Sken objektu, 50–200 fotografiíQ1 Apple Photogrammetry
Velký outdoor / dron / >500 obrázkůQ6 Workspace Import (počítat v Metashape nebo COLMAP, poté načíst)
Existuje export z Metashape/RealityCaptureQ6 Import (SfM není potřeba)
ETH3D / akademický COLMAP textový setQ3 COLMAP textový import
Striktně App Store kompatibilní + orbit scénaQ4 Native inkrementální
Q4 selžeQ5 Native globální (automaticky)
ETH3D benchmark dataQ3 (autotest precomputed)

Rychlé srovnání

BackendApp StoreSandboxExterní binárkaNejlepší použitíMax ~kamer
Q1 Apple PGOrbit-objekt~300
Q2 COLMAP Binary❌ (jen developer build)colmap/glomapVelký outdoor~5 000
Q3 COLMAP textový importBench rigy~1 500
Q4 Native inkrementálníOrbit-objekt~200
Q5 Native globálníQ4 fallback~1 351
Q6 Workspace ImportReuse Metashapedle zdroje