PCL教程指南-基础概要

PCL教程指南-基础概要

此系列文章旨在小白对PCL入门,以个人在PCL官方文档所学,加以理解通过中文解读代码的意图

1.前言

  • PCL 全程Point Cloud Libirary 中文翻译为点云库;它是在C++基础上开发的点云处理包,包含点云数据结构,点云输入输出,点云滤波,点云特征,点云配准,点云识别,点云分割,三维重建,可视化等模块。极大简化了相关人员开发与实验过程。
  • PCL学习之前,你需要了解C++语法基础,否则PCL代码将成为学习的第一道门槛

2.PCD数据格式

  • PCD点云格式是PCL独有的点云组织结构,
    • 对于有序点云 cloud.width代表宽度方向上点个数 cloud.height代表高度方向上点个数
    • 而对于无序点云 cloud.width代表点总数 cloud.height此时为1

PCD格式示例:

# .PCD v.7 - Point Cloud Data file format
VERSION .7  //版本号
FIELDS x y z rgb  //字段  其中rgb是一个数值,由r g b得到rgb(float): rgb = ((int)r << 16 | (int)g << 8 | (int)b);  式中的“<<”为左移符号;由rgb得到r g b(int):int r = (rgb >> 16) & 0x0000ff;  int g = (rgb >> 8) & 0x0000ff;  int b = (rgb) & 0x0000ff; 
SIZE 4 4 4 4  //每个字段的字节大小
TYPE F F F F  //每个字段类型 F指Float
COUNT 1 1 1 1 //每个字段所含元素 一般无此属性均设置为1
WIDTH 213  //无序点云总数
HEIGHT 1	//无序点云
VIEWPOINT 0 0 0 1 0 0 0 //视点 X=0 Y=0 Z=0; 1 0 0 0 代表旋转四元数 
POINTS 213  //总数
DATA ascii  //编码格式
0.93773 0.33763 0 4.2108e+06  //X Y Z rgb
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06

3.PCL数据结构

  • 点云对象一般定义形式为
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);

    • 其中pcl::PointCloud 意思为pcl命名空间下的PointCloud类,< pcl::PointXYZ >则为XYZ数据结构泛型, Ptr指指针 之后则为对象名及实例化;
    • 即创建一个XYZ结构的点云共享指针(共享指针为C++新特性,PCL封装好了,无需人工释放
  • pcl::PointXYZ 则为最为常用的点云数据结构,包含XYZ坐标。

  • pcl提供了大量数据结构包括但不限于 < pcl::PointXYZRGB > < pcl::PointNormal > < Normal >等

  • 数据结构内部采用C++ union和struct结构,具体作用自查。简单理解就是共享内存和封装结构

4.PCL点云预处理所需的常用函数

  • pcl::isFinite<pcl::Normal>((*normals)[i])

    • 判断是否有定义
  • cloud.is_dense

    • 点云中是否有无效数据
  • pcl::removeNaNFromPointCloud(*cloud, *new_cloud, NaNIndices);

    • 移除点云中NaN数据
  • cloud1.swap(cloud2)

    • 交换点云数据
  • pcl::copyPointCloud(cloud1,cloud2,indexs)

    • 复制点云数据(点云复制指在原数据基础上复制,非交叉部分不变)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值