预处理Filtering
常用Filtering
PassThrough filter
沿着指定的维度执行简单的过滤,即截断给定用户范围内或外部的值(x、y、z)。
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud (cloud);
pass.setFilterFieldName ("z"); //z轴方向的过滤
pass.setFilterLimits (0.0, 1.0); //基于点云原点的0-1m
//pass.setFilterLimitsNegative (true);
pass.filter (*cloud_filtered);
VoxelGrid filter
使用体素化网格方法缩小点云数据集的采样(降采样)
pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
sor.setInputCloud (cloud);
sor.setLeafSize (0.01f, 0.01f, 0.01f);创建格子大小为1cm的体素网格过滤器
sor.filter (*cloud_filtered);
StatisticalOutlierRemoval filter
用于移除异常值
使用统计分析技术从点云数据集中移除噪声测量
//所有与查询点的平均距离的标准差大于1的点都将被标记为异常值并被删除
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
sor.setInputCloud (cloud);
sor.setMeanK (50);//每个点要分析的邻居数设置为50
sor.setStddevMulThresh (1.0);//标准差乘数设置为1
sor.filter (*cloud_filtered);
Projecting points using a parametric model
将点投影到参数化模型(例如,平面、球体等)上。参数模型是通过一组系数给出的,在平面的情况下,通过方程:ax+by+cz+d=0。
// Create a set of planar coef