tsdf_from_depth — 3D transform op

• Datenarten: depth → sdf

• Aufruf: import fullseye as fs; fs.ledger.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0) (die Implementierung direkt: import match3d; match3d.tsdf_from_depth(depth, fx, fy, cx, cy, size=64, bounds=None, trunc=3.0); aus dem Register: ops3d.get("tsdf_from_depth"))

Verwendung

Tiefenkarte (2,5-D) → ein TSDF-Volumen (die Standarddarstellung der RGB-D-Rekonstruktion). Die Umwandlung Tiefe → TSDF.

Jedes Voxel wird ins Bild projiziert, und der vorzeichenbehaftete, abgeschnittene Abstand [-1,1] zur beobachteten Tiefe auf dem Sehstrahl wird gespeichert (vor der Oberfläche +, dahinter −, auf der Oberfläche 0). Die Grunddarstellung der KinectFusion-Familie.

Gitter: bounds=(lo, hi) sind Kamerakoordinaten (X, Y, Z) (wie bei depth_to_points); None bedeutet min−2 / max+2 der aus der Tiefe rückprojizierten Punktwolke (in Tiefeneinheiten). Die Ausgabe ist (size,size,size) float32 mit Achsenreihenfolge (Z, Y, X), Voxelzentrum = lo + (i + 0.5)/size·(hi − lo).

Achtung: Die Reihenfolge von bounds (x,y,z) und die Array-Achsen (z,y,x) sind umgekehrt.

Werte: Jedes Voxelzentrum wird mit u = X·fx/Z + cx, v = Y·fy/Z + cy auf ein Pixel gerundet, und aus der beobachteten Tiefe d dieses Pixels wird clip((d − Z)/trunc, −1, 1) berechnet (trunc in derselben Einheit wie die Tiefe). Voxel außerhalb des Bilds, Voxel mit beobachteter Tiefe 0 oder kleiner und Voxel mit Z von 0 oder kleiner werden auf +1 (unbeobachtet = frei) gesetzt (sie werden nicht auf das Randpixel geclippt, um eine Beobachtung vorzutäuschen). Konvention: Tiefe 0 ist der ungültige Wert.

• Sind alle Tiefen 0 und bounds=None, ist die Punktwolke leer und das min von numpy wirft eine Exception.

• Da es ein TSDF aus 1 Blickpunkt ist, wird die Rückseite entlang des Sehstrahls mit −1 gefüllt (es entsteht kein geschlossenes Objekt).

Nachgelagert: Oberfläche mit voxel_to_mesh(tsdf, iso=0.0) extrahieren. Für Belegung sdf_to_occupancy verwenden.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• transforms_repr — py -3.11 examples_3d/transforms_repr.py

Typkompatible Folge-Operatoren (nehmen sdf als Eingabe)

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

Gleiche Kategorie (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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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