新闻  |   论坛  |   博客  |   在线研讨会
大盘点!三维点云去噪算法,涉及深度学习等(1)
计算机视觉工坊 | 2023-07-11 20:47:16    阅读:1965   发布文章

1 什么是去噪1.1 噪声

噪声:也称为孤立点/离群点/异常点,是指点云数据中的不相关或不希望存在的干扰信号或误差。噪声来源:环境光线的明亮程度、测量设备精度及系统误差、物体材料及表面的纹理和人为抖动等因素影响。

1.2 噪声来源

环境光线的明亮程度、测量设备精度及系统误差、物体材料及表面的纹理和人为抖动等因素。

1.3 点云去噪

在点云数据中,通过适当的滤波和处理方法,去除无用或噪声点,以提高数据质量和准确性的过程。

2 常见的去噪算法2.1 统计滤波

1 原理

去除明显分布稀疏的离群点。根据给定均值与方差,可剔除方差之外的点,即方差之外的点是正确点。

2 举例

一点云中有50个点,每个点的邻近点个数设置为8,则50个点(8领域)的平均值计算如下:图片则算出50个点的平均值,设置距离阈值σ,若平均值在阈值之外的视为离群点,在点云数据中去除。

3 核心代码

—--统计滤波
//创建滤波器。对每个点分析的临近点的个数设置为50,并将标准差的倍数设置为1,这意味着如果一个点的距
离超出了平均距离一个标准差以上,则该点被标记为离群点,并将它移除,存储起来
pcl::Statistical0utlierRemowal<pcl : : PointIYZ>Sor;
sor. setInputCloud (cloud);//设置待波波的点云
sor.setMeamK (50);         //设置在进行统计时考虑查询点邻近点数
Sor. setStddevMu1Thresh(1); //设置判断是否为高群点的阈值,里边的数字表示标准差的倍数,1个标准差以上就是离群点。
//即。当判断点的k近邻平均距高(mean distance)大于全局的1倍标准差+平均距离(global distances meanm and standard),则为离群点。

2.2 直通滤波

1 原理

根据点云的属性(属性比如x,y,z,颜色值等),在点的属性上设置范围,对点进行滤波,保留范围内的或保留范围外的,则去除离群点。

2 举例

在一个点云数据中,取z轴0~1范围内的点云进行保存。

3 核心代码

//创建滤波器对象
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud (c1oud);
pass.setFi1terFie1dName ("z");//滤波字段名被设置为z轴方向
pass.setFi1terLimits (0.0,1.0);//设置在过滤方向上的过滤范围
// pass.setKeepOrganized(true);//保持有序点云结构,该功能用于有序点云才有意义。
pass.setNegative (true);//设置保留范围内的点还是过滤掉范围内的点,标志为false时保留范围内的点
2.3 半径滤波

1 原理

设定滤波半径,计算每个点在其半径范围内的其他点的个数。半径范围内其他点个数少于某一设定的阈值的点将被滤除。

2 举例设置半径为d,分别考察黄蓝绿三点,若点个数的阈值为1,则黄色点将被滤除;若阈值为2,则黄色点和绿色点都将被滤除。图片3 核心代码

ror.setInputC1oud(c1oud_in);     //输入点云
ror.setRadiusSearch(0.1);        //设置半径为0.1m范围内找临近点
ror.setMinNeighborsInRadius(10); // 设置查询点的邻域点集数小于10删除
ror.fi1ter(*cloud_radius);       //执行滤波
2.4 条件滤波

1 原理

根据点云数据的某些属性或特征进行筛选,可以一次删除满足对输入的点云设定的一个或多个条件指标的所有的数据点,如点的法线方向、点的强度值、点的颜色等属性来筛选点云数据。

条件滤波和直通滤波的区别:

条件滤波基于点的任何属性或特征进行筛选,而直通滤波只能基于轴向范围进行筛选。

2.5 中值滤波

1 原理

是常用的非线性滤波方法,用于去除图像或信号中的噪声。它通过将像素值替换为其邻域窗口内的中值来实现去噪的效果。

2 步骤

  • 定义一个固定大小的邻域窗口,通常是一个正方形或矩形窗口。
  • 将窗口内的像素值按照从小到大的顺序进行排序。
  • 取排序后的像素值的中间值作为中心像素的新值,用于替换原始像素值。
  • 对图像中的每个像素都应用上述步骤,以完成中值滤波。
  • 如下图3×3的内核(也可看做窗口,或者模版):

图片image.png

2.6 均值滤波

1 原理

是一种常用的线性滤波方法,通过计算邻域窗口内像素值的平均值来实现去噪的效果。但会破坏图像细节,使图像变得模糊。

2 举例

3×3的内核(也可看做窗口,或者模版)中,包含了9个点及对应像素值。在对该区域进行滤波过程为:对P1~P9九个像素的灰度值求平均,代替中间P5的灰度值。图片中值滤波和均值滤波的区别

  • 中值滤波能够更好地处理脉冲噪声或孤立的离群点,因为它选择中值作为替代值,而不受异常值的影响。
  • 中值滤波去除脉冲噪声或孤立的离群点,均值滤波能够平滑信号或图像。
  • 相比之下中值滤波运行速度更快


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客
站长统计
×

Digikey let's do
· 2025年第1期限时报名开启,5月8日截止
· Digikey助力,提供一站式免费器件支持
· 跟大佬一起 【DIY 功率监测与控制系统】