点云地面滤波--patchwork++

这篇具有很好参考价值的文章主要介绍了点云地面滤波--patchwork++。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1前言

patchwork++是在patchwork的基础上进行改进的,主要有2个贡献:

  • 提出了自适应地面似然估计(adaptive ground likelihood estimation (A-GLE)) 和时序地面恢复(temporal ground revert (TGR))
  • 提出了两个新颖的异常值抑制模块,即反射噪声去除 (RNR) 和区域垂直平面拟合 (R-VPF)
    相比于patchwork其工作流程图如下:
    点云地面滤波--patchwork++

下面主要讨论patchwork的主要改进点:

2 反射噪声去除RNR

patchwork++假设bin的最低点为地面点,当地面以下有噪点,会把噪点误当为地面点。通常的做法是设置一个阈值,来去除地面以下的噪点,但是这种方法对于有坡度的地面是不适用的。
根据相关文献研究表明,地面以下的噪点具有以下两个特点:
首先,虚拟噪声点可以通过反射表面(即车辆的引擎盖和车顶或玻璃)上的反射而产生。如下图所示:当激光打到镜面时,入射角越小噪点位置越低。噪点是由于镜面反射的镜像点云造成的(或者说多路径效应)。所以,(当激光雷达高于反射镜面时)对于多线雷达,地面以下的噪点更可能是激光头下方的几线激光造成的。
点云地面滤波--patchwork++

其次,地面以下的噪点通常具有低的强度,因为光线经过多次传播会减弱反射光线的强度。
因此,本文提出了一个地面以下的噪点去除方法,即去除激光头下方 N n o i s e N_{noise} Nnoise个线束内,高度低于 h n o i s e h_{noise} hnoise,并且强度低于 I n o i s e I_{noise} Inoise的点云(并不是很高明的方法)。效果如下:
点云地面滤波--patchwork++

3区域垂直平面拟合 (R-VPF)

