bundle_adjust op• Datenarten: pose × points → table
• Aufruf: import fullseye as fs; fs.ledger.bundle_adjust(cameras, points, obs_cam, obs_pt, obs_uv, K, fix_first=True, max_iter=200) (die Implementierung direkt: import bundle3d; bundle3d.bundle_adjust(cameras, points, obs_cam, obs_pt, obs_uv, K, fix_first=True, max_iter=200); aus dem Register: ops3d.get("bundle_adjust"))
Optimiert Kameraposen und 3-D-Punkte gemeinsam durch Minimierung des Reprojektionsfehlers. → dict{cameras, points, rmse, cost}.
cameras (nc,6)=[rvec(3)|t(3)] Anfangswerte, points (m,3) Anfangswerte, Beobachtungen obs_cam/obs_pt/obs_uv. fix_first=True fixiert die erste Kamera auf das Äquivalent von [I|0] (ihren Anfangswert) und entfernt so die gauge.
scale gauge: Der Reprojektionsfehler bleibt bei "einer Ähnlichkeitsskalierung der ganzen Szene um das Zentrum von Kamera 0" exakt unverändert, daher ist die scale der Lösung allein dadurch nicht bestimmt und LM rutscht zu einem beliebigen Faktor (gemessen ×0.7 bis ×213, bei rmse≈0). Diese Funktion fixiert sie, indem sie 1 Residuum hinzufügt, ein Residuum, das den RMS-Abstand der Struktur vom Zentrum von Kamera 0 (scale_anchor) auf seinem Anfangswert hält: w·(rms/rms0 − 1). Die Reprojektionskosten haben in scale-Richtung den Gradienten null, daher ist dieses Residuum im Optimum exakt 0, und die zurückgegebene scale stimmt mit der der Anfangsstruktur überein (verglichen mit dem Fixieren über die Basislinienlänge ‖t₁‖ ist der Einfluss der Anfangsstörung kleiner, weil über die Punkte gemittelt wird). Ist die Anfangsstruktur degeneriert (alle Punkte fallen mit dem Zentrum von Kamera 0 zusammen), wird keine Nebenbedingung gesetzt. Der verwendete RMS-Abstand steht als scale_anchor im zurückgegebenen dict.
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• bundle_adjust — py -3.11 examples_3d/bundle_adjust.py
table als Eingabe)fuse_to_voxel · mesh_select_lod
bundle_adjust)mean_reprojection_error · project
*Provenance: bundle3d.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.