点云处理:滤波、地面分割、聚类、特征提取

点云处理是自动驾驶感知中最硬核的模块之一,面试官常通过滤波→分割→聚类→特征提取的链条考察候选人的工程直觉与算法理解。本章总结四个核心子任务的考察点与应答框架,帮你快速建立「方法选型→实现细节→指标验证→优化扩展」的闭环思维。

子任务 常见方法 关键参数 面试高频考点
点云滤波 直通滤波、体素滤波、统计滤波、半径滤波 体素大小、标准差倍数、半径阈值 下采样 vs 离群点去除;体素滤波对特征保留的影响
地面分割 RANSAC平面拟合、Patchwork、LineFit 距离阈值、迭代次数、角度约束 非平坦路面的适应性;分割后障碍物高度丢失问题
点云聚类 欧式聚类、DBSCAN、区域生长 半径、最小点数、密度阈值 稀疏点、超远点、粘连物体的分离能力
特征提取 FPFH、SHOT、Spin Image、PointNet++ 邻域半径、法线估计方法 鲁棒性(旋转/密度变化);与深度学习特征对比
点云处理面试回答框架 问题定位 方法选型 实现细节 指标验证 优化扩展 场景目标、数据特点 对比主流算法优劣 参数选择、伪代码 耗时、精度、召回 瓶颈分析、改进策略

📌 面试问题:自动驾驶点云预处理中,你如何选择滤波方法?

🎯 面试官考察点
  • 是否理解不同滤波器的适用场景(下采样 vs 离群点)
  • 能否平衡计算效率与特征保留
  • 对传感器噪声特性的了解
🧩 回答框架

① 明确任务目标:降采样/去噪/边界提取;② 分析数据特点:激光线束密度、空间分辨率、噪声分布;③ 对比几种滤波器原理(体素滤波保持几何结构 vs 统计滤波去除孤立点);④ 给出参数选择依据(体素大小按目标距离调整);⑤ 补充工程实践:先直通滤波缩小范围,再统计滤波去噪。

✏️ 简短示例回答

“我通常先做直通滤波裁剪ROI,再用体素下采样控制点密度,最后用统计滤波去除离群点。体素大小设为0.2m以保留车辆轮廓;统计滤波的邻域点数取6,标准差乘数设为1.0,有效滤除雨雾噪点且不损伤边缘特征。”

💡 可能追问
· 体素滤波后物体边缘模糊如何解决?
· 如何自适应调节滤波参数?(基于距离/密度动态调整)
· 对比PCL中RadiusOutlierRemoval与StatisticalOutlierRemoval的差异?
⚠️ 避坑提醒
不要只背原理不说场景;举例时避免“所有情况都用体素”,要指出对远处稀疏点可能导致信息丢失;回答中应体现“先分析后选型”的工程思维。

📌 面试问题:如何实现鲁棒的地面分割?请描述具体方法及挑战。

🎯 面试官考察点
  • RANSAC类方法的局限性与改进思路
  • 非平坦地面(坡道、减速带)的处理能力
  • 实时性要求下的工程权衡
🧩 回答框架

① 定义地面:局部平面或连续曲面;② 方法选型:RANSAC平面拟合(效率高、对坡度敏感)、Patchwork(扇形分割+区域增长+坡度约束);③ 实现细节:迭代次数控制在50次以内,距离阈值0.2m;④ 指标验证:分割召回率≥95%,虚警率<2%;⑤ 优化扩展:结合IMU姿态做初值,坡度场景下改用二次曲面拟合。

✏️ 简短示例回答

“我采用改进的Patchwork方法:先把点云按角度分扇区,每个扇区内用RANSAC拟合局部平面,再通过邻域平面法线一致性做区域增长。对于坡道场景,动态调整距离阈值并引入地面连续性约束,在KITTI数据集上非平地区域分割精度提升了12%。”

💡 可能追问
· 地面点与障碍物底部的粘连怎么处理?
· 分割后如何判断地面以外的物体是否接地?
· 激光雷达安装角度误差如何补偿?
⚠️ 避坑提醒
不要只说RANSAC完事,一定要提对非平坦地面的处理;避免吹嘘无限精度,给出实际数据(如耗时5ms,召回96%)。注意区分“地面分割”和“路面可行驶区域”是两个不同任务。

📌 面试问题:点云聚类后如何做特征提取?谈谈你的常用方案。

🎯 面试官考察点
  • 对聚类算法边界敏感性的理解
  • 局部特征描述子的鲁棒性与计算开销
  • 能否针对下游任务(检测/分类)设计特征
🧩 回答框架

① 聚类方法:欧式聚类(阈值0.5-1.5m)或DBSCAN(适应密度变化);② 特征提取:对每个聚类计算FPFH(快速点特征直方图)或基于深度学习的PointNet++特征;③ 关键点:先估算法线,邻域半径取0.3m;④ 指标:特征匹配精度与耗时平衡;⑤ 优化:对远距离稀疏聚类使用全局统计特征(长宽高、点数量、偏度)。

✏️ 简短示例回答

“我使用DBSCAN聚类避免固定阈值导致远近物体分割不一致;然后对每个聚类估算法线并计算FPFH特征,再输入SVM做车辆/行人分类。实验表明在Nuscenes上FPFH+法线可在20ms内完成300个聚类特征提取,分类F1达到0.87。”

💡 可能追问
· FPFH对旋转物体是否不变?如何验证?
· 稀疏点聚类时如何定义邻域?(自适应半径 vs 固定半径)
· 为什么不用欧式聚类直接用PointNet++?谈谈优缺点。
⚠️ 避坑提醒
不要忽略法线估计的稳定性——在边缘和近处区域法线可能跳跃;避免只提传统特征而完全忽略深度特征,可补充“传统特征效率高,深度学习特征泛化强”的折中观点。示例回答中最好给出具体数值(时间、精度)。
📘 本章记忆点
· 滤波口诀:先ROI、再体素、后统计,参数随距离调。
· 地面分割:RANSAC打底,坡度场景加约束,Patchwork是万金油。
· 聚类+特征:DBSCAN防粘连,FPFH算得快,远距统计保底。