Kapitola 9 — SfM Backendy


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/RealityCapture | Q6 Import (SfM není potřeba) |
| ETH3D / akademický COLMAP textový set | Q3 COLMAP textový import |
| Striktně App Store kompatibilní + orbit scéna | Q4 Native inkrementální |
| Q4 selže | Q5 Native globální (automaticky) |
| ETH3D benchmark data | Q3 (autotest precomputed) |
Rychlé srovnání
| Backend | App Store | Sandbox | Externí binárka | Nejlepší použití | Max ~kamer |
|---|---|---|---|---|---|
| Q1 Apple PG | ✅ | ✅ | — | Orbit-objekt | ~300 |
| Q2 COLMAP Binary | ❌ (jen developer build) | — | colmap/glomap | Velký outdoor | ~5 000 |
| Q3 COLMAP textový import | ✅ | ✅ | — | Bench rigy | ~1 500 |
| Q4 Native inkrementální | ✅ | ✅ | — | Orbit-objekt | ~200 |
| Q5 Native globální | ✅ | ✅ | — | Q4 fallback | ~1 351 |
| Q6 Workspace Import | ✅ | ✅ | — | Reuse Metashape | dle zdroje |