Benutzerhandbuch

Kapitel 9 — SfM-Backends

Der Inspector im Expert-Modus mit den sechs Abschnitten Presets, Cameras & Capture, Training, Progress, Look und Export — jeder mit einer Unterzeile, wann er wirkt
Der Inspector im Expert-Modus. Er gliedert sich in sechs Abschnitte — Presets, Cameras & Capture, Training, Progress, Look und Export —, die jeweils eine Unterzeile tragen, die sagt, wann die Einstellung wirkt. Die Wahl des SfM-Verfahrens sitzt im Abschnitt „Cameras & Capture".
Das aufgeklappte Camera-Alignment-Menü mit genau zwei Einträgen: Apple Photogrammetry und Native
Das aufgeklappte Camera-Alignment-Menü in der ausgelieferten Fassung: genau zwei Einträge — Apple Photogrammetry und Native. COLMAP steht hier nicht, und „Native" trägt keinen Beta-Zusatz mehr.

Der Camera-Alignment-Picker sitzt im Inspector-Abschnitt „Cameras & Capture" und ist ein Aufklapp-Menü, kein Segmented-Control (die Backend-Namen sind für Segmente zu lang und würden die schmale Inspector-Spalte sprengen). Wie viele Einträge er hat, hängt vom Build ab: die App-Store-Version zeigt genau zwei — Apple Photogrammetry (Default) und Native. COLMAP fehlt dort als Backend vollständig und erscheint nur in Developer-/DMG-Builds als dritter Eintrag (siehe Q2). Der native Eintrag heißt schlicht „Native"; der frühere Zusatz „(experimental)" bzw. „(Beta)" ist entfernt — Native ist kein Erprobungspfad mehr, sondern der Qualitätspfad. Es ist stark bei bodennahen Orbit- und Foto-Szenen, derzeit aber schwach bei Luft-/Drohnen-Mapping (zu dünne Punktwolke); Apple Photogrammetry bleibt die sichere Voreinstellung. Ist als Aufnahmetyp ein ungeordnetes Fotoset gewählt, richtet die App immer mit Native aus, egal was der Picker anzeigt — eine Hinweiszeile unter dem Picker sagt das ausdrücklich, und der Picker bleibt bedienbar, weil sein Wert nicht unverfügbar, sondern nur überstimmt ist. Externe SfM-Ergebnisse aus Metashape, COLMAP oder einer anderen Photogrammetrie-Software können zusätzlich über das File-Menü importiert werden (Q3 COLMAP-Text-Format, Q6 Workspace-Import) — der Picker wechselt nicht, aber die importierten Posen ersetzen das SfM-Resultat. Dieser Import hat mit der COLMAP-Backend-Frage nichts zu tun und funktioniert in jedem Build.

SfM steht für Structure from Motion. Aus einer Menge überlappender Fotos rekonstruiert die Software für jedes Bild die Position und Blickrichtung der Kamera in einem gemeinsamen 3D-Koordinatensystem. Dazu wird eine grobe 3D-Punktwolke erzeugt, die das Training mit Gaussian Splatting initialisiert. Das SfM-Ergebnis ist die Eingabe für das eigentliche Training und entscheidet maßgeblich über die spätere Bildqualität.

RadianceKit bietet fünf SfM-Wege: zwei in der App eingebaute Backends (Q1 Apple Photogrammetry, Q4/Q5 Native), zwei Import-Pfade aus externen Tools (Q3 COLMAP-Text-Format, Q6 binärer Workspace-Import) sowie Q2 COLMAP-Binary, das nur in Developer-Builds außerhalb des App Store verfügbar ist. Welcher der richtige ist, hängt vom Szenentyp ab (Orbit um ein Objekt, Innenraum, Drohnenflug) und davon, ob eine externe Software bereits eine Rekonstruktion liefert.

Q1 — Apple Photogrammetry

WO

Expert View → Inspector → Abschnitt „Cameras & Capture" → Camera-Alignment-Picker, Eintrag „Apple Photogrammetry". Voreinstellung in jedem Build.

TECHNISCH

Wrapt Apples eingebautes Photogrammetry-Framework, das ursprünglich für Object Capture entwickelt wurde. Apple extrahiert intern Features mit einer proprietären Pipeline (Schritte sind nicht öffentlich dokumentiert), verifiziert sie über Multi-View-Matching und löst Bundle-Adjustment auf der Apple-Silicon Neural Engine + GPU. Das Backend ist vollständig App-Store-konform (keine externe Binary, Sandbox=true, on-device), liefert aber nur Kamera-Posen plus eine grobe Punktwolke — keine Diagnose-Metriken wie Track-Länge oder Reprojektionsfehler. Skaliert nach Apples Empfehlung bis ein paar Hundert Bilder. Bei mehr als ~500 Frames in linearen Drohnenflügen oder großen Outdoor-Szenen wurden reproduzierbar Crashes oder stilles Verwerfen einzelner Kameras beobachtet.

