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"))
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.
• 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
• 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.
• metrics_eval — py -3.11 examples_3d/metrics_eval.py
measurement als Eingabe)vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle
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.