点云处理一---点云宏观认知

一、点云是什么

1. 核心定义

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

text 复制代码
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 张量:

text 复制代码
N = 点的数量
C = 每个点的属性维度

例如:

text 复制代码
[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, ambient LiDAR 反射强度、反射率、环境光信息
颜色属性 r, g, b, rgba RGB-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. 常见点云文件格式

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

格式 常见场景 特点
PCD PCL、机器人、科研 字段灵活,适合点云算法开发
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)

因此,更准确的关系是:

text 复制代码
多张图像
→ 特征提取与匹配
→ 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 全局世界坐标系

坐标变换通常写成:

text 复制代码
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

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

text 复制代码
保留 -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 条件滤波

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

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

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


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

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

3.1 体素下采样 VoxelGrid

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

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

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

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

text 复制代码
体素太大:细节丢失,边缘变钝,小目标消失
体素太小:降采样效果不明显,计算量仍然大
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. 背景建模

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

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


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

通用流程可以写成:

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

不同场景的重点不同。

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

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

1. 相机内参

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

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

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

2. 外参

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

text 复制代码
T = [ R  t
      0  1 ]

例如:

text 复制代码
T_base_lidar
T_camera_lidar
T_world_base

外参错误会造成:

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

3. 时间同步

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

例如:

text 复制代码
相机图像: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. 三维目标检测

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

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

text 复制代码
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 要解决"我在哪里"和"环境长什么样"两个问题。

基本流程包括:

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

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 偏差、平面度、圆柱度、轮廓度
SLAM ATE、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)
相关推荐
李伟_Li慢慢11 小时前
usda模型的定制化解析
前端·机器人·three.js
李伟_Li慢慢12 小时前
解析URDF文件
前端·机器人·three.js
李伟_Li慢慢12 小时前
用form控制URDF模型
前端·机器人·three.js
李伟_Li慢慢12 小时前
初始项目的搭建
前端·机器人·three.js
李伟_Li慢慢12 小时前
joint的拖拽旋转
前端·机器人·three.js
李伟_Li慢慢12 小时前
joint的拖拽推拉
前端·机器人·three.js
李伟_Li慢慢12 小时前
《机器人Web前端可视化》课程简介
前端·机器人·three.js
李伟_Li慢慢12 小时前
URDFLoader简介
前端·机器人·three.js
EQ-雪梨蛋花汤12 小时前
【Sceneform-EQR】让Android 原生 3D开发更容易
android·3d