新站提交
  • 网站:49052
  • 待审:1013
  • 文章:97407
  • 会员:113

本篇博客参阅Wuming Zhang的文章“An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation”

不便利的小伙伴能够在此:资源链接下载。

1. 导言

机载LiDAR能够获取快速、低本钱地获取大区域的高精度地势测量值。为了获取高精度的地势数据(厘米级),对机载LiDAR点云数据进行“滤波”是一个十分重要的进程。因而近二十年来,国内外学者提出了很多有用的主动滤波算法,大大降低了人力本钱,进步了点云数据的运用功率。在博客:“点云地上点滤波(Progressive Morphological Filter)算法介绍(PCL库)”与“点云地上点滤波-progressive TIN densification(PTD)算法介绍”平分别对两种常用滤波器进行了介绍。
以往的很多算法滤波作用简单遭到地势特征的影响(一般在杂乱场景及峻峭地势区域滤波作用较差)且常常需求用户对数据有较为丰厚的先验常识来进行设置滤波器中的各种参数。
为了处理这些问题,张吴明教授等人在2015年第三届全国激光雷达大会提出的“布料”滤波算法,本篇博客对其进行了扼要介绍。

2. 根本思想

传统的滤波算法大多是考虑在斜度、高程改变之间的不同来进行区别地物点地上点,而布料”滤波算法从一个完全新的思路来进行滤波,首要把点云进行翻转,然后假定有一块布料遭到重力从上方落下,则终究落下的布料就能够代表当时地势。如下图所示,能够协助咱们进行了解。

在这里刺进图片描绘

下方的蓝色图形代表原始测量值,对其进行翻转,赤色虚线代表布料,能够反映地势的崎岖。

3. CSF算法完成进程

3.1 “布料”模仿

首要,界说了一个根本公式:

在这里刺进图片描绘

式中,X代表“布料”中的粒子在 t 时刻的方位,Fext(X,t)代表外部驱动要素(重力,磕碰等),Fint(X,t)代表内部驱动要素(粒子间的内部联系)。

即能够总结为“布料”粒子的方位遭到Fext(X,t)与Fint(X,t)两方面要素的影响。

随后如下图所示,经过四个状况对“布料”粒子的移动进程进行阐明。

在这里刺进图片描绘

(a)为初始状况,假定一个虚拟的布放在翻转的LiDAR测量值上方。黑色点为LiDAR测量值,深赤色点为可移动粒子。
(b)核算重力影响下对粒子发生的位移,由此一些粒子可能会出现在地上的下方。浅赤色点为粒子的旧方位。
(c)相交查看,查看粒子新方位是否抵达地上,假如现已抵达地上则设置为不行移动。蓝色点代表粒子不行移动
(d)考虑“布料”的内部驱动,对现有的“可移动”粒子,依据附近粒子所发生的“力”来进行移动新的方位。(如上图小房子处的可移动粒子)

3.2 外部/内部要素驱动

如3.1节中所述,粒子的方位移动包括外部/内部两方面的驱动要素,首要假定只需外部要素Fext(X,t),并设置内部要素Fint(X,t)为0,能够得到以下公式:

在这里刺进图片描绘

式中,m为粒子的分量,一般设置为1,△t 为时刻步长。且因为G是一个常数,所以上式十分简单核算,只需给定一个△t 就能够核算出下一次迭代粒子地点的新方位。

为了束缚粒子在回转外表空白区域的回转问题,作者又考虑了运用内部要素Fint(X,t) 。恣意选取两个相邻的粒子,假如两个粒子都是 可移动 的,则令二者往相反的方向移动相同的间隔;假如一个是不行移动的,则移动另一个;假如两者具有相同的高度,则不进行移动。
位移量能够经过下式进行核算:

在这里刺进图片描绘

式中,d为粒子的位移量;当粒子可移动时,b等于1,不行移动时b等于0;pi为p0的相邻粒子,n是把点进行标准化到笔直方向上的单位向量(0,0,1)T。

移动进程如下图所示:

在这里刺进图片描绘

