【点云配准】点云配准中常用的评价指标(豪斯多夫距离/Hausdorff Distance、倒角距离/Chamfer Distance和陆地移动距离/Earth Mover‘s Distan

本文介绍了点云配准中常用的相似性测度,包括Hausdorff距离、Chamfer距离和EarthMover’sDistance。Hausdorff距离衡量了两个集合之间最远点的距离,Chamfer距离则是计算每个点到对方集合最近点距离的平方和,而EarthMover’sDistance通过寻找最佳映射来计算点集间的最小成本。这些测度在3D点云匹配和注册中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

在点云配准问题中,我们通常会用相似性测度来评价两组点云之间的匹配程度,或作为迭代求解的代价方程(cost function),常见的相似性测度有均方误差(Root Mean Square Error(RMSE)、最大公共点集(Largest Common Pointset,LCP) 等。此外,还有豪斯多夫距离(Hausdorff Distance,HD)、倒角距离(Chamfer Distance,CD)和陆地移动距离(Earth Mover’s Distance,EMD)等指标也可被用于评价点云之间的匹配程度。

2.豪斯多夫距离(Hausdorff Distance,HD)

Hausdorff距离描述了度量空间中真子集之间的距离。假设有两个集合 A = { a 1 , . . . , a p } A=\{a_1,...,a_p\} A={a1,...,ap} B = { b 1 , . . . , b q } B=\{b_1,...,b_q\} B={b1,...,bq},则这两个集合之间的Hausdorff距离定义为:

H ( A , B ) = m a x ( h ( A , B ) , h ( B , A ) ) (1) H(A,B)=max(h(A,B),h(B,A)) \tag{1} H(A,B)=max(h(A,B),h(B,A))(1)

{ h ( A , B ) = max ⁡ a ∈ A min ⁡ b ∈ B ∣ ∣ a − b ∣ ∣ h ( B , A ) = max ⁡ b ∈ B min ⁡ a ∈ A ∣ ∣ b − a ∣ ∣ (2) \begin{cases} h(A,B)=\max_{a\in A} \min_{b\in B}||a-b|| \\ h(B,A)=\max_{b\in B} \min_{a\in A}||b-a|| \end{cases} \tag{2} {h(A,B)=maxaAminbBabh(B,A)=maxbBminaAba(2)

其中, H ( A , B ) H(A,B) H(A,B)被称为集合A和B之间的双向Hausdorff距离, h ( A , B ) h(A,B) h(A,B)被称为从集合A到集合B的单向Hausdorff距离。

3.倒角距离(Chamfer Distance,CD)

给定两个点集 S 1 S_1 S1 S 2 S_2 S2,它们之间的Chamfer Distance定义为:

d C D ( S 1 , S 2 ) = 1 S 1 ∑ x ∈ S 1 min ⁡ y ∈ S 2 ∣ ∣ x − y ∣ ∣ 2 2 + 1 S 2 ∑ y ∈ S 2 min ⁡ x ∈ S 1 ∣ ∣ x − y ∣ ∣ 2 2 (3) d_{CD}(S_1,S_2)=\frac{1}{S_1}\sum_{x\in S_1}\min_{y\in S_2}||x-y||_2^2+\frac{1}{S_2}\sum_{y\in S_2}\min_{x\in S_1}||x-y||_2^2 \tag{3} dCD(S1,S2)=S11xS1yS2minxy22+S21yS2xS1minxy22(3)

4.陆地移动距离(Earth Mover’s Distance,EMD)

给定两个点集 S 1 S_1 S1 S 2 S_2 S2,它们之间的Earth Mover’s Distance定义为:

d E M D ( S 1 , S 2 ) = min ⁡ ϕ : S 1 → S 2 ∑ x ∈ S 1 ∣ ∣ x − ϕ ( x ) ∣ ∣ 2 , ϕ : S 1 → S 2 为 一 个 双 射 (4) d_{EMD}(S_1,S_2)=\min_{\phi:S_1\rightarrow S_2}\sum_{x\in S_1}||x-\phi(x)||_2, \phi: S_1\rightarrow S_2为一个双射 \tag{4} dEMD(S1,S2)=ϕ:S1S2minxS1xϕ(x)2,ϕ:S1S2(4)

### Chamfer Distance 的定义 Chamfer Distance 是一种用于衡量两个点云之间的相似性的距离度量方法。其核心思想是比较两个集合中的最近邻点的距离。具体来说,它可以分为 **正向 Chamfer Distance** **反向 Chamfer Distance**[^1]。 对于给定点云 \( A \) \( B \),它们分别由点集表示为 \( A = \{a_1, a_2, ..., a_m\} \) \( B = \{b_1, b_2, ..., b_n\} \): - 正向 Chamfer Distance 表示从点云 \( A \) 到点云 \( B \) 的平均最短距离: \[ CD(A \to B) = \frac{1}{|A|}\sum_{a_i \in A} \min_{b_j \in B} ||a_i - b_j||^2 \] - 反向 Chamfer Distance 表示从点云 \( B \) 到点云 \( A \) 的平均最短距离: \[ CD(B \to A) = \frac{1}{|B|}\sum_{b_j \in B} \min_{a_i \in A} ||b_j - a_i||^2 \] 最终的双向 Chamfer Distance 定义为两者的加权: \[ CD(A, B) = CD(A \to B) + CD(B \to A) \][^1] --- ### Chamfer Distance 的计算方法 在实际应用中,可以通过多种方式实现 Chamfer Distance 的高效计算。以下是基于 PyTorch 实现的一个典型例子,利用 `chamfer_distance` 函数完成点云间的距离计算[^3]: ```python import torch from chamferdist import ChamferDistance # 初始化点云数据 (假设维度为 NxC,N 是点数,C 是坐标维度) point_cloud_A = torch.randn(1, 100, 3).cuda() # 点云 A point_cloud_B = torch.randn(1, 150, 3).cuda() # 点云 B # 创建 ChamferDistance 对象 chamferDist = ChamferDistance() # 计算双向 Chamfer Distance distance_AB, distance_BA = chamferDist(point_cloud_A, point_cloud_B) print(f"Chamfer Distance from A to B: {distance_AB.item()}") # 输出正向距离 print(f"Chamfer Distance from B to A: {distance_BA.item()}") # 输出反向距离 ``` 该代码片段展示了如何使用 `chamferdist` 库来快速计算点云间的 Chamfer 距离[^2]。此库支持 GPU 加速,并能显著提升性能,尤其是在处理大规模点云时。 --- ### Chamfer Distance 的应用场景 由于 Chamfer Distance 提供了一种直观且高效的点云机制,因此被广泛应用于多个领域,包括但不限于以下场景[^4]: 1. **三维重建**: 在计算机视觉中,常用来评估预测点云与真实点云之间的差异。 2. **姿态估计**: 测量物体模型与其观测到的姿态之间的偏差。 3. **形状检索**: 基于点云特征进行对象分类或检索。 4. **自动驾驶**: 用于激光雷达扫描数据的目标检测。 5. **医学影像分析**: 比较不同模态下的解剖结构一致性。 这些应用得益于 Chamfer Distance 的灵活性以及对噪声部分遮挡的良好鲁棒性。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值