skeleton_junctions3d — 3D medial op

• Data kinds: voxel → voxel

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

उपयोग

3D skeleton के branch points (joint, 26-neighbourhood में 3 या अधिक skeleton voxels) को voxel mask के रूप में लौटाता है।

जो input skeleton नहीं है (interior वाला blob), उसे मापने से पहले skeletonize_vol से thin किया जाता है। 2D के junctions_skeleton का 3D संस्करण। blood vessel, porous material और network जैसी संरचनाओं को graph में बदलने (node निकालने) के लिए उपयोग होता है। केवल branch degree का सार चाहिए तो topology_signature उसे dict में लौटाता है।

सावधानी (honest): 26-neighbourhood degree branch के पास diagonal adjacency से ज़्यादा आ सकती है (discrete skeleton का ज्ञात गुण)। branch की *संख्या* गिनते समय इस mask को connected component में समूहित करें।

Procedure: _ensure_skeleton — input को bool बनाता है, और अगर 6-neighbourhood (face adjacency) पूरी तरह foreground वाला एक भी (1) interior voxel हो तो उसे "skeleton नहीं" मानकर पहले skeletonize_vol (skimage Lee method) लगाता है। इसके बाद सभी 1 वाले 3x3x3 kernel (centre 0) के convolution (mode="constant", बाहर 0) से हर voxel के 26-neighbourhood में skeleton voxel की संख्या (degree) गिनी जाती है, और skel & (degree >= 3) लौटाया जाता है।

Returns: input के समान shape का bool array। foreground न हो तो पूरा False। skeleton voxel के अलावा सब हमेशा False। np.argwhere से (z, y, x) क्रम में coordinate मिलते हैं।

Validation (ValueError): 3-D न हो, खाली array हो, या float में NaN/Inf वाला input। scikit-image न होने वाले environment में thinning की ज़रूरत पड़े तो ImportError।

ध्यान दें: input पहले से skeleton हो तब भी interior जाँच हर बार चलती है (पतले skeleton पर thinning skip होता है)। गिनती के लिए vol_label(mask, 26) के component की संख्या लें। branch में बाँटने के लिए skeleton_branches3d, endpoint के लिए skeleton_endpoints3d।

संदर्भ (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_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.