vol_nearest_seed_vector — 3D medial op

• 数据种类:voxel → flow_dense

• 调用: import fullseye as fs; fs.ledger.vol_nearest_seed_vector(vol_binary, spacing=None)(要直接调用实现,import volops; volops.vol_nearest_seed_vector(vol_binary, spacing=None);从台账取用则 ops3d.get("vol_nearest_seed_vector"))

用法

每个 voxel 到最近 seed voxel 的位移向量 (3, D, H, W)(flow_dense,分量 dz, dy, dx [voxel])。

seed = 非零 voxel(以 > 0.5 二值化)。seed 上为 0。vol_distance_transform 只返回距离的值,“哪个 voxel 最近”丢失了 —— 从骨架出发的半径(表面 → 骨架的位移)、到膜的壁厚、ESDF 的梯度、标签的 Voronoi 划分都需要这个方向(2026-09-21,连接组基础中的漏洞)。传入 spacing (sz, sy, sx) 时,最近邻判定按物理距离进行(返回的位移仍以 voxel 为单位 —— |v * spacing| 即物理距离)。

精确解:Maurer, Qi & Raghavan (IEEE TPAMI 2003) 的线性时间 EDT(scipy.ndimage.distance_transform_edt(return_indices=True))。同距离的 seed 有多个时,按该实现的顺序取 1 个(不要赋予顺序任何含义)。连 1 个 seed 都没有时抛出 ValueError(所有 voxel 都在无穷远处 —— 不会默默返回 0)。

>>> v = np.zeros((5, 5, 5)); v[2, 2, 0] = 1

>>> d = vol_nearest_seed_vector(v); d.shape, tuple(d[:, 2, 2, 4])

((3, 5, 5, 5), (0.0, 0.0, -4.0))

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• nearest_seed_partition — py -3.11 examples_3d/nearest_seed_partition.py

类型可衔接的下一个算子(可接受 flow_dense 作为输入)

fuse_to_voxel

同类别(medial)

distance_ridge · skeletonize_vol · medial_axis_points · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · skeleton_prune3d


*Provenance: volops.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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