signed_distance_field — 3D transform op

• 数据种类:voxel → sdf

• 调用: import fullseye as fs; fs.ledger.signed_distance_field(vol, device='cpu', iso=0.5)(要直接调用实现,import match3d; match3d.signed_distance_field(vol, device='cpu', iso=0.5);从台账取用则 ops3d.get("signed_distance_field"))

• GPU:该算子有 GPU 路径(device="cuda")

用法

occupancy/密度 voxel → 符号距离场 SDF(内侧<0・外侧>0)。对两侧各做 edt_jfa。

SDF 是适合匹配的表示(平滑、梯度=法线、0 等值面=表面)。由 inside/outside 的欧氏距离差构建。GPU native。可在 voxel↔SDF↔occupancy 之间相互转换。

定义: 设 occ = vol > iso,d_out = edt_jfa(occ)(各 voxel 到最近的占据 voxel 的距离,占据内部为 0),d_in = edt_jfa(~occ)(到最近的非占据 voxel), sdf = d_out − d_in。外侧为 +距离,内侧为 −距离(voxel 单位,欧氏)。由于是 voxel 中心之间的距离,没有值为 0 的 voxel,边界上的占据 voxel 为 −1,相邻的非占据 voxel 为 +1(0 等值面位于 voxel 之间)。iso 是密度→占据的阈值(默认 0.5。计数密度时即「1 个点以上」)。全占据、全空的 volume 在没有 seed 的一侧距离饱和为 1e6,全占据时为 −1e6,全空时为 +1e6(不抛异常)。返回值 (D,H,W) float32 numpy。

后续: 用 sdf_to_occupancy 转回,用 voxel_to_mesh(sdf, iso=0.0) 取面,用 sobel3d 得法线场。

参考(示例数据、文献)

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

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

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

• transforms_repr — py -3.11 examples_3d/transforms_repr.py

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

sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_intersect · sdf_subtract

同类别(transform)

points_to_voxel · gaussians_to_voxel · mesh_to_voxel · mesh_to_points · depth_to_points · voxel_to_mips · voxel_to_mesh · tsdf_from_depth


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

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