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)가 아님 / 점 수 불일치 / 비유한.
계산: 각 3D 점을 x = K (R X + t)로 투영하여 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.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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)*Provenance: pnp3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.