图像处理】PCL点云数据的滤波降噪的方法

这个带公式:

https://blog.csdn.net/qq_30815237/article/details/86294496

为什么进行点云滤波处理:
(1) 点云数据密度不规则需要平滑;
(2) 因为遮挡等问题造成离群点需要去除;
(3) 大量数据需要下采样;
(4) 噪声数据需要去除;

点云数据去噪滤波方法:
双边滤波、高斯滤波、分箱去噪、KD-Tree、直通滤波、随机采样一致性滤波等;

方法定义以及适用性:
1.双边滤波:将距离和空间结构结合去噪,效果较好。只适用于有序点云

2.高斯滤波(标准差去噪):适用于呈正态分布的数据。考虑到离群点的特征,则可以定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k个点平均距离。则点云中所有点的距离应构成高斯分布。给定均值与方差,可剔除3∑之外的点。

3.分箱去噪:适用于呈偏态分布的数据。

4.dbscan:基于聚类原理去噪,复杂度较高。

5.KD-Tree(孤立森林):复杂度高。构建KD树,随机取点求平均距离d,删掉所有大于2d的点。适用于无序点云去噪。

6.条件滤波:条件滤波器通过设定滤波条件进行滤波,有点分段函数的味道,当点云在一定范围则留下,不在则舍弃。

7.直通滤波

8.随机采样一致性滤波

9.体素滤波:
体素的概念类似于像素,使用AABB包围盒将点云数据体素化,一般体素越密集的地方信息越多,噪音点及离群点可通过体素网格去除。另一方面如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。过多的点云数量会对后续分割工作带来困难。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。

10.半径滤波:
半径滤波器与统计滤波器相比更加简单粗暴。以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定。

原理以及核心代码:

直通滤波器:对于在空间分布有一定空间特征的点云数据,比如使用线结构光扫描的方式采集点云,沿z向分布较广,但x,y向的分布处于有限范围内。此时可使用直通滤波器,确定点云在x或y方向上的范围,可较快剪除离群点,达到第一步粗处理的目的。
// Create the filtering object  
pcl::PassThrough<pcl::PointXYZ> pass;  
pass.setInputCloud (cloud);  
pass.setFilterFieldName ("z");  
pass.setFilterLimits (0.0, 1.0);  
//pass.setFilterLimitsNegative (true);  
pass.filter (*cloud_filtered);

体素滤波器:
 // Create the filtering object
  pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
  sor.setInputCloud (cloud);
  sor.setLeafSize (0.01f, 0.01f, 0.01f);
  sor.filter (*cloud_filtered);

统计滤波器:
 // Create the filtering object
  pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
  sor.setInputCloud (cloud);
  sor.setMeanK (50);
  sor.setStddevMulThresh (1.0);
  sor.filter (*cloud_filtered);

半径滤波器:
  // build the filter
    pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;
    outrem.setInputCloud(cloud);
    outrem.setRadiusSearch(0.8);
    outrem.setMinNeighborsInRadius (2);
    // apply filter
    outrem.filter (*cloud_filtered);

一般来说,滤波对应的方案有如下几种:

(1)按照给定的规则限制过滤去除点
(2)通过常用滤波算法修改点的部分属性
(3)对数据进行下采样
————————————————
版权声明:本文为CSDN博主「_ClivenZ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43753894/article/details/98225640