在之前的patchwork论文中使用的R-GPF对于垂直连接的地面的不适用。因为在水平和垂直地面连接处,只是用pca估计的法线会不准确。通过以下四个步骤确定垂直平面的点云 V ^ n \hat{V}_{n} V^n:第一步,在第k次迭代过程中选择最低点作为种子点。第二步,计算种子点的均值 m n k m_{n}^{k} mnk和单位法向量 v 3 k v_{3}^{k} v3k。然后潜在的垂直平面点云 W ^ n k \hat{W}_{n}^{k} W^nk计算如下:
W ^ n k = { p ∈ P ^ n k ∣ ∣ ( p − m n k ) ⋅ v 3 , n k ∣ < d v } (2) \hat{W}_{n}^{k}=\left\{\mathbf{p} \in \hat{P}_{n}^{k}||\left(\mathbf{p}-\mathbf{m}_{n}^{k}\right) \cdot \mathbf{v}_{3, n}^{k} \mid<d_{v}\right\}\tag{2} W^nk={pP^nk∣∣(pmnk)v3,nk∣<dv}(2)
这种表达式的含义,即求点云与点云中心构成的向量与法线的相似度, d v d_v dv是阈值。
第三步,第k次迭代中垂直地面点 V ^ n k \hat{V}_{n}^{k} V^nk计算如下:
V ^ n k = { W ^ n k ,  if  π 2 − cos ⁡ − 1 ( v 3 , n k ⋅ u z ) < θ v ∅ ,  otherwise  \hat{V}_n^k= \begin{cases}\hat{W}_n^k, & \text { if } \frac{\pi}{2}-\cos ^{-1}\left(\mathbf{v}_{3, n}^k \cdot \mathbf{u}_z\right)<\theta_v \\ \varnothing, & \text { otherwise }\end{cases} V^nk={W^nk,, if 2πcos1(v3,nkuz)<θv otherwise 
第四步,把之前所有k次迭代的结果相加得到所有的垂直点:
V ^ n = ⋃ k = 1 K v V ^ n k \hat{V}_n=\bigcup_{k=1}^{K_v} \hat{V}_n^k V^n=k=1KvV^nk
示意图如下:
点云地面滤波--patchwork++

4自适应地面似然估计(A-GLE)

在patchwork中GLE需要固定阈值,这里对高程阈值和平面度阈值进行改进:

  • 高程:
    e τ , m ← mean ⁡ ( E m ) + a m ⋅ stdev ⁡ ( E m ) e_{\tau, m} \leftarrow \operatorname{mean}\left(E_m\right)+a_m \cdot \operatorname{stdev}\left(E_m\right) eτ,mmean(Em)+amstdev(Em)

E m E_m Em是之前所有估计的 e n e_n en的集合, a m a_m am是常系数。 m e a n ( ) , s t d e v mean(),stdev mean(),stdev表示平均值和标准差。

  • 平面度:
    同高程一样,平面度阈值更新如下:
    f τ , m ← mean ⁡ ( F m ) + b m ⋅ stdev ⁡ ( F m ) f_{\tau, m} \leftarrow \operatorname{mean}\left(F_m\right)+b_m \cdot \operatorname{stdev}\left(F_m\right) fτ,mmean(Fm)+bmstdev(Fm)
  • 去噪高度
    A-GLE 根据估计地平面的高程值的平均值更新 h n o i s e hnoise hnoise:
    h noise  ← mean ⁡ ( E 1 ) + δ h_{\text {noise }} \leftarrow \operatorname{mean}\left(E_1\right)+\delta hnoise mean(E1)+δ

5时序地面恢复TGR

在实际地面中,平滑度可能会突然变大,由于A-GLE是根据之前的计算结果去更新参数,所以对于 f n f_n fn突然变大的情况需要做出处理。
D m t D_{m}^{t} Dmt为t时刻估计的地面点,将分割不足的bin的 f n f_n fn f τ , m t f_{\tau,m}^t fτ,mt比较:
f τ , m t = mean ⁡ ( F m t ) + c m ⋅ stdev ⁡ ( F m t ) f_{\tau, m}^t=\operatorname{mean}\left(F_m^t\right)+c_m \cdot \operatorname{stdev}\left(F_m^t\right) fτ,mt=mean(Fmt)+cmstdev(Fmt)
c m c_m cm常系数, F m t F_{m}^t Fmt D m t D_{m}^{t} Dmt f n f_n fn的集合,如果 f n < f τ , m f_n<f_{\tau,m} fn<fτ,m 保留地面点,否则去除该bin集合点。

总结

相比于patchwork主要提升的地方有三点:噪点、参数更新、特殊情况处理。两篇论文原文语句读着不是特别顺畅连贯,后面需要进一步分析和阅读代码才能更好理解论文的细节。文章来源地址https://www.toymoban.com/news/detail-479823.html

到了这里,关于点云地面滤波--patchwork++的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 点云传统滤波算法

    本文介绍了各种滤波算法的原理以及给出了相关实现方法。 分割功能滤波是一种常用的点云处理方法,可以将点云数据分割为不同的部分,以便对每个部分进行独立处理。 直通滤波(PassthroughFilter)是一种常用的点云滤波方法,其主要目的是将点云数据在某个维度上的数据范

    2024年02月14日
    浏览(39)
  • 点云滤波算法

           在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,点云数据中将不可避免地出现一些 噪声点 。实际应用中除了这些测量随机误差产生的噪声点之外,由于受到外界干扰如视线遮挡、障碍物等因素的影响,点云数据中往往存在着一些离主体点云

    2024年01月20日
    浏览(44)
  • PCL 改进点云双边滤波算法

    我们先来回顾一下之前该算法的计算过程,在二维图像领域中,双边滤波算法是通过考虑中心像素点到邻域像素点的距离(一边)以及像素亮度差值所确定的权重(另一边)来修正当前采样中心点的位置,从而达到平滑滤波效果。同时也会有选择性的剔除部分与当前采样点“差异”

    2024年02月07日
    浏览(41)
  • 点云滤波降采样聚类分割整理

    统计滤波: 概念:去除明显分布稀疏的离群点。根据给定的均值和方差去除方差之外的点。 步骤:对每个点都计算最近的K个点的距离,求个平均值。此时点云里每个点都有一个平均值。算所有的均值和方差,然后根据123方差阈值来滤除离群点。 当判断点的k近邻平均距高(

    2024年02月16日
    浏览(38)
  • 使用PCL滤波器实现点云裁剪

    点云裁剪是根据提取划分或者说标注出来的点云区域(ROI区域),对点云进行区域分离(点云裁剪和点云分割还是有区别的,所以这里用分离而不是分割)。根据已知的ROI区域,对点云进行裁剪。要么留下点云ROI区域,要么去除。 ROI区域一般都是一个矩形,即(x,y,width,

    2024年02月15日
    浏览(42)
  • Open3D常用点云滤波

    在点云处理中,过密的点云需要下采样,离群点和噪声点需要去除,通过滤波的方法,可以抽稀点云,把离群点去除,以便进行下一步处理 open3d中,很多滤波器已经被封装成了对应的方法(源码是C++) 直通滤波过滤指定维度(x,y,z)内,指定值域外的点 下采样 首先根据输入

    2024年02月06日
    浏览(38)
  • PCL点云处理之CSF布料模拟滤波(五十九)

    PCL中并没有找到现成的CSF滤波代码,需要我们自己下载并编译,在使用时添加到头文件中调用,才能最终实现CSF编程使用。下面是具体的编译过程: (实际上就是作者给了源代码和CMAKElists的构建文件,我们使用CMake软件转换得到链接库,用于我们自己的代码中) https://githu

    2023年04月17日
    浏览(49)
  • CloudCompare二次开发之如何通过PCL进行点云滤波?

      因笔者课题涉及点云处理,需要通过PCL进行点云数据一系列处理分析,查阅现有网络资料,对常用PCL点云滤波器进行代码实现,本文记录滤波器实现过程。    (1)设计.ui文件    ①设计按钮       ②编译.ui       (2)修改mainwindow.h文件       (3)修改

    2024年02月05日
    浏览(59)
  • PCL点云处理之多种体素滤波方法大汇总(一百六十四)

    对PCL中的基于八叉树体素滤波方法,以及在此基础上,自己进一步实现的新滤波方法,进行一个汇总,列出各自的效果和,具体的实现代码 PCL中自带的滤波方法,也是最常用的滤波方法,应该是体素中的点云重心取代原始点,但使用时要注意体素不可过小,

    2024年02月05日
    浏览(49)
  • (02)Cartographer源码无死角解析-(32) LocalTrajectoryBuilder2D::AddRangeData()→点云的体素滤波

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885   文 末 正 下 方 中 心 提 供 了 本 人 联 系 方 式 , 点

    2024年02月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包