摘抄下来,如有不适,请告知删除。

原文链接:PCL—低层次视觉—点云滤波(初步处理)

若非涉及到数据精度级别的底层处理,使用离群点去除算法就可以了。

点云滤波的概念

  点云滤波是点云处理的基本步骤,也是进行 high level 三维图像处理之前必须要进行的预处理。其作用类似于信号处理中的滤波,但实现手段却和信号处理不一样。我认为原因有以下几个方面:

  1. 点云不是函数,对于复杂三维外形其x,y,z之间并非以某种规律或某种数值关系定义。所以点云无法建立横纵坐标之间的联系。
  2. 点云在空间中是离散的。和图像,信号不一样,并不定义在某个区域上,无法以某种模板的形式对其进行滤波。换言之,点云没有图像与信号那么明显的定义域。
  3. 点云在空间中分布很广泛。历整个点云中的每个点,并建立点与点之间相互位置关系成了最大难点。不像图像与信号,可以有迹可循。
  4. 点云滤波依赖于几何信息,而不是数值关系。

  综上所述,点云滤波只在抽象意义上与信号,图像滤波类似。因为滤波的功能都是突出需要的信息。

点云滤波的方法

  PCL常规滤波手段均进行了很好的封装。对点云的滤波通过调用各个滤波器对象来完成。主要的滤波器有直通滤波器,体素格滤波器,统计滤波器,半径滤波器 等。不同特性的滤波器构成了较为完整的点云前处理族,并组合使用完成任务。实际上,滤波手段的选择和采集方式是密不可分的。

  1. 如果使用线结构光扫描的方式采集点云,必然物体沿z向分布较广,但x,y向的分布处于有限范围内。此时可使用直通滤波器,确定点云在x或y方向上的范围,可较快剪除离群点,达到第一步粗处理的目的。
  2. 如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。过多的点云数量会对后续分割工作带来困难。体素格滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。点云几何结构不仅是宏观的几何外形,也包括其微观的排列方式,比如横向相似的尺寸,纵向相同的距离。随机下采样虽然效率比体素滤波器高,但会破坏点云微观结构。
  3. 统计滤波器用于去除明显离群点(离群点往往由测量噪声引入)。其特征是在空间中分布稀疏,可以理解为:每个点都表达一定信息量,某个区域点越密集则可能信息量越大。噪声信息属于无用信息,信息量较小。所以离群点表达的信息可以忽略不计。考虑到离群点的特征,则可以定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k个点平均距离。则点云中所有点的距离应构成高斯分布。给定均值与方差,可剔除3∑之外的点。
  4. 半径滤波器与统计滤波器相比更加简单粗暴。以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定。

  实际上点云滤波的手段和传统的信号滤波与图像滤波在自动化程度,滤波效果上还有很大的差距。学者大多关注图像识别与配准算法在点云处理方面的移植,而对滤波算法关注较少。其实点云前处理对测量精度与识别速度都有很大影响。

点云库对滤波算法的实现

  点云库中已经包含了上述所有滤波算法。PCL滤波算法的实现是通过滤波器类来完成的,需要实现滤波功能时则新建一个滤波器对象并设置参数。从而保证可以针对不同的滤波任务,使用不同参数的滤波器对点云进行处理。

直通滤波器:

// 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 objectpcl::VoxelGrid<pcl::PCLPointCloud2> sor;sor.setInputCloud (cloud);sor.setLeafSize (0.01f, 0.01f, 0.01f);sor.filter (*cloud_filtered);

 统计滤波器:

  // Create the filtering objectpcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;sor.setInputCloud (cloud);sor.setMeanK (50);sor.setStddevMulThresh (1.0);sor.filter (*cloud_filtered);

 半径滤波器:

    // build the filterpcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;outrem.setInputCloud(cloud);outrem.setRadiusSearch(0.8);outrem.setMinNeighborsInRadius (2);// apply filteroutrem.filter (*cloud_filtered);

 显然,不同的滤波器在滤波过程中,总是先创建一个对象,再设置对象参数,最后调用滤波函数对点云进行处理(点云为智能指针指向的一块区域)

