principal_moments — 3D moment_invariant op

• Data kinds: points → descriptor

• Call: import fullseye as fs; fs.ledger.principal_moments(points) -> 'np.ndarray' (implementation को सीधे call करना हो तो import moments3d; moments3d.principal_moments(points) -> 'np.ndarray', registry से लेना हो तो ops3d.get("principal_moments"))

उपयोग

inertia tensor के eigenvalues (principal moments of inertia, घटते क्रम में sort, rotation invariant)।

inertia tensor symmetric है, इसलिए eigenvalues real हैं। point cloud को rotation R से घुमाने पर I → R I Rᵀ similarity transform होता है, और eigenvalues invariant (ठीक-ठीक) रहते हैं। return value घटते क्रम में होती है, इसलिए coordinate system या rotation से स्वतंत्र रूप से मेल खाती है।

Returns

np.ndarray, shape (3,)

घटते क्रम में principal moments of inertia λ1 >= λ2 >= λ3 >= 0।

अतिरिक्त:

• ये inertia_tensor के eigenvalues हैं, और covariance eigenvalues c_i से संबंध λ_i = (c_1 + c_2 + c_3) - c_i है। लंबी पतली छड़ में सबसे छोटा eigenvalue (छड़ के axis के चारों ओर) 0 के क़रीब जाता है, और sphere में 3 eigenvalues बराबर होते हैं।

• इकाई लंबाई² है। translation और rotation के प्रति invariant है पर scale के प्रति invariant नहीं है (s गुना पर s² गुना)। scale invariance चाहिए तो moment_invariants।

• input (N,3), N >= 1 (1 point पर सब 0)। ग़लत shape या non-finite मान पर ValueError।

• principal axis vectors (eigenvectors) चाहिए तो moment_axes। Deterministic।

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

• shape_desc_pose — py -3.11 examples_3d/shape_desc_pose.py

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

fuse_to_voxel · shape_distance

इसी category के (moment_invariant)

moment_invariants · central_moments · inertia_tensor


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

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