sdf_to_occupancy — 3D transform op

• 数据种类:sdf → voxel

• 调用: import fullseye as fs; fs.ledger.sdf_to_occupancy(sdf, iso=0.0)(要直接调用实现,import match3d; match3d.sdf_to_occupancy(sdf, iso=0.0);从台账取用则 ops3d.get("sdf_to_occupancy"))

用法

SDF → occupancy voxel(小于等于 iso=内侧=1)。从 SDF 回到 voxel。

仅为 (sdf <= iso).astype(float64) 的 op。按 signed_distance_field 的约定(内侧 <0), iso=0.0 时内侧=1、外侧=0。包含等号,所以恰好等于 iso 的 voxel 归入内侧。iso 为正时得到向外膨胀 iso 个 voxel 的占据,为负时得到收缩的占据(若 SDF 是真实距离,则等同于各向同性 dilation/erosion)。对 tsdf_from_depth 的输出(表面前方 +、后方 −、未观测 +1)也可用同样的 iso=0.0,但未观测区域会落在 0 一侧(外)。不限输入形状,返回同形状的 float64(0.0 / 1.0)。NaN 比较为假,因此变为 0 (无警告)。

★传入标签 volume 时背景会成为「内侧」。backends_typed.TYPE_TO_SORT 把 sdf / labels / voxel 折叠为同一个 volume,所以直接接上 label_components 或 vol_label 的输出也不会抛异常。标签中 0 为背景、1 以上为前景,所以 <= 0 就是背景本身。实测(2026-09-08,24³ 的立方体,真实内侧 1,728 voxel): 传入 SDF 得 1,728, 传入同形状的 0/1/2 标签得 9,504(5.5 倍)—— 符号反转了。要从标签生成占据,请不要用 iso,而是自己写 labels > 0。

参考(示例数据、文献)

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

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

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

• transforms_repr — py -3.11 examples_3d/transforms_repr.py

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

voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa

同类别(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.