三维重建9:点云图像的滤波方法小结相关推荐

  1. 三维点云体素滤波python_三维重建9:点云图像的滤波方法小结

    摘抄下来,如有不适,请告知删除. 若非涉及到数据精度级别的底层处理,使用离群点去除算法就可以了. 点云滤波的概念 点云滤波是点云处理的基本步骤,也是进行 high level 三维图像处理之前必须要进 ...

  2. 三维重建8:点云图像的滤波方法

    点云数据是三维空间的离散数据,不是类似于PLY格式的点线概念,因此可以使用所谓的"滤波方法".点云数据若非看成深度map数据,则不再适用于使用二维图形的核卷积方法.此外,滤波方法与 ...

  3. 三维重建面试0:*SLAM滤波方法的串联综述

    知乎上的提问,高翔作了回答:能否简单并且易懂地介绍一下多个基于滤波方法的SLAM算法原理? 写的比较通顺,抄之.如有异议,请拜访原文.如有侵权,请联系删除. 我怎么会写得那么长--如果您有兴趣可以和我 ...

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

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

  5. (转)ADC的滤波方法

    ADC转换-10种软件滤波技术分享(I) http://www.cnblogs.com/chenxukai/archive/2010/07/31/1789704.html 嚯嚯,上次记得做ADC转换的 ...

  6. 单片机 10种软件滤波方法的示例程序

    单片机学习笔记_10种软件滤波方法的示例程序 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1.限副滤波 /*  A值可根据实际情况调整     v ...

  7. Opencv中常见的滤波方法

    Opencv中常见的滤波方法 - 随性岁分享 - 博客园 opencv:基于opencv的五种滤波方法_M海洋的博客-CSDN博客_opencv滤波 OpenCV3学习(4.2)--图像常用滤波方法( ...

  8. TIP 2019开源论文:基于深度学习的HEVC多帧环路滤波方法

    作者丨李天一 学校丨北京航空航天大学博士生 研究方向丨视频编码与深度学习 本文概述的是作者近期在 IEEE TIP 期刊上发表的论文:A Deep Learning Approach for Mult ...

  9. OpenCV3学习(4.2)——图像常用滤波方法(方框、均值、高斯、中值、双边)

    滤波处理分为两大类:线性滤波和非线性滤波.OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法. 线性滤波: 1.方框滤波:模糊图像 2.均值滤波:模糊图像 3.高斯滤波:信号的平 ...

最新文章

  1. XML 特殊字符处理和 CDATA
  2. Prioritize your work by your title
  3. C#操作符??和?:
  4. spring cloud网关(zuul)使用RateLimiter限流,使用jMeter性能测试高并发
  5. NET问答: 如何使用 C# 自动化关闭电脑 ?
  6. linux部署jenkins,tomcat9
  7. Mac下Git项目使用的.gitignore文件
  8. 如何使用组托管服务帐户(GMSA)保护Reporting Services
  9. 希望博客园可以开个邮件列表
  10. 浅谈第三方电子支付平台测试方法的研究
  11. 10. 了解分配子(allocateor)的约定和限制
  12. NiosII软处理器快速入门- 10分钟学会NiosII(3)
  13. 2021年计算机网络工程师真题,2021年计算机四级网络工程师题库完整版完整答案.doc...
  14. 管理win7开机启动项
  15. 关于DNF的多媒体包NPK文件的那些事儿(5)- IMG文件里的指向型索引项(指向帧)的深度与有向环检测
  16. 魅族mx4pro刷linux,老树开新花 魅族MX4 Pro刷Flyme 5体验
  17. 【LeetCode】75. Sort Colors(颜色排序)-C++实现的两种方法及超详细图解
  18. 西门子scl语言和c语言,在西门子PLC中使用SCL语言编程的技巧
  19. 好文推荐(十六)——Git使用详细教程
  20. AI学习 Day06 内置函数

热门文章

  1. CTR点击率预估干货分享
  2. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
  3. 成为人上人,而不是人上人永远的崇拜者
  4. RabbitMQ学习及实践3--SpringMVC实现
  5. UrlEncode编码算法
  6. 敏捷游戏:从硬币游戏学习Scrum敏捷方法
  7. JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)
  8. tensorRT 使用过程中的Bug记录
  9. Oracle数据隐式乱码,正则匹配中文数据失败
  10. c++ const static