一、点云是什么

1. 核心定义

点云是三维空间中大量离散采样点组成的数据集合。每个点至少包含空间坐标,通常表示为:

p = (x, y, z)

也可以携带更多属性,例如反射强度、颜色、时间戳、回波编号、法向量、曲率、语义类别、实例 ID、置信度等

更准确地说:

点云是在某个坐标系、某个时间条件、某种传感器或重建算法下,对现实世界可见表面进行离散采样得到的三维数据集合。点云不是物体本身,也不是连续曲面,而是对物体或场景表面的有限观测。

这个定义里有几个关键点非常重要。

第一,点云是离散采样。它不是连续表面,点和点之间默认没有三角面片、拓扑边、实体边界。表面、边缘、法向量、曲率、物体实例等信息都需要后续估计或推理。

第二,点云依赖坐标系。同一个点 (1, 2, 3),在 LiDAR 坐标系、相机坐标系、机器人底盘坐标系、世界坐标系里的意义完全不同。ROS 的 PointCloud2 消息明确包含采集时间和坐标系 frame_id,并通过字段描述点云数据布局。(ROS Documentation)

第三,点云依赖观测条件。单帧点云通常只能看到传感器视角下可见的表面,被遮挡的背面、透明物体、高反光区域、吸光区域、超出量程区域都可能缺失或产生错误点。


2. 点云和 2D 图像的区别

普通 2D RGB 图像是规则网格上的像素阵列,每个像素通常携带颜色或灰度信息。点云则是三维空间中的点集合,每个点携带三维位置,能够直接表达空间结构。

普通 RGB 图像本身没有显式深度;双目图像、深度图、RGB-D 图像虽然也是二维栅格形式,但可以通过视差、深度值和相机内参反投影成点云。OpenCV 的双目深度教程说明,两张不同视角图像可以通过视差恢复深度信息。(OpenCV 文档)

点云是否具有真实物理尺度,取决于它的来源。LiDAR、RGB-D 相机、结构光相机、线激光轮廓仪通常可以输出米制或毫米级物理坐标;但纯单目 SfM / MVS 重建得到的点云常常存在尺度不确定性,需要标定物、GPS/IMU、已知基线、已知物体尺寸或其他外部约束来恢复真实尺度。COLMAP 官方文档也将图像三维重建分为 SfM 稀疏重建和 MVS 稠密重建两个阶段。(COLMAP)

所以更准确的说法是:

点云比普通 RGB 图像更直接地表达三维几何,但点云是否具备真实尺度,取决于传感器、标定和重建流程


3. 无序点云与有序点云

点云可以分为两类:

类型特点常见来源
无序点云点的排列顺序不表示空间邻接关系,通常只是一组点集合机械 LiDAR、融合点云、三维扫描仪、SfM/MVS 输出
有序点云保留类似图像的行列结构,可以通过像素邻接关系找到空间邻域RGB-D 相机、ToF 相机、双目深度相机、部分 range image LiDAR

ROS PointCloud2 中的 heightwidth 就体现了这个区别:无序点云通常 height = 1width = 点数;有序点云则可以像二维图像一样具有行列结构。ROS 文档也说明,深度传感器如 stereo 或 ToF 可以产生 image-like 的点云。(ROS Documentation)

有序点云可以利用图像邻域快速做滤波、法向估计、边缘检测;无序点云则通常需要 KNN、半径搜索、KD-Tree、Octree、Voxel Grid 等空间索引结构来查找邻域。


二、点云数据

1. 点云 = N×C 矩阵 + 相关信息元

在深度学习或数学建模中,点云常被抽象成一个 N×C 张量:

N = 点的数量
C = 每个点的属性维度

例如:

[x, y, z]                 → N × 3
[x, y, z, intensity]      → N × 4
[x, y, z, r, g, b]        → N × 6
[x, y, z, nx, ny, nz]     → N × 6

但在真实工程中,点云不只是一个矩阵,而是包含字段、类型、坐标系、时间戳、存储布局、传感器元数据的数据结构。PCL 的 PCD 文件格式通过 FIELDSSIZETYPECOUNTWIDTHHEIGHTVIEWPOINTPOINTSDATA 等头字段描述点云数据。(Point Cloud Library)

所以应该这样理解:

算法里,点云可以抽象成 N×C 张量;工程里,点云是带字段定义、坐标系、时间戳、存储格式和传感器元数据的三维数据结构。


2. 点云的常见属性

属性类别常见字段说明
基础几何属性x, y, z点在某个坐标系下的三维位置
反射/辐射属性intensity, reflectance, ambientLiDAR 反射强度、反射率、环境光信息
颜色属性r, g, b, rgbaRGB-D、三维扫描、MVS 点云常见
时间属性timestamp, time_offset扫描式 LiDAR 做运动补偿时很重要
回波属性return_number, number_of_returns, echo_id多回波 LiDAR、机载 LiDAR 常见
估计属性normal_x, normal_y, normal_z, curvature通常由邻域几何估计得到
标签属性class, semantic_label, instance_id人工标注或模型推理结果
质量属性confidence, range_sigma, invalid_flag深度相机或算法给出的可信度信息

