2. 点云数据基础:定义、表示方法与常见格式

各位同学,咱们今天聊聊点云数据的基础。说实话,我刚入行那会儿,觉得点云不就是一堆点嘛,有啥好学的?后来在项目里栽了跟头,才明白基础不牢,地动山摇。这一节,我把这些年踩过的坑和积累的经验,一次性讲清楚。

2.1 点云的定义——说白了就是空间的“像素”

点云,英文叫 Point Cloud,本质上就是一堆三维坐标点的集合。你想想看,我们用激光扫描仪或者深度相机去拍一个物体,每打一束光,就记录下一个点的位置。成千上万个点凑在一起,就形成了物体的“轮廓”。

我个人习惯把点云理解成“三维世界的像素”。二维图像里,每个像素有 RGB 值;三维点云里,每个点有 XYZ 坐标。只不过点云没有固定的网格结构,它是离散的、无序的。

核心定义:点云 P = {p₁, p₂, ..., pₙ},其中每个点 pᵢ = (x, y, z, ...) 至少包含三维空间坐标。

我在项目中遇到过一件事:有个同学拿到的点云数据,坐标单位是毫米,但他当成米去处理。结果整个模型缩放了 1000 倍,找了半天 bug。嗯,这里要注意——点云数据本身没有单位,全靠你约定的尺度

2.2 点云的表示方法——不止 XYZ 那么简单

最基本的点云,每个点只有 XYZ 坐标。但实际工程中,我们往往需要更多信息。我把它分成三类来讲:

2.2.1 XYZ 坐标——骨架

这是点云的基础。每个点用 (x, y, z) 表示在三维空间中的位置。坐标系的定义很重要——是左手系还是右手系?Z 轴朝上还是 Y 轴朝上?不同传感器出来的数据,坐标系可能完全不同。

避坑指南:我曾经因为坐标系没对齐,把两个点云叠在一起做融合,结果形状完全错位。后来养成了习惯:拿到数据第一件事,先可视化看看坐标系朝向。

2.2.2 RGB 颜色——皮肤

很多激光雷达不仅能测距离,还能同步采集颜色信息。每个点除了 XYZ,还附带 (r, g, b) 三个通道。颜色信息对后续的语义分割、目标识别非常有帮助。

举个例子:你在做道路场景的点云分割时,地面通常是灰色或黑色,而车辆可能是红色、白色。有了 RGB,分类算法就多了一个强有力的特征。

2.2.3 强度值——隐藏的“指纹”

强度(Intensity)是激光雷达特有的属性。它表示目标物体对激光的反射强度。不同材质反射率不同:金属反射强,沥青反射弱。

我记得有一次做路面标线提取,单纯靠 XYZ 和 RGB 很难把白色标线从灰色路面里分出来。但一看强度值——标线的反射强度明显高于路面。这就是强度值的妙用。

属性 含义 典型用途
XYZ 三维空间坐标 几何重建、定位
RGB 红绿蓝颜色值 语义分割、可视化
Intensity 激光反射强度 材质分类、标线提取

2.3 常见数据格式——选对格式,事半功倍

点云数据格式五花八门,但最常用的就三种:PCD、PLY、LAS。我一个个说。

2.3.1 PCD 格式——Point Cloud Library 的亲儿子

PCD 是 PCL(Point Cloud Library)的标准格式。它的特点是:简单、灵活、支持多种数据类型

PCD 文件分为头部和数据体两部分。头部描述了点云的属性:点数、维度、数据类型等。数据体就是实实在在的点数据。

# 一个典型的 PCD 文件头部
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 1000
HEIGHT 1
POINTS 1000
DATA ascii
0.1 0.2 0.3 4294967295
0.4 0.5 0.6 4278190080
...

我的建议:如果你用 PCL 库做开发,直接用 PCD 格式最省心。它读写速度快,而且支持二进制和 ASCII 两种存储方式。调试阶段用 ASCII,方便肉眼检查;正式部署用二进制,节省空间。

2.3.2 PLY 格式——图形学界的通用语

PLY(Polygon File Format)最初是为斯坦福的图形学项目设计的。它比 PCD 更强大——不仅能存点云,还能存三角网格、多边形。

PLY 也分头部和数据体。头部用 element 关键字定义数据元素,比如顶点、面片。每个元素可以带多个属性。

ply
format ascii 1.0
element vertex 1000
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
element face 0
property list uchar int vertex_indices
end_header
0.1 0.2 0.3 255 0 0
0.4 0.5 0.6 0 255 0
...

我在项目中遇到过:从三维扫描仪导出的数据,默认就是 PLY 格式。如果你要做网格重建,PLY 是首选,因为它能同时保存点和面。

2.3.3 LAS 格式——测绘行业的标配

LAS 是 ASPRS(美国摄影测量与遥感学会)制定的标准格式,主要用于机载激光雷达(LiDAR)数据。它的特点是:标准化程度高、信息丰富

LAS 格式除了 XYZ 和强度,还包含分类信息(地面、建筑、植被等)、回波次数、扫描角度等。这些信息对地形建模、林业调查非常有用。

格式 主要应用领域 优点 缺点
PCD 机器人、计算机视觉 读写快、PCL 原生支持 通用性不如 PLY
PLY 计算机图形学、三维建模 支持网格、属性丰富 文件体积较大
LAS 测绘、地理信息系统 标准化、信息完整 解析复杂、工具较少

2.4 知识体系总览

下面这张图,是我梳理的点云数据基础的知识结构。你可以把它当作本章的“地图”。

点云数据基础 · 知识体系 点云定义 表示方法 XYZ 坐标 RGB 颜色 强度值 常见数据格式 PCD 格式 PLY 格式 LAS 格式

2.5 小结与个人经验

好了,这一节的内容就这些。总结一下:

  • 点云定义:三维空间中的离散点集合,是三维感知的基础数据形式。
  • 表示方法:XYZ 是骨架,RGB 是皮肤,强度是隐藏的指纹。三者结合,信息量远超单纯的坐标。
  • 数据格式:PCD 适合开发调试,PLY 适合图形学处理,LAS 是测绘行业标准。选对格式,能省不少事。

最后分享一个我自己的习惯:不管拿到什么格式的点云,第一件事就是写个小脚本,把数据的基本信息打印出来——点数、坐标范围、是否有颜色和强度。这一步花不了 5 分钟,但能避免后面 80% 的坑。

一句话总结:点云数据看似简单,但坐标系、属性、格式这些细节,决定了你后续处理的成败。别嫌基础,打好地基才能盖高楼。


公众号:蓝海资料掘金营,微信 deep3321