点云需要滤波的原因:
原始点云数据往往包含大量散列点、孤立点,在获取点云数据时 ,由于设备精度,操作者经验环
境因素带来的影响,以及电磁波的衍射性,被测物体表面性质变化和数据拼接配准操作过程的影
响,点云数据中讲不可避免的出现一些噪声,而且采样的分辨率也不同。
PCL中点云滤波方案
PCL中总结了几种需要进行点云滤波处理的情况,这几种情况分别如下:
点云数据密度不规则需要平滑。
因为遮挡等问题造成离群点需要去除。
大量数据需要进行下采样(Downsample)
噪声数据需要去除。
对应的方法如下:
按具体给定的规则限制过滤去除点。
通过常用滤波算法修改点的部分属性。
对数据进行下采样。
点云过滤的作用:1、系统噪声的自动去除,
2、感兴趣区域的自动分割提取,(直通滤波器)
3、关键部位自动检测提取(在提供上述感兴趣区域的基础上,就可以针对不同的检测项,进行精确的关键部位的定位与检测。结合利用平面、圆柱、直线、边缘检测等技术,就可以解决相应的应用问题。例如自动化计算螺栓之间的中心距,自动计算手机音量健部位的关键尺寸,平面度检测中自动化对平面进行检测,外尺寸检测输出等)。
点云去噪滤波的种类:
PCL库:
PCL中filters模块
pcl::PassThrought<pcl::PointXYZ> pass; 直通滤波器
pcl::VoxelGrid< pcl::PointXYZ > vox;体素滤波器
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;统计滤波器
pcl::RadiusOutlierRemoval<pcl::PointXYZ> rador;半径滤波器
pcl::UniformSamplinq<pcl::PointXYz> unisam;均匀采样
pcl::ConditionalRemoval<pcl::PointXYZ> condr;条件滤波器
pcl::ProjectInliers<pcl::PointXYZ> proj;投影滤波器
pcl::ModelOutlierRemoval<pcl::PointXYZ> modr;模型滤波器
pcl::BilateralFilter<pcl::PointXYZ> bf:双边滤波
pcl::filters::GaussianKernal<PointInT,PointOutT>高斯滤
pcl::ExtractIndices<pcl::PointxYz> extr;索引提取
空间裁剪滤波
pcl::Clipper3D<pcl::PointXYZ>
pcl::BoxCliper3D<pcl::PointXYZ>
pcl::CropBox<pcl::PointXYZ>
pcl::CropHull<pcl::PointXYZ>
1、直通滤波器
直通滤波器就是根据点云的属性在点的属性上设置范围,对点进行滤波,保留范围内的或保留范围外的。
- 指定一个维度以及该维度下的值域
- 遍历点云中的每个点,判断该点在指定维度上的取值是否在值域内,删除取值不在值域内的点
- 遍历结束,留下的点即构成滤波后的点云
2、体素滤波器(下采样)
体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。 此外体素滤波器可以去除一定程度的噪音点及离群点。主要功能是用来进行降采样。
它的原理是根据输入的点云,首先