match_pose op• Data kinds: points × points → pose
• Call: import fullseye as fs; fs.ledger.match_pca(pts_scene, pts_model) (to call the implementation directly, import match3d; match3d.match_pca(pts_scene, pts_model); from the registry, ops3d.get("match_pca"))
PCA pose matching (structure = point cloud × method = principal-axis alignment).
Returns a coarse rigid transform (rotation R + translation t) that aligns the principal axes of both clouds. It handles the rotation that NCC/phase correlation cannot (the 4-way sign ambiguity is resolved by least squares. That residual is a coarse criterion assuming the points of both clouds correspond in the same order — for measured clouds without correspondence, refine downstream with ICP or similar). Returns (R(3,3), t(3,)).
Meaning of the return value: pts_scene ≈ (R @ pts_model.T).T + t (t = c_scene − R·c_model). R is always a rotation with det=+1 (no reflections). The residual is measured by pairing points in index order, so for clouds without correspondence the choice among the 4 candidates is unreliable (in that case pass it as init_R/init_t to icp_point2point_3d to refine). For clouds whose principal axes are degenerate (equal eigenvalues, such as a sphere or cylinder) the axes are undefined and the result is unstable. The two clouds may have different point counts. Input is (N,3) (validation is left to moment_axes; there is none).
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• shape_desc_pose — py -3.11 examples_3d/shape_desc_pose.py
pose as 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. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.