3、点云数据基础:点云定义、坐标系统、点云属性(坐标、强度、颜色)、常见点云格式(PCD、PLY、LAS)
点云(Point Cloud)是三维重建、SLAM、自动驾驶感知与工业测量中最基础的数据载体。它并非一张“照片”或一段“波形”,而是对物体表面或空间场景的离散采样集合。理解点云的定义、坐标系统、属性构成与文件格式,是后续进行滤波、配准、分割、网格化重建的前提。本章将从工程实践视角,系统梳理点云数据的底层逻辑,帮助学习者建立从“原始测量”到“可计算数据”的完整认知。
3.1 点云定义与数学表达
点云是空间中一组无拓扑连接的三维点的集合,每个点至少包含三维坐标信息。从数学角度看,点云可表示为集合 \( P = \{p_1, p_2, ..., p_n\} \),其中每个点 \( p_i = (x_i, y_i, z_i) \) 是三维欧几里得空间中的一个向量。点云通常由激光雷达(LiDAR)、结构光相机、立体视觉系统或飞行时间(ToF)相机采集获得。与规则网格化的深度图不同,点云具有非均匀密度、无固定顺序、可能存在遮挡空洞等特点。
在ToF相机场景中,每个像素对应一个测量点,因此点云密度与传感器分辨率直接相关。例如,一个640×480的ToF传感器理论上可输出30万个点,但受限于测量噪声和无效像素,实际有效点通常在20万~28万之间。点云的“质量”不仅取决于点数,更取决于坐标精度、噪声水平、离群点比例和覆盖完整性。
3.2 坐标系统:从传感器到全局
坐标系统是点云数据空间解释的基石。同一个物体在不同坐标系下,其点云坐标值完全不同。工程中至少需要区分以下三类坐标系:
- 传感器坐标系(Sensor Coordinate System):以传感器光心或激光发射中心为原点,通常Z轴指向测量方向(ToF相机为光轴方向),X轴向右,Y轴向下(图像惯例)或向上(右手定则)。ToF相机输出的原始点云即在此坐标系下。
- 全局/世界坐标系(World Coordinate System):用于多传感器融合或场景拼接的统一坐标系。通常以地面某点为原点,Z轴垂直向上,X/Y轴按应用需求定义(如东北天ENU或北东地NED)。
- 用户/物体坐标系(Object Coordinate System):以被测物体中心为原点,用于局部建模或机械臂抓取。例如,在工业检测中,将点云转换到工件坐标系可简化尺寸测量。
坐标转换涉及刚体变换(旋转+平移),常用齐次变换矩阵 \( T = [R | t] \) 表示。其中 \( R \) 为3×3旋转矩阵,\( t \) 为3×1平移向量。工程中需注意:ToF相机的内参(焦距、主点、畸变系数)用于将像素坐标转换为传感器坐标;外参(相对于世界坐标系的位姿)用于传感器坐标到全局坐标的转换。
| 坐标系类型 | 原点位置 | 典型轴向 | 应用场景 |
|---|---|---|---|
| 传感器坐标系 | 相机光心/激光发射点 | Z轴沿光轴/测量方向 | 原始数据输出、内参标定 |
| 全局坐标系 | 场景固定参考点 | Z轴垂直向上(ENU) | 多帧拼接、SLAM建图 |
| 物体坐标系 | 物体质心/特征点 | 按物体主方向定义 | 尺寸测量、机器人抓取 |
3.3 点云属性:坐标、强度与颜色
除了三维坐标,点云中的每个点还可以携带多种属性。不同传感器提供的属性组合不同,理解这些属性的物理含义对后续处理至关重要。
3.3.1 坐标属性(X, Y, Z)
坐标是点云的核心属性,表示点在空间中的位置。对于ToF相机,每个点的坐标由像素位置、深度值和内参计算得出。坐标的精度受测距噪声、温度漂移和多路径干扰影响。在工程中,通常用毫米(mm)作为单位,但LAS格式默认使用米(m),PCD格式则可由用户自定义单位。处理跨格式数据时,必须确认单位一致性,否则会导致尺度错误。
3.3.2 强度属性(Intensity)
强度值反映物体表面对激光或红外光的反射能力。对于LiDAR,强度与目标反射率、距离、入射角有关;对于ToF相机,强度通常对应红外反射光的幅值。强度值可用于:
- 区分不同材质(如路面、植被、金属);
- 辅助点云分割(如提取车道线);
- 评估测量质量(低强度点往往噪声更大)。
需要注意的是,不同传感器的强度值范围不同(如8位0-255、16位0-65535),且强度受距离衰减影响,使用前最好进行距离归一化。
3.3.3 颜色属性(R, G, B)
颜色信息通常由RGB相机与ToF传感器融合获得。颜色属性为点云提供了纹理信息,极大提升了三维重建的视觉真实感和后续语义分割的准确性。在PCL中,颜色通常以uint32_t打包存储(0xRRGGBB),而PLY格式则分别存储R、G、B三个通道。颜色与坐标的融合需要精确的联合标定,否则会出现“颜色错位”现象。
3.4 常见点云格式:PCD、PLY、LAS
点云格式决定了数据的存储效率、读写速度和跨平台兼容性。以下是三种最常用的格式,每种格式都有其设计目标和适用场景。
3.4.1 PCD格式(Point Cloud Data)
PCD是PCL(Point Cloud Library)的原生格式,设计目标是高效读写和灵活扩展。PCD文件包含文件头(Header)和数据体(Data)两部分。文件头以ASCII文本存储元信息,包括版本、字段定义、点数、数据类型等;数据体可以是ASCII或二进制。PCD支持自定义字段(如法线、曲率、时间戳),非常适合算法开发与调试。
# PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 123456
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 123456
DATA ascii
0.123 0.456 0.789 128
...
3.4.2 PLY格式(Polygon File Format)
PLY最初由斯坦福大学设计,用于存储三维扫描模型。它支持点云和三角网格两种形式,且能同时存储坐标、颜色、法线、透明度等多种属性。PLY也有ASCII和二进制两种编码,二进制版本又分为小端和大端。PLY在三维重建领域应用广泛,因为重建结果(网格+纹理)可直接保存为PLY。
3.4.3 LAS格式(Lidar Data Exchange)
LAS是ASPRS(美国摄影测量与遥感学会)制定的激光雷达数据交换标准,广泛用于航空LiDAR和测绘领域。LAS格式包含公共头块(Public Header Block)、变长记录(VLR)和点数据记录。点数据记录中除了XYZ坐标,还包含强度、回波次数、分类标签(地面、植被、建筑等)、扫描角度等丰富信息。LAS格式支持点压缩(LAZ),压缩比可达10:1以上。
| 格式 | 设计目标 | 属性支持 | 压缩 | 典型应用 |
|---|---|---|---|---|
| PCD | PCL算法库原生 | 自定义字段 | 不支持 | 算法开发、教学 |
| PLY | 三维模型存储 | 坐标+颜色+法线+网格 | ASCII/二进制 | 三维重建、可视化 |
| LAS | 测绘行业标准 | 坐标+强度+分类+回波 | LAZ | 航空LiDAR、测绘 |
3.5 实战场景:ToF相机点云导出与格式转换
假设我们使用一款ToF相机采集工业零件点云,需要将数据从传感器原始格式转换为PCD用于PCL处理,同时输出一份LAS用于测绘归档。以下是完整操作流程:
- 数据采集:使用ToF SDK获取深度图(16bit,单位mm)和强度图(16bit)。
- 坐标计算:根据内参矩阵将深度图转换为XYZ坐标,生成N×3的点云数组。
- 属性合成:将强度图归一化到0-255,作为Intensity字段;若同时有RGB相机,则通过外参融合颜色。
- PCD写入:使用PCL库的
pcl::io::savePCDFileASCII()或二进制模式写入。 - LAS转换:使用LAStools或PDAL库将PCD转换为LAS,注意单位换算(mm→m)和坐标偏移(LAS不支持负坐标,需添加偏移量)。
3.6 常见误区与总结复盘
在点云数据基础阶段,学习者常犯以下错误,需要特别警惕:
- 单位混淆:不同格式或不同SDK输出的坐标单位不一致(mm vs m),导致尺度错误。建议在数据入口统一转换为毫米或米,并在代码中明确注释。
- 坐标系方向错误:ToF相机的Y轴方向(向下 vs 向上)与LiDAR不同,直接混合多传感器数据会导致点云翻转。必须通过外参标定统一坐标系。
- 忽略强度值含义:将强度当作颜色直接可视化,导致图像对比度差。强度应使用伪彩色映射(如Jet或Viridis)显示。
- 格式转换丢失属性:从PCD转LAS时,如果未映射字段,会导致强度或分类信息丢失。转换前应检查字段映射表。
- 过度依赖ASCII格式:ASCII格式可读性好但文件大、读写慢。对于百万级点云,应使用二进制格式(PCD binary、LAS/LAZ)。