match_pose op• Data kinds: points × points → pose
• Call: import fullseye as fs; fs.ledger.match_pca(pts_scene, pts_model) (implementation को सीधे call करना हो तो import match3d; match3d.match_pca(pts_scene, pts_model), registry से लेना हो तो ops3d.get("match_pca"))
PCA pose matching (structure=point cloud × method=principal-axis alignment)।
दोनों cloud के principal axis को मिलाने वाला मोटा rigid transform (rotation R + translation t) लौटाता है। NCC/phase correlation जो नहीं संभाल पाते, वह rotation यहाँ संभाला जाता है (sign की 4 तरह की अस्पष्टता least squares से हल होती है। यह residual एक मोटा मानदंड है जो मानता है कि दोनों cloud के point एक ही क्रम में correspond करते हैं — बिना correspondence वाले measured cloud को आगे ICP आदि से refine करें)। Return value (R(3,3), t(3,))।
Return value का अर्थ: pts_scene ≈ (R @ pts_model.T).T + t (t = c_scene − R·c_model)। R हमेशा det=+1 वाला rotation है (reflection नहीं देता)। residual point को index क्रम में जोड़कर मापा जाता है, इसलिए बिना correspondence वाले cloud में 4 candidate में से चुनाव भरोसेमंद नहीं है (उस स्थिति में इसे icp_point2point_3d को init_R/init_t के रूप में देकर refine करें)। जिन cloud के principal axis degenerate हैं (sphere, cylinder आदि जहाँ eigenvalue बराबर हों), उनमें axis अनिश्चित रहते हैं और परिणाम स्थिर नहीं होता। दोनों cloud में point की संख्या अलग हो सकती है। input (N,3) है (validation moment_axes पर छोड़ा गया है, अपना नहीं है)।
• 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 के स्रोत।
• shape_desc_pose — py -3.11 examples_3d/shape_desc_pose.py
pose को input के रूप में लेते हैं)fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error
match_pose)match_phase_3d · moment_axes · match_logpolar_z
*Provenance: match3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.