skeleton_branches3d — 3D 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.