CloudCompare——实现点云由粗到精的配准【2025最新版】

本文由CSDN点云侠原创,首发于:2021年8月28日。博客长期更新,本文最新更新时间为:2025年4月21日。

1.粗配准

  使用Tools-> Registration -> Align (point pairs picking)工具手动选取匹配点对。此工具允许用户通过在两个实体中拾取至少三个等效点对来对齐两个实体。此方法对于非常精确地对齐云非常有用。有时,这甚至是获得良好结果的唯一途径(通常情况下,如果两个云在很大程度上存在巨大差异,则ICP配准将无法正常工作)。从2.6版本开始,可以直接在网格上使用此工具-这样您可以配准两个点云、一个点云和一个网格或两个网格。

在这里插入图片描述
匹配点对的选取有如下方法:

  • 使用“铅笔”图标输入(虚拟)点(例如:地面的控制点)。
  • 直接在点云的三维视图上拾取点。
  • 从点云数据中检测靶标球。选择检查“白色球体”图标(右上角)并设置搜索半径(如果您知道的话,大致等于扫描中注册球体的半径)。一旦激活,CC将尝试检测云中围绕您拾取的每个点的球体。如果成功,将使用球体中心作为配准点。需要注意的是,输入半径只是指示性的(它将用于搜索拾取的点周围的点)。CC随后将自动检测最佳拟合球体半径并将最佳拟合RMS一起显示在控制台中)

进行配准:

  一旦选择了至少3对或更多对同名点,就可以使用align按钮预览结果。能在表中看到每个点对匹配点对的错误贡献(例如,删除并再次拾取最差的对)。可以随时向这两个集合添加新点(即使在按下align按钮之后也是可以的),以便添加更多约束并获得更可靠的结果。如前所述,还可以删除每个表上方带有专用图标或每个点旁边带有X图标的点。
在这里插入图片描述
  ③位置的Reset 按钮可以将点云重置到未配准状态。
  可以使用绿色✔和红色X图标验证或取消当前配准过程。验证时,CC将显示一份报告(控制台中显示相同的信息,但是控制台中显示的数字精度更高)。
在这里插入图片描述
  高级参数adjust scale可以确定两个点集之间的最佳比例因子。要允许优化比例参数,只需取消选中固定比例复选框。如果两个云具有不同的比例,而你不知道它们之间的比例因子,则这非常有用。警告:如果比例系数不同,完成此工具后得到的是4x4的仿射矩阵。这样的话使用该矩阵的逆就无法将点云恢复到未配准之前的状态。
完整操作:
在这里插入图片描述

2.精配准

  精配准使用的是ICP算法。ICP算法的主要参数:
在这里插入图片描述

  • Number of iterations/RMS difference:ICP是一个迭代过程。在此过程中,配准误差(缓慢)减少。我们可以告诉CC在最大迭代次数后停止此过程,或者在两次迭代之间的误差(RMS)差低于给定阈值时停止此过程。该阈值越小,收敛所需的时间越长,但结果应该越精细(注意:由于CC使用32位浮点值,1e-8阈值已经接近计算精度极限,因此不必再降低)。
  • Final overlap:设置待配准点云之间的重叠度。
  • Adjust scale:如果待配准的两个点云尺寸不一致,可以选上该选项。

高级参数:
在这里插入图片描述

  • Random sampling limit:为了大幅度提高计算速度,CC使用了一种优化方案。它包括在每次迭代时对数据云进行随机子采样。此参数是子采样点的最大数量。默认值(50000)通常是一个很好的猜测,其对结果的影响是不可感知的。然而,对于数据量非常大的点云来说,它可能是不够的。因此,如果您对结果有疑问,或者如果您想进一步精细化配准,并且不害怕等待很长时间,请毫不犹豫地增加此值(要完全停用此优化方案,只需输入一个大于点云点数的数字即可)。
  • Rotation:增加指定轴(X、Y或Z)旋转约束。
  • Translation:增加平移方向的约束。
  • Enable farthest point removal:剔除距离较远的点,对于噪声点有一定的抑制性。
  • Use displayed model/data scalar field as weights:此选项应允许用户使用标量值作为权重(主要用于点云与模型的配准,不建议用于两个点云的配准。)
    完整操作:
    在这里插入图片描述

3.合并点云

  对于地面三维激光扫描仪多视角、多测站扫描采集的点云,配准之后往往需要将不同视角的点云合并为一个整体。操作如下:
在这里插入图片描述

4.去除重叠点

  由于配准后的点云具有重叠区域,重叠区域的点云密度会比较大,也可能由于配准误差的存在导致融合后的点云存在重影现象,影响三维建模的效果。需要去除重叠的点,或进行等密度抽稀。去除重叠的点,操作如下:
在这里插入图片描述
  其他去除重叠点的方法也比较多,如k均值聚类法、体素法等。这里不再一一展示。

5.附:手算配准精度

5.1 精确选取同名点

在这里插入图片描述

同名点为图像中的概念,当匹配点对一一对应的时候可以叫做同名点。认为:手动选取的对应点为绝对一一对应。软件会自动计算出对应点之间的距离,如上图所示。

5.2 计算配准误差

import numpy as np

a = np.array([0.127004, 0.148904, 0.097030, 0.079241, 0.038671, 0.061479])
rmse = np.linalg.norm(a)/ np.sqrt(a.size)
print("RMSE=", rmse)

6.相关链接

[1] PCL ICP算法实现点云精配准
[2] PCL 点云合并(两个点云中的数据或字段连接)
[3] PCL 删除点云中重叠的点

### 使用 CloudCompare 处理点云数据 #### 安装 CloudCompare 和 Python 绑定 为了能够利用 CloudCompare 的强大功能来处理点云数据,首先需要安装 CloudCompare 及其 Python API。这可以通过下载并安装最新版本的 CloudCompare 来完成,并按照官方文档中的说明置环境变量以便于调用命令行工具[^1]。 #### 加载点云文件 一旦软件备就绪,在启动程序之后就可以加载所需的三维扫描仪获取的数据集或其他形式的点云文件了。支持多种常见格式如 LAS, LAZ, ASCII XYZ 等。通常情况下只需点击菜单栏上的 “File -> Open”,选择对应的文件路径即可打开目标文件。 #### 执行基本操作——平移变换示例 对于想要执行简单几何转换的情况来说,比如移动整个模型的位置而不改变形状大小的话,则可以采用如下方法: ```python import cc3d # 假设这是CloudCompare的Python库名 def translate_point_cloud(cloud_path, output_path, dx=0., dy=0., dz=0.): cloud = cc3d.load(cloud_path) transformed_cloud = cloud.translate(dx, dy, dz) cc3d.save(transformed_cloud, output_path) ``` 上述代码片段展示了怎样读取一个已有的点云集并且对其应用指定方向上一定距离的变化;最后再保存修改后的成果到新的位置中去。 #### 调整比例尺与增强显示效果 当面对不同来源或单位体系下的原始资料时,可能还需要考虑调整整体的比例因子以匹实际物理尺寸的要求。此时可参照特定指南来进行相应设置,确保最终可视化出来的图像既真实又美观[^2]。 #### 进一步探索高级特性 除了这些基础的功能之外,CloudCompare 提供了许多其他有用的选项用于更复杂的编辑工作流程之中,例如滤波器的应用、特征提取以及与其他 CAD 模型之间的等等。用户可以根据具体需求深入研究该应用程序所提供的全面帮助手册和社区资源获得更多信息和支持。
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

点云侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值