hausdorff_distance — 3D 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"))

Verwendung

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).

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)

• 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

Typkompatible Folge-Operatoren (nehmen measurement als Eingabe)

vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle

Gleiche Kategorie (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.