三维重构(8):PCL点云滤波
作者:互联网
通过双目立体视觉得到的重构点云,一般具有较多的噪声点。造成这一现象的原因主要是,算法匹配点错误导致视差计算错误。SGBM算法是传统双目立体视觉中效果较好的,但是仍然具有较多的噪声点。所以我们希望通过滤波去除部分噪声点(毕竟不可能完全去除)
PCL滤波器
PCL中有多种滤波器比如:直通滤波、双边滤波、体素格滤波等。而此次去除离群点则使用了statisticalOutlierRemoval
滤波器。同样可以被用来去除离群点的常用滤波器还有:ConditionalRemoval
用来滤除不符合用户指定的一个或多个条件的所有点,或者RadiusOutlinerRemoval
用于滤除一定半径范围内相邻点个数不大于选定阈值的点。
statisticalOutlierRemoval
滤波
头文件:
#include<pcl/visualization/cloud_viewer.h>
#include<iostream>
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>
建立滤波器对象:
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
对该滤波器设置参数:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
sor.setInputCloud(cloud); //需要滤波的对象
sor.setMeanK(100); //判断一个点是否离群参照的周边的点的个数
sor.setStddevMulThresh(0.1);//标准差阈值,去除标准差大的点
滤波,并保存结果:
sor.filter(cloud_2); //结果保存在cloud_2
滤波前后对比:
由图可见:滤波后一些明显的离群点被滤除
ConditionalRemoval
滤波
滤波条件:
pcl::ConditionAnd<pcl::PointXYZ>::Ptr Cond (new
pcl::ConditionAnd<pcl::PointXYZ> ());
添加条件:
Cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new
pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::GT, 0.0))); //Z字段上大于0
Cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new
pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::LT, 0.6))); //Z字段上小于0.8
执行滤波:
pcl::ConditionalRemoval<pcl::PointXYZ> condrem; //滤波器
condrem.setCondition (range_cond);
condrem.setInputCloud (cloud); //输入点云
condrem.setKeepOrganized(true); //设置保持点云的结构
// 执行滤波
condrem.filter (cloud_2);
概率波器同样也比较简单粗暴,但是可以灵活添加滤波条件
RadiusOutlinerRemoval
滤波
在一定搜索半径内寻找相邻点的个数,不符合条件的视为离群点
滤波过程类似statisticalOutlierRemoval
:
pcl::RadiusOutlierRemoval<pcl::PointXYZ> sor; //创建滤波器
sor.setInputCloud(cloud); //滤波对象
sor.setRadiusSearch(0.6); //在半径为0.6的范围内找临近点
sor.setMinNeighborsInRadius(2); //临近点个数阈值,小于则被删除
// apply filter
sor.filter(cloud_2);
*cloud = cloud_2;
该滤波器的对于离群点的处理比较简单粗暴,滤波效果不如statisticalOutlierRemoval
Summary
statisticalOutlierRemoval
由于具有统计意义,更符合我当前的需求。
标签:滤波器,PCL,滤波,sor,pcl,点云,include,cloud 来源: https://blog.csdn.net/TiffanyXYf/article/details/104428307