Chamfer Distance
La distancia de Chamfer mide hasta qué punto coinciden conjuntos de puntos, superficies 3D o límites de objetos, y contribuye a la reconstrucción, la segmentación y el entrenamiento de modelos.
La distancia de Chamfer mide hasta qué punto coinciden dos conjuntos de puntos. Se calcula a partir de la distancia entre cada punto y su vecino más cercano en el otro conjunto. Los valores más bajos indican una mayor correspondencia. En visión artificial, compara nubes de puntos 3D —conjuntos de coordenadas espaciales muestreadas— y límites de objetos 2D. El orden de los puntos es irrelevante y los conjuntos pueden tener distinto número de puntos.
Su origen está en la correspondencia de Chamfer, presentada por H. G. Barrow, J. M. Tenenbaum, R. C. Bolles y H. C. Wolf en 1977 para comparar formas representadas mediante curvas de imagen. En el diseño mecánico asistido por ordenador (CAD), un chaflán es un borde biselado cuyas dimensiones describen una característica física.
Cómo se calcula la distancia de Chamfer#
Para dos conjuntos de puntos no vacíos, una definición habitual basada en distancias al cuadrado consta de tres pasos:
- Busca el vecino más cercano de cada punto de A en B, eleva al cuadrado la distancia euclídea y calcula la media de esos valores.
- Repite el proceso de B a A.
- Suma las dos medias direccionales.
La primera dirección penaliza los puntos predichos que están lejos de la superficie de referencia; la dirección inversa penaliza las regiones de referencia que faltan en la predicción. Para ello se utiliza la misma operación de búsqueda del vecino más cercano que en k vecinos más cercanos, con un vecino por consulta. La implementación de Chamfer de PyTorch3D permite realizar cálculos bidireccionales y unidireccionales.
El uso de distancias al cuadrado o sin elevar al cuadrado, así como la suma o la media, modifica la puntuación. Otra convención habitual calcula la media de las dos medias direccionales, lo que da la mitad del valor de su suma. Por tanto, la convención de distancia, las unidades de coordenadas y la normalización forman parte de la definición de la métrica en un experimento.
Este cálculo de PyTorch utiliza torch.cdist para calcular distancias euclídeas por pares:
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}")La salida es 1.00: cada media direccional es 0.50. Los conjuntos de puntos idénticos dan cero.
Pérdida de Chamfer en el entrenamiento de modelos#
La pérdida de Chamfer es la distancia de Chamfer utilizada como función de pérdida. Una red neuronal predice coordenadas de puntos y la retropropagación proporciona gradientes que los desplazan hacia los puntos de referencia. La selección del vecino más cercano hace que el objetivo sea diferenciable por tramos: en una región donde las asignaciones permanecen fijas, las distancias al cuadrado proporcionan gradientes para las coordenadas.
Una aplicación fundamental es Point Set Generation Network (PSGN), de Haoqiang Fan, Hao Su y Leonidas J. Guibas, presentada en CVPR 2017. Utiliza la distancia de Chamfer como objetivo de entrenamiento para la reconstrucción 3D a partir de una sola imagen y predice la nube de puntos de un objeto a partir de una fotografía. Este objetivo basado en conjuntos de puntos permite aprender sin correspondencias punto a punto predefinidas.
Aplicaciones en reconstrucción y segmentación#
En la reconstrucción 3D, la distancia de Chamfer compara superficies predichas muestreadas con la geometría de referencia. También permite ajustar mallas: se optimizan los vértices para que las muestras de la malla se aproximen a las muestras objetivo. En el ajuste de una malla de esfera a delfín, optimizar solo la pérdida de Chamfer produce una superficie irregular; la regularización de aristas, normales y Laplaciano limita la estructura local de la malla.
En la segmentación de instancias, la distancia de Chamfer mide la discrepancia espacial entre contornos anotados y predichos mediante muestreo. La segmentación de YOLO26 de Ultralytics expone las coordenadas de los polígonos a través de Masks.xy, lo que proporciona conjuntos de puntos para evaluar externamente los límites mediante Chamfer. A diferencia de la intersección sobre unión, basada en el área, la distancia entre contornos expresa cuánto se separan los límites.
Medidas relacionadas e interpretación de la puntuación#
Tres conceptos relacionados ayudan a entender qué mide la puntuación:
- La distancia de Hausdorff utiliza la mayor discrepancia entre vecinos más cercanos y destaca el peor desajuste entre límites o superficies.
- La distancia del transportista de tierra encuentra un transporte de coste mínimo que conserva la masa entre distribuciones y vincula las asignaciones de los conjuntos de puntos.
- La distancia de Chamfer sensible a la densidad aborda el muestreo local irregular. La correspondencia ordinaria de Chamfer permite que muchos puntos compartan un mismo vecino más cercano, por lo que los grupos densos pueden obtener errores pequeños pese a que la uniformidad del muestreo sea deficiente.
Por tanto, la densidad de muestreo, la alineación y el preprocesamiento de datos afectan a las comparaciones. La distancia sin elevar al cuadrado tiene las mismas unidades que las coordenadas; la distancia al cuadrado tiene sus unidades al cuadrado. Convertir ambas nubes de metros a centímetros multiplica la distancia de Chamfer sin elevar al cuadrado por 100 y la distancia de Chamfer al cuadrado por 10 000.










