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.