Skip to content

地面分割与聚类算法

主题:点云处理流水线中两个核心算法族的完整技术文档——地面分割(RANSAC 平面拟合、CSF 布料模拟、GroundSeg)与聚类(欧式聚类、DBSCAN、区域增长、MeanShift),含算法步骤、参数设置、优缺点、工业适用性与组合流程。 本版综合 GitHub 开源项目(Immortalqx/RANSAC、jianboqi/CSF)、CSDN/博客园教程与专利案例(钢卷 MeanShift 聚类)展开。 版权说明:本文为公开资料(论文/专利/厂商文档)的中文要点综述与整理,非原文转载。完整内容与图表请访问文末「信息来源」中的原始链接;引用请注明原始出处。

  • 地面占比高:堆场/矿区/库区点云中地面点通常占 30%~70%;
  • 地面不分割的后果:
    • 聚类时地面与目标粘连(料堆/车辆/钢卷无法分离);
    • 体积计算的基准面无法确定(笔记 13);
    • 配准/识别计算量浪费(处理大量无关点);
    • 检测模型误把地面起伏当障碍物。
  • 因此”先分割地面、再处理非地面点”是工业标准流程。

RANSAC(RANdom SAmple Consensus,随机采样一致性)是从含外点数据中估计数学模型参数的迭代算法:

输入:点云 P,容差 d,迭代次数 N,内点阈值 T
输出:地面平面模型 (n, p0) 及地面点集
1. 重复 N 次:
a. 随机采样 3 个点(不共线)→ 确定平面 (n, p0)
b. 计算所有点到平面距离 dist(p)
c. 统计 dist(p) < d 的内点数量
d. 记录内点数最多的平面
2. 输出最佳平面及其内点(=地面点)
  • 距离公式:dist = |n·(p − p0)|(n 为单位法向量);
  • 迭代次数 N 与内点比例、维度相关(理论上 N 越大越稳,工程 100~1000 次足够)。
参数含义经验值
距离容差 d点到平面距离阈值5~20 cm(按雷达噪声水平)
迭代次数 N采样次数100~1000
内点比例阈值地面占比下限0.3~0.5
  • 优点:实现简单、对噪声鲁棒、计算快、PCL/Open3D 内置;
  • 缺点:
    • 假设地面是单个平面——起伏地形/坡道/台阶失效;
    • 容差参数需按场景调(过大→把低矮目标当地面,过小→地面不完整);
    • 大平面误判风险(料堆顶面若平整也可能被拟合)。
  • 多平面 RANSAC:分割一个平面后移除,重复拟合(多级地面/台阶);
  • 法线约束:地面法线应近似竖直(与重力方向平行)——加入约束减少误判;
  • 直通滤波预裁剪:先按 z 范围裁剪(去除高处建筑),再 RANSAC;
  • 渐进式地面拟合(PTF/GPF):按距离分段拟合(车载倾斜路面)。
  • 散货堆场(平整地面)✅ 首选;
  • 矿卡矿区道路(整体平缓但有坡)⚠️ 需分段或结合 CSF;
  • 钢厂库区(室内平地)✅ 效果好;
  • 卸船机船舱(舱底是平面但被料堆遮挡)✅ 需配合料面分割。

3. CSF 布料模拟滤波(Cloth Simulation Filter)

Section titled “3. CSF 布料模拟滤波(Cloth Simulation Filter)”

CSF(Zhang 等,2016)模拟布料在重力下覆盖地形的过程:

输入:点云 P(翻转:z → -z),布料网格分辨率 r,刚性系数,迭代次数
输出:地面点/非地面点
1. 点云翻转(Z 轴取反)——地形"倒扣"成凹面
2. 初始化布料网格置于点云上方
3. 迭代(布料在重力作用下落):
a. 重力作用:网格节点下落
b. 碰撞检测:节点与地形点相交则停止(标记为地面接触点)
c. 刚性约束:相邻节点距离保持(布料张力)
4. 布料最终形态 ≈ 地面近似面
5. 点云中落在布料上的点 = 地面点
参数含义影响
布料网格分辨率网格间距小=精细但慢;大=平滑但丢细节
刚性系数(rigidness)布料张力大=布料硬(适应平地);小=软(贴地形)
迭代次数下落步数不足=布料未落地
陡坡阈值(slope)区分陡坡处理陡坡处采用后处理修正
  • 优点:不假设地面是平面——适应复杂地形与陡峭区域(露天矿、起伏料场);机载 LiDAR 滤波经典算法;
  • 缺点:参数需按场景调;对地面以下点(负地形、深坑)敏感;比 RANSAC 慢;
  • 开源:GitHub jianboqi/CSF(C++/Python),已集成 R 语言 lidR 生态。
  • 料堆起伏、露天矿不规则地形 ✅ 首选;
  • 室内平地 ⚠️ 杀鸡用牛刀(RANSAC 足够);
  • 结合策略:RANSAC 粗分 + CSF 处理残留(坡道区域)。
  • 原理:将地面分割建模为扇形网格上的可行驶区域分类(按距离/方位划分扇区,逐扇区估计地面高度);
  • 特点:处理非平面、倾斜地面;计算高效(车规实时);
  • 工业启示:矿区/港区路面有坡度时,借鉴”分扇区局部平面”思路——把大平面假设拆成局部小平面。

