Chamfer Distance
Die Chamfer-Distanz misst, wie genau Punktmengen, 3D-Oberflächen oder Objektkonturen übereinstimmen, und unterstützt so Rekonstruktion, Segmentierung und Modelltraining.
Die Chamfer-Distanz misst, wie genau zwei Punktmengen übereinstimmen. Sie wird anhand des Abstands jedes Punkts zu seinem nächsten Nachbarn in der jeweils anderen Menge berechnet. Niedrigere Werte zeigen eine größere Übereinstimmung an. In der Computer Vision wird sie zum Vergleich von 3D-Punktwolken – Sammlungen abgetasteter räumlicher Koordinaten – und 2D-Objektkonturen verwendet. Die Reihenfolge der Punkte spielt keine Rolle, und die Mengen können unterschiedlich viele Punkte enthalten.
Ihre Ursprünge liegen im Chamfer Matching, das H. G. Barrow, J. M. Tenenbaum, R. C. Bolles und H. C. Wolf 1977 zum Abgleich von durch Bildkurven dargestellten Formen einführten. Im mechanischen CAD ist eine Fase eine abgeschrägte Kante, deren Abmessungen ein physisches Merkmal beschreiben.
Berechnung der Chamfer-Distanz#
Für zwei nichtleere Punktmengen A und B umfasst eine gängige Definition mit quadrierten Abständen drei Schritte:
- Finde für jeden Punkt in A den nächsten Nachbarn in B, quadriere den euklidischen Abstand und bilde den Mittelwert dieser Werte.
- Wiederhole den Vorgang von B nach A.
- Addiere die beiden gerichteten Mittelwerte.
Die erste Richtung bestraft vorhergesagte Punkte, die weit von der Referenzoberfläche entfernt sind; die umgekehrte Richtung bestraft Referenzbereiche, die in der Vorhersage fehlen. Dabei kommt dieselbe Operation zur Bestimmung des nächsten Nachbarn zum Einsatz wie bei k nächsten Nachbarn, wobei pro Abfrage ein Nachbar verwendet wird. Die Chamfer-Implementierung von PyTorch3D unterstützt sowohl bidirektionale als auch einseitige Berechnungen.
Quadrierte oder nicht quadrierte Abstände sowie Summen- oder Mittelwertbildung verändern den Score. Bei einer weiteren verbreiteten Konvention wird der Mittelwert der beiden gerichteten Mittelwerte gebildet, wodurch sich der halbe Wert ihrer Summe ergibt. Daher gehören die Abstandsdefinition, die Koordinateneinheiten und die Normalisierung zur Metrikdefinition eines Experiments.
Diese Berechnung in PyTorch verwendet torch.cdist, um paarweise euklidische Abstände zu berechnen:
import torch
a = torch.tensor([[0.0, 0.0], [2.0, 0.0]])
b = torch.tensor([[0.0, 0.0], [3.0, 0.0]])
# Reduce squared distances in each nearest-neighbor direction.
distances = torch.cdist(a, b, p=2)
squared_distances = distances.square()
a_to_b = squared_distances.min(dim=1).values.mean()
b_to_a = squared_distances.min(dim=0).values.mean()
chamfer = a_to_b + b_to_a
print(f"Squared Chamfer distance: {chamfer.item():.2f}")Die Ausgabe ist 1.00: Jeder gerichtete Mittelwert ist 0.50. Identische Punktmengen ergeben null.
Chamfer-Verlust beim Modelltraining#
Chamfer-Verlust bezeichnet die Verwendung der Chamfer-Distanz als Verlustfunktion. Ein neuronales Netz sagt Punktkoordinaten voraus, und die Rückpropagierung liefert Gradienten, die sie in Richtung der Referenzpunkte verschieben. Durch die Auswahl des nächsten Nachbarn ist das Ziel stückweise differenzierbar: In einem Bereich, in dem die Zuordnungen unverändert bleiben, liefern quadrierte Abstände Gradienten für die Koordinaten.
Eine grundlegende Anwendung ist das Netzwerk zur Erzeugung von Punktmengen (PSGN) von Haoqiang Fan, Hao Su und Leonidas J. Guibas, das auf der CVPR 2017 vorgestellt wurde. Es verwendet die Chamfer-Distanz als Trainingsziel für die 3D-Rekonstruktion aus einem Einzelbild und sagt die Punktwolke eines Objekts anhand eines Fotos voraus. Dieses Punktmengenziel ermöglicht das Lernen ohne vordefinierte Zuordnungen zwischen einzelnen Punkten.
Anwendungen in Rekonstruktion und Segmentierung#
Bei der 3D-Rekonstruktion vergleicht die Chamfer-Distanz abgetastete vorhergesagte Oberflächen mit der Referenzgeometrie. Sie unterstützt auch die Anpassung von Netzen: Scheitelpunkte werden so optimiert, dass sich Stichproben des Netzes den Zielstichproben annähern. Bei der Anpassung eines Netzes von einer Kugel an einen Delfin führt die alleinige Optimierung des Chamfer-Verlusts zu einer ungleichmäßigen Oberfläche; Kanten-, Normalen- und Laplace-Regularisierung schränken die lokale Netzstruktur ein.
Bei der Instanzsegmentierung misst die Chamfer-Distanz die räumliche Abweichung zwischen abgetasteten vorhergesagten und annotierten Konturen. Die Segmentierung mit Ultralytics YOLO26 stellt Polygonkoordinaten über Masks.xy bereit und liefert so Punktmengen für eine externe konturbasierte Bewertung mit der Chamfer-Distanz. Anders als die flächenbasierte Schnittmenge über Vereinigung gibt der Konturabstand an, wie weit die Konturen auseinanderliegen.
Verwandte Maße und Interpretation des Scores#
Drei verwandte Konzepte verdeutlichen, was der Score erfasst:
- Hausdorff-Distanz verwendet die größte Abweichung zum nächsten Nachbarn und hebt so die stärkste Abweichung zwischen Konturen oder Oberflächen hervor.
- Earth-Mover-Distanz bestimmt einen Transport zwischen Verteilungen mit minimalen Kosten und Erhaltung der Masse, wobei Zuordnungen über die Punktmengen hinweg gekoppelt werden.
- Dichtebewusste Chamfer-Distanz berücksichtigt eine ungleichmäßige lokale Abtastung. Beim gewöhnlichen Chamfer Matching können sich viele Punkte denselben nächsten Nachbarn teilen, sodass dichte Cluster trotz einer schlechten Gleichmäßigkeit der Abtastung geringe Fehler aufweisen können.
Abtastdichte, Ausrichtung und Datenvorverarbeitung beeinflussen daher die Vergleiche. Die nicht quadrierte Distanz hat dieselbe Einheit wie die Koordinaten; die quadrierte Distanz hat deren Quadrat als Einheit. Werden beide Punktwolken von Metern in Zentimeter umgerechnet, steigt die nicht quadrierte Chamfer-Distanz um den Faktor 100 und die quadrierte Chamfer-Distanz um den Faktor 10.000.










