voxel_iou — 3D metrics op

• Datenarten: voxel × voxel → measurement

• Aufruf: import fullseye as fs; fs.ledger.voxel_iou(vol_a, vol_b, iso=0.5) (die Implementierung direkt: import metrics3d; metrics3d.voxel_iou(vol_a, vol_b, iso=0.5); aus dem Register: ops3d.get("voxel_iou"))

Verwendung

Der IoU (Intersection over Union) der Voxelbelegung. → [0,1]. Volumetrische Übereinstimmung.

Beide Volumes müssen dieselbe Shape haben. Unterschiedliche Formen stimmen per numpy broadcasting scheinbar überein und liefern stillschweigend einen falschen IoU (z. B. (10,1,10) vs (1,10,10) → 1.0); daher wird fail-closed eine abweichende Shape mit ValueError abgewiesen.

Berechnung: Beide Volumes werden mit >= iso binarisiert (iso Standard 0.5, Gleichheit eingeschlossen), dann |A∩B| / |A∪B|. Ist die Vereinigung leer (beide ohne Belegung), wird 1.0 zurückgegeben ("beide leer" gilt als Übereinstimmung; kein Fehler).

Argumente: vol_a, vol_b sind Arrays derselben Shape (nicht auf 3-D beschränkt; die Dimensionszahl wird nicht geprüft; bool / 0-1 / Dichte-Grid sind alle zulässig). iso ist der Schwellwert für "belegt"; für das Dichte-Grid von fuse_to_voxel oder points_to_voxel (Werte sind Punktanzahlen) ist iso=1 oder mehr explizit anzugeben. NaN wird unter >= zu False (unbelegt).

Rückgabewert: Python float, [0, 1]. 1 = vollständige Übereinstimmung, 0 = keine Überlappung.

Hinweis: Was nicht auf demselben Gitter (bounds und size) liegt, ist nicht vergleichbar — übergeben Sie fuse_to_voxel / points_to_voxel dieselben bounds. Bei dünnen Schalen fällt der IoU schon bei einer Verschiebung um 1 Voxel stark ab; für die Bewertung von Oberflächen eignen sich daher chamfer_distance / fscore besser. Für Objekte mit kleinem Volumen wird konventionell Dice (voxel_dice, eine Funktion desselben Moduls) verwendet.

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• blender_interop — Zusammen mit Blender — Form bauen, mit fullseye messen (Fallstricke: Achsen, Einheiten, Referenzdaten)

• measurement_uncertainty — Messunsicherheit und Kalibrierung — was nötig ist, um zu behaupten, dass man misst

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)

• metrics_eval — py -3.11 examples_3d/metrics_eval.py

Typkompatible Folge-Operatoren (nehmen measurement als Eingabe)

vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle

Gleiche Kategorie (metrics)

chamfer_distance · hausdorff_distance · m3c2_distance · fscore · rmse_correspondence · normal_consistency · pose_error


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