skeleton_prune3d — 3D medial op

• 資料種類:voxel → voxel

• 呼叫: import fullseye as fs; fs.ledger.skeleton_prune3d(vol, length=1)(要直接呼叫實作,import medial; medial.skeleton_prune3d(vol, length=1);從台帳取用則 ops3d.get("skeleton_prune3d"))

用法

修剪 3D 骨架的毛刺(短枝)。端點去除迭代 length 次 = 去除枝長 <=length 的枝。

2D 的 pruning 的 3D 版。孤立 voxel 按端點處理而被刪除。

步驟: 用 _ensure_skeleton 轉為 bool(若有 interior voxel 則用 skeletonize_vol 細化),然後把下列操作重複 length 次 — 同時刪除所有 26 鄰域度 <= 1 的 voxel(端點與孤立點)。當骨架變空或不再有端點時(只剩閉環時)中途停止。

引數: length 經 int(length) 轉換,為負則取 0(為 0 時把細化後的骨架原樣回傳)。每 1 次迭代刪去各分支尖端的 1 個 voxel,因此長度 <= length voxel 的分支(毛刺)會一直刪到根部。

回傳值: 與輸入同形狀的 bool 陣列。

注意(需要了解的行為):

• 長分支也會從尖端縮短 length 個 voxel(這並不是只挑出毛刺刪除的處理)。需要主分支的端點位置時,請注意剪枝後的端點比原來向內偏移 length。

• 2 個分支點之間的短分支,兩端都是分支點(度 >= 3),因此不會被刪除。

• 孤立 voxel 在第 1 次迭代就被刪除。

• 每次迭代都會重新計算度,因此成本與 length 成正比。

檢驗(ValueError): 不是 3-D、空陣列、含 NaN/Inf 的輸入。需要細化而沒有 scikit-image 時為 ImportError。後續為 skeleton_endpoints3d / skeleton_junctions3d / skeleton_branches3d / topology_signature。

參考(範例資料、文獻)

• 範例資料目錄(下載 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_branches3d


*Provenance: medial.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.