5.1 欧式聚类(Euclidean Cluster Extraction)

Section titled “5.1 欧式聚类(Euclidean Cluster Extraction)”

算法:

输入:非地面点云 P,聚类半径 r,最小点数 min,最大点数 max
输出:聚类簇列表
1. 构建 k-d 树(加速邻域搜索)
2. 遍历未访问点 p:
a. 队列 Q = [p],标记 p 已访问
b. 找 p 的 r 邻域点,未访问者入队
c. 重复直到 Q 空 → 形成一个簇
d. 点数在 [min, max] 内保留,否则丢弃(噪声簇)
  • 关键参数:聚类半径 r——按目标尺度与点密度设定(如钢卷扫描中按安装高度、扫描密度设置聚类半径和阈值,专利 CN111680542A);
  • 特点:简单、快,PCL/Open3D 内置;
  • 局限:半径固定——远距离目标点稀疏时易碎(可结合动态半径)。

算法:

输入:点云 P,邻域半径 eps,最小点数 minPts
输出:聚类簇 + 噪声点
1. 对每点:统计 eps 邻域内点数
2. 核心点:邻域点数 ≥ minPts
3. 密度可达:核心点邻域内的点链
4. 簇 = 密度可达的点集合;孤立点 = 噪声
  • 特点:无需预设簇数量、任意形状(料堆、不规则堆体)、自动标记噪声;
  • 参数:eps(尺度相关)、minPts(经验 5~20);
  • 工业适用:堆体分割、散料识别、不规则目标聚类。
方法原理特点工业案例
区域增长法线/曲率一致生长平滑表面提取平面/曲面分割
MeanShift密度中心漂移迭代自动聚类数钢卷点云分割(专利 CN111680542A)
超体素(Voxel Cloud)体素化+局部聚合预分割加速大场景预处理
方法形状假设参数噪声处理速度工业典型用途
欧式聚类无(距离阈值)半径、点数小簇过滤快钢卷/鞍座/车辆分割
DBSCAN无(密度)eps、minPts自动标噪中料堆、不规则目标
区域增长平滑表面法线/曲率一般中平面/曲面提取
MeanShift密度峰带宽一般中钢卷聚类(专利案例)

6. 典型工业组合流程(组合拳)

Section titled “6. 典型工业组合流程(组合拳)”
原始点云
→ 直通滤波(裁剪 ROI:去除远处/高空无关区域)
→ 地面分割(RANSAC:室内/堆场平地;CSF:复杂地形)
→ 欧式聚类 / DBSCAN(分割独立目标)
→ 目标特征提取与分类(笔记 07)

对应工程实例(钢卷识别预处理,笔记 03):直通滤波 → RANSAC 去地面 → MeanShift 聚类分割 → PointNet 分类。

  1. 地面分割先行且必须:所有目标级任务(识别/检测/体积)的预处理第一步;
  2. 场景决定方法:平地→RANSAC(快);起伏→CSF(准);坡道→分扇区;
  3. 参数标定:按雷达噪声水平标定容差;按目标尺度标定聚类半径——建立”参数-场景”配置表;
  4. 聚类后验证:簇数量/尺寸分布是否符合场景预期(异常=参数或数据问题);
  5. 大数据量:先体素降采样再聚类(速度提升 10 倍级);
  6. 时序稳定性:固定场景(堆场)可缓存地面模型,避免每帧重算(与路侧雷达背景模型思路一致,笔记 09 §7)。

版权提示:GitHub 开源项目遵循各自 License(CSF 为 GPL/MIT 混合,商用需核查);CSDN/博客园文章版权归作者,仅摘录要点。