tsdf_from_depth — 3D transform op

• Data kinds: depth → sdf

• Call: import fullseye as fs; fs.ledger.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0) (to call the implementation directly, import match3d; match3d.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0); from the registry, ops3d.get("tsdf_from_depth"))

Usage

Depth map (2.5-D) → a TSDF volume (the standard representation of RGB-D reconstruction). The depth → TSDF conversion.

Each voxel is projected into the image, and the signed truncated distance [-1,1] to the observed depth along the line of sight is stored (in front of the surface +, behind it −, on the surface 0). The basic representation of the KinectFusion family.

Grid: bounds=(lo, hi) are camera coordinates (X, Y, Z) (same as depth_to_points); None means min−2 / max+2 of the back-projected depth point cloud (in depth units). The output is (size,size,size) float32 with axis order (Z, Y, X), voxel centre = lo + (i + 0.5)/size·(hi − lo). Note that the bounds order (x,y,z) and the array axes (z,y,x) are reversed.

Values: each voxel centre is rounded to a pixel by u = X·fx/Z + cx, v = Y·fy/Z + cy, and from that pixel's observed depth d the value clip((d − Z)/trunc, −1, 1) is computed (trunc in the same unit as the depth). Voxels that fall outside the image, voxels whose observed depth is 0 or less, and voxels with Z of 0 or less are set to +1 (unobserved = free) (they are not clipped to the border pixel to pretend they were observed). Convention: depth 0 is the invalid value.

• If all depths are 0 and bounds=None, the point cloud is empty and numpy's min raises an exception.

• Being a 1-viewpoint TSDF, the far side along the line of sight is filled with −1 (it does not become a closed object).

Downstream: extract the surface with voxel_to_mesh(tsdf, iso=0.0). For occupancy, use sdf_to_occupancy.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

Runnable examples (verified samples that actually call this op)

• transforms_repr — py -3.11 examples_3d/transforms_repr.py

Ops the type connects to (they accept sdf as input)

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

Same category (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 operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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