Patchwork++:基于点云的快速鲁棒地面分割方法

超详细的激光点云地面分割(可行驶区域提取)方案_激光点云数据的平面分割-CSDN博客文章里我们介绍了基于点云的地面分割基本思路,并给出了4种优秀的开源方案,其中就包括Patchwork&Patchwork++。在那篇文章里我们对其原理做了简单介绍,包括CZM、GLE、TGR等,本文作为补充,对文章中的一些细节做更多介绍。

1. 摘要

一些地面分割方法需要根据周围环境对参数进行微调,过于费力费时。此外,即使参数调整得很好,仍然会出现部分分割不足的问题,这意味着在某些区域地面分割失败。最后,当地面位于其他结构(如挡土墙)之上时,地面分割方法通常无法估算出合适的地平面。为了解决这些问题,提出了一种稳健的地面分割方法,称为 Patchwork++,是 Patchwork 的扩展。Patchwork++ 利用自适应地面似然估计(A-GLE),根据之前的地面分割结果自适应地计算适当的参数。此外,临时地面还原(TGR)利用临时地面特性缓解了部分分割不足的问题。此外,还引入了区域垂直平面拟合(R-VPF)技术,即使地面层高不同,也能正确分割地平面。最后,基于三维激光雷达反射模型提出了反射噪声消除(RNR)技术,以有效消除虚拟噪声点。

代码地址:https://github.com/url-kaist/patchwork-plusplus

2. RNR反射噪声去除(Reflected Noise Removal)

从上图中看到由于反射或者折射等因素等影响,激光雷达点云数据中往往会存在一些地面以下的噪声,实际应用中如果不处理的话,这些噪声点一旦被选取为拟合平面的种子点,就会对产生很多欠分割地面。图中可以发现,这些噪声基本是在角度向下(bottom)的线束中,而且入射角越小,往往得到的噪声数据越低。另外,这些点经过多次反射或者折射后,往往强度相对低。因此,

处理思路:

针对角度向下的Nnoise条激光线束,设定高度阈值hnoise和强度阈值Inoise。当低于这两个阈值时,则认为是噪声点。其中高度阈值hnoise在A-GLE环节中自动更新。那为什么自动更新呢?因为如果地面陡峭的话,固定高度阈值往往会将真正的地面点当作噪声去除了,参照下图。

3. CZM分区(Concentric Zone Model)

为什么要分区?一方面是因为分区后计算快,另一方面相当于用更小分辨率的扇区来分割地面,相比对整个地面进行分割精度更高。以往在极坐标下对径向和bin进行均匀划分,泛用型不强,有一下两个缺陷:

一是稀疏问题:随着距离增长,点云变得稀疏,难以找到正确的平面。

二是代表性问题:当靠近传感器的bin太小时,难以表示扇区的空间特征,可能会导致地面法向量估计失败。

因此可以为不同的bin分配不同的密度,论文中对靠近传感器和远离传感器的Z1和Z4区分配的更大一些。

4. R-VPF区域垂直平面拟合(Region-wise Vertical Plane Fitting)

为什么要做R-VPF?因为有些场景,比如地面位于垂直城市建筑之上时,这时挑选种子点进行平面拟合,拟合的平面误差就会很大,如上图左图所示。

因此在做GPF前,可以先对bin内的点进行垂直平面拟合,将垂直点子集过滤掉。具体方法也是先挑选种子点,然后进行平面拟合,平面附近一定阈值内的点作为潜在的垂直点。然后对比平面法向量与[0,0,1]的夹角是否在一定阈值内,在范围内则认为是垂直点。

做完R-VPF后,紧接着会进行R-GPF步骤,原理相似,这里不赘述了。

5. A-GLE自适应地面似然估计(Adaptive Ground Likelihood Estimation)

A-GLE的本质是一个二元分类,当概率大于0.5时认为是地面点,当概率小于0.5时认为是非地面点,但代码实现可能略有不同。总体思路是根bin内点集的垂直度Uprightness、高度Elevation、平整度Flatness三方面考虑。

垂直度Uprightness:

与上面的R-VPF流程类似,也是求每个区域内的法向量,与z=[0,0,1]进行比较。

其中θ为设置的角度阈值,当方向量与X-Y平面夹角接近90°时,意味着bin内拟合的平面越凭证。论文中θ经验值设为45°。

高度Elevation:

一些建筑物或者车辆顶部有时垂直度与地面类似,为了避免被误认为是地面,引入了Elevation。

其中zn代表bin内点的平均高度,rn代表点距离传感器的距离。k(.)是一个使rn呈指数增长的自适应中点函数。如果rn > Lt,点距离比较远,认为该平面仅由平整度和垂直度考虑。反之,则需要考虑高度因素。当zn < k(rn)时,输出值大于0.5,则认为是地面点的可能性较高。反之亦然。

在patchwork++中,对k(rn),也就是et,m进行自适应调整,以避免不同环境调整的麻烦。

其中,m代表m-th ring。Em代表过去估计的地面中满足垂直度和高度条件的bin内的平均高度集合,am > 0是固定值。其实也就是根据上一次估计的地面来更新本次迭代的阈值。

平整度Flatness:

平整度的目的是为了恢复被高度Elevation误认为是非地面点的地面点。

在patchwork++中,对平整度的计算方法进行了调整,σn或者fn直接用λ3,n表示。

同高度阈值类似,平整度阈值(σt,m,也是ft,m)也需要自动调整:

6. TGR(临时地面还原)Temporal Ground Revert

对 A-GLE 处理后的欠分割地面进行纠正,将一些被误检的非地面点恢复为地面点。例如,一个bin内可能存在部分异常点使得地面拟合失效(例如崎岖的草地),计算值很可能超过阈值而导致错误估计。这是因为 A-GLE 是根据过去的数据更新阈值,在当前时间更新的值会在下次被利用,但当前时间下的估计就会发生偏差;解决方法是计算当前时刻的阈值,与fn比较,若fn小于当前时刻计算的平整度阈值,则恢复为地面。计算方式同上面类似,只不过采用的是当前时刻的点。

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值