下面把点云特征提取讲成一套**从基础几何 → 局部统计 → 描述子 → 应用(边缘点提取)**的完整体系,覆盖面试常问的原理、公式直觉、参数选择与工程用法。
一、特征提取总体框架
点云特征本质是: 在局部邻域内刻画点的几何结构(平面 / 边缘 / 曲面)
典型流程:
- 邻域搜索(KD-Tree,kNN或半径搜索)
- 计算局部几何(协方差矩阵)
- 特征计算(法向、曲率)
- 构建描述子(FPFH / SHOT)
二、法向量估计(Normal Estimation)
1. 原理(核心)
对点 ( p ) 的邻域点做主成分分析(PCA):
- 计算邻域点的协方差矩阵
- 求特征值与特征向量
- 最小特征值对应的特征向量 = 法向量
2. 直观理解
- 如果点在平面上:
- 两个方向变化大(平面内)
- 一个方向变化小(法向方向)
3. 数学形式(理解即可)
协方差矩阵:
$$ [ C = \frac{1}{k} \sum (p_i - \bar{p})(p_i - \bar{p})^T ] $$特征值排序:
$$ [ \lambda_0 \le \lambda_1 \le \lambda_2 ] $$则:
- 法向量 = 对应 (\lambda_0) 的特征向量
4. 关键问题:法向量方向不唯一
- 法向量有正负(n 或 -n)
- 解决:
- 朝向传感器
- 或统一方向传播
5. 参数
- 邻域大小(k 或 radius)
影响:
- 小邻域 → 噪声大
- 大邻域 → 细节丢失
6. 工程用途
- 区域生长
- 平面分割
- 点云配准(Point-to-Plane ICP)
三、曲率计算(Curvature)
1. 原理
基于PCA特征值定义:
曲率:
$$ [ \sigma = \frac{\lambda_0}{\lambda_0 + \lambda_1 + \lambda_2} ] $$2. 直观理解
- 平面:
- λ0 很小 → 曲率接近 0
- 边缘:
- λ0 较大 → 曲率大
- 噪声点:
- λ0 ≈ λ1 ≈ λ2 → 曲率大
3. 用途
- 边缘点检测
- 特征点筛选(LOAM)
- 表面分析
四、FPFH描述子(Fast Point Feature Histogram)
1. 背景
- FPFH 是 PFH 的加速版本
- 用于描述点的局部几何结构
2. 原理
在邻域内构造点对之间的几何关系:
计算三个角度特征:
- α(法向差)
- φ(方向关系)
- θ(夹角)
构建直方图(Histogram)
3. 特点
- 维度:33维
- 对旋转不敏感
- 计算较快
4. 优点
- 区分能力强
- 适用于点云匹配
5. 缺点
- 对噪声敏感
- 依赖法向量质量
6. 应用
- 点云配准(粗配准)
- 回环检测
- 特征匹配
五、SHOT描述子(Signature of Histograms of Orientations)
1. 原理
结合:
- 空间划分(3D网格)
- 法向方向统计
步骤:
- 建立局部参考系(LRF)
- 划分空间为多个区域
- 统计法向分布
2. 特点
- 高维(通常352维)
- 更稳定
- 抗噪性更强
3. 优点
- 描述能力强
- 对复杂结构更鲁棒
4. 缺点
- 计算量大
- 实时性较差
5. FPFH vs SHOT 对比
| 特征 | FPFH | SHOT |
|---|---|---|
| 维度 | 33 | 352 |
| 速度 | 快 | 慢 |
| 精度 | 中 | 高 |
| 抗噪性 | 一般 | 强 |
六、如何提取点云中的边缘点?(重点)
这是面试高频问题。
方法一:基于曲率(最常用)
原理
- 边缘点 → 曲率大
步骤
- 计算法向量
- 计算曲率
- 设定阈值:
- σ > threshold → 边缘点
优点
- 简单高效
- 易实现
缺点
- 对噪声敏感
- 依赖邻域大小
方法二:基于法向变化
原理
- 边缘处法向变化剧烈
判断
- 邻域法向夹角 > 阈值
方法三:基于深度突变(Range Image)
(LOAM核心方法)
原理
- 将点云转为range image
- 比较相邻点距离差
判断
- 若深度变化大 → 边缘
方法四:基于RANSAC(结构边缘)
- 拟合多个平面
- 平面交线为边缘
七、LOAM中的边缘提取(面试高分点)
LOAM方法:
- 按 scan line(ring)处理
- 计算每个点的“曲率”(类似一阶差分)
- 排序:
- 选最大的一部分 → 边缘点
- 选最小的一部分 → 平面点
八、工程经验总结(非常重要)
邻域选择
- k = 10 ~ 50(常用)
- 或 radius = 0.1 ~ 0.5 m
边缘提取建议
- 先去噪(SOR)
- 再计算法向
- 再提取曲率
实际Pipeline
- KD-Tree建索引
- 法向量估计
- 曲率计算
- 特征点筛选(边缘 / 平面)
- 描述子计算(FPFH/SHOT)
九、面试标准回答(建议背)
如果被问:
“如何提取点云中的边缘点?”
可以这样回答:
点云中的边缘点通常通过局部几何特征来提取,常见方法是基于曲率或法向变化。 一般流程是先计算点的法向量,再通过PCA得到曲率,曲率较大的点通常位于边缘区域。此外,也可以通过比较邻域点的法向夹角或深度变化来检测边缘。在实际工程中,例如LOAM算法,会通过计算每个点的曲率并排序,选取曲率最大的点作为边缘特征点。
十、结合你项目的加分表达
你可以补一句:
在我的项目中,通常通过法向量和曲率来提取关键特征点,用于后续的点云配准或分割,从而减少计算量并提高匹配稳定性。
如果你想继续深入,我可以帮你讲:
- ICP中为什么用“法向量”(Point-to-Plane本质)
- FPFH如何用于初始位姿估计(面试高频)
- LOAM中特征点筛选的完整代码逻辑(非常加分)