pose_estimation op• Datenarten: points × keypoints → measurement
• Aufruf: import fullseye as fs; fs.ledger.reprojection_error(points_3d, points_2d, K, R, t) (die Implementierung direkt: import pnp3d; pnp3d.reprojection_error(points_3d, points_2d, K, R, t); aus dem Register: ops3d.get("reprojection_error"))
Reprojektionsfehler (RMS in Pixeln). Zur Beurteilung, wie gut eine Pose passt. → Skalar.
Raises ValueError: points_2d ist nicht (N,2) / Punktzahlen ungleich / nicht endlich.
Berechnung: projiziert jeden 3D-Punkt mit x = K (R X + t), nimmt u = x0/x2, v = x1/x2 und gibt den RMS sqrt(mean(d_i²)) der euklidischen Abstände d_i [px] zu den beobachteten 2D-Punkten zurück.
• points_3d (N,3), points_2d (N,2) (Pixelkoordinaten, gleiche Konvention wie project_points), K (3,3), R (3,3), t (3,). R, t bilden world → camera ab (Xc = R X + t).
• Auch Punkte mit negativer Tiefe x2 (hinter der Kamera) werden unverändert geteilt und projiziert; bei falscher Pose können vorn/hinten vertauschte Punkte daher "nah" erscheinen. x2 = 0 ergibt durch die Division inf/NaN und wird nicht geprüft.
• Die Einheit ist Pixel. Sind die Korrespondenzen korrekt und passt K, liegt der Wert in der Größenordnung des Pixelrauschens (Subpixel).
• Typisch: das Ergebnis von dlt_pose / pnp_ransac bewerten. info["rms"] von pnp_ransac ist dieselbe Größe (auf der Inlier-Menge). Vergleich mit einer GT-Pose über pose_error.
• 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.
• pnp_pose_outliers — py -3.11 examples_3d/pnp_pose_outliers.py
• pose_estimation — py -3.11 examples_3d/pose_estimation.py
measurement als Eingabe)vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle
pose_estimation)*Provenance: pnp3d.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.