语义标签不是原始点云天然具备的属性。语义类别、实例 ID、置信度一般来自人工标注、传统算法或深度学习模型推理, 这样才能区分点的语义(eg:A点属于车辆,B属于路面背景)。


3. 常见点云文件格式

不同领域使用不同点云格式。

格式常见场景特点
PCDPCL、机器人、科研字段灵活,适合点云算法开发
PLY三维重建、MeshLab、Open3D可存点、颜色、法向,也可存 mesh
LAS / LAZ航测、测绘、遥感 LiDAR测绘行业常用,支持分类、回波、GPS 时间等
E57三维激光扫描、建筑、BIM、逆向工程适合三维扫描数据交换,可存点、强度、颜色、图像和元数据
BIN / NPY / NPZ自动驾驶数据集、深度学习简单高效,常用于模型训练
ROS PointCloud2机器人系统实时通信二进制 blob 加字段描述,适合在线传输

ASPRS LAS 是遥感 LiDAR 领域常用格式,PDAL 文档也指出 LAS 是最常用的 LiDAR 格式之一。ASTM E57 则是三维成像数据交换格式,可以存储 3D 点、点属性以及 2D 图像。(PDAL)


三、点云来源

点云来源决定了点云质量、密度分布、噪声类型、尺度是否可靠、是否有颜色、是否有时间戳、是否存在运动畸变。不能简单分成“主动式好、被动式差”,而要理解每类传感器的物理机制和误差模式。


1. 主动式深度测量

主动式测量设备会主动发射光、激光或红外信号,然后根据回波、相位、图案形变或三角测量恢复深度。

1.1 LiDAR 激光雷达

LiDAR 通过发射激光并接收回波来测距,常见测距方式包括直接飞行时间 ToF、相位式测距、FMCW 等。自动驾驶、机器人、测绘、矿山、港口、无人机等领域大量使用 LiDAR。

LiDAR 点云的特点通常是:

  • 距离远;
  • 尺度可靠;
  • 坐标精度较高;
  • 点云稀疏;
  • 远处点更稀;
  • 容易受雨、雾、尘、玻璃、强反射、黑色吸光材料、多路径反射影响;
  • 旋转式或扫描式 LiDAR 在运动平台上会产生运动畸变。

需要特别注意,LiDAR 的“单帧点数”不能随便写成固定范围。更专业的参数是点频、通道数、视场角、角分辨率、扫描频率、回波模式。单帧点数大致由点频和帧率共同决定

1.2 结构光相机

结构光相机会投射编码图案、条纹、散斑或线激光,再通过相机观察图案变形,根据几何关系计算深度。它常用于工业三维检测、消费级 3D 扫描、人脸识别、短距离建模等。

结构光的优势是近距离精度高、细节丰富;缺点是容易受环境光、高反光、透明体、黑色吸光材料、表面纹理和视角影响。室外强阳光下,结构光设备可能严重失效。

结构光不一定都“依赖相位差”。结构光包括编码光、条纹相移、随机散斑、线激光三角测量等多种形式,不能和 iToF 的相位测距混为一谈。

1.3 ToF 相机

ToF 相机通过测量光的飞行时间估计深度,常见形式包括直接 ToF 和间接 ToF。间接 ToF 常通过发射调制光并测量相位差估计距离。

ToF 相机的优势是结构紧凑、帧率高、能直接输出深度图;缺点是分辨率通常低于 RGB 相机,容易受多路径反射、环境光、串扰、低反射率目标和高反目标影响。


2. 被动式视觉重建

被动式重建不主动发射光,而是通过图像之间的几何关系恢复三维结构。

2.1 双目视觉

双目视觉通过两台相机之间的视差估计深度。视差越大,目标越近;视差越小,目标越远。OpenCV 的双目深度教程展示了通过两张图像生成深度图的基本原理。(OpenCV 文档)

双目视觉的优势是成本低、信息丰富、可同时获得颜色;缺点是依赖纹理、光照和匹配质量,对弱纹理、重复纹理、透明体、反光体、远距离小视差目标不稳定。

2.2 SfM:运动恢复结构

SfM(Structure from Motion)通常从多张图像中同时估计相机位姿和稀疏三维点。它更像是在解决“相机怎么动、场景大致在哪里”的问题。

SfM 的输出通常包括:

  • 相机内参;
  • 相机外参;
  • 稀疏三维点;
  • 图像特征匹配关系。

但 SfM 点云通常比较稀疏,不适合直接作为完整几何模型。

2.3 MVS:多视图立体重建

MVS(Multi-View Stereo)通常在已知或已估计相机位姿的基础上,进一步估计密集深度、法向量和稠密点云。COLMAP 官方文档明确描述了传统图像三维重建流程:先通过 SfM 恢复稀疏场景和相机位姿,再将其作为 MVS 输入恢复稠密场景。(COLMAP)

因此,更准确的关系是:

多张图像
→ 特征提取与匹配
→ SfM:估计相机位姿 + 稀疏点云
→ MVS:估计稠密深度/法向
→ 融合成稠密点云或 mesh