Q3 — COLMAP-Text-Format (Metashape / ETH3D)

WO

Menü „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) ODER Drag-and-Drop eines Ordners mit sparse/0/cameras.txt.

TECHNISCH

Liest den standardisierten COLMAP-Text-Export — drei Textdateien cameras.txt, images.txt, points3D.txt im sparse/0/-Unterordner — und konvertiert in das interne SfM-Ergebnis-Modell. Selbe Format-Definition wie der COLMAP-Binär-Export, nur als ASCII statt Binär. Wird von Agisoft Metashape, RealityCapture, PolyCam und dem ETH3D-Benchmark in genau diesem Layout ausgegeben. Der Parser teilt die Camera-Model-Erkennung mit dem Binary-Parser und kennt alle elf Standard-Kameramodelle von COLMAP — von SIMPLE_PINHOLE und PINHOLE über SIMPLE_RADIAL (COLMAPs eigene Voreinstellung) und OPENCV bis zu den Fisheye-Varianten. Robust gegen Kommentar-Zeilen und leere Zeilen. Skaliert in Tests bis ~1 400 Kameras (ETH3D Tunnel) ohne Probleme.

Q4 — Native SfM (inkrementell)

WO

Expert View → Inspector → Abschnitt „Cameras & Capture" → Camera-Alignment-Picker, Eintrag „Native" (ohne den früheren Zusatz „(experimental)"). Inkrementell ist der Default-Modus dieses Backends; für Native gibt es keine Mapper-Auswahl. Die Zeile „Mapper" darunter gehört ausschließlich zu COLMAP: in Developer-Builds steht sie sichtbar, aber ausgegraut da, solange Native gewählt ist, in der App-Store-Version fehlt sie ganz. Die wirklich nativen Zeilen — „FOV Override", „High-Quality" und „Native SfM Recipe" — verschwinden unter anderen Backends nicht mehr, sondern bleiben ausgegraut stehen und nennen in einer Zeile darunter, was du umstellen musst, um sie wieder freizuschalten. Zwischen dem inkrementellen und dem globalen Verfahren kannst du nicht selbst umschalten: Inkrementell ist fest voreingestellt, und auf das globale Verfahren wechselt die App nur von sich aus (siehe Q5).

TECHNISCH

Eigene GPU-beschleunigte Implementierung der gesamten SfM-Pipeline: FAST+BRIEF-Features ODER SuperPoint+LightGlue über CoreML (eingeschaltet über den Schalter „High-Quality"; bei unsortierten Fotosätzen ohnehin aktiv), gefolgt von Hamming-KNN-Matching, RANSAC-Fundamentalmatrix, Track-Building, Initial-Pair-Auswahl, Two-View-Bootstrap (F→E plus DLT), greedy inkrementellem Mapper mit PnP-Registrierung und Multi-View-Triangulation und finalem Bundle-Adjustment via Schur-reduziertem Levenberg-Marquardt mit Huber-Loss und analytischen Jacobians über Cholesky-Solve. Komplett App-Store-konform: keine externe Binary, Sandbox=true. Mit dem eingebauten Collapse-Detektor: Er stuft ein Ergebnis als entartet ein, wenn weniger als 60 % der Eingabe-Frames registriert wurden, wenn die Points-per-Camera-Rate unter 13 fällt oder wenn die Punktwolke nahezu flach ist. Darauf folgt nicht sofort der Wechsel des Verfahrens — die App wiederholt zunächst den inkrementellen Lauf (sie übernimmt das erste unauffällige Ergebnis, sonst das beste der Versuche) und weicht erst dann auf den globalen Mapper (Q5) aus, wenn auch der beste Versuch entartet bleibt. Empirisch sauber auf Orbit-/Turntable-Szenen; auf allgemeineren Bewegungen (Drohnenflug, Innenräume mit komplexer Geometrie) ist die Erfolgsrate niedriger — der Detektor fängt diese Fälle aber ab. Skaliert bis ~200 Kameras zuverlässig, höher mit deutlich längerer Laufzeit.

Q5 — Native SfM (global)

WO

Wird automatisch aufgerufen, wenn der inkrementelle Mapper (Q4) den Collapse-Detektor auslöst (weniger als 60 % der Eingabe-Frames registriert, Points-per-Camera-Rate unter 13 oder nahezu flache Punktwolke) — und zwar erst, nachdem der inkrementelle Lauf wiederholt wurde und auch der beste Versuch entartet blieb. Von Hand lässt es sich nicht anfordern: Im Inspector gibt es dafür keinen Picker und auch sonst keinen Schalter — die App entscheidet selbst, wann sie umschaltet.

TECHNISCH

Globale Variante der nativen Pipeline. Erst Feature-Extraktion + Matching wie Q4, dann Relativ-Pose-Schätzung für alle verifizierten Paare, anschließend Rotation-Averaging (synchronisiert alle Kamera-Rotationen im Welt-Koordinatensystem) und Translation-Averaging (LSQR-basiert auf einer matrix-freien Sparse-Formulierung, um Integer-Overflow bei großen Kamera-Mengen zu vermeiden). Skaliert auf ~5 000 Kameras im Prinzip, in der Praxis fällt die Qualität oberhalb einiger Hundert Kameras spürbar ab. Wird als „Fallback-Tier" gehandhabt: kommt zum Einsatz, wenn der inkrementelle Mapper auch nach Wiederholung degeneriert, und wird selbst nicht noch einmal dem Collapse-Detektor vorgelegt — bleibt sein Ergebnis dünn, meldet sich stattdessen die allgemeine Qualitätswarnung der Pipeline.

Q6 — Metashape / COLMAP-Text-Workspace Import

WO

File-Menü → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Drag-and-Drop eines Ordners mit sparse/0/cameras.{bin,txt} und images/.

TECHNISCH

Erkennt automatisch, ob ein per Drag-and-Drop oder Open-Panel ausgewählter Ordner einer der drei COLMAP-Workspace-Layouts entspricht (sparse/0/, sparse/, oder Root) und ob die Reconstruction binär (cameras.bin) oder Text (cameras.txt) vorliegt. Der binäre Pfad nutzt den COLMAP-Binär-Parser, der Text-Pfad den ETH3D-Loader — beide produzieren dasselbe SfM-Ergebnis-Modell und der Rest der Pipeline (Bilder importieren, MCMC-Training starten) ist agnostisch gegenüber der Quelle. Die Bilder werden über das App-Sandbox-Bookmark-System security-scoped geöffnet, sodass der Import auch in der App-Store-Version funktioniert. Speziell für den Fall „Metashape-Export ohne Rekonstruktion neu rechnen" gedacht. Die im File-Menü-Eintrag erwähnte Erkennung warnt im App-Log, falls der gewählte Ordner kein erkennbarer Workspace ist.

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

WO

Expert View → Inspector → Abschnitt „Cameras & Capture" → Zeile „Native SfM Recipe". Die Zeile ist nur bedienbar, wenn als Camera Alignment „Native" gewählt und als Aufnahmetyp ein ungeordnetes Fotoset eingestellt ist — sonst steht sie ausgegraut da und nennt darunter, was umzustellen ist (die Verfügbarkeitsregeln stehen in Kapitel 2).

TECHNISCH

Drei Stufen desselben nativen Backends. Sie verändern nicht den Algorithmus, sondern wie gründlich er arbeitet:

Standard — das Basis-Rezept ohne Zusatzstufen.

Professional — setzt zusätzlich zwei Dinge: erkannte AprilTag-Marker gehen als starre Körper in Mapping und Bundle-Adjustment ein, und an den fertigen Posen wird dicht nachtrianguliert (dichtere Startpunktwolke). Enthält die Aufnahme keine Marker, findet der Detektor nichts und nur die dichte Re-Triangulation bleibt wirksam.

E3 High-Accuracy — baut auf Professional auf und schaltet zusätzlich das HQ-Frontend zu (3×3-SuperPoint-Kachelung, LightGlue mit 4096 Keypoints, Covisibility-Paare) sowie das gemeinsame Fokal-Refinement über alle Kameras. Das ergibt die schärfsten Kameraposen und die längste Matching-Laufzeit.

Welches Backend wann?

SzenarioEmpfohlenes Backend
Erstes Ergebnis, ohne nachzudenkenQ1 Apple Photogrammetry (Voreinstellung)
Objekt-Scan, 50–200 FotosQ1 Apple Photogrammetry
Maximale Qualität auf derselben SzenePreset „Maximum Quality (Native)" — Q4 Native + Q7-Rezept E3
Aufnahme mit gedruckten AprilTag-MarkernQ4 Native + Q7-Rezept Professional
Großer Outdoor / Drohne / >500 BilderQ6 Workspace-Import (in Metashape oder COLMAP rechnen, dann einladen)
Metashape/RealityCapture-Export liegt vorQ6 Import (kein SfM nötig)
ETH3D / akademisches COLMAP-Text-SetQ3 COLMAP-Text-Import
Q4 kollabiertQ5 Native global (schaltet automatisch um)

Schnell-Vergleich

BackendApp-StoreSandboxExterne BinaryBest UseMax ~Cams
Q1 Apple PGOrbit-Object~300
Q2 COLMAP Binary❌ (nur 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 Quelle