fuse_to_voxel — 3D fusion op

• Datenarten: any → voxel

• Aufruf: import fullseye as fs; fs.ledger.fuse_to_voxel(items, size=64, bounds=None, device='cpu', smooth=0.8) (die Implementierung direkt: import fuse3d; fuse3d.fuse_to_voxel(items, size=64, bounds=None, device='cpu', smooth=0.8); aus dem Register: ops3d.get("fuse_to_voxel"))

• Rückgabewert über das Register: fullseye.ledger.fuse_to_voxel(...) liefert nur den Wert des deklarierten Out-Typs voxel (die zugrunde liegende Funktion gibt zusätzlich Hilfsinformationen zurück). Wird das Verworfene gebraucht, nutze fullseye.ledger.fuse_to_voxel.raw(...) oder rufe fuse3d.fuse_to_voxel direkt auf.

• Rückgabe der Funktion: (voxel, bounds)

• GPU: Dieser Operator hat einen GPU-Pfad (device="cuda")

Verwendung

Fusioniert mehrere Strukturen in ein gemeinsames Dichte-Voxelvolumen (TRIZ-Integration). items=[(data, kind, params_dict), ...].

Führt komplementäre Strukturen wie mesh (topology) + points (sample) + depth (Beobachtung) zu 1 Darstellung zusammen. Rückgabewert (voxel, bounds).

Ablauf: Jedes (data, kind, params) wird mit to_points(data, kind, **params) zur Punktwolke gemacht, vertikal verkettet und mit match3d.points_to_voxel in ein size^3-Dichtegitter gesplattet (+1 für die Zelle, in die jeder Punkt fällt; bei smooth > 0 geglättet mit einem Gaussian von σ = smooth voxel). Bei bounds=None wird (min, max) der verketteten Punktwolke zum Gitterbereich.

Argumente:

• items: nicht leere list/tuple, deren Elemente (data, kind, params_dict) der Länge 3 sind (params_dict muss ein dict sein). Um samples von to_points zu ändern, samples= in params setzen.

• size: Anzahl der Voxel pro 1 Achse (festes kubisches Gitter).

• bounds: (lo, hi), jeweils der Länge 3. Wenn mehrere Wolken auf dasselbe Gitter gelegt werden (Vergleich, voxel_iou), immer explizit angeben.

• device: torch-Device ("cpu" / "cuda"). smooth: Gaussian σ [voxel].

Rückgabewert: (voxel, bounds) — voxel ist eine (size, size, size)-float64- Punktanzahldichte (Summe ≈ Gesamtpunktzahl, keine Wahrscheinlichkeit), bounds ist das tatsächlich verwendete (lo, hi). Der Gitterindex ist floor((p - lo) / span * (size - 1)) von points_to_voxel, und Achse 0 entspricht der x-Komponente der Punkte (Achsenreihenfolge des voxel = Komponentenreihenfolge der Punkte).

Prüfung (ValueError): items ist keine list/tuple, leer, Elemente sind keine 3-Tupel, params ist kein dict (stoppt am Eingang den Fehlgebrauch, Rohdaten direkt zu übergeben).

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen

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 voxel als Eingabe)

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

Gleiche Kategorie (fusion)

register_cross


*Provenance: fuse3d.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.