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

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

点云滤波的概念

点云滤波是点云处理的基本步骤,也是进行 high level 三维图像处理之前必须要进行的预处理。其作用类似于信号处理中的滤波,但实现手段却和信号处理不一样。我认为原因有以下几个方面:点云不是函数,对于复杂三维外形其x,y,z之间并非以某种规律或某种数值关系定义。所以点云无法建立横纵坐标之间的联系。

点云在空间中是离散的。和图像,信号不一样,并不定义在某个区域上,无法以某种模板的形式对其进行滤波。换言之,点云没有图像与信号那么明显的定义域。

点云在空间中分布很广泛。历整个点云中的每个点,并建立点与点之间相互位置关系成了最大难点。不像图像与信号,可以有迹可循。

点云滤波依赖于几何信息,而不是数值关系。

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

点云滤波的方法

PCL常规滤波手段均进行了很好的封装。对点云的滤波通过调用各个滤波器对象来完成。主要的滤波器有直通滤波器,体素格滤波器,统计滤波器,半径滤波器等。不同特性的滤波器构成了较为完整的点云前处理族,并组合使用完成任务。实际上,滤波手段的选择和采集方式是密不可分的。如果使用线结构光扫描的方式采集点云,必然物体沿z向分布较广,但x,y向的分布处于有限范围内。此时可使用直通滤波器,确定点云在x或y方向上的范围,可较快剪除离群点,达到第一步粗处理的目的。

如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。过多的点云数量会对后续分割工作带来困难。体素格滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。点云几何结构不仅是宏观的几何外形,也包括其微观的排列方式,比如横向相似的尺寸,纵向相同的距离。随机下采样虽然效率比体素滤波器高,但会破坏点云微观结构。

统计滤波器用于去除明显离群点(离群点往往由测量噪声引入)。其特征是在空间中分布稀疏,可以理解为:每个点都表达一定信息量,某个区域点越密集则可能信息量越大。噪声信息属于无用信息,信息量较小。所以离群点表达的信息可以忽略不计。考虑到离群点的特征,则可以定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k个点平均距离。则点云中所有点的距离应构成高斯分布。给定均值与方差,可剔除3∑之外的点。

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

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

点云库对滤波算法的实现

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

直通滤波器:// Create the filtering object

pcl::PassThrough<: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<:pclpointcloud2> sor;

sor.setInputCloud (cloud);

sor.setLeafSize (0.01f, 0.01f, 0.01f);

sor.filter (*cloud_filtered);

统计滤波器:// Create the filtering object

pcl::StatisticalOutlierRemoval<:pointxyz> sor;

sor.setInputCloud (cloud);

sor.setMeanK (50);

sor.setStddevMulThresh (1.0);

sor.filter (*cloud_filtered);半径滤波器:// build the filter

pcl::RadiusOutlierRemoval<:pointxyz> outrem;

outrem.setInputCloud(cloud);

outrem.setRadiusSearch(0.8);

outrem.setMinNeighborsInRadius (2);

// apply filter

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

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

  1. 三维点云体素滤波python_一种基于点云的Voxel(三维体素)特征的深度学习方法...

    兰州大学在读硕士研究生,主要研究方向无人驾驶,深度学习:兰大未来计算研究院无人车团队负责人,自动驾驶全栈工程师. 之前我们提到使用SqueezeSeg进行了三维点云的分割,由于采用的是SqueezeN ...

  2. azure kinect三维点云_【干货】三维重建技术综述

    三维重建技术通过深度数据获取.预处理.点云配准与融合.生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型.这种模型可以对如文物保护.游戏开发.建筑设计.临床医学等研究起到辅助的作用. 三维重 ...

  3. azure kinect三维点云_三维重建技术,你捋清楚了吗?本文适合小白

    三维重建技术通过深度数据获取.预处理.点云配准与融合.生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型.这种模型可以对如文物保护.游戏开发.建筑设计.临床医学等研究起到辅助的作用. 三维重 ...

  4. 三维点云学习(1)下-点云体素降采样

    三维点云学习(1)下 点云体素降采样(Voxel Filter Downsampling) 代码参考网址秦乐乐CSDN博客 理论参考知乎博主:WALL-E 1.方法 Centroid 均值采样 Ran ...

  5. 快速精确的体素GICP三维点云配准算法

    标题:Voxelized GICP for Fast and Accurate 3D Point Cloud Registration 作者:Kenji Koide, Masashi Yokozuka ...

  6. matlab三维点云去除背景,一种点云处理三维重建方法与流程

    本发明属于三维数字化.逆向工程领域,特别是涉及一种点云处理三维重建方法. 背景技术: ::三维扫描是一种高精度的三维坐标测量方法.线结构激光投射到被测表面,摄像机获取投射图像,提取光条上点的三维形貌. ...

  7. 双目相机实现物体三维重建,得到三维点云

    双目相机实现物体三维重建,得到三维点云. 可替代RealSenseD435,奥比中光等3D相机,性价比高!RTX3060上可实现50fps. Jetson Xavier上可实现8fps. 三维重建精度 ...

  8. matlab 光度 三维重构 code,基于matlab的三维点云数据三维重建

    基于matlab的三维点云数据三维重建,通过快速构建三角网,实现三维模型的建立,并提供实例数据用于实验. 三维重建的英文术语名称是3D Reconstruction. 三维重建是指对三维物体建立适合计 ...

  9. 三维点云的格网(体素)组织

    1.格网(体素)化原理 点云格网化组织可以分为二维格网化与三维体素,其主要根据不同应用场景进行分类.其中二维格网化主要用于机载LiDAR采集的点云数据,该类数据主要从俯视的角度采集的数据,因此采用二维 ...

最新文章

  1. ASP.NET,IIS7.0 上传大视频文件报错
  2. 苹果笔记本中为虚拟机扩充硬盘的方法
  3. 通过a标签在页面上显示视频网站中的视频
  4. Caused by: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryXMLReader
  5. android 抽象方法作用,android – 类必须声明为abstract或实现抽象方法
  6. 左右滑动实现activity之间的跳转
  7. 快速切换目录软件推荐——autojump
  8. 网格(UED所谓栅格化)方案生成器
  9. ajax怎么找回地址栏,使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL...
  10. iOS开发:remove reference与move to trash的区别
  11. POJ NOI MATH-7827 质数的和与积
  12. nmap命令教程详解
  13. PDF文件在线合并如何操作
  14. php获取qqkey源码,易语言取QQKEY源码
  15. 基于python3,抓取韩寒博客文章
  16. verilog实现格雷码与二进制码的互换
  17. 基于multisim的电子秒表
  18. 五子棋(人人对战、人机对战均可)
  19. 【亲测有效】鼠标滚轮在下滑的时候总是上下乱窜解决办法
  20. vue中加载maptalks图标(markers)点击事件InfoWindow添加按钮点击事件

热门文章

  1. 谁来结束 GUI 程序?| CSDN 博文精选
  2. 两万字深入解密 Go 语言接口的那些事儿 | 技术头条
  3. 为什么李彦宏会候选院士?
  4. 假期怎么提升 Python 技能?100+ 编程题给你练~(附答案)
  5. 微软 VS Code 或将取代 Visual Studio!
  6. 知乎:“我们不主动收集数据”;滴滴被打乘客怂了;三星太子归位 | CSDN极客头条...
  7. Windows 怎么了?微软又停止一大版本更新
  8. Java高级开发面试,Java面试没有项目经验
  9. mysql常用加密方法_MYSQL 加密的 3 类方法
  10. java socket 中文乱码_java-Socket接受中文乱码的解决 | 学步园