moment_invariant op• Data kinds: points → table
• Call: import fullseye as fs; fs.ledger.central_moments(points, max_order: 'int' = 3) -> 'dict' (implementation को सीधे call करना हो तो import moments3d; moments3d.central_moments(points, max_order: 'int' = 3) -> 'dict', registry से लेना हो तो ops3d.get("central_moments"))
centroid पर केंद्रित central moments μ_{pqr} (translation invariant, key=(p,q,r)) लौटाता है।
μ_{pqr} = mean( (x-x̄)^p (y-ȳ)^q (z-z̄)^r )। p+q+r <= max_order वाले सभी orders शामिल हैं। centroid घटाकर गणना होती है, इसलिए translation के प्रति ठीक-ठीक invariant है। equal-mass convention के कारण μ_{000}=1, और 1st-order moments μ_{100}=μ_{010}=μ_{001}=0 (centring का परिणाम)।
points : array_like, shape (N, 3)
point cloud।
max_order : int
शामिल किया जाने वाला अधिकतम order p+q+r (default 3)। 0 या अधिक।
dict[tuple[int, int, int], float]
(p, q, r) → μ_{pqr}।
अतिरिक्त:
• लौटाए गए dict में keys की संख्या p+q+r <= max_order वाले सभी संयोजन हैं (max_order=3 पर 20)। मान float हैं (mean है, इसलिए points की संख्या से भाग दिया गया है)।
• इकाई लंबाई^(p+q+r) है। translation invariant है पर rotation और scale के प्रति invariant नहीं (rotation invariants के लिए moment_invariants / principal_moments)।
• (2,0,0), (1,1,0) जैसे 2nd-order moments ठीक population covariance (N से भाग) हैं, यानी inertia_tensor वाली ही सामग्री।
• higher orders पर centroid से दूर के points हावी होते हैं, इसलिए ये outliers के प्रति कमज़ोर हैं। पहले statistical_outlier_removal आदि पर विचार करें।
• input (N,3), N >= 1। max_order < 0, ग़लत shape या non-finite मान पर ValueError। Deterministic।
• 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 के स्रोत।
• moment_invariants — py -3.11 examples_3d/moment_invariants.py
table को input के रूप में लेते हैं)fuse_to_voxel · mesh_select_lod
moment_invariant)moment_invariants · principal_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.