3、点云数据基础:点云定义、坐标系统、点云属性(坐标、强度、颜色)、常见点云格式(PCD、PLY、LAS)

点云(Point Cloud)是三维重建、SLAM、自动驾驶感知与工业测量中最基础的数据载体。它并非一张“照片”或一段“波形”,而是对物体表面或空间场景的离散采样集合。理解点云的定义、坐标系统、属性构成与文件格式,是后续进行滤波、配准、分割、网格化重建的前提。本章将从工程实践视角,系统梳理点云数据的底层逻辑,帮助学习者建立从“原始测量”到“可计算数据”的完整认知。

点云数据基础概念关系图 点云定义 三维空间离散点集合 坐标系统 · 传感器坐标系 · 全局/世界坐标系 · 右手定则 / 单位 点云属性 · 坐标 (X, Y, Z) · 强度 (Intensity) · 颜色 (R, G, B) 常见格式 · PCD (PCL原生) · PLY (含颜色/网格) · LAS (激光雷达标准) 下游应用 滤波 → 配准 → 分割 → 三维重建 → 目标识别 → 测量分析 X(前)/Y(左)/Z(上) ASCII / 二进制

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建图
物体坐标系 物体质心/特征点 按物体主方向定义 尺寸测量、机器人抓取
常见误区:许多初学者混淆“深度图”与“点云”的坐标含义。深度图是2.5D数据,每个像素值代表沿光轴的距离;而点云是3D数据,每个点包含完整的三维坐标。从深度图到点云的转换必须使用相机内参,不能直接将像素坐标当作X/Y值。

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用于测绘归档。以下是完整操作流程:

  1. 数据采集:使用ToF SDK获取深度图(16bit,单位mm)和强度图(16bit)。
  2. 坐标计算:根据内参矩阵将深度图转换为XYZ坐标,生成N×3的点云数组。
  3. 属性合成:将强度图归一化到0-255,作为Intensity字段;若同时有RGB相机,则通过外参融合颜色。
  4. PCD写入:使用PCL库的pcl::io::savePCDFileASCII()或二进制模式写入。
  5. LAS转换:使用LAStools或PDAL库将PCD转换为LAS,注意单位换算(mm→m)和坐标偏移(LAS不支持负坐标,需添加偏移量)。
案例复盘:在某次零件尺寸测量项目中,我们最初直接使用ToF相机输出的原始点云进行平面拟合,发现Z轴精度仅±2mm,无法满足±0.5mm的检测要求。排查后发现两个问题:一是原始点云未做温度补偿,二是坐标系未转换到工件坐标系导致倾斜误差。解决方法是:先对相机进行温度标定,再通过ICP配准将点云对齐到CAD模型坐标系。最终测量精度提升至±0.3mm。此案例说明,点云数据的“质量”不仅取决于传感器硬件,更取决于坐标系统处理和属性校准的完整性。

3.6 常见误区与总结复盘

在点云数据基础阶段,学习者常犯以下错误,需要特别警惕:

  • 单位混淆:不同格式或不同SDK输出的坐标单位不一致(mm vs m),导致尺度错误。建议在数据入口统一转换为毫米或米,并在代码中明确注释。
  • 坐标系方向错误:ToF相机的Y轴方向(向下 vs 向上)与LiDAR不同,直接混合多传感器数据会导致点云翻转。必须通过外参标定统一坐标系。
  • 忽略强度值含义:将强度当作颜色直接可视化,导致图像对比度差。强度应使用伪彩色映射(如Jet或Viridis)显示。
  • 格式转换丢失属性:从PCD转LAS时,如果未映射字段,会导致强度或分类信息丢失。转换前应检查字段映射表。
  • 过度依赖ASCII格式:ASCII格式可读性好但文件大、读写慢。对于百万级点云,应使用二进制格式(PCD binary、LAS/LAZ)。
总结复盘:点云数据基础的核心是“一个定义、两个坐标变换、三个属性、三种格式”。掌握这些概念后,学习者应能独立完成:从ToF传感器获取原始数据 → 转换为标准点云 → 验证坐标正确性 → 选择合适的格式存储。这是后续所有点云处理算法的数据前提。建议在实战中,每次处理前先打印点云的坐标范围、点数、属性字段,确认数据合理性后再进行算法开发。