利用PCL处理Realsense点云数据-使用VoxelGrid滤波器对点云进行下采样

来源:互联网 发布:宁波新房成交数据 编辑:程序博客网 时间:2024/05/18 03:33

在上一篇我们利用realsense_grabber采集了点云数据,但是运行一下就会发现,直接使用的话根本达不到实时的要求,也就是个1HZ的刷新率,所以我们需要对它进行下采样,减少点云个数,从而提高处理速度。这里我们使用的是VoxelGrid类。

   使用体素化网格方法实现下采样,即减少点的数量,减少点云数据,并同时保持点云的形状特征,在提高配准、曲面重建、形状识别等算法速度中非常实用。PCL实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格(可把体素栅格想象为微小的空间三维立方体的集合),然后在每个体素(即,三维立方体)内,用体素中所有点的重心来近似显示体素中其他点,这样该体素就内所有点就用一个重心点最终表示,对于所有体素处理后得到过滤后的点云。这种方法比用体素中心来逼近的方法更慢,但它对于采样点对应曲面的表示更为准确。通过使用这种方法可以保留原始点云的形状等边界信息。

/ 创建滤波器对象      pcl::VoxelGrid<pcl::PointXYZI> sor;      sor.setInputCloud(cloud);      sor.setLeafSize(0.01f, 0.01f, 0.01f);      sor.filter(*cloud_filtered);      std::cerr << "PointCloud after filtering: " << cloud_filtered->width * cloud_filtered->height          << " data points (" << pcl::getFieldsList(*cloud_filtered) << ").";  

显示之后点云数据至少下降了十倍,然而边缘信息还是很好的。

0 0
原创粉丝点击