当前位置: 首页 > article >正文

【PCL】(九)点云体素下采样

(九)Filtering 体素下采样

点云样例:
https://raw.github.com/PointCloudLibrary/data/master/tutorials/table_scene_lms400.pcd

以下程序实现对读取的点云进行体素下采样,并将得到的点云保存。

voxel_grid.cpp

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/voxel_grid.h>

int main ()
{
  pcl::PCLPointCloud2::Ptr cloud (new pcl::PCLPointCloud2 ());
  pcl::PCLPointCloud2::Ptr cloud_filtered (new pcl::PCLPointCloud2 ());

  // 读取点云数据
  pcl::PCDReader reader;
  reader.read ("table_scene_lms400.pcd", *cloud); 

  std::cerr << "PointCloud before filtering: " << cloud->width * cloud->height 
       << " data points (" << pcl::getFieldsList (*cloud) << ")." << std::endl;

  // 使用体素大小为1cm的体素下采样滤波器进行滤波
  pcl::VoxelGrid<pcl::PCLPointCloud2> 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) << ")." << std::endl;
  // 保存下采样的点云
  pcl::PCDWriter writer;
  writer.write ("table_scene_lms400_downsampled.pcd", *cloud_filtered, 
         Eigen::Vector4f::Zero (), Eigen::Quaternionf::Identity (), false);

  return (0);
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(voxel_grid)
find_package(PCL 1.2 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (voxel_grid voxel_grid.cpp)
target_link_libraries (voxel_grid ${PCL_LIBRARIES})

编译并运行:

./voxel_grid
PointCloud before filtering: 460400 data points (x y z intensity distance sid).
PointCloud after filtering: 41049 data points (x y z intensity distance sid).

原始点云(460400 个点):
在这里插入图片描述
下采样后的点云(41049 个点):
在这里插入图片描述


http://www.kler.cn/a/226888.html

相关文章:

  • 基于muduo网络库开发服务器程序和CMake构建项目 笔记
  • Kubernetes集群搭建
  • 【开源】基于JAVA+Vue+SpringBoot的教学资源共享平台
  • Django模型(八)
  • 华为机考入门python3--(5)牛客5-进制转换
  • Web安全
  • Java SWT Composite 绘画
  • 数据结构.二叉树
  • vue3 之 组合式API - setup选项
  • C#中检查空值的最佳实践
  • 【game——关机程序】
  • 通过servlet设计一个博客系统
  • ServletConfig类和ServletContext类
  • 简单几步,借助Aapose.Cells将 Excel 工作表拆分为文件
  • binder android
  • Android Studio开发配置(gradle配置)
  • HttpRunner自动化测试之实现参数化传递
  • R语言分析任务:
  • MacOS安装dmg提示已文件已损坏的解决方法
  • 计算机硬件基础知识