medial op• 数据种类:voxel → voxel
• 调用: import fullseye as fs; fs.ledger.skeleton_endpoints3d(vol)(要直接调用实现,import medial; medial.skeleton_endpoints3d(vol);从台账取用则 ops3d.get("skeleton_endpoints3d"))
以体素掩码返回 3D 骨架的端点(26 邻域中骨架 voxel 不超过 1 个)。
孤立 voxel(度 0)也计为端点。2D 的 r2_endpoints_skeleton 的 3D 版。
步骤: 用 _ensure_skeleton 把输入转为 bool,若有 6 邻域全为前景的 interior voxel 就用 skeletonize_vol 细化,然后用 3x3x3 全 1 核(中心 0, mode="constant" 下外侧为 0)做卷积,统计各 voxel 的 26 邻域内的骨架 voxel 数(度),返回 skel & (度 <= 1)。位于 volume 边缘的骨架 voxel, 由于外侧按 0 处理,若分支在那里中断就成为端点。
返回值: 与输入同形状的 bool 数组(端点 = True)。没有前景时全为 False。用 np.argwhere 得到 (z, y, x) 坐标,用 .sum() 得到端点数。
校验(ValueError): 不是 3-D、空数组、含 NaN/Inf 的 float 输入。需要细化而环境中没有 scikit-image 时为 ImportError。
注意:
• 端点在各分支末端是精确的,但毛刺(细化产生的短分支)的尖端也计为端点。只想要结构的末端时,先用 skeleton_prune3d 剪掉。
• 只有闭环的骨架(环)端点为 0 个。
• 只要数量时,topology_signature 会把 endpoints / isolated 分开返回。
• 示例数据目录(下载 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_prune3d · skeleton_branches3d
*Provenance: medial.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.