CloudCompare——点云滤波

一、低通滤波

1.算法原理

  局部范围内拟合平面,设置适当的阈值,把远离平面的点当做离群点删除。由于算法的工作方式,它在平面(墙壁等)上非常强大。但是,特别是如果使用太高的内核半径(或太低的错误阈值),它将“吃掉”角落。为了保存角点或锐边,可以尝试以较小的半径和相对较高的错误阈值重复运行该算法。

2.软件实现

1、找到低通滤波功能
在这里插入图片描述
2、设置相关参数
在这里插入图片描述

  • Points/Radius:选择在每个点周围提取给定数量的邻居(适用于密度恒定的云)或指定球半径(球应该足够大,通常至少可以捕获6个点)
  • Max error:输入最大误差(点到拟合平面的距离),以确定点是否被删除。误差可以是相对的Relative(作为拟合平面上邻域重投影误差的一个因子)或绝对的Absolute
  • Remove isolated points:去除孤立点。如果使用的是②位置的半径搜索,球邻域内少于3个点,则认为该点为孤立点,剔除。

3.结果展示

滤波前
在这里插入图片描述
滤波后
在这里插入图片描述

二、直通滤波

1.算法原理及代码实现

见:[1]

2.软件实现

这里仅以Z方向的滤波操作为例,x、y、xy、xz、yz方向上的直通滤波操作方法相同。

1、选定进行直通滤波的方向

在这里插入图片描述
2、根据高程分布色谱图查看高程分布
在这里插入图片描述
3、设置直通滤波范围阈值:
在这里插入图片描述
在这里插入图片描述

3.结果展示

阈值范围内的点
在这里插入图片描述
阈值范围外的点
在这里插入图片描述

三、高斯滤波

1.算法原理及代码实现

见:[2]

2.软件实现

1、找到高斯滤波功能
在这里插入图片描述
2、设置参数
在这里插入图片描述
   选择一个“内核”大小(实际上是球体的半径,在该半径中,将在每个点周围提取最近的邻居以计算平均值)。滤波器越大越强(计算速度越慢…)。

3.结果展示

滤波前
在这里插入图片描述

滤波后
在这里插入图片描述
差距不够明显??放个明显的图
在这里插入图片描述

四、双边滤波

1.算法原理及代码实现

见:[3]

2.软件实现

1、找到双边滤波功能
在这里插入图片描述
2、设置参数
在这里插入图片描述

  • Spatial sigma:滤波器空间部分的正态分布方差
  • Scalar sigma:滤波器标量部分的正态分布方差

3.结果展示

滤波前
在这里插入图片描述

滤波后
在这里插入图片描述

五、统计滤波

1.算法原理及代码实现

见:[4]

2.软件实现

参数设置
在这里插入图片描述
完整操作
在这里插入图片描述

3.代码过程

该算法在PCL、Open3D、matlab中都有现成调用接口。为什么要再自己写呢?因为我乐意。

在这里插入图片描述

4.结果展示

CloudCompare软件滤波结果
在这里插入图片描述
手写代码运行结果
在这里插入图片描述

六、CSF地面滤波

1.算法原理及代码实现

见:[5]

2.软件实现

1、加载点云数据,点击Plugins中的CSF Filter功能
在这里插入图片描述
2、弹出如下窗口:
在这里插入图片描述
在这里插入图片描述
  图中:Cloth resolution:是指用于覆盖地形的布的网格大小(单位与点云的单位相同)。你设置的布分辨率越大,你得到的DTM就越粗糙;Max iterations:是指地形仿真的最大迭代次数。500对大多数场景来说都足够了。Classification threshold:是指根据点与模拟地形之间的距离,将点云划分为地面和非地面部分的阈值。0.5适用于大多数场景
  这里的网格分辨率和距离阈值最小只能设置为10cm,地面10cm的范围默认是地面点,精确度不如自己代码实现中的高。
3、最后得到的结果:
在这里插入图片描述

七、坡度法地面滤波

1.算法原理及代码实现

见:[8] [9] [10]

2.软件实现

2.1 计算坡度

  CloudCompare中的Gradient功能用于计算标量域的梯度/坡度/倾斜度。当标量域设置为高程的时候,计算的就是坡度。操作如下:
1、设置待计算的标量域为:高程
在这里插入图片描述

2、计算坡度
在这里插入图片描述
这里会蹦出一个对话框:“Gradient字段是要用(欧几里德)距离进行计算吗?”。
在这里插入图片描述
当前标量域是点云实体的高程,因此选"yes"

