medial op• Data kinds: voxel → voxel
• Call: import fullseye as fs; fs.ledger.skeleton_branches3d(vol, min_length=0) (implementation को सीधे call करना हो तो import medial; medial.skeleton_branches3d(vol, min_length=0), registry से लेना हो तो ops3d.get("skeleton_branches3d"))
3D skeleton को branch points पर काटकर branches (segments) में बाँटता है। 2D के r2_split_skeleton_lines का 3D संस्करण।
branch point voxel हटाने के बाद जो बचता है वही branch है। min_length > 0 हो तो जिन टुकड़ों के 26-connected component में voxel की संख्या उससे कम है, उन्हें हटाया जाता है।
Procedure: _ensure_skeleton से bool बनाया जाता है (interior voxel हो तो skeletonize_vol से thin किया जाता है) → 26-neighbourhood degree >= 3 वाले voxel (branch point) हटाए जाते हैं → min_length > 0 हो तो scipy.ndimage.label (सभी 1 वाली 3x3x3 structure = 26-connected) से component में बाँटकर, voxel की संख्या min_length से कम वाले component हटाए जाते हैं।
Returns: input के समान shape का bool array (branch voxel = True)। हर branch का label नहीं लौटता — branch को अलग-अलग संभालने के लिए return value को vol_label(branches, 26) से गुज़ारें (component की संख्या = branch की संख्या)। branch point voxel स्वयं परिणाम में शामिल नहीं होते, इसलिए branch के दोनों सिरे branch point से 1 voxel पहले खत्म होते हैं।
Arguments और validation: min_length voxel की संख्या है (int() से truncate; 0 हो तो कुछ नहीं हटता)। input 3-D न हो, खाली हो, या NaN/Inf हो तो ValueError। thinning ज़रूरी हो और scikit-image न हो तो ImportError। foreground न हो तो पूरा False।
ध्यान दें: 26-neighbourhood degree branch पर diagonal adjacency से आसानी से 3 या अधिक हो जाती है, और branch point कई voxel के समूह के रूप में हटते हैं, इसलिए branch वास्तविक से छोटी आ सकती है। केवल closed loop वाले skeleton में branch point नहीं होते, और पूरा skeleton 1 branch के रूप में बचा रहता है।
• 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
voxel को input के रूप में लेते हैं)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
medial)distance_ridge · skeletonize_vol · medial_axis_points · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · skeleton_prune3d
*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.