体素滤波
体素化网格方法实现下采样,即减少点的数量,减少点云数据并同时保持点云的形状特征,在提高配准、曲面重建、形状识别等算法速度中非常实用。
PCL实现的体素滤波VoxelGrid类通过输入的点云数据创建一个三维体素栅格(可以将体素栅格想象为微小的空间三维立方体的集合),然后在每个体素内,用体素中的所有点的重心近似显示体素中的其他点,这样该体素内所有点就用一个重心点最终表示,对于所有体素处理后得到过滤后的点云。这种方法比用体素中心来逼近的方法更慢,但对于采样点对应曲面的表示更为准确。
代码实现
#include <iostream>
#include <pcl/io/pcd_io.h> //文件输入输出
#include <pcl/point_types.h> //点类型相关定义
#include <pcl/visualization/cloud_viewer.h> //点云可视化相关定义
#include <pcl/filters/voxel_grid.h> //体素滤波相关
int main (){
//1.读取点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ>("../table_scene_lms400.pcd", *cloud) == -1){
PCL_ERROR("Cloudn't read file!");
return -1;
}
cout << "there are " << cloud->points.size() << " points before filtering." << endl;
//2.体素栅格滤波
// 创建一个大小为1cm的pcl::VoxelGrid滤波器,输入数据作为滤波器的输入,滤波计算后的输出储存到cloud_filtered中
//pcl::VoxelGrid<sensor_msgs::PointCloud2> sor;//创建滤波对象
pcl::VoxelGrid<pcl::PointXYZ> sor;
sor.setInputCloud(cloud);//给滤波对象设置需过滤的点云
sor.setLeafSize(0.01f, 0.01f, 0.01f);//设置滤波时创建的体素大小为1cm*1cm*1cm的立方体
sor.filter(*cloud_filtered);//执行滤波处理,存储输出为cloud_filtered
//3.将滤波后点云数据保存到本地
pcl::io::savePCDFile<pcl::PointXYZ>("../table_scene_lms400_filter.pcd", *cloud_filtered);
cout << "there are " << cloud_filtered->points.size() << " points after filtering." << endl;
//4.显示滤波前后的点云
pcl::visualization::CloudViewer viewer("before filetering"); //创建viewer对象
//showCloud函数是同步的,在此处等待直到渲染结束为止
viewer.showCloud(cloud);
while (!viewer.wasStopped ()) { }
pcl::visualization::CloudViewer viewer2("after filetering"); //创建viewer对象
//showCloud函数是同步的,在此处等待直到渲染结束为止
viewer2.showCloud(cloud_filtered);
while (!viewer2.wasStopped ()) { }
return 0;
}



网友评论