【手写学习笔记-综述部分Ⅴ】点云补全评估参数CD、EMD、F-SCORE、DCD等



摘要

  对于三维点云补全,倒角距离(CD)和地球移动距离(EMD)是最常用的性能标准。CD试图找到两组点之间的最小距离,而EMD评估点云的重建质量。以下介绍点云补全常用的几个性能标准。
参考学习框架来自于综述《Comprehensive Review of Deep Learning-Based 3D Point Cloud Completion Processing and Analysis》


一、Chamfer Distance (CD)

请添加图片描述
请添加图片描述

  如果该距离越大,说明两组点云的差异越大; 距离越小,说明重建效果越好。

二、Earth Mover’s Distance (EMD)

  EMD 旨在找到一个双射 φ : S1 → S2 以最小化对应点与部分点和完整点之间的平均距离。与 CD 不同,S1 和 S2 的大小需要相同。

在这里插入图片描述

三、Fidelity Error (FD), Maximum Mean Discrepancy (MMD) and Consistency

保真度误差(FD)、最大平均差异(MMD)和一致性

 PCN提出了保真度误差(FD)、一致性和最小匹配距离(MMD)作为评价指标。保真度用于衡量输入保留的程度,它计算输入中点与输出中的相应最近邻之间的平均距离。MMD 用于衡量模型的输出重建典型汽车的程度。一致性旨在估计模型的输出与输入的变化的一致性

四、Density-Aware Chamfer Distance (DCD)

密度感知倒角距离(DCD)

 DCD源自 CD,它可以检测密度分布的差异。DCD既关注整体结构,又关注局部几何细节。

在这里插入图片描述

五、F-Score

 Tatarchenko 等人提出的 F 分,是评估对象表面之间的距离,并被视为精度和召回率之间的调和平均值。精度计算重建点在与地面真实值一定距离内的百分比,代表重建的准确性。另一方面,召回计算到重建一定距离内地面实况上的点的百分比,表示重建的完整性。距离阈值可用于控制 F 分数的严格性。F-score 可以评估正确重建的点或表面积的百分比,其定义如下:

在这里插入图片描述

 其中 P(d) 和 R(d) 分别表示距离阈值 d 的精度和召回率。

在这里插入图片描述

 其中 S1 是正在评估的重构点集,S2 是基本事实。|S1| 和 |S2|分别是 S1 和 S2 的点数。

六、Uniformity

 均匀性通常用于评价已完成点云的分布均匀性,可表示为:

在这里插入图片描述

 其中 Q i (i = 1, 2,., M) 是一个点子集,使用半径 √ p 的最远采样和球查询从输出 S1 的补丁裁剪。术语 U 不平衡和 U杂波分别解释了全局和局部分布均匀性。

在这里插入图片描述

 其中 ^n = p|S1| 是 Q i 中的预期点数。

在这里插入图片描述

 其中 di, j 表示到 Q i 中第 j 个点的最近邻居的距离,如果 Q i 具有均匀分布,则 ^d 大致为

2π p|Q i |√3


### 点云 RMSE 评价指标 含义 均方根误差(RMSE, Root Mean Squared Error)是衡量两个点云之间平均误差的一个常用指标。它通过计算匹配点对之间距离的平方和的平方根,来量化配准后的误差大小[^4]。具体来说,RMSE 是指两个点集之间的误差的平方和的均值的平方根[^1]。 ### 计算方法 为了评估点云配准的效果,可以按照以下方式计算 RMSE: 设有点云 \(A\) 和 \(B\),其中 \(A=\{a_1,a_2,\ldots,a_n\}\),\(B=\{b_1,b_2,\ldots,b_m\}\) 表示两组对应点集合,通常情况下 \(n=m\) 并且每一对 \((a_i, b_i)\) 都是由配准过程找到的最佳匹配点对。那么 RMSE 的定义为: \[ \text{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(d(a_i, b_i))^2 } \] 这里 \(d(a_i, b_i)\) 表示两点间的欧几里得距离,即 \( d(a_i, b_i)=\| a_i-b_i \| \)[^2]。 下面给出一段 Python 实现的例子,这段代码展示了如何利用 Open3D 库来进行 RMSE 的计算: ```python import numpy as np import open3d as o3d def compute_rmse(source_cloud, target_cloud, correspondences): distances = [] for (idx_source, idx_target) in correspondences: point_source = source_cloud.points[idx_source] point_target = target_cloud.points[idx_target] distance = np.linalg.norm(np.array(point_source) - np.array(point_target)) distances.append(distance ** 2) rmse = np.sqrt(sum(distances)/len(distances)) if len(distances)>0 else float('inf') return rmse # 假设有预先建立好的source_cloud和target_cloud对象以及它们之间的correspondence列表 rmse_value = compute_rmse(source_cloud, target_cloud, correspondence_list) print(f"The computed RMSE value is {rmse_value}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值