register_cpd_rigid — 3D deform op

• Data kinds: points × points → pose

• Call: import fullseye as fs; fs.ledger.register_cpd_rigid(src, dst, iters=50, w=0.0, tol=1e-08) (implementation को सीधे call करना हो तो import deform3d; deform3d.register_cpd_rigid(src, dst, iters=50, w=0.0, tol=1e-08), registry से लेना हो तो ops3d.get("register_cpd_rigid"))

उपयोग

Coherent Point Drift (CPD) के rigid संस्करण से rotation + translation का EM estimate करता है।

src (moving Y, M points) को dst (fixed X, N points) से rigid transform द्वारा align करता है। CPD dst को, src पर centre वाले isotropic Gaussian mixture के centroid के रूप में देखता है; E step में soft correspondence (posterior) और M step में maximum-likelihood rigid transform और variance update होते हैं। ICP के विपरीत correspondence hard तरीके से तय नहीं होते, इसलिए शुरुआती misalignment और आंशिक outlier के प्रति robust है। scale 1 पर fixed (pure rigid)।

Reference: Myronenko & Song, "Point Set Registration: Coherent Point Drift", 2010।

Arguments:

src: (M,3) moving point cloud।

dst: (N,3) fixed point cloud।

iters: EM iteration की अधिकतम संख्या।

w: outlier (uniform distribution) mixing ratio 0≤w<1। 0 का अर्थ कोई outlier नहीं।

tol: variance σ² का relative change इस मान से कम हो तो converged मानकर रुकता है।

Returns:

R: (3,3) rotation (dst ≈ src @ R.T + t)।

t: (3,) translation।

info: dict। "sigma2" (अंतिम variance), "iters", "converged", "rmse"

(transform के बाद src का nearest neighbour RMSE)।

Exceptions:

ValueError: गलत shape, बहुत कम points, w range से बाहर, या N*M का

CPD_MAX_PAIRS (25M) से अधिक होना (क्योंकि हर iteration में dense (N,M) responsibility matrix बनती है।

दोनों point cloud को पहले decimate करके दें)।

संदर्भ (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 करते हैं)

• motion_scene — py -3.11 examples_3d/motion_scene.py

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

fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error

इसी category के (deform)

tps_fit · tps_warp · register_nonrigid


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

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