reprojection_error — 3D pose_estimation op

• 数据种类:points × keypoints → measurement

• 调用: import fullseye as fs; fs.ledger.reprojection_error(points_3d, points_2d, K, R, t)(要直接调用实现,import pnp3d; pnp3d.reprojection_error(points_3d, points_2d, K, R, t);从台账取用则 ops3d.get("reprojection_error"))

用法

重投影误差(RMS 像素)。评估位姿的拟合程度。→ scalar。

Raises ValueError:points_2d 不是 (N,2) / 点数不一致 / 非有限。

计算:用 x = K (R X + t) 投影各 3D 点,取 u = x0/x2, v = x1/x2,返回与观测 2D 点的欧几里得距离 d_i [px] 的 RMS sqrt(mean(d_i²))。

• points_3d (N,3)、points_2d (N,2)(像素坐标,与 project_points 相同约定)、K (3,3)、R (3,3)、t (3,)。R, t 为 world → camera(Xc = R X + t)。

• 深度 x2 为负的点(相机后方)也照样相除投影,因此在错误位姿下前后翻转的点可能看起来"很近"。x2 = 0 因除法变为 inf/NaN,不做检查。

• 单位为像素。对应正确且 K 吻合时为像素噪声量级(亚像素)。

• 典型:评估 dlt_pose / pnp_ransac 的结果。pnp_ransac 的 info["rms"] 是同一个量(在 inlier 集合上)。与 GT 位姿比较用 pose_error。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• pnp_pose_outliers — py -3.11 examples_3d/pnp_pose_outliers.py

• pose_estimation — py -3.11 examples_3d/pose_estimation.py

类型可衔接的下一个算子(可接受 measurement 作为输入)

vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle

同类别(pose_estimation)

dlt_pose · pnp_ransac


*Provenance: pnp3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.