点云库PCL学习——滤波

创建滤波时头文件:

#include <pcl/common/common_headers.h>
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/io/io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>
#include <pcl/filters/voxel_grid.h>
#include <pcl/filters/passthrough.h>
#include <pcl/filters/statistical_outlier_removal.h>

一、创建直通滤波器对象:

pcl::PsaaThrough<pcl::PointXYZ> pass;  //设置滤波器对象
pass.setInputCloud(cloud);//输入点云
pass.setFilterFieldName(“z”); //设置过滤哪个方向
pass.setFilterLimits(0.0,1.0);  //设置范围,范围外的点就被去掉
 //pass.steFilterLimitsNegative(true);  //设置是保留还是去掉
 pass.filter(*cloud_filtered);    //储存至cloud_filtered

二、使用VoxelGrid滤波器对点云进行下采样

//读取点云文件
pcl::PCDReader reader;
reader.read("name.pcd",*cloud);
//创建滤波对象
pcl::VoxelGrid<sensor_msgs::PointCloud2>sor;
sor.setInputCloud(cloud);
sor.setLeafSize(0.01f,0.01f,0.01f):  //设置滤波时创建的体素体积为1cm3的立方体
sor.filter(*cloud_filtered);     //执行滤波操作
//储存点云数据
pcl::PCDWriter writer;
writer.writer("new.pcd",*cloud_filtered,false);

三、统计滤波器,删除离群点

pcl::StatisticalOutlierRemoval<pcl::PointXYZRGBA> Static;
Static.setInputCloud(cloud_medium);    //设置待滤波的点云
Static.setMeanK(150);                            //设置在进行统计时考虑查询点临近点数
Static.setStddevMulThresh(0.5);          //设置判断是否为离群点的阈值
Static.filter(*cloud_filtered);                   //滤波,储存

猜你喜欢

转载自blog.csdn.net/zzh_AI/article/details/88884809
今日推荐