Kapitola 9 — SfM backendy


Picker Camera Alignment sedí v sekci Inspectoru „Cameras & Capture" a je to rozbalovací menu, ne segmentovaný ovladač (názvy backendů jsou na segmenty příliš dlouhé a roztrhly by úzký sloupec Inspectoru). Kolik má položek, závisí na buildu: verze z App Store zobrazuje přesně dvě — Apple Photogrammetry (výchozí) a Native. COLMAP tam jako backend zcela chybí a objevuje se jako třetí položka jen ve vývojářských/DMG buildech (viz Q2). Nativní položka se jmenuje prostě „Native"; dřívější dodatek „(experimental)" resp. „(Beta)" je odstraněn — Native už není zkušební cesta, ale cesta ke kvalitě. Je silný u přízemních orbitálních a fotografických scén, momentálně je ale slabý u leteckého/dronového mapování (příliš řídký mrak bodů); Apple Photogrammetry zůstává bezpečným výchozím nastavením. Je-li jako typ záznamu zvolena neuspořádaná sada fotografií, aplikace vždy zarovná pomocí Native, bez ohledu na to, co ukazuje picker — řádek s poznámkou pod pickerem to výslovně uvádí a picker zůstává ovladatelný, protože jeho hodnota není nedostupná, jen přehlasovaná. Externí SfM výsledky z Metashape, COLMAP nebo jiného fotogrammetrického softwaru lze navíc importovat přes menu File (Q3 textový formát COLMAP, Q6 import workspace) — picker se nepřepne, ale importované pozice nahradí SfM výsledek. Tento import nemá s otázkou COLMAP backendu nic společného a funguje v jakémkoli buildu.
SfM znamená Structure from Motion. Z množiny překrývajících se fotografií software pro každý snímek rekonstruuje polohu a směr pohledu kamery ve společném 3D souřadnicovém systému. K tomu se vytvoří hrubý 3D mrak bodů, kterým se inicializuje trénink pomocí Gaussian Splatting. Výsledek SfM je vstupem pro samotný trénink a zásadně rozhoduje o pozdější kvalitě obrazu.
RadianceKit nabízí pět cest SfM: dva vestavěné backendy v aplikaci (Q1 Apple Photogrammetry, Q4/Q5 Native), dvě importní cesty z externích nástrojů (Q3 textový formát COLMAP, Q6 binární import workspace) a Q2 COLMAP binárku, která je dostupná pouze ve vývojářských buildech mimo App Store. Který z nich je ten správný, závisí na typu scény (orbit kolem objektu, interiér, dronový let) a na tom, zda externí software už poskytuje rekonstrukci.
Q1 — Apple Photogrammetry
KDE
Expert View → Inspector → sekce „Cameras & Capture" → picker Camera Alignment, položka „Apple Photogrammetry". Výchozí nastavení v každém buildu.
TECHNICKY
Obaluje vestavěný Apple Photogrammetry framework, který byl původně vyvinut pro Object Capture. Apple interně extrahuje rysy (features) pomocí proprietární pipeline (kroky nejsou veřejně zdokumentovány), verifikuje je pomocí multi-view matchingu a řeší bundle adjustment na Neural Engine + GPU Apple Silicon. Backend je zcela v souladu s pravidly App Store (žádná externí binárka, Sandbox=true, on-device), poskytuje ale pouze pozice kamer a hrubý mrak bodů — žádné diagnostické metriky jako délka trajektorie (track) nebo chyba reprojekce. Škáluje podle doporučení Apple do několika stovek snímků. Při více než ~500 snímcích v lineárních dronových letech nebo velkých venkovních scénách byly opakovatelně pozorovány pády nebo tiché zahazování jednotlivých kamer.
Q3 — textový formát COLMAP (Metashape / ETH3D)
KDE
Menu „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) NEBO přetažení složky s sparse/0/cameras.txt.
TECHNICKY
Načítá standardizovaný textový export COLMAP — tři textové soubory cameras.txt, images.txt, points3D.txt v podsložce sparse/0/ — a konvertuje je do interního modelu SfM výsledku. Stejná definice formátu jako binární export COLMAP, jen jako ASCII místo binárního. Je vydáván v přesně tomto uspořádání Agisoft Metashape, RealityCapture, PolyCam a ETH3D benchmarkem. Parser sdílí rozpoznávání camera modelu s binárním parserem a zná všech jedenáct standardních camera modelů COLMAP — od SIMPLE_PINHOLE a PINHOLE přes SIMPLE_RADIAL (vlastní výchozí nastavení COLMAP) a OPENCV až po varianty fisheye. Robustní vůči komentářovým řádků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 → Inspector → sekce „Cameras & Capture" → picker Camera Alignment, položka „Native" (bez dřívějšího dodatku „(experimental)"). Inkrementální je výchozí režim tohoto backendu; pro Native neexistuje volba mapperu. Řádek „Mapper" pod ním patří výhradně COLMAP: ve vývojářských buildech je viditelný, ale zašedlý, dokud je zvolen Native, ve verzi z App Store zcela chybí. Skutečně nativní řádky — „FOV Override", „High-Quality" a „Native SfM Recipe" — už u jiných backendů nemizí, ale zůstávají zašedlé a uvádějí v řádku pod sebou, co je třeba přenastavit, aby se znovu odemkly. Mezi inkrementálním a globálním postupem nemůžeš sám přepínat: Inkrementální je pevně nastavený jako výchozí a na globální postup přejde aplikace sama pouze z vlastní iniciativy (viz Q5).
TECHNICKY
Vlastní GPU akcelerovaná implementace celé SfM pipeline: FAST+BRIEF rysy NEBO SuperPoint+LightGlue přes CoreML (zapnuto přepínačem „High-Quality"; u neuspořádaných sad fotografií je stejně aktivní), následuje Hamming-KNN matching, RANSAC fundamentální matice, budování tracků, výběr initial pair, two-view bootstrap (F→E plus DLT), greedy inkrementální mapper s PnP registrací a multi-view triangulací a finální bundle adjustment přes Schurem redukovaný Levenberg-Marquardt s Huber loss a analytickými Jacobiány přes Cholesky solve. Zcela v souladu s App Store: žádná externí binárka, Sandbox=true. Se zabudovaným detektorem kolapsu: hodnotí výsledek jako degenerovaný, pokud je registrováno méně než 60 % vstupních snímků, pokud míra bodů na kameru klesne pod 13 nebo pokud je mrak bodů téměř plochý. Poté nenásleduje okamžitá změna postupu — aplikace nejprve opakuje inkrementální běh (převezme první nenápadný výsledek, jinak nejlepší z pokusů) a teprve poté přechází na globální mapper (Q5), pokud i nejlepší pokus zůstane degenerovaný. Empiricky čistý u orbitálních/turntable scén; u obecnějších pohybů (dronový let, interiéry se složitou geometrií) je úspěšnost nižší — detektor ale tyto případy zachytí. Škáluje spolehlivě až do ~200 kamer, výše s výrazně delší dobou běhu.
Q5 — Native SfM (globální)
KDE
Volá se automaticky, když inkrementální mapper (Q4) spustí detektor kolapsu (registrováno méně než 60 % vstupních snímků, míra bodů na kameru pod 13 nebo téměř plochý mrak bodů) — a to teprve poté, co byl inkrementální běh zopakován a i nejlepší pokus zůstal degenerovaný. Ručně jej nelze vyžádat: v Inspectoru pro to neexistuje picker ani žádný jiný přepínač — aplikace sama rozhoduje, kdy přepne.
TECHNICKY
Globální varianta nativní pipeline. Nejprve extrakce rysů + matching jako u Q4, poté odhad relativní pozice pro všechny ověřené páry, následně rotation averaging (synchronizuje všechny rotace kamer ve světovém souřadnicovém systému) a translation averaging (založený na LSQR na matrix-free sparse formulaci, aby se zabránilo přetečení celočíselného typu u velkého počtu kamer). Škáluje v principu na ~5 000 kamer, v praxi kvalita citelně klesá nad několik set kamer. Zachází se s ním jako s „fallback vrstvou": uplatní se, když inkrementální mapper i po opakování zdegeneruje, a sám znovu detektoru kolapsu předložen nebývá — zůstane-li jeho výsledek řídký, ozve se místo toho obecné upozornění na kvalitu pipeline.
Q6 — Import Metashape / COLMAP-textového workspace
KDE
Menu File → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Přetažení složky s sparse/0/cameras.{bin,txt} a images/.
TECHNICKY
Automaticky rozpozná, zda složka vybraná přetažením nebo v panelu Open odpovídá jednomu ze tří uspořádání workspace COLMAP (sparse/0/, sparse/, nebo Root) a zda je rekonstrukce binární (cameras.bin) nebo textová (cameras.txt). Binární cesta používá binární parser COLMAP, textová cesta ETH3D loader — oba produkují stejný model SfM výsledku a zbytek pipeline (import obrázků, spuštění MCMC tréninku) je vůči zdroji agnostický. Obrázky se otevírají přes systém security-scoped bookmarks sandboxu aplikace, takže import funguje i ve verzi z App Store. Zamýšleno speciálně pro případ „export z Metashape bez přepočítávání rekonstrukce". Detekce zmíněná v položce menu File varuje v logu aplikace, pokud zvolená složka není rozpoznatelný workspace.
Q7 — Nativní recepty (Standard / Professional / E3 High-Accuracy)
KDE
Expert View → Inspector → sekce „Cameras & Capture" → řádek „Native SfM Recipe". Řádek je ovladatelný pouze, pokud je jako Camera Alignment zvoleno „Native" a jako typ záznamu je nastavena neuspořádaná sada fotografií — jinak je zašedlý a uvádí pod sebou, co je třeba přenastavit (pravidla dostupnosti jsou v kapitole 2).
TECHNICKY
Tři úrovně téhož nativního backendu. Nemění algoritmus, ale to, jak důkladně pracuje:
Standard — základní recept bez dodatečných stupňů.
Professional — nastavuje navíc dvě věci: rozpoznané AprilTag značky vstupují jako tuhá tělesa do mappingu a bundle adjustmentu, a na hotových pozicích se dodatečně provádí hustá re-triangulace (hustší počáteční mrak bodů). Neobsahuje-li záznam žádné značky, detektor nic nenajde a zůstane účinná pouze hustá re-triangulace.
E3 High-Accuracy — staví na Professional a navíc zapíná HQ frontend (dlaždicování 3×3 SuperPoint, LightGlue se 4096 keypointy, covisibility páry) a společné zpřesnění ohniskové vzdálenosti (focal refinement) napříč všemi kamerami. To dává nejostřejší pozice kamer a nejdelší dobu běhu matchingu.
Které backend kdy?
| Scénář | Doporučený backend |
|---|---|
| První výsledek, bez dlouhého přemýšlení | Q1 Apple Photogrammetry (výchozí nastavení) |
| Skenování objektu, 50–200 fotografií | Q1 Apple Photogrammetry |
| Maximální kvalita na téže scéně | Předvolba „Maximum Quality (Native)" — Q4 Native + Q7-recept E3 |
| Snímání s vytištěnými markery AprilTag | Q4 Native + Q7-recept Professional |
| Velký exteriér / dron / >500 snímků | Q6 import Workspace (spočítat v Metashape nebo COLMAP, pak načíst) |
| K dispozici je export z Metashape/RealityCapture | Q6 import (SfM není potřeba) |
| ETH3D / akademická sada COLMAP-Text | Q3 import COLMAP-Text |
| Q4 zkolabuje | Q5 Native global (přepne se automaticky) |
Rychlé srovnání
| Backend | App Store | Sandbox | Externí binárka | Nejlepší využití | Max ~snímků |
|---|---|---|---|---|---|
| Q1 Apple PG | ✅ | ✅ | — | Orbit-Object | ~300 |
| Q2 COLMAP Binary | ❌ (pouze Developer Build) | — | colmap/glomap | Outdoor large | ~5 000 |
| Q3 COLMAP-Text-Import | ✅ | ✅ | — | Bench rigs | ~1 500 |
| Q4 Nativní inkrementální | ✅ | ✅ | — | Orbit-Object | ~200 |
| Q5 Nativní globální | ✅ | ✅ | — | Q4-Fallback | ~5 000 |
| Q6 Import Workspace | ✅ | ✅ | — | Metashape-Reuse | podle zdroje |