姓名:张志文 学号:19021210649

【嵌牛观察】

目前点云处理的算法十分的多,不同的滤波算法有着不同的应用方向

【嵌牛鼻子】

点云;滤波

【嵌牛提问】

常见的点云滤波算法有哪些?

【嵌牛正文】

常见点云滤波

点云滤波作为常见的点云处理算法,一般是点云处理的第一步,对后续处理有很重要作用。滤波有很多方面也有很多种功能,比如去除噪声点、离群点、点云平滑以及空洞、数据压缩等。下面我们来列举一下,我们在开源项目中可以找到的滤波算法:

直通滤波器

体素滤波器

统计滤波器

条件滤波

半径滤波器

双边滤波

高斯滤波

均匀采样滤波

移动最小二乘法光滑滤波

基于权重局部优化投影 (WLOP) 简化算法

DoN算法

以及各种通过规则进行点调整或者删除的都可以成为滤波算法

image

下面对上面列举出来的一部分进行解释。

滤波算法原理

直通滤波器

直通滤波器就是根据点云的属性(属性比如x,y,z,颜色值等),在点的属性上设置范围,对点进行滤波,保留范围内的或保留范围外的。

举例:在一个rgbd数据中,只想保留深度值小于5米的数据,就可以通过直通滤波器来保留z属性小于5米的点云。

开源代码库:PCL

体素滤波器

体素的概念类似于像素,使用AABB包围盒将点云数据体素化,根据体素中的点,计算出代表这个体素的点,达到下采样的目的。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。主要功能是用来进行降采样。

特点:可以将点云降采样至同一间距,初始密度影响不大,主要根据设置体素的大小。

image

开源代码库:PCL

均匀采样滤波

均匀采样滤波基本上等同于体素滤波器,但是其不改变点的位置。下采样后,其点云分布基本均匀,但是其点云的准确度要好于体素滤波,因为没有移动点的位置。

开源代码库:PCL

统计滤波器

统计滤波器用于去除明显离群点。离群点特征是在空间中分布稀疏。考虑到离群点的特征,则可以定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k个点平均距离。则点云中所有点的距离应构成高斯分布。根据给定均值与方差,可剔除方差之外的点。即使方差之外的点是正确点,但是其太稀疏,带来的信息也是很少的。

特点:主要是根据密度去除离群点,对密度差异较大的离群点去除效果较好。

image

开源代码库:PCL

条件滤波

条件滤波器通过设定滤波条件进行滤波,有点分段函数的味道,当点云在一定范围则留下,不在则舍弃。直通滤波器是一种较简单的条件滤波器。条件滤波器更像是一个不带有滤波核的工具。

开源代码库:PCL

半径滤波器

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

主要还是用于去除离群点,在一定程度上可以用来筛选边缘点。

开源代码库:PCL

高斯滤波

高斯滤波是一种非线性滤波器,采用加权平均的方式。在指定域内的权重是根据欧式距离的高斯分布,通过权重加权平均的方式得到当前点的滤波后的点。

特点:高斯滤波平滑效果较好但是边缘角点也会被较大的平滑。

开源代码库:PCL

pcl::PointCloud<:pointxyzrgb>::Ptr inputCloud,cloud;

pcl::filters::Convolution<:pointxyzrgb pcl::pointxyzrgb> convolution;

Eigen::ArrayXf gaussian_kernel(5);

gaussian_kernel << 1.f/16, 1.f/4, 3.f/8, 1.f/4, 1.f/16;

convolution.setBordersPolicy(

pcl::filters::Convolution<:pointxyzrgb pcl::pointxyzrgb>::BORDERS_POLICY_IGNORE);

convolution.setDistanceThreshold (static_cast (0.1));

convolution.setInputCloud (inputCloud);

convolution.setKernel (gaussian_kernel);

convolution.convolve(*cloud);

双边滤波

双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。一定程度上拟补了高斯滤波的缺点。双边滤波对高斯噪声效果比较好。

双边滤波从单纯的考虑空间域点的位置的高斯滤波上,又加上一个维度上的权重。在点云处理上,可以叫做为特征域,即当前点的法向量与临近点的法向量。通过改变两个域上的高斯滤波的方差来平衡平滑效果以及保持边缘的效果。具体的公式也需要一篇文章来解释。

开源代码库:CGAL,PCL(两个实现的方式不同,CGAL的效果更好)

移动最小二乘法光滑滤波

移动最小二乘法光滑滤波思路很简单,就是根据点云,找到一个函数,这个函数有一系列的局部的函数组成(这个工作是通过移动最小二乘法完成的,可能需要一篇文章来解释移动最小二乘法),这个函数的特性是光滑的,然后将点投影到函数上,就完成了平滑的目的。

开源代码库:PCL、VCGLIB、CGAL

基于权重局部优化投影 (WLOP) 简化算法

wlop是一种点云增强方法,可以消除噪声、删除外点并得到均匀的采样密度。这个原理比较复杂,暂时还没看懂其实现流程。先看一张效果图:

image.png

开源代码库:CGAL

DoN算法

DoN(Difference of Normal),利用了多尺度空间的思想,算法的目的是在去除点云低频滤波(或者保留高频信息),低频信息(例如建筑物墙面,地面)往往会对分割产生干扰,高频信息(例如建筑物窗框,路面障碍锥)往往尺度上很小,直接采用基于临近信息的滤波器会将此类信息合并至墙面或路面中。算法如下:

在小尺度上计算点云法线1

在大尺度上计算点云法线2

法线1-法线2

滤去3中值较小的点(低频信息,较平坦的部分,如墙面地面等)

欧式分割(将高频信息分开)

此算法的目的可以较好的分开高频信息和低频信息。

开源代码库:PCL(没有直接实现,很容易实现)

总结

所谓滤波器,其实主要通过局部计算的方式,获得一个响应值,然后根据响应值调整点云,比如位置调整,保留或删除某点。跟图像上的滤波器思想还是一样的,只不过在点云里面,存在无序点云罢了。

当没有一个滤波器能完整达到要求时,我们通过组装多个滤波器达到更复杂的功能。偏向应用的算法工程师可能完成一个需求要叠加很多个滤波器,其实CNN不也是一堆滤波器的组装嘛。

本文内容为转载,版权归作者所有

matlab双边滤波处理点云,常见点云滤波算法相关推荐

  1. 多帧点云拼接的全局ICP算法【附Matlab代码链接】

    用RGBD相机采集一组多视角深度点云,假设多帧点云之间有共视邻接关系,通常会先进行Pair-wise的帧间点云匹配,具体方法见另外一个帖子: 两帧点云刚性配准的ICP算法 连续的帧间ICP可以把点云变 ...

  2. 利用matlab小波GUI工具箱对空挡噪声进行滤波

    利用matlab小波GUI工具箱对空挡噪声进行滤波: 1.命令wavemenu调出matlab小波GUI工具箱, 2.File->load加载噪声音频文件,wavelet 1-D,选择小波函数, ...

  3. 云计算学习路线图课件:云计算中的常见的云配置错误

    随着云计算应用加速落地,越来越多的企业将业务迁移到云上.云计算安全措施是云计算客户必须采取的措施,当客户没有在云计算环境中正确配置和保护自己的工作负载和存储桶时,就会发生重大事故. 1.存储访问 在存 ...

  4. matlab体素化,一种三维激光点云数据快速体素化处理方法与流程

    本发明涉及一种三维激光点云数据快速体素化处理方法. 背景技术: 目前,三维激光扫描系统快速发展,由于研究的需要,往往需要把不具有空间长度信息的点数据转为具有三维空间信息的立方体,如何使用软件进行快速. ...

  5. 常见的云服务器运营商及相关的优惠活动

    云服务器(Elastic Compute Service, ECS)是一种简单高效.安全可靠.处理能力可弹性伸缩的计算服务.其管理方式比物理服务器更简单高效.用户无需提前购买硬件,即可迅速创建或释放任 ...

  6. PCL:投影滤波(一)将点云投影至平面

    文章目录 1 投影至坐标平面 2 投影至参数平面 1 投影至坐标平面 将点云投影至坐标平面,只需要把某一维度的坐标值设置成 常数 即可.比如将点云投影至XOY 平面,令Z=C(C为某一常数)即可. 代 ...

  7. matlab散斑噪声,合成孔径雷达图像的散斑噪声滤波方法与流程

    本发明属于星载合成孔径雷达和光学图像信息处理领域,涉及一种新的合成孔径雷达图像的散斑噪声滤波方法. 背景技术: 合成孔径雷达(synthetic aperture radar,SAR)是一种高分辨的微 ...

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

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

  9. PCL点云处理之凸包滤波(十三)

    PCL点云处理之凸包滤波 功能 结果展示 代码示例 功能 第一步:待提取凸包的点云1,利用凸包算法提取凸包点2 第二步:利用凸包点2从原始点云3中提取到凸包内部的点云4 结果展示 待提取凸包的点云1 ...

最新文章

  1. Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15
  2. Java 设计模式之单利模式
  3. XMLSpy编写DTD出错:Character 'D' is grammatically unexpected
  4. vue脚手架安装步骤vue-cli
  5. cmake 找不到 macros_愿我们在彼此看不到的岁月里熠熠生辉
  6. 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
  7. android 录音原始文件_音频采集:Android基于AudioRecord的实现
  8. java define_Java Long类的define()方法与示例
  9. python元素分类_Python 练习 - 元素分类
  10. 计算机二级C常考题型归纳
  11. javascript中的var浅析
  12. mac系统如何连接服务器地址,mac如何远程连接服务器地址
  13. 通俗易懂专利分类、专利申请流程
  14. 笔记本w ndows未能启动,手把手教你windows无法启动怎么办
  15. 系统清理维护与安全防护软件
  16. There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.org‘, port=443)
  17. 使用Python编写打字训练小程序升级版
  18. 光伏发电并网matlab/simulink仿真,带PLL锁相环,逆变器控制,最大功率控制MPPT,BOOST升压电路
  19. 【离散数学】群、环和域的关系
  20. 实现 flatten 扁平化对象和数组

热门文章

  1. 编译程序原理VS解释程序原理
  2. 【转载】PCB layout工程师级别(可以留着自评用~~)
  3. HTTP协议分析实验
  4. 一个月刷完机器学习笔试题300题(10)
  5. Linux中有关文件的命令总结(查看、编辑、压缩、配置)
  6. net中winform教程 浏览器控件,还是微软的WebView2最好用
  7. gitlab安装后出现的web IDE显示报错问题
  8. 雨听|在语雀中删除知识库
  9. 全网最使用MySQL, JSP, Bean, JDBC(连接数据库) ,制作有权限(老师,学生,辅导员) 用户登录demo,表单查看demo
  10. pg_repack使用