3. 仿真点云

仿真器可以根据虚拟场景和传感器模型生成 LiDAR 或深度相机点云。自动驾驶、机器人、无人机训练中经常使用仿真点云。

仿真点云的优势是可控、便宜、安全、可批量生成标注;缺点是真实感取决于传感器模型是否准确。真实 LiDAR 会有噪声、回波、多路径、遮挡、运动畸变、天气影响、材质反射差异,而简单仿真点云往往过于干净,和真实数据存在 domain gap


4. 模型采样点云

CAD 模型、mesh 模型、医学体数据、NeRF、3D Gaussian、数字孪生场景都可以采样成点云。

这类点云往往几何完整、无噪声、密度可控,但不一定符合真实传感器采集规律。模型点云适合仿真、训练、重建评估、逆向工程对比,但不能简单等同于真实扫描点云。


四、点云的核心本质特性

1. 离散性

点云是离散点集合,不是连续曲面。点与点之间没有天然连接关系,因此不能直接知道哪里是面、哪里是边、哪里是洞、哪里是物体边界。

很多后续任务本质上都是在弥补离散性带来的信息缺失

  • 法向估计:根据邻域点拟合局部平面;
  • 曲率估计:根据邻域形状变化估计弯曲程度;
  • 表面重建:从点恢复 mesh 或隐式曲面;
  • 分割:根据局部几何和语义把点划分成区域;
  • 补全:根据先验推测缺失部分。

2. 无序性

对于无序点云,点的排列顺序没有物理意义。把第 1 个点和第 1000 个点交换,点云表达的几何对象不应改变。

这也是点云深度学习与图像深度学习的重要区别。PointNet 论文明确针对点集的置换不变性设计网络,使模型能够直接消费原始点云而不是先转成体素或多视图图像。(arXiv)


3. 非均匀密度

点云采样密度通常不均匀。

LiDAR 常按角分辨率采样,距离越远,同样角度间隔对应的空间距离越大,所以远处点更稀。斜视角、遮挡、材质反射率、传感器运动、融合视角数量也会改变点密度。

密度不均会影响很多算法:

  • KNN 邻域在近处可能太小,在远处可能跨越不同物体;
  • 固定半径邻域在稠密区点太多,在稀疏区点太少;
  • 统计滤波可能误删远处稀疏目标;
  • 分割算法可能把稀疏目标断开;
  • 深度学习模型可能偏向训练集中常见密度。

PointNet++ 论文也指出,点集通常具有变化的采样密度,因此提出了多尺度特征组合来增强对密度变化的鲁棒性。(arXiv)


4. 局部邻域决定几何语义

单个点只有坐标和少量属性,本身几乎没有“形状”概念。点云的几何意义来自邻域。

例如:

  • 一片局部点近似共面,可以认为是平面;
  • 邻域法向变化剧烈,可能是边缘或角点;
  • 点呈细长结构,可能是杆状物;
  • 点密集形成闭合轮廓,可能是某个物体表面;
  • 邻域高度平稳且大面积连续,可能是地面或墙面。

因此,点云算法的核心不是看单个点,而是看邻域结构


5. 坐标系依赖

点云必须依附于坐标系。常见坐标系包括:

坐标系含义
LiDAR frame激光雷达自身坐标系
Camera frame相机坐标系
IMU frame惯性测量单元坐标系
Base / body frame机器人或车辆本体坐标系
Map frame局部地图坐标系
World frame全局世界坐标系

坐标变换通常写成:

p_world = T_world_base · T_base_lidar · p_lidar

其中:

  • p_lidar 是 LiDAR 坐标系下的点;
  • T_base_lidar 是 LiDAR 到机器人本体的外参;
  • T_world_base 是机器人本体在世界坐标系下的位姿;
  • p_world 是转换到世界坐标系后的点。

ROS tf2 的核心作用就是维护多个随时间变化的坐标系,并允许在任意时间查询不同坐标系之间的变换。(ROS Documentation)


6. 时间依赖

对于扫描式 LiDAR,一帧点云往往是在一段时间内逐线或逐点扫描得到的。如果传感器安装在运动平台上,例如车、机器人、无人机,那么一帧点云中的不同点其实是在不同时间、不同位姿下采集的。

这会导致运动畸变,也叫 deskew 问题。移动 LiDAR 的距离测量是在不同时间接收的,运动估计误差会造成点云 mis-registration。(Robotics Proceedings)

因此,移动平台点云处理中,时间戳、IMU、轮速计、里程计、点级时间偏移非常重要。


7. 不完整性

单个传感器只能看到视线可达的表面。遮挡区域、物体背面、透明表面、镜面反射区域、超出量程区域都可能没有有效点。

所以点云天然存在“不完整”问题。点云补全、表面重建、多视角融合、TSDF 融合、Poisson 重建等方法,本质上都在试图从不完整观测中恢复更完整的几何结构。

Open3D 的表面重建文档也说明,要从无结构点云得到三角网格,需要执行表面重建,并提供 Alpha Shapes、Ball Pivoting、Poisson 等方法。(Open3D)


