常见点云滤波算法

本博客内容来源于网络以及其他书籍,结合自己学习的心得进行重编辑,因为看了很多文章不便一一标注引用,如图片文字等侵权,请告知删除。

传统2D计算机视觉学习笔记目录------->传送门
传统3D计算机视觉学习笔记目录------->传送门

前言

正好公司需要让总结一下,常见的点云滤波算法,作为实习生学习的资料,趁此将其记录成文, 只是简介。

常见点云滤波

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

  • 直通滤波器
  • 体素滤波器
  • 统计滤波器
  • 条件滤波
  • 半径滤波器
  • 双边滤波
  • 高斯滤波
  • 均匀采样滤波
  • 移动最小二乘法光滑滤波
  • 基于权重局部优化投影 (WLOP) 简化算法
  • DoN算法
  • 以及各种通过规则进行点调整或者删除的都可以成为滤波算法

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

滤波算法原理

  • 直通滤波器

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

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

开源代码库:PCL
示例代码链接 --> 传送门

  • 体素滤波器

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

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

开源代码库:PCL
示例代码链接 --> 传送门

  • 均匀采样滤波

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

开源代码库:PCL
示例代码链接 --> 传送门

  • 统计滤波器

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

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

开源代码库:PCL
示例代码链接 --> 传送门

  • 条件滤波

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

开源代码库:PCL

  • 半径滤波器

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

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

开源代码库:PCL
示例代码链接 --> 传送门

  • 高斯滤波

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

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

开源代码库:PCL

pcl::PointCloud<pcl::PointXYZRGB>::Ptr inputCloud,cloud; 
pcl::filters::Convolution<pcl::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<pcl::PointXYZRGB, pcl::PointXYZRGB>::BORDERS_POLICY_IGNORE); 
convolution.setDistanceThreshold (static_cast<float> (0.1)); 
convolution.setInputCloud (inputCloud); 
convolution.setKernel (gaussian_kernel); 
convolution.convolve(*cloud); 
  • 双边滤波

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

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

开源代码库:CGAL,PCL(两个实现的方式不同,CGAL的效果更好)
示例代码链接 --> 传送门1 传送门2

  • 移动最小二乘法光滑滤波

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

开源代码库:PCL、VCGLIB、CGAL
示例代码链接 --> 传送门

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

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


开源代码库:CGAL
示例代码链接 --> 传送门

  • DoN算法

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

  1. 在小尺度上计算点云法线1
  2. 在大尺度上计算点云法线2
  3. 法线1-法线2
  4. 滤去3中值较小的点(低频信息,较平坦的部分,如墙面地面等)
  5. 欧式分割(将高频信息分开)

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

开源代码库:PCL(没有直接实现,很容易实现)
示例代码链接 --> 传送门

总结

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

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

还有蛮多算法不懂的,赶快学习吧小伙子。


重要的事情说三遍:

如果您看到我的文章对您有所帮助,那就点个赞呗 ( * ^ __ ^ * )

如果您看到我的文章对您有所帮助,那就点个赞呗( * ^ __ ^ * )

如果您看到我的文章对您有所帮助,那就点个赞呗( * ^ __ ^ * )

传统2D计算机视觉学习笔记目录------->传送门
传统3D计算机视觉学习笔记目录------->传送门

任何人或团体、机构全部转载或者部分转载、摘录,请保留本博客链接或标注来源。博客地址:开飞机的乔巴

作者简介:开飞机的乔巴(WeChat:zhangzheng-thu),现主要从事机器人抓取视觉系统以及三维重建等3D视觉相关方面,另外对slam以及深度学习技术也颇感兴趣,欢迎加我微信或留言交流相关工作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容