medial op• 資料種類:voxel → voxel
• 呼叫: import fullseye as fs; fs.ledger.skeleton_branches3d(vol, min_length=0)(要直接呼叫實作,import medial; medial.skeleton_branches3d(vol, min_length=0);從台帳取用則 ops3d.get("skeleton_branches3d"))
把 3D 骨架在分叉點處切成枝(線段)。2D r2_split_skeleton_lines 的 3D 版。
去掉分支點 voxel 後剩下的就是分支。min_length > 0 時,去除 26 連通元件的 voxel 數少於該值的碎片。
步驟: 用 _ensure_skeleton 轉為 bool(若有 interior voxel 則用 skeletonize_vol 細化)→ 去除 26 鄰域度 >= 3 的 voxel(分支點)→ 若 min_length > 0 則用 scipy.ndimage.label(3x3x3 全 1 結構 = 26 連通)分成元件,捨棄 voxel 數少於 min_length 的元件。
回傳值: 與輸入同形狀的 bool 陣列(分支 voxel = True)。不回傳每條分支的標籤 — 要逐條處理分支,把回傳值傳給 vol_label(branches, 26)(元件數 = 分支數)。分支點 voxel 本身不包含在結果中,因此分支兩端在分支點前 1 個 voxel 處結束。
引數與檢驗: min_length 為 voxel 數(用 int() 截斷。為 0 時不去除)。輸入不是 3-D、空、NaN/Inf 時為 ValueError。需要細化而沒有 scikit-image 時為 ImportError。沒有前景時全為 False。
注意: 26 鄰域度在分支處容易因對角鄰接而達到 3 以上,分支點會作為數個 voxel 的塊被去除,因此分支可能顯得比實際短。只有閉環的骨架沒有分支點,整體作為 1 條分支保留。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• medial_topology — py -3.11 examples_3d/medial_topology.py
voxel 作為輸入)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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.