PCL点云数据 滤波降噪相关推荐

  1. 点云数据滤波处理(PCL实现)

    引: ​​​​​​点云数据滤波处理(PCL实现) - 简书 2020.01.03 14:29:02字数 942阅读 5,412 点云数据滤波处理(PCL实现) 1.滤波器介绍 点云目标识别的流程:数据 ...

  2. 点云平面提取_基于LiDAR点云数据滤波方法

    基于LiDAR点云数据滤波方法 机载激光雷达所获取的数据被称为"点云(points cloud)"它在三维空间中呈现出随机分布的形状.在点云中,有些点属于真实的地形表面的点,有些点 ...

  3. ROS与PCL中点云数据之间的转换

    此为文章初稿还没有完善,应该还有一些问题,等待后面有时间再继续更新,原创文章,未经允许,请勿转载!!! 首先介绍在PCL库中经常使用的两种点云之间的转换,这里将根据工程中的经验,从代码层面举例分析如何 ...

  4. 【激光雷达】之点云数据滤波处理

    一.引言 激光雷达系统组成 激光雷达是采用激光特性和光电探测手段相结合的成像方法,相比于相机等,是一种采用激光作为载体的主动成像设备.大多数激光雷达主体由四个组成部分,分别为:发射,接收,控制,信号处 ...

  5. python信号降噪_EEG(P300)信号数据滤波降噪

    我有大量的脑电图数据(20000),我把它们转换成P300(每1000个原始数据的平均值代表1个P300).(我用了Python) 我的问题是减少噪音.我删减了30%的数据,因为P300信号在300毫 ...

  6. io获取 pcl_点云数据可视化之PCL滤波学习

    PCL滤波概述 在获取点云数据时 ,由于设备精度,操作者经验环境因素带来的影响,以及电磁波的衍射特性,被测物体表面性质变化和数据拼接配准操作过程的影响,点云数据中将不可避免的出现一些噪声.在点云处理流 ...

  7. PCL入门系列 —— StatisticalOutlierRemoval 点云统计滤波

    PCL入门系列 -- StatisticalOutlierRemoval 点云统计滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领 ...

  8. PCL点云处理之体素滤波(八十七)

    PCL点云处理之体素滤波(八十七) 前言 一.概述 二.算法实现 1.代码 2.代码解读 结果 前言 数据的海量性始终是点云处理时需要面临的一个大问题,严重的时间消耗和内存占用影响了点云处理的发展,当 ...

  9. OpenGL与PCL库实现点云体系滤波优化及三角面片化

    ** 点云优化过滤方法效果对比 ** 体素滤波 基本保持点云形状及特征点,可以准确地保持宏观的几何外形.优化效率较好,时间根据参数线性增长,本点云建议参数为0.2 直通滤波 以坐标系的值限制来进行滤波 ...

最新文章

  1. 双显卡能双屏显示吗_i5-8305G+双显卡交火,最近很火的迷你主机零刻Turbo性能靠谱吗?...
  2. R语言——双样本独立检验的快速分析立检验的快速分析
  3. ITK:使用连通性细分具有相似统计信息的像素
  4. 7.1Python异常处理
  5. 把函数包起来就是一个R包 - 完整开发指南
  6. 计算机游戏高少手电影,支持switch,还有电影特技!上手简评骨伽IMMERSA Ti游戏耳机...
  7. 软件测试流程-全程软件测试【全思维导图】最新总结
  8. 如何用Canarytokens搭建蜜罐并检测可疑入侵
  9. python中文文本分析_中文文本处理
  10. 极市直播丨南京理工大学魏秀参、沈阳:大规模细粒度图像检索
  11. 高斯函数、高斯积分和正态分布
  12. iframe标签用法详解
  13. verilog的描述风格
  14. HDU-4699 对顶栈
  15. php家居门户源码,家居装修门户模板源码discuz模板 php家居装修网论坛源码
  16. 2017年1月15日 星期日 --出埃及记 Exodus 22:5
  17. Linux学习笔记(一) -- 在虚拟机中安装Ubuntu 18.04
  18. Kafka - Zookeeper 服务器安装
  19. Django2.1 translation详解
  20. 请求因HTTP状态401失败:Unauthorized 的原因?

热门文章

  1. 解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题
  2. 如何获得当前运行模块在进程地址空间的位置
  3. 得到win7 win8的桌面句柄
  4. C++中智能指针的设计和使用
  5. 打包成单独的HTML文件,【WEBPACK】分离css单独打包
  6. mvc ajax get请求,springMVC 中 ajax get 请求和 post 请求的坑以及参数传递
  7. 问题集锦(26-29)
  8. python的datetime模块需要装吗,Python datetime模块的介绍(日期格式化 时间戳)
  9. 计算机课程认识,认识计算机课程教案.doc
  10. String 方法中 replace 和 replaceAll 的区别详解(源码分析)