project — 3D bundle_adjust op

• Data kinds: points → keypoints

• Call: import fullseye as fs; fs.ledger.project(points, rvec, t, K) (implementation को सीधे call करना हो तो import bundle3d; bundle3d.project(points, rvec, t, K), registry से लेना हो तो ops3d.get("project"))

उपयोग

3D points (n,3) को camera (rvec,t,K) से 2D (n,2) पर project करता है (perspective division)।

X_cam = R(rvec) @ X + t, x = K @ X_cam, uv = x[:2] / x[2] सभी points के लिए एक साथ गणना करता है (project_points जैसा ही convention)। rvec rotation vector है (axis × कोण [rad], scipy का Rotation.from_rotvec), t (3,) translation है, K (3,3) intrinsic matrix है। return value (n,2) float है, जिसमें column 0 u (क्षैतिज, column दिशा) और column 1 v (ऊर्ध्वाधर, row दिशा) है, unit K के अनुसार pixel।

सावधानी (कोई जाँच नहीं): camera के पीछे या image plane पर के point (Z_cam <= 0) हटाए नहीं जाते, सीधे भाग दिया जाता है। Z_cam = 0 पर 0 से भाग के कारण inf/NaN आता है, ऋणात्मक Z image के अंदर दिखने वाले नकली coordinates देता है, इसलिए visibility का निर्णय caller करे। shape की जाँच भी नहीं होती (केवल np.asarray से float बनाया जाता है)। bundle_adjust / mean_reprojection_error के reprojection residual इसी function से बनते हैं।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• bundle_adjust — py -3.11 examples_3d/bundle_adjust.py

वे अगले ops जिनसे type जुड़ता है (keypoints को input के रूप में लेते हैं)

fuse_to_voxel · dlt_pose · pnp_ransac · reprojection_error

इसी category के (bundle_adjust)

bundle_adjust · mean_reprojection_error


*Provenance: bundle3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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