【激光雷达点云障碍物检测】(一)滤波部分

processPointClouds.cpp中滤波部分我单独拿出进行学习,滤波后只考虑每一帧点云中汽车周围部分点云

原始点云如下:

【激光雷达点云障碍物检测】(一)滤波部分_第1张图片

滤波后点云如下:

【激光雷达点云障碍物检测】(一)滤波部分_第2张图片

之后在对其进行分割检测等操作,滤波代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
	pcl::PCDReader reader;
	reader.read("D:\\SFND_Lidar_Obstacle_Detection\\SFND_Lidar_Obstacle_Detection\\data\\pcd\\data_1\\0000000000.pcd", *cloud);

	pcl::VoxelGrid vg;   //滤波对象
	pcl::PointCloud::Ptr cloudFiltered(new pcl::PointCloud);
	vg.setInputCloud(cloud);
	vg.setLeafSize(0.4, 0.4, 0.4);
	vg.filter(*cloudFiltered);

	//过滤掉在用户给定立方体内的点云数据
	//理解:将自身车辆作为坐标轴的中心点,然后在身边自身为中心 ,圈出范围,成为每一次运动时候的感兴趣区域,也就是只关心区域内点的聚类等后续操作
	pcl::PointCloud::Ptr cloudRegion(new pcl::PointCloud);
	pcl::CropBox region(true);
	//Eigen::Vector4f minpoint(-10, -6.5, -2, 1);
	//Eigen::Vector4f maxpoint(30, 6.5, 1, 1);
	region.setMin(Eigen::Vector4f(-10, -6.5, -2, 1));
	region.setMax(Eigen::Vector4f(30, 6.5, 1, 1));
	region.setInputCloud(cloudFiltered);
	region.filter(*cloudRegion);

	//提取车身周围范围内的所有的点,并将提取到的所有点保存在indices中
	std::vector indices;
	pcl::CropBox roof(true);
	roof.setMin(Eigen::Vector4f(-1.5, -1.7, -1, 1));
	roof.setMax(Eigen::Vector4f(2.6, 1.7, -0.4, 1));
	roof.setInputCloud(cloudRegion);
	roof.filter(indices);
	pcl::PointIndices::Ptr inliers{ new pcl::PointIndices }; //创建一个内点对象,将提取到车身周围点,放到内点对象中
	for (int point : indices) 
	{
		inliers->indices.push_back(point);
	}

	//创建点云提取函数
	pcl::ExtractIndices extract;
	extract.setInputCloud(cloudRegion);
	extract.setIndices(inliers);
	extract.setNegative(true);  //false 提取内点也就是提取车身周围的几个点,, true提取出了车身周围的点
	extract.filter(*cloudRegion);

	/*pcl::PCDWriter writer;
	writer.write("C:\\Users\\Administrator\\Downloads\\求助\\求助\\tree-2-Rend.pcd", *cloud_filtered1);*/

	pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("显示窗口"));  //窗口显示点云
	viewer->addPointCloud(cloudRegion, "*cloud");
	viewer->resetCamera();		//相机点重置
	viewer->spin();
	system("pause");
	return (0);
}

 

你可能感兴趣的:(激光雷达点云障碍物检测)