8. 不确定性

每个点都带有测量误差。误差大小与传感器类型、距离、入射角、材质、环境光、反射率、温度、标定状态、运动状态有关。

点云处理应该考虑:

  • 这个点的置信度是多少?
  • 这个点是否可能是多路径反射
  • 这个点是否来自弱回波
  • 这个点是否处于物体边缘混合区域
  • 这个点是否受运动畸变影响
  • 这个点是否与邻域几何一致?

五、点云为什么会“脏”

1. 脏点云

点云中存在的错误点、离群点、噪声点、虚假点、缺失区域、密度异常、运动畸变、坐标错位、任务无关点和冗余点,都会降低后续配准、分割、检测、测量、重建或建图任务的效果,这些问题统称为点云质量问题。

点云质量问题主要包括六类:

类型表现常见原因
随机噪声表面发毛、厚墙、点抖动测距噪声、热噪声、散斑、量化误差
离群点空中飞点、孤立点、远离表面的点弱回波、错误匹配、多路径、边缘混合
系统误差整体偏移、尺度错误、重影标定错误、时间同步错误、位姿估计错误
缺失洞、断裂、黑区遮挡、透明体、吸光体、超出量程
伪影鬼影、镜像点、玻璃后虚点多路径、镜面反射、折射
任务无关点地面、天空、墙、工作台、背景真实存在但对当前任务无用

2. 采集设备带来的固有误差

2.1 LiDAR 固有误差

LiDAR 点云常见误差包括测距误差、角度误差、机械抖动、通道标定误差、回波强度异常、多路径反射、边缘混合、雨雾尘干扰等

典型表现包括:

  • 物体表面点轻微抖动;
  • 墙面变厚;
  • 边缘出现飞点;
  • 玻璃附近出现虚点;
  • 远距离目标点稀疏且噪声变大;
  • 多传感器融合时出现重影;
  • 移动平台采集时出现拖影或扭曲。
2.2 结构光和 ToF 相机误差

结构光和 ToF 相机常见问题包括:

  • 环境光干扰;
  • 多路径反射;
  • 相位解缠错误;
  • 像素串扰;
  • 边缘混合像素;
  • 高反表面饱和;
  • 黑色物体回波弱;
  • 透明物体深度错误;
  • 深度空洞。

所以不能简单说主动式传感器“抗干扰能力强、精度高”。主动式传感器确实能直接提供深度,但也会被光学环境、目标材质和测量机制限制。

2.3 被动视觉重建误差

SfM、MVS、双目视觉常见问题包括:

  • 特征匹配错误;
  • 弱纹理区域无法匹配;
  • 重复纹理导致误匹配;
  • 光照变化导致匹配失败;
  • 相机位姿估计错误;
  • 尺度不确定;
  • 稠密重建产生浮点和噪声面;
  • 遮挡边缘出现错误深度。

因此,被动视觉重建的点云通常颜色丰富,但几何可靠性强烈依赖图像质量、纹理、相机标定和匹配算法。


3. 环境与目标材质带来的问题

现实世界中的材质是点云“脏”的核心来源之一。

3.1 透明和半透明物体

玻璃、亚克力、水、透明塑料会导致光线透射、折射和反射混合。传感器可能测到玻璃表面,也可能测到玻璃后的物体,还可能生成折射导致的虚假点。

在自动驾驶、机器人导航、工业抓取中,透明物体是三维感知的难点。

3.2 高反光和镜面物体

镜面金属、抛光石材、车漆、水面、镜子可能让光线偏离传感器,导致无回波;也可能经过其他表面反射后返回,产生多路径鬼影点。

3.3 强吸光物体

黑色橡胶、哑光黑材料、碳纤维等会吸收大量光能,使回波信号弱,导致深度缺失、飞点或测距不稳定。

3.4 雨、雾、尘、烟

雨滴、雾滴、灰尘、烟雾可能反射或散射激光,生成大量漂浮点,也会衰减真实目标回波。

3.5 遮挡

遮挡是点云缺失的根本原因之一。传感器只能看到视线方向上的第一个或若干回波目标,被遮挡区域不会凭空产生真实数据。


4. 标定、同步和坐标变换误差

工程中很多“脏点云”不是传感器原始噪声,而是系统问题。

4.1 内参误差

相机焦距、主点、畸变参数不准,会导致反投影点云变形。OpenCV 相机标定文档说明,相机内参包括焦距和光心,内参矩阵可以用于去除镜头畸变。(OpenCV 文档)

4.2 外参误差

多传感器融合时,LiDAR、相机、IMU、机器人本体之间的相对位姿必须准确。外参有微小误差,也会造成投影错位、点云重影、颜色贴错、检测框偏移。

4.3 时间同步误差

LiDAR、相机、IMU、轮速计如果时间戳不同步,动态场景中会出现严重错位。例如相机看到的是 t=1.00s 的车辆,LiDAR 点云是 t=1.05s 的车辆,融合结果就会错。

4.4 位姿估计误差

SLAM 或里程计的漂移会让多帧点云融合后变厚、重影、墙面弯曲、地图撕裂。


