fit_ellipsoid — 3D robust_fit op

• Data kinds: points → primitive

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

उपयोग

point cloud पर किसी भी pose वाला 3-axis ellipsoid algebraic रूप से fit करता है और {center, axes, radii, residual} लौटाता है।

general quadric xᵀA x + b·x + c = 0 को ellipsoid की गारंटी देने वाले constraint 4J − I² = 1 के तहत generalised eigenproblem Sr v1 = λ C v1 (scipy.linalg.eig) के रूप में हल किया जाता है (Li & Griffiths 2004)। हर real eigenvector को ellipsoid में reconstruct किया जाता है, और जो positive definite (= वास्तव में मौजूद ellipsoid) के रूप में reconstruct हो सके और जिसका residual RMS न्यूनतम हो उसे अपनाया जाता है (reconstruction के समय की positive definite जाँच ही सटीक ellipsoid निर्णय है)। प्रारंभिक मान की ज़रूरत नहीं, deterministic, global solution। numerical stability के लिए point cloud को centroid और RMS radius से dimensionless बनाकर हल किया जाता है, और parameters को world coordinates में वापस लाया जाता है।

Args:

points: (N,3) point cloud (कम से कम 10 points)। outlier के प्रति कोई बचाव नहीं (ज़रूरत हो तो पहले inlier चुनें)।

Returns:

dict: {"center": (3,), "axes": (3, 3), "radii": (3,), "residual": float}।

axes के columns principal axes हैं (radius घटते क्रम में), radii radii (घटते क्रम में), और residual

Taubin approximation का point-surface distance RMS।

Raises:

ValueError: गलत shape / कम points / positive definite ellipsoid solution न मिलना (planar degeneracy,

non-ellipsoidal surface, अपर्याप्त coverage) आदि पर fail-closed।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blas_threads_and_memory — Matrix decompositions धीमे क्यों हैं — BLAS threads, caches, memory layout

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

• fit_primitives_ext — py -3.11 examples_3d/fit_primitives_ext.py

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

fuse_to_voxel · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line · distance_line_line · distance_segment_segment

इसी category के (robust_fit)

ransac_plane · ransac_sphere · ransac_line · ransac_cylinder · fit_cone · fit_torus


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

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