PCL显示和保存3d点云

本文介绍了如何使用PCL库进行3D点云的加载、显示和滤波。主要内容包括:1)PCL的IO模块用于加载和保存点云数据;2)visualization模块的PCLVisualizer和CloudViewer类实现点云的可视化;3)filter模块的直通滤波器、voxelGrid滤波器和离群值滤波器进行点云处理,以去除噪声和简化数据。
摘要由CSDN通过智能技术生成

1、PCL的IO模块

加载主要用到IO模块里的几个类:pcl::io::loadPCDFile、pcl::PCDReader和 pcl::PCDWriter等,他们的成员函数也基本只用到一个,第一个类直接定义对象将PCD加载到定义的点云cloud中,第二个类是通过read(cloud,cloud_name)函数将PCD文件读取到点云cloud中,同理,第三个类是将点云数据写入到.pcd文件中。

2、PCL的visualization模块

显示点云主要用到两个类:pcl::visualization::PCLVisualizer和pcl::visualization::CloudViewer。
pcl::visualization::PCLVisualizer 的成员函数主要用到的有:
具体参见官方库

  1. addPointCloud(cloud,geometry_handler,cloud_name,viewport)
  2. addLine(线第一个点,线第二个点,r,g,b,id,viewport)
  3. addsphere(球心,半径,id,viewport)
  4. addPlane(平面模型参数coefficients,x,y,z,id,viewport)
  5. addCone(coefficients,id,viewport) 添加圆锥
  6. spin()
  7. spinOnce()
  8. wasStopped()

pcl::visualization::CloudViewer的成员函数主要有:

  1. showcloud(cloud)
  2. wasStopped() 检查gui是否退出
  3. runOnVisualizationThreadOnce()
  4. runOnVisualizationThread()

3、PCL的filter模块

点云滤波主要有双边滤波,高斯滤波,条件滤波、直通滤波和基于随机采样一致性滤波。采取点云滤波是因为:

  1. 点云数据密度不规则需要平滑处理
  2. 需要去除离群点
  3. 简化点云数据,下采样(downsample)
  4. 去除噪音数据

a.直通滤波器

主要用到类 pcl::PassThrough,其主要成员函数如下:

  1. setFilterFieldName(field_name) 设置滤波点云类型字段

  2. setFilterLimits(limit_min,limit_max) 设置过滤字段上的范围

  3. getFilte斜体样式rLimitsNegative(bool) *ture:返回间隔外数据 *
    false:返回间隔内数据

  4. setInputCloud(cloud) 设置输入点云

  5. filter(PointCloud & output) 保存过滤后的点云数据

  6. filter(&indices) 保存过滤后的点云索引

b.voxelGrid滤波器

对点云进行下采样,voxelGrid类通过创建一个三维体素格,利用体素格的重心来近似显示体素中其他点。主要用到类:pcl::voxelGrid,成员函数如下:

  1. setLeafSize(float lx,float ly,float lz) 设置体素网格叶子大小
  2. setDownsampleAllData(bool downsample) ture:对所有字段下采样 false:仅对xyz进行下采样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值