CloudCompare——计算点云到点云的距离

1.Cloud-cloud distances

  Cloud-cloud distances 可以通过选择两个点云,然后点击如下图所示的图标来计算。
在这里插入图片描述
或者在功能按钮中找到该功能:
在这里插入图片描述

要启动这个工具,用户必须选择两个点云,而且只能选择两个。

计算最近邻点的距离
在这里插入图片描述
  计算两个点云之间距离的默认方法是“最近邻距离”:对于比较点云中的每个点,CloudCompare在参考点云中搜索最近的点并计算它们之间的(欧几里得)距离。这对应于(默认)将本地模型设置为'NONE'的情况。
计算点到拟合面的距离

  如果参考点云足够密集,则接近从比较点云到由参考云表示的下伏表面的距离是可接受的。但如果参考云不够密集,则最近邻距离有时不够精确。因此,有必要获得更好的表面模型。当然,如果可以轻松获得表面的全局模型,则直接计算从比较点云到该模型的距离会更加简单且可能更准确。但是,获得一个干净和适当的全局模型通常并不容易。因此,CloudCompare提供了一种中间方法,可以更好地逼近与参考曲面的真实距离。不像真正的全局模型那么精确,但更容易计算。当CloudCompare确定参考点云中的最近点时,通过在“最近”点及其几个邻居上拟合数学模型来对参考点云表面进行局部建模。从比较点云的每个点到参考点云中最近点的距离,用比较点云到该模型的距离代替。这在统计上更精确,更少依赖于云采样(因为建模阶段非常有限,可能在局部模型中不够准确,但它在全局范围内有更好的结果)。
数学模型: 最小二乘最佳拟合平面,2D1 / 2 Delaunay三角剖分,或二次曲面函数。

在这里插入图片描述

2.操作流程

1、选择点云
在显示工具对话框之前,CloudCompare将要求您定义每个点云的角色:
在这里插入图片描述

  • 比较点云是用来计算距离的点云。CloudCompare将计算比较点云中每个点相对于参考点云的距离(见下文)。生成的标量字段颜色差异将在比较点云上显示。
  • 参考点云是将用作参考的点云,即距离将相对于其点计算。如果可能的话,这个点云应该有最广泛的范围和最高的密度(否则应该使用局部建模策略——见下文)。

2、近似的距离
  当Cloud/Cloud距离计算对话框出现时,CloudCompare将首先计算近似距离(这在内部用于自动设置执行实际距离计算的最佳八树级别-见下文)。参考点云被隐藏,比较点云被用这些近似距离着色。
  关于这些近似距离的一些统计数据显示在“近似”中。结果选项卡(但不应将其视为适当的测量值!)。这些统计数据仅提供给希望将八叉树级别设置为的高级用户。
在这里插入图片描述
计算的主要参数有:

  • Octree level: 这是将执行距离计算的八叉树的细分级别。默认情况下,它是由CloudCompare自动设置的,应该保持原样。修改此参数只会改变计算时间。主要思想是,细分级别越高,八叉树单元越小。因此,每个单元格中的点越少,找到最近的点所需要做的计算就越少。但反过来说,单元格越小,需要迭代搜索的单元格就越多,如果点相距很远(即比较点离最近的参考点很远),这可能会变得非常慢。所以大的点云需要高的八叉树级别,但是如果比较点云的点离参考点云很远,那么低的八叉树级别更好。
  • Max dist.: 如果两个点云之间的最大距离很大,计算时间可能会非常长(因为点越远,确定它们最近的邻居所需的时间就越多)。因此,将搜索限制在一个合理的值以下以缩短计算时间可能是一个好主意。所有比这个距离更远的点都不会计算它们的真实距离——而是使用阈值。
  • signed distances:not available for cloud-to-cloud distance.
  • flip normals: not available for cloud-to-cloud distance.
  • multi-threaded: 是否使用所有可用的CPU内核(警告:计算机在计算期间可能无法完全响应)
  • split X,Y and Z components:再生成3个标量场,对应于每个维度上每个比较点与其最近的参考点之间的(绝对)距离(即对应于偏差向量的3个分量)。

3、局部模型·

  当不使用局部模型时,点云到点云的距离就是最近邻距离(使用一种Hausdorff距离算法)。问题是,最近的邻居不一定是(事实上很少)点云表示的表面上最近的点。如果参考点云密度低或有大洞,这一点尤其正确。在这种情况下,使用“局部建模策略”是一个好主意,它包括在最近的点周围计算一个局部模型,以便近似真实表面,并获得更好的“真实”距离估计。
局部模型可计算为:

  • 要么在给定数量的邻居上(这通常更快,但只对密度恒定的云有效)
  • 或者默认为球形邻域(其半径通常取决于您期望捕获的细节和点云噪声)。
    在这里插入图片描述
    目前有三种本地模式。3种模型均基于经过最近点及其相邻点的最小二乘最佳拟合平面:
  • Least squares plane: 直接用这个平面来计算距离
  • 2D1/2 triangulation:使用点在平面上的投影来计算Delaunay三角剖分(但我们使用原始的3D点作为网格的顶点,从而得到2.5D网格)。
  • Quadric (formerly called 'Height function'):二次曲面拟合来计算最近邻点的Z值,用计算出来的Z值代替原始点的高程,在进行距离计算。
      局部模型的排序增加了对局部几何的“保真度”(同时也增加了计算时间)。人们还应该考虑局部几何是否大部分是光滑的还是有尖锐的边缘。因为Delaunay三角剖分是理论上唯一可以表示尖锐边缘(假设边缘上有点)的模型,而二次函数是唯一可以表示光滑/弯曲表面的模型。默认情况下,建议使用二次曲面模型,因为它更通用。
      由于局部近似,一些建模畸变可能会发生(即使它们通常很罕见)。计算出的距离在统计上要准确得多,但局部距离值可能比最近邻距离差。这意味着在其分析中不应该考虑单个点的距离,而应该考虑局部趋势(无论如何,这与最近邻距离相同)。为了部分解决这个问题,从2.5.2版本开始,我们现在为每个点保持最小的距离。
      “局部建模”策略旨在处理与采样相关的问题(要么是全局密度过小,要么是参考云密度的局部变化过高)。使用密度最大的云作为“参考”总是一个好主意。

4、计算结果
在这里插入图片描述
在这里插入图片描述

3.完整操作

在这里插入图片描述

4.相关代码

待更新。。。。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值