metrics op• Datenarten: points × points → measurement
• Aufruf: import fullseye as fs; fs.ledger.hausdorff_distance(a, b) (die Implementierung direkt: import metrics3d; metrics3d.hausdorff_distance(a, b); aus dem Register: ops3d.get("hausdorff_distance"))
Die symmetrische Hausdorff-Distanz = max(max_a min_b, max_b min_a). → Skalar. Die Worst-Case-Abweichung.
Raises ValueError: wenn einer der beiden leer oder nicht (N,3) ist (das Maximum einer leeren Menge wäre eine rohe numpy-Ausnahme).
Berechnung: mit cKDTree die Nächster-Nachbar-Distanzen von jedem Punkt von a zu b und von b zu a bestimmen und das größere der beiden gerichteten Maxima zurückgeben. Das ist der kleinste Radius, der garantiert: "Jeder Punkt der einen Wolke liegt innerhalb dieser Distanz zur anderen Wolke". Einheit = Koordinateneinheit.
Eingabe: a, b sind Punktwolken (N, 3) / (M, 3) (Punktzahlen dürfen abweichen, keine Korrespondenz nötig). Wie beim Geschwister-Op chamfer_distance läuft die Eingabe am Eingang durch _require_cloud: Eine leere Punktwolke oder eine Eingabe, die nicht 3 Spalten hat, etwa (N, 2), wird mit einem ValueError mit der eigenen Meldung dieses Ops abgelehnt (früher scheiterte max() bei einer leeren Wolke mit numpys "zero-size array", und eine Eingabe ohne 3 Spalten scheiterte an der Dimensionsabweichung in cKDTree — keines von beiden sagt, was falsch ist).
Rückgabewert: Python float, [0, inf). 0 für identische Punktwolken. Keine Normierung.
Hinweis: 1 einzelner Ausreißerpunkt bestimmt den Wert (Maximum, nicht Mittelwert). Für die Bewertung verrauschter Scans sind chamfer_distance oder fscore (Anteil innerhalb des Schwellwerts tau) stabiler; Hausdorff verwendet man, wenn man "schlimmstenfalls diese Genauigkeit" belegen will (Toleranzprüfung, derselbe Charakter wie LOD-max_error).
• 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.
• mesh_lod_download — py -3.11 examples_3d/mesh_lod_download.py
• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py
• poisson_surface_recon — py -3.11 examples_3d/poisson_surface_recon.py
measurement als Eingabe)vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle
metrics)chamfer_distance · m3c2_distance · fscore · rmse_correspondence · normal_consistency · voxel_iou · 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.