一起还引入了一个新的参数rigidness, RI,用来描绘粒子的移动次数,RI为1时,则移动一次,且移动的间隔是两个粒子之间高差的1/2;RI为2时,则移动两次,且移动3/4。相似的,RI为3时,移动三次,移动间隔为两个粒子高差的7/8。RI的值越大,则“布料”就越硬,一般来说,平地需求设置RI的值较大,陡坡、山区需求设置的RI值较小。

3.3 详细完成

综上所述,布料模仿的扼要进程能够总结如下:
1)经过第三方软件去除原始LiDAR点云数据中的“孤立点”。
2)回转LiDAR点云。
3)初始布料格网,这时用户需求设置格网的巨细(grid resolution, GR)。初始“布料”的方位一般在最高点的上方。
4)把一切LiDAR点与格网粒子投影到同一个水平面,并找到每一个粒子的最近邻点(corresponding point, cp),记载其投影前的高程(intersection height value, IHV)
5)关于每一个可移动的格网“粒子”,核算其遭到重力影响发生的位移,并与当时粒子对应cp点的IHV进行比较,假如粒子的高度低于或许等于IHV,则把粒子的高度设置为IHV并设置为不行移动点。
6)关于每个格网“粒子”,核算其遭到内部驱动要素影响所发生的的位移。
7)重复上述5)、6)进程,直到一切粒子的最大高许诺改变满足小或许迭代次数抵达用户的预先设置值,则中止模仿进程。
8)核算LiDAR点云与格网粒子之间的高度差异。
9)区别地上点与非地上点,假如LiDAR点与模仿粒子之间的间隔小于预先设置的阈值hcc,则以为其是地上点,反之则以为其为非地上点。

3.4 后处理

上述办法处理往后关于平整区域能够获得较好的作用,可是关于“陡坡”区域仍然会发生较大的差错,因为“布料”会因为其粒子间的内部束缚而落在地上测量值的上方。如下图所示:

在这里刺进图片描绘

为了消除这些差错,能够经过一个后处理办法来处理。在每一个“可移动”粒子的四个邻接点中找到“不行移动”粒子,然后比较“最近邻点”之间的高程差,假如高程差值小于阈值hcp,则把“可移动”粒子移动到地上,并设置为不行移动。
例如,上图中的D点,找到了一个不行移动的粒子A,然后比较C,B之间的高程差值(关于D点、A点之间的最近邻点CP)。假如高程差值小于阈值hcp则待判断点D就被移动到C点,且被设置为不行移动。重复上述操作,直到一切的“可移动”粒子被正确处理。
假如逐行扫描“粒子”来进行完成尔后处理操作,成果可能会遭到特定扫描方向的影响。因而,作者采用了先树立一个“强衔接元素集”(strongly connected components, SCC)包括一个相关的可移动粒子集。

在这里刺进图片描绘

如上图所示,每个SCC中包括两种粒子,第一种是至少包括一个近邻“不行移动”粒子(上图中的黄色点M1),第二种是近邻点中不包括“不行移动”粒子(上图中的赤色点M2)。履行进程中运用外部的黄色点为“初始种子点”,经过“广度优先”的方法逐渐向内遍历SCC。如上图中的从1-18点,完成了从边际逐渐向内部接近处理进程,而不受扫描方向的影响。

4. 算法运用

Cloth Simulation Filter现已在各种点云处理软件,以及MATLAB中都能够直接进行运用,对用户操作友爱,十分便利。

各种运用方法的超链接如下:
MATLAB中mex插件
cloud compare 中CSF滤波
dll与lib下载
以及源码都在github上开源了

到此这篇关于点云地上点滤波(Cloth Simulation Filter, CSF)"布料"滤波算法详解的文章就介绍到这了,更多相关python 点云地上点滤波内容请查找脚本之家曾经的文章或持续阅读下面的相关文章期望我们今后多多支撑脚本之家!

  • 49052

    网站

  • 0

    小程序

  • 97407

    文章

  • 113

    会员

赶快注册账号,推广您的网站吧!