5. 点云离散采样带来的表观问题

即使传感器完全没有噪声,点云作为离散采样也会带来问题。

5.1 冗余点

同一平面可能被采样成大量重复点,对几何表达贡献有限,却显著增加计算量。

5.2 密度不均

近处密、远处疏;正对传感器的面密,斜视角面稀;多视角重叠区域密,单视角区域稀。这会影响邻域搜索、配准、分割和学习模型。

5.3 边缘锯齿

物体边界由离散点表达时,看起来会像锯齿,而不是连续轮廓。

5.4 空洞

遮挡、反光、透明、吸光、视角不足都会造成点云空洞。空洞不是“噪声点”,不能靠简单滤波解决,需要补全、融合或重建。


六、点云滤波

1. 滤波不是万能去噪

点云滤波是根据几何规律、统计规律、传感器特性和任务先验,对点云进行无效点剔除、区域裁剪、离群点去除、下采样、密度均衡、平滑、背景过滤和属性筛选的预处理过程。


2. 点云预处理的常见动作

动作作用典型方法
无效点剔除去掉 NaN、inf、超量程、无效深度有效深度范围过滤
ROI 裁剪只保留任务区域PassThrough、CropBox、多边形裁剪
条件过滤根据属性筛选点intensity、range、height、timestamp
离群点去除去掉飞点、孤立点SOR、ROR
下采样减少点数、均衡密度VoxelGrid、均匀采样、随机采样、FPS
平滑减少表面抖动MLS、双边滤波、高斯滤波
背景过滤去地面、墙面、工作台RANSAC、地面分割、背景建模
法向估计为重建、配准、分割提供局部几何PCA 邻域拟合
特征提取为配准和识别提供局部描述FPFH、SHOT、ISS、学习式特征

Open3D 官方文档也将点云下采样和离群点去除作为点云基础处理内容,指出扫描设备采集的点云往往包含噪声和伪影。(Open3D)


七、四类基础滤波操作

1. 区域裁剪:先去掉不关心的点

区域裁剪通常是点云处理中最先做、也最有效的步骤之一。它的目标不是判断点对不对,而是判断点和当前任务有没有关系。

例如:

  • 自动驾驶只关心车辆周围一定范围内的点;
  • 工业检测只关心工件区域,不关心工作台外的点;
  • 机械臂抓取只关心桌面上方目标区域;
  • 室内建图可能不关心天花板以上的点;
  • 隧道检测可能只保留隧道壁范围内的点。

常见方法包括:

1.1 直通滤波 PassThrough

按某个坐标轴范围过滤,例如:

保留 -2m < z < 3m 的点
保留 0m < x < 80m 的点
保留 -30m < y < 30m 的点

适合快速裁剪长方体区域。

1.2 CropBox

用一个三维盒子裁剪点云,比单轴 PassThrough 更灵活,可以处理旋转后的 ROI。

1.3 多边形裁剪

在俯视图或空间中定义多边形区域,只保留区域内点。工业检测、地图区域裁剪、语义地图编辑中常用。

1.4 基于距离和高度过滤

例如去掉过近点、过远点、地面以下点、天空方向点。


2. 离群点剔除:去掉孤立或统计异常的点

离群点通常是明显偏离局部几何结构的点,例如空中飞点、孤立噪声点、错误匹配点、多路径虚点。

2.1 统计离群点滤波 SOR

SOR(Statistical Outlier Removal)统计滤波基本思想是:

  1. 对每个点寻找 K 个近邻;
  2. 计算该点到近邻的平均距离;
  3. 统计所有点的平均邻距分布;
  4. 将远超整体统计范围的点判为离群点。

PCL 官方 SOR 教程说明,该方法使用统计分析技术从点云数据集中移除噪声测量,例如离群点。(Point Cloud Library)

SOR 适合去除全局范围内的随机离群点,但要注意:

  • 远距离稀疏目标可能被误删;
  • 细小结构可能被误删;
  • 多密度点云中,全局统计假设不一定成立;
  • 参数 MeanKStddevMulThresh 需要根据场景调节。
2.2 半径离群点滤波 ROR

ROR(Radius Outlier Removal)基本思想是:

  1. 给定搜索半径 r
  2. 对每个点统计半径内邻居数量;
  3. 邻居数量少于阈值,则认为是离群点。

PCL 官方文档说明,RadiusOutlierRemoval 会移除在指定范围内没有足够邻居的点。(Point Cloud Library)

ROR 适合去掉孤立飞点,但对密度变化敏感。远处点本来就稀疏,如果半径和邻居数设置不合理,会把真实目标删掉。

2.3 条件滤波

条件滤波根据字段值过滤,例如:

range < 0.5m         → 过近无效点
range > 120m         → 超出可靠量程
intensity < 阈值     → 弱回波点
z < -2m              → 地面以下点
confidence < 阈值    → 低置信度深度点

条件滤波非常工程化,常常比复杂算法更有效。


3. 下采样:减少点数并改善密度

下采样的目是降低计算量、均衡点密度、保留主要几何结构。

