1. 点云数据基础:概念、获取与格式
各位同学,欢迎来到《点云分割与目标提取》的第一章。
说实话,点云这个概念,刚接触时可能会觉得有点抽象。我当年第一次看到点云数据时,第一反应是——这不就是一堆密密麻麻的坐标点吗?嗯,这么理解也没错。但说白了,点云就是三维世界在计算机里的“数字化快照”。
1.1 什么是点云?
点云,顾名思义,就是大量三维点的集合。每个点通常包含 (X, Y, Z) 坐标,有时还带有颜色、强度、法向量等附加属性。
你可以把点云想象成用无数个“针尖”去戳一个物体表面,每个针尖记录下它戳到的位置。戳得越密,还原的物体就越精细。我在做自动驾驶项目时,经常用 LiDAR 扫一个十字路口,一帧下来就是十几万个点——密密麻麻,但每一帧都藏着关键信息。
点云和普通图像最大的区别在于:图像是二维网格,有固定的行列结构;点云是无序的、稀疏的。你想想看,一张 1920×1080 的图像,每个像素位置是固定的。但点云里的点,没有“第几行第几列”这种说法,它们只是散落在三维空间里。这个特性,直接影响了后面所有算法的设计思路。
1.2 点云是怎么来的?
获取点云的方式,主流的有两种:LiDAR 和 RGB-D 相机。我两种都用过,各有各的脾气。
1.2.1 LiDAR(激光雷达)
LiDAR 的工作原理,说白了就是“激光测距 + 扫描”。它发射激光束,打到物体表面反射回来,根据飞行时间算出距离。配合旋转机构,就能扫出一圈 360° 的点云。
| 参数 | 机械式 LiDAR | 固态 LiDAR |
|---|---|---|
| 线数 | 16 / 32 / 64 / 128 线 | 等效 120~300 线 |
| 视场角 | 360° 水平 / 30° 垂直 | 120°×20° 左右 |
| 典型距离 | 100~200 m | 50~150 m |
| 成本 | 高(数万~数十万) | 中(数千~数万) |
1.2.2 RGB-D 相机
RGB-D 相机,就是“彩色图 + 深度图”的组合。常见的有三种技术路线:
- 结构光(如 Kinect v1、Intel RealSense):投射红外散斑,通过变形计算深度。室内效果好,室外见光死。
- ToF(如 Kinect v2、Azure Kinect):发射调制光,测量相位差。速度快,但分辨率偏低。
- 双目立体(如 ZED、Intel T265):两个相机视差匹配。不依赖主动光源,但纹理弱的地方容易失效。
RGB-D 相机获取的点云,通常比 LiDAR 稠密得多(640×480 = 30 万个点),但有效距离短(一般 0.5~5 米),而且容易受环境光干扰。我在做室内场景重建时,就吃过这个亏——阳光从窗户照进来,深度图直接出现大片黑洞。
1.3 点云文件格式
拿到点云数据后,总得存下来吧?市面上常见的格式有三种:PCD、PLY 和 LAS。我个人的习惯是:做算法原型用 PCD,做可视化用 PLY,做测绘地理信息用 LAS。
1.3.1 PCD 格式
PCD 是 Point Cloud Library(PCL)的原生格式。结构很简单:头部是 ASCII 文本,后面可以跟 ASCII 或二进制数据。
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 640
HEIGHT 480
VIEWPOINT 0 0 0 1 0 0 0
POINTS 307200
DATA ascii
0.123 0.456 0.789 128 64 255
0.234 0.567 0.890 255 128 64
...
你看,头部明确写了每个字段的名称、类型、大小。解析起来非常方便。我个人最喜欢 PCD 的一点是:它支持 高度有序的点云(比如 RGB-D 相机出来的数据),可以保留图像的行列结构。
1.3.2 PLY 格式
PLY(Polygon File Format)是斯坦福大学开发的,最初用于 3D 扫描数据。它比 PCD 多了一个东西:面片信息。也就是说,PLY 不仅能存点,还能存三角形网格。
ply
format ascii 1.0
element vertex 307200
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
element face 600000
property list uchar int vertex_indices
end_header
0.123 0.456 0.789 128 64 255
0.234 0.567 0.890 255 128 64
...
3 0 1 2
3 1 2 3
...
注意看,element face 后面定义了三角形面片,每个面由三个顶点索引组成。如果你要做表面重建或者 3D 打印,PLY 是首选。
1.3.3 LAS 格式
LAS 是 ASPRS(美国摄影测量与遥感学会)制定的标准格式,主要用于机载 LiDAR 测绘。它的特点是:
- 支持 分类标签(地面、植被、建筑等)
- 包含 强度信息(回波强度)
- 支持 多次回波(同一激光束可能有多个返回点)
- 文件结构固定,有公共头、变长记录、点数据三部分
我在做地形建模时,经常拿到 LAS 格式的数据。它的分类标签非常有用——可以直接把地面点和植被点分开,省去了很多预处理工作。
1.3.4 格式对比
| 特性 | PCD | PLY | LAS |
|---|---|---|---|
| 主要用途 | 算法开发(PCL) | 可视化 / 3D 打印 | 测绘 / 地理信息 |
| 支持面片 | 否 | 是 | 否 |
| 支持分类 | 否(需自定义) | 否(需自定义) | 是 |
| 二进制效率 | 高 | 中 | 高 |
| 文件大小(10万点) | ~1.2 MB | ~2.0 MB(含面片) | ~1.5 MB |
1.4 本章知识体系
下面这张图,帮你把本章的核心脉络理清楚:
这张图把本章的三个核心模块串起来了:概念 → 获取 → 格式。后面的章节,我们会基于这些基础,一步步深入到点云滤波、分割、特征提取、目标识别。每一步都离不开今天讲的内容。