2.2 设置坡度阈值

进行如下操作,可看到点云中每个点的坡度分布:
在这里插入图片描述
根据右侧的坡度值分布色谱图,设置阈值:
在这里插入图片描述
坡度阈值设置为:0.1,点击Split即可完成地面点与非地面点的分割。
在这里插入图片描述

3.结果展示

3.1 非地面点

在这里插入图片描述

3.2 地面点

在这里插入图片描述

八、相关链接

[1] PCL 直通滤波器
[2] PCL 高斯滤波
[3] PCL 双边滤波
[4] PCL 统计滤波器
[5] Open3D 实现CSF布料模拟算法
[6] python代码:Open3D 实现坡度滤波算法
[7] C++代码:点云地面滤波实验之坡度法(实验三)

  • 93
    点赞
  • 577
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 44
    评论
### 回答1: CloudCompare是一种强大的开源软件,用于处理点云数据。点云滤波是其中一个主要功能,用于去除点云数据中的噪声和无关点以及平滑数据。对于点云的后续处理和分析非常重要。 CloudCompare提供了多种滤波算法,包括代码自适应,保留最高点,基于距离或法线方向的滤波以及层次滤波等。可以根据实际需要来选择适合的滤波算法。此外,CloudCompare还提供了可视化方案,可以直观地展示滤波结果。 点云滤波通常包括两个步骤:去除噪声和无关点,并保留数据的几何形状和特征。去除噪声和无关点可以通过设定阈值或距离来实现。保留数据几何形状和特征可以通过平滑算法来实现。 点云滤波是点云处理中的必要步骤,可以使数据更加准确、可靠和有效。CloudCompare点云滤波功能具有很高的灵活性和可扩展性,适合各种科学研究和工业应用。 ### 回答2: CloudCompare是一款多功能的开源点云数据处理软件,其中最重要的功能是点云滤波点云滤波是指通过算法处理点云数据,将噪点和无效点等不必要的数据过滤掉,从而提高点云数据的质量和精度。CloudCompare可以通过多种滤波算法进行数据滤波。 其中最常用的滤波算法包括: 1.体素滤波:该算法将点云空间分割为等大小的体素,然后通过计算每个体素内点云密度和平均点云高度等特征来过滤数据。 2.高斯滤波:该算法通过将每个点的邻域内点云数据进行加权平均来滤波,消除高频噪声。 3.半径滤波:该算法基于每个点周围一定半径内的点云密度和平均点云高度来滤波。 除此之外,CloudCompare还支持基于法线、颜色和距离等多个特征的滤波算法,并支持用户通过调整参数、选择过滤特征和自定义滤波算法等方式进行个性化滤波操作。 在现实应用中,点云滤波是点云数据处理的重要环节之一,它可以有效地提高数据质量和可靠性,准确地重建和分析三维场景。而CloudCompare作为一款开源、多功能的点云处理软件,则为点云滤波及其他点云数据处理提供了广泛、便捷的支持。 ### 回答3: CloudCompare是一款用于处理点云数据的开源软件,它可以进行点云滤波操作,即对点云数据进行去噪和平滑处理的过程。 点云滤波的目的是去除点云数据中的噪声、异常点和杂乱信息等,以获取更加精确和清晰的结果。对于点云数据来说,滤波操作是非常重要的预处理步骤,可以提高点云数据的质量,减少后续处理的难度和时间,同时也可以更好地满足不同应用场景的需求。 CloudCompare提供了多种点云滤波算法,例如: 1. 体素滤波:将点云数据分成均匀的小块,分析块内的点云密度,只保留密度不低于阈值的点云数据,从而达到去噪效果。 2. 半径滤波:根据点云数据中每个点的周围一定范围内的点云密度进行滤波,只保留密度适中的点云数据,同时可以设置半径参数,以实现局部平滑化处理。 3. 统计滤波:基于点云数据的统计特征进行滤波,例如计算每个点附近点云数据的平均值和标准差,选择符合该范围内的点云数据,过滤掉不符合条件的点云数据。 4. 模型滤波:利用预先定义好的模型对点云数据进行拟合,并去除模型拟合误差较大的点云数据。 在进行点云滤波时,需要考虑如何选择适当的滤波算法和参数,以达到最优的滤波效果。同时,还需要注意滤波会对点云数据造成丢失,因此需要保证滤波的程度和范围合适,不会影响点云数据的重要信息或特征。
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

点云侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值