3.1 体素下采样 VoxelGrid

体素下采样把空间划分成大小固定的三维网格,每个体素内用一个代表点代替多个点。PCL 的 VoxelGrid 类就是使用体素化网格方法对点云进行下采样。(Point Cloud Library)

常见代表点选择方式包括:

  • 体素内点的重心;
  • 体素中心;
  • 距离体素中心最近的点;
  • 保留某个属性最优的点。

体素下采样的关键参数是体素大小:

体素太大:细节丢失,边缘变钝,小目标消失
体素太小:降采样效果不明显,计算量仍然大
3.2 均匀采样

每隔固定数量的点保留一个点,简单快速,但依赖原始点顺序,不一定能保持空间均匀。

3.3 随机采样

随机保留一定比例点,适合训练数据增强或快速粗处理,但几何可控性较差。

3.4 最远点采样 FPS

FPS 每次选择距离已选点集合最远的点,使采样点尽量覆盖整个空间。它常用于点云深度学习,但计算开销比简单采样更高。

3.5 曲率/特征保持采样

在平面区域少保留点,在边缘、角点、曲率变化大的区域多保留点。适合逆向工程、三维重建和工业检测,但需要先估计局部几何特征。


4. 平滑:减少表面抖动,但可能改变几何

平滑的目标是降低局部高频噪声,让表面更连续。但平滑会移动点的位置,因此在工业测量、缺陷检测、尺寸检测中必须谨慎使用。

4.1 MLS 移动最小二乘

MLS(Moving Least Squares)它通过邻域点拟合局部光滑曲面,然后将点投影或重采样到曲面上。PCL 官方 MLS 教程说明,MLS 可用于平滑和重采样噪声数据,尤其是小距离测量误差造成的数据不规则。(Point Cloud Library)

MLS 适合:

  • 表面重建前预处理;
  • 法向估计稳定化;
  • 多视角扫描后减少轻微 double wall;
  • 噪声表面平滑。

MLS会改变点的位置,可能把真实划痕、凹坑、毛刺、边缘缺陷当作噪声抹掉。工业检测中是否使用 MLS,要看检测目标、误差预算和缺陷尺度。

4.2 双边滤波

双边滤波同时考虑空间距离和属性相似性。用于点云时,属性相似性可以是法向差异、深度差异、强度差异或局部平面距离。

它的优点是相对于普通高斯滤波更能保护边缘;缺点是效果依赖参数、法向估计和邻域质量。
双边滤波是一类保边平滑方法,可以在一定程度上减少边缘被磨平的问题,但无法保证完美保边。

4.3 高斯平滑

高斯平滑根据空间距离加权平均邻域点,适合噪声较小、表面连续、没有尖锐结构的场景。但它容易模糊边缘、磨平棱角。


八、背景过滤与模型分割

很多时候,点云中最大的问题不是噪声,而是背景太多。

1. 地面过滤

自动驾驶和移动机器人中,地面点占据大量点数。地面过滤可以减少计算量,并帮助检测障碍物。

常见方法包括:

  • RANSAC 平面拟合;
  • 高度阈值;
  • 栅格最低点;
  • 渐进形态学滤波;
  • 地面坡度模型;
  • 深度学习地面分割。

单平面 RANSAC 适合平坦地面,但不适合坡道、坑洼、路缘、复杂地形。

2. 平面、圆柱、球体模型分割

RANSAC 可以拟合几何模型,例如平面、圆柱、球体。典型应用包括:

  • 拟合桌面并提取桌面上物体;
  • 去除墙面;
  • 检测管道;
  • 检测圆柱工件;
  • 提取地面。

3. 背景建模

固定相机或固定扫描场景中,可以先建立背景点云,然后用新采集点云与背景比较,提取变化区域。

这在工业产线、安防、仓储、固定机械臂抓取中很常见。


九、点云处理的通用工程流水线

通用流程可以写成:

原始数据包 / 深度图 / 点云文件
→ 解析字段、时间戳、坐标系
→ 去 NaN / inf / 无效深度 / 超量程点
→ 时间同步
→ 坐标变换与外参应用
→ 运动补偿 deskew(移动平台需要)
→ ROI 裁剪 / 距离过滤 / 高度过滤
→ 背景、地面、墙面、工作台过滤
→ 离群点剔除
→ 下采样或体素化
→ 平滑或重采样(按任务决定)
→ 法向量、曲率、局部特征估计
→ 配准 / 分割 / 检测 / 重建 / 测量 / 建图

不同场景的重点不同。

场景处理重点
自动驾驶 3D 检测时间同步、运动补偿、ROI、体素化/柱状编码、实时性
工业尺寸检测标定精度、重复性、误差预算、保留细节、谨慎平滑
机器人抓取桌面分割、目标分割、点云补洞、姿态估计
LiDAR SLAMdeskew、特征提取、局部地图、配准鲁棒性、回环
RGB-D 重建深度图滤波、多帧融合、TSDF、表面重建
航测 LiDAR坐标参考系统、LAS/LAZ、地面点分类、DEM/DSM
三维扫描建模多视角配准、去噪、重采样、法向估计、mesh 重建

