medial op• Data kinds: voxel → points
• Call: import fullseye as fs; fs.ledger.medial_axis_points(vol, min_radius=0.0) (implementation को सीधे call करना हो तो import medial; medial.medial_axis_points(vol, min_radius=0.0), registry से लेना हो तो ops3d.get("medial_axis_points"))
• Ledger के ज़रिए return value: fullseye.ledger.medial_axis_points(...) केवल घोषित out type points का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.medial_axis_points.raw(...) का उपयोग करें, या medial.medial_axis_points को सीधे call करें।
• मूल function का return: (points, radii)
medial voxels के coordinates और local radius (= उस point का EDT value) को point cloud बनाता है। return value (points, radius)।
मोटे हिस्सों में surface जैसे और पतले हिस्सों में line जैसे फैले medial points को (M,3) coordinate (z,y,x) और हर point के local radius (M,) के रूप में लौटाता है। सबसे बड़े radius वाला point shape के सबसे "भीतरी" हिस्से = centre की ओर इशारा करता है।
Args:
vol: binary voxel (bool / 0-1 का 3D)।
min_radius: इस radius या उससे कम वाले points को हटाता है (noise दबाने के लिए)।
Returns:
points (float64, (M,3)): medial voxel coordinate (z, y, x)।
radius (float64, (M,)): हर point का EDT मान (= local inscribed radius)।
Procedure: distance_ridge(vol, min_radius) से मिले ridge_mask का np.argwhere (array index, rows z-major lexicographic क्रम में deterministic) और उस position का edt मान लौटाता है। coordinate voxel index हैं और spacing से गुणा नहीं होता (physical coordinate चाहिए तो caller points * (sz, sy, sx) करे, और radius को भी उसी तरह isotropic spacing से गुणा करे)।
Arguments और validation: vol 3-D है (non-zero = foreground)। 3-D न हो, खाली हो, या NaN/Inf हो तो ValueError, min_radius < 0 पर भी ValueError। radius में केवल > min_radius वाले points होते हैं (boundary voxel का EDT 1 या कम होता है, इसलिए min_radius=1 से बाहरी shell का noise लगभग हट जाता है)।
Edge behaviour: foreground न हो, या सभी points min_radius या उससे कम हों, तो points (0, 3) और radius (0,) का खाली array होता है (error नहीं)।
कहाँ उपयोग करें: medial_match का radius distribution, point cloud op (smallest_sphere3 / fit_line3 आदि) तक पुल, और np.argmax(radius) से सबसे बड़े inscribed sphere का centre मिलता है।
• 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 के स्रोत।
• medial_topology — py -3.11 examples_3d/medial_topology.py
points को input के रूप में लेते हैं)points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d
medial)distance_ridge · skeletonize_vol · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · skeleton_prune3d · skeleton_branches3d
*Provenance: medial.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.