transform op• 数据种类:depth → sdf
• 调用: import fullseye as fs; fs.ledger.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0)(要直接调用实现,import match3d; match3d.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0);从台账取用则 ops3d.get("tsdf_from_depth"))
深度图(2.5D)→ TSDF volume(RGB-D 重建的标准表示)。depth→TSDF 转换。
把每个 voxel 投影到图像上,存储与视线上观测深度之间的带符号截断距离 [-1,1] (表面前方 +、后方 −、表面 0)。KinectFusion 系的基本表示。
网格: bounds=(lo, hi) 是 (X, Y, Z) 的相机坐标(与 depth_to_points 相同), 为 None 时取深度反投影点云的 min−2 / max+2(深度单位)。输出为 (size,size,size) float32,轴顺序为 (Z, Y, X),voxel 中心 = lo + (i + 0.5)/size·(hi − lo)。注意 bounds 的排列 (x,y,z) 与数组的轴 (z,y,x) 相反。
值: 用 u = X·fx/Z + cx、v = Y·fy/Z + cy 把各 voxel 中心取整到像素,由该像素的观测深度 d 计算 clip((d − Z)/trunc, −1, 1)(trunc 与深度同单位)。落在图像外的 voxel、观测深度为 0 以下、Z 为 0 以下的 voxel 设为 +1(未观测=自由)(不会 clip 到边界像素而伪装成已观测)。约定深度 0 为无效值。
• 深度全为 0 且 bounds=None 时点云为空,numpy 的 min 抛出异常。
• 由于是 1 个视点的 TSDF,视线背面以 −1 填充(不会成为封闭物体)。
后续: 用 voxel_to_mesh(tsdf, iso=0.0) 提取表面。要转为占据则用 sdf_to_occupancy。
• 示例数据目录(下载 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 · signed_distance_field
*Provenance: match3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.