十、坐标系、标定和时间同步是点云工程的根基

1. 相机内参

相机内参描述相机如何把三维点投影到图像平面,主要包括:

  • 焦距 fx, fy
  • 主点 cx, cy
  • 畸变参数;
  • 图像分辨率。

相机内参不准,会导致深度反投影错误、点云变形、RGB 与深度对不齐。

2. 外参

外参描述两个坐标系之间的相对姿态,通常包括旋转和平移:

T = [ R  t
      0  1 ]

例如:

T_base_lidar
T_camera_lidar
T_world_base

外参错误会造成:

  • 多帧点云重影;
  • LiDAR 与相机投影错位;
  • 检测框偏移;
  • 地图变厚;
  • 机器人抓取点错误。

3. 时间同步

点云系统常常同时使用 LiDAR、相机、IMU、GNSS、轮速计。只要时间不同步,动态场景就会出错。

例如:

相机图像:t = 10.000s
LiDAR 点云:t = 10.080s
车辆速度:15 m/s
时间差:0.080s
空间误差:1.2m

这足以让自动驾驶感知出现严重错位。

4. 运动补偿

扫描式 LiDAR 在一帧内逐点采样。如果平台运动,一帧点云会被拉伸或扭曲。运动补偿需要每个点的采集时间,并结合 IMU、里程计或连续位姿估计,把每个点校正到统一时刻。


十一、点云滤波之后

点云学习不能停在滤波。滤波只是点云处理的入口,后面还有大量核心任务。

1. 点云配准

配准是把多个点云对齐到同一坐标系。常见于多帧建图、三维扫描拼接、CAD 对齐、SLAM

常见方法包括:

  • ICP;
  • point-to-plane ICP;
  • Generalized ICP;
  • NDT;
  • FPFH + RANSAC;
  • TEASER;
  • 学习式配准。

ICP 是经典三维形状配准方法,通过迭代寻找对应关系并优化变换。Open3D 的 ICP 文档也说明,ICP 输入两组点云和初始变换,输出更精确的对齐变换。(SPIE Digital Library)

2. 点云分割

分割是把点划分成不同区域或类别。

常见类型包括:

  • 语义分割:每个点属于什么类别;
  • 实例分割:每个点属于哪个独立物体;
  • 几何分割:平面、圆柱、边缘、曲面;
  • 聚类分割:按空间连通性分成多个对象。

常见方法包括:

  • 欧式聚类;
  • 区域生长;
  • RANSAC 模型分割;
  • 图割;
  • PointNet++;
  • KPConv;
  • SparseConv;
  • Transformer 点云模型。

3. 三维目标检测

三维检测输出物体的类别、三维边界框、朝向和置信度。

自动驾驶中常见输出形式:

class, x, y, z, length, width, height, yaw, score

典型模型包括:

  • VoxelNet;
  • SECOND;
  • PointPillars;
  • PV-RCNN;
  • CenterPoint;
  • BEVFusion。

VoxelNet 将点云划分为等间隔三维体素,并通过 VFE 层学习体素特征。PointPillars 则把点云组织成竖直柱状 pillars,再用 PointNet 学习柱特征,并接入 2D 卷积检测网络。(arXiv)

4. 表面重建

表面重建是从点云恢复连续曲面或三角网格。

常见方法包括:

  • Alpha Shapes;
  • Ball Pivoting;
  • Poisson Surface Reconstruction;
  • TSDF Fusion;
  • Delaunay;
  • 隐式神经场;
  • NeRF / 3D Gaussian 相关表面提取。

Open3D 官方文档列出了 Alpha Shapes、Ball Pivoting 和 Poisson 表面重建等方法。(Open3D)

5. 点云测量与工业检测

工业场景中,点云常用于:

  • 尺寸测量;
  • 平面度检测;
  • 圆柱度检测;
  • 轮廓度检测;
  • CAD 对比;
  • 缺陷检测;
  • 间隙面差测量;
  • 焊缝检测;
  • 零件装配检查。

这类任务最重要的是误差预算和可重复性,而不是单纯追求点云看起来“平滑”。过度滤波可能把真实缺陷抹掉。

6. SLAM 与建图

LiDAR SLAM 或 RGB-D SLAM 要解决“我在哪里”和“环境长什么样”两个问题。

基本流程包括:

点云预处理
→ 运动补偿
→ 特征提取或直接配准
→ 帧间里程计
→ 局部地图匹配
→ 回环检测
→ 图优化
→ 全局地图

LOAM 系列方法的核心思想就是将实时里程计和低频建图分开处理,从而兼顾速度和精度。(Robotics Proceedings)


十二、点云的深度学习

现代点云学习不仅依赖传统滤波,还会把特征提取、聚合、分割、检测放进神经网络中学习。

1. Point-based 方法

Point-based 方法直接处理点集,不先转成图像或体素。

代表方法:

  • PointNet;
  • PointNet++;
  • DGCNN;
  • KPConv;
  • Point Transformer。

