skeleton_prune3d — 3D medial op

• Data kinds: voxel → voxel

• Call: import fullseye as fs; fs.ledger.skeleton_prune3d(vol, length=1) (implementation को सीधे call करना हो तो import medial; medial.skeleton_prune3d(vol, length=1), registry से लेना हो तो ops3d.get("skeleton_prune3d"))

उपयोग

3D skeleton की मूँछें (छोटी branches) काटता है। end point removal को length बार दोहराना = लंबाई <=length वाली branches हटाना।

2D के pruning का 3D संस्करण। isolated voxel endpoint माने जाते हैं और हट जाते हैं।

Procedure: _ensure_skeleton से bool बनाया जाता है (interior voxel हो तो skeletonize_vol से thin किया जाता है), फिर यह length बार दोहराया जाता है — 26-neighbourhood degree <= 1 वाले सभी voxel (endpoint और isolated point) एक साथ हटाए जाते हैं। skeleton खाली हो जाए या endpoint न बचें (केवल closed loop बचें) तो बीच में ही रुक जाता है।

Arguments: length को int(length) में बदला जाता है और negative हो तो 0 कर दिया जाता है (0 हो तो thin किया हुआ skeleton जैसा है वैसा लौटता है)। 1 iteration में हर branch के सिरे का 1 voxel हटता है, इसलिए लंबाई <= length voxel वाली branch (spur) जड़ तक हट जाती है।

Returns: input के समान shape का bool array।

ध्यान दें (behaviour के रूप में जानने योग्य बातें):

• लंबी branch भी सिरे से length voxel छोटी हो जाती है (यह केवल spur चुनकर हटाने वाली प्रक्रिया नहीं है)। main branch के endpoint की position चाहिए तो ध्यान रखें कि prune के बाद endpoint मूल से length भीतर होते हैं।

• 2 branch point के बीच की छोटी branch नहीं हटती, क्योंकि उसके दोनों सिरे branch point (degree >= 3) हैं।

• isolated voxel 1st iteration में ही हट जाते हैं।

• हर iteration में degree फिर से गिनी जाती है, इसलिए cost length के अनुपात में होती है।

Validation (ValueError): 3-D न हो, खाली array हो, या NaN/Inf वाला input। thinning ज़रूरी हो और scikit-image न हो तो ImportError। आगे के चरण: skeleton_endpoints3d / skeleton_junctions3d / skeleton_branches3d / topology_signature।

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

• medial_topology — py -3.11 examples_3d/medial_topology.py

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

voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa

इसी category के (medial)

distance_ridge · skeletonize_vol · medial_axis_points · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · 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.