PointNet 直接消费原始点云,并通过对称函数处理点集无序性;PointNet++ 进一步通过层次化局部区域学习补足 PointNet 对局部结构建模不足的问题。(arXiv)

优点:

  • 保留原始点坐标;
  • 不需要体素量化;
  • 适合分类、分割、局部特征学习。

缺点:

  • 大规模点云计算成本高;
  • 邻域搜索开销大;
  • 对工程部署不一定最友好。

2. Voxel-based 方法

Voxel-based 方法把点云划分成三维体素,再使用 3D 卷积或稀疏卷积处理。

代表方法:

  • VoxelNet;
  • SECOND;
  • SparseConvNet;
  • MinkowskiNet。

优点:

  • 适合大规模场景;
  • 可以利用卷积结构;
  • 对检测任务效果好。

缺点:

  • 体素化会带来量化误差;
  • 3D 卷积计算量大;
  • 小体素精度高但慢,大体素快但丢细节。

3. Pillar / BEV 方法

Pillar 方法把三维空间划分为竖直柱,不在高度方向细分体素,然后把点云编码成鸟瞰图特征。

代表方法:

  • PointPillars;
  • CenterPoint;
  • BEVFusion。

优点:

  • 速度快;
  • 适合自动驾驶;
  • 能使用成熟的 2D CNN 检测框架。

缺点:

  • 高度方向表达较粗;
  • 对立体结构复杂的场景表达有限。

4. Range Image 方法

旋转式 LiDAR 可以投影成 range image,即距离图。每个像素对应一个激光角度方向。

优点:

  • 数据结构规则;
  • 推理快;
  • 适合语义分割和实时感知。

缺点:

  • 投影会引入遮挡和扭曲;
  • 不同 LiDAR 线束结构差异大;
  • 对非旋转式 LiDAR 不一定适用。

十三、点云质量评价

任务常见指标
去噪点到真值表面距离、Chamfer Distance、Hausdorff Distance、normal consistency
配准fitness、inlier RMSE、旋转误差、平移误差
分割OA、mIoU、per-class IoU、instance AP
检测3D AP、BEV AP、mAP、IoU
重建Chamfer Distance、F-score、mesh accuracy、mesh completeness
工业测量重复性、再现性、点到 CAD 偏差、平面度、圆柱度、轮廓度
SLAMATE、RPE、漂移率、回环误差、地图一致性
压缩压缩率、几何误差、颜色误差、传输延迟

评价指标必须和任务绑定。自动驾驶检测不一定需要每个点非常平滑;工业检测不一定需要大范围语义理解;SLAM 不一定需要语义类别,但需要几何一致性和位姿稳定。


总结

点云是三维视觉、机器人、自动驾驶、工业检测、测绘建模中的核心数据载体,是传感器或重建算法在特定坐标系、特定时间、特定观测条件下得到的离散采样。

学习点云要先建立以下认知:

  1. 点云不是连续表面,而是离散采样点集合。
  2. 点云不一定天然有真实尺度,尺度是否可靠取决于传感器和标定。
  3. 点云不只是 N×C 矩阵,工程中还包含字段、坐标系、时间戳、格式和元数据。
  4. 点云可能是无序的,也可能是有序的 image-like 结构。
  5. 点云质量问题不只是噪声,还包括离群点、缺失、密度不均、伪影、重影、运动畸变和任务无关点。
  6. 点云滤波不是万能修复,而是根据任务目标进行筛选、裁剪、去噪、下采样和平滑。
  7. 坐标系、外参、内参、时间同步和运动补偿,比单个滤波算法更重要。
  8. 不同任务对点云质量的要求不同:自动驾驶看重实时性和鲁棒性,工业检测看重精度和细节,SLAM 看重时空一致性,重建看重完整性和表面连续性。
  9. 深度学习中的点云处理路线主要包括 point-based、voxel-based、pillar/BEV-based 和 range image-based。

参考资料

  • ROS sensor_msgs/PointCloud2 官方文档:点云字段、坐标系、organized / unorganized 结构。(ROS Documentation)
  • PCL PCD 文件格式官方文档:PCD 字段、宽高、视点、数据存储方式。(Point Cloud Library)
  • PCL StatisticalOutlierRemoval、RadiusOutlierRemoval、VoxelGrid、MLS 官方教程:基础点云滤波、离群点去除、下采样、平滑重采样。(Point Cloud Library)
  • Open3D 官方文档:离群点去除、ICP、全局配准、表面重建。(Open3D)
  • COLMAP 官方教程:SfM 与 MVS 图像三维重建流程。(COLMAP)
  • OpenCV 官方文档:相机标定与双目深度。(OpenCV 文档)
  • ROS tf2 官方文档:多坐标系随时间变换管理。(ROS Documentation)
  • ASPRS LAS、PDAL、ASTM E57 文档:测绘与三维扫描点云格式。(asprslas.org)
  • PointNet、PointNet++、VoxelNet、PointPillars 论文:点云深度学习基础路线。(arXiv)
  • LOAM、ICP、FPFH 相关论文与文档:LiDAR SLAM、点云配准和局部几何特征。(Robotics Proceedings)
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