李 特
(中国铁路设计集团有限公司,天津 300251)
随着无人机、惯性导航和激光测距技术的快速发展,机载激光雷达技术在铁路勘察设计项目中的应用越来越广泛[1]。机载雷达是一种主动遥感技术,不受时间、气候的影响,可以全天候获取地面的三维信息[2]。利用机载LiDAR获取的三维点云数据,其点云密度较高,可以建立高精度的DEM模型并切绘出铁路的横断面。在建立DEM模型时,需要对原始的点云进行滤波(区分地面点和非地面点)。
目前,点云滤波算法大致分为基于坡度的点云滤波、基于数学形态学的点云滤波和基于表面的滤波[3-4]。基于坡度的滤波算法是假设地形坡度在某一地域范围内逐渐变化,而建筑或树木与地面之间的坡度变化相对较大,基于这一假设,通过比较LiDAR点与其相邻点的斜率区分地面点和非地面点,但此方法难以在复杂地形中发挥良好的作用[5-6]。数学形态学滤波算法是利用数学形态学思想去除非地面点[7-8],一般会设置合适的滤波窗口。若滤波窗口过大则会平滑掉地形细节,如山脊、悬崖等,窗口过小则会保留大的建筑物点,故需要通过丰富的先验知识定义合适的窗口尺寸[9]。基于表面的s波方法是通过迭代来筛选地面点,这种滤波方法的核心是需要建立一个裸露地表面。典型代表有自适应不规则三角网滤波(Triangulated Irregular Network,TIN)算法[10],但该算法需要设置整个区域的阈值参数,故难以在折线和陡峭地形附近检测到地面点,Bayram E[11]等介绍一种基于曲面的滤波方法,引入加权最小二乘插值来识别地面点,结果表明该方法在平坦地形上效果良好,但在坡度陡、变异性大的地形上可靠性较差。
综上所述,传统的滤波算法在特定区域的运用较为成功,但其性能会随着地形特征不同而变化,在复杂的城市景观地区和地形陡峭的山区,滤波结果具有争议性[12]。此外,以上滤波方法的实现还需要合适的参数才能达到满意的效果,而这些参数由于区域地形特征的不同而很难确定。
为了解决上述问题,介绍一种布料模拟滤波算法(cloth simulation filter,CSF)[13],该算法以一种“自下而上”的策略逼近地面点,参数较少。张昌赛等利用不同坡度、点云密度、不同覆盖物测试数据对布料模拟滤波算法进行适用性分析,结果表明其误差率小,效率高[14-15]。相较于现有的滤波算法,CSF滤波方法具有一定优势[16]:①人为设置参数少,且参数易于理解和设置,不需要过多经验知识;②在平坦、山区和建筑物密集的不同地形场景中,其参数一致性较好。
布料模拟是计算机图形学的专业术语,是一种基于物理过程的假设模拟。其思想是假设一块布随着重力自由下落,如果布料极其柔软可以贴在地面上,则布料的最终形状则是数字表面模型((Digital Surface Model,DSM)。基于此思想,若将获取的点云数据进行倒置,将布料赋予刚性特点,则布料的最终形状就是DEM(见图1)。
图1 布料模拟算法
为了从原始点云中提取地面点,模拟布料结构中会有许多节点,程序通过分析粒子节点与邻近LiDAR点云相应点之间的相互作用,确定出最符合真实地形的节点分布位置,进而确定布料最终形状,从而可以将原始点云区分为地面点和非地面点。
在程序仿真布料模拟过程中,图中每一个粒子均带有质量信息,粒子之间相互连接的网络模型称为Mass-Spring模型(见图2)。粒子在三维空间中的分布位置和形状决定了布的形状,粒子之间的互连网络遵循一定力的性质特点,相当于在粒子之间安置了弹簧。为了模拟布的形状,可设置优化函数对其进行求解。
图2 网络模型结构
式中,X表示t时刻粒子的位置,Fext(X,t)表示粒子运动时受到的外力,Fint(X,t)表示粒子在位置X和时间t时刻的内力(相互连接的力)。内部力和外部力随着时间t变化而变化,因而可以通过数值积分来求解。
算法详细步骤如图3所示。
图3 算法流程
(1)对点云进行预处理,去除原始点云中的噪声和异常值。将预处理后的点云进行翻转,将末次回波点置于上方。
(2)将空间中的粒子位置和LiDAR点云投影到同一水平面,根据设置的超参数空间分辨率GR(相邻粒子之间的距离)确定粒子个数Np,并找到每个网格中离粒子最近的LiDAR点(命名为CP点),布料模拟过程中各个粒子的初始值Xinit一般为最高点以上,后续迭代会进行不断纠正。
(3)定义一个IHV(交点高度值),即CP点在投影前的高度值,该值会限制粒子移动的范围。当粒子移动到IHV时,表明已经到达临界最低位置,粒子状态变为停止移动。在优化过程中,每一次迭代都会将粒子当前高度值CHV(粒子迭代当前高度值)与IHV进行比较。当CHV等于或者低于IHV时,粒子被认为回到IHV位置,并标记为不可移动点。
(4)在获取所有粒子的三维位置后,可以得到真实地形的近似值,通过计算粒子与原始激光点Xp之间的距离和人为设置的参数阈值(thread),实现将原始LiDAR点云分为地面点和非地面点(低于或等于阈值为地面点,高于阈值为非地面点)。
在算法研究基础上,采用基于PCL库C++语言编程,研发点云滤波小插件,并利用Qt框架搭建图形界面(见图4)。
图4 算法实现界面
整个布料模拟过程中,除了算法的自动约束条件外,还需人为指定5个超参数。①布料硬度:控制粒子节点随重力下降的幅度;②时间步:控制着粒子移动的位移;③网格的分辨率GR:代表布料中相邻粒子之间的距离,一般设置为2 m左右(数值过小则迭代计算慢);④最大迭代次数iteration:表示算法迭代终止的临界值;⑤分类阈值thread:表示将点云分为地面点和非地面点的阈值(根据不同场景而定,一般设置为0.5 m)。针对陡坡区域,由于粒子位于实际点云位置上方,其滤波易出现错误点。为了解决此问题,对于陡坡区域,应进一步限制粒子间的移动关系,平滑陡坡的边缘,达到与实际地形相符的效果。
与遥感影像分类类似,点云滤波结果也需要定量评价,因而需要建立真实的标签数据作为groundtruth。通过手动分类建立测试数据集,即测试数据已经明确地面点和非地面点,将其滤波结果与groundtruth作比较,算出评价因子。评价体系采用国际摄影测量与遥感学会的交叉表评价因子(见表1)。
表1 交叉表
为了评价滤波结果可靠性,以总误差作为指标,表示分类结果与groundtruth不一致的概率值,有
(2)
同时,与遥感影像分类结果评价类似,利用kappa系数作为检验方法,kappa系数越高,表明滤波效果越好,有
(3)
选用两块不同地形场景数据a和b作为测试数据,a为地形起伏大的山区,有陡坎且植被覆盖茂盛;b为建筑物密集的城区,地势较平坦,有植被和高大建筑物。这些测试数据均已进行人工精细分类,每个三维坐标点均有属性类别信息(见图5、表2)。
图5 测试数据
表2 测试数据集特征(pt表示points)
为了测试CSF点云滤波算法适用性,将测试数据a和b作为实验验证数据,通过比较滤波后结果和真实验证数据的总误差、kappa系数评价算法的可靠性。同时,为了比较不同算法的差异性,实验还将CSF滤波算法与传统的基于数学形态学滤波方法、基于TIN滤波方法进行对比分析,分析测试数据在不同滤波方法上的滤波总误差kappa系数。
在一些陡坡区域,形态学滤波容易将地面点归类为低植被点;在坡度较大地区地面点极其稀疏,在生成DEM模型时,容易将坡度细节区域忽略(见图6(a))。当真实场景为过渡缓坡时,通过数学形态学滤波方法建立的DEM模型表现为陡坎(见图7(a))。基于TIN的点云滤波算法其搜索的地面点不连续,点与点之间空洞比较大,在靠近坡底的区域地面点较少,因而建立的DEM模型在坡度区域易出现“尖刺”现象(见图7(b))。CSF滤波算法在坡度较陡的区域,过滤出的地面点较多且连续,建立的DEM三角网模型能够充分利用这些地面点,因而其模型较为接近真实场景。
在植被茂盛地区,自上而下的地面点搜索策略容易受植被或建筑物点的影响,而CSF是自下而上的地面点滤波算法,因而搜索地面点较为有利。在植被和建筑物混合区域,形态学滤波算法和基于TIN的滤波算法均能搜索到地面点,但搜到的地面点较稀疏,并夹杂低植被点(见图6(b))。相比而言,CSF算法搜索到的地面点分布更为合理。
图6 基于形态学、基于TIN和基于CSF滤波后剖面
图7 DEM模型
对比分析数学形态学滤波、基于TIN和CSF滤波算法在不同场景下的总误差和kappa系数。研究结果表明(见表3、表4),CSF滤波算法在测试数据下要优于传统的点云滤波算法。针对数据a,CSF相比形态学和TIN,总误差分别减小了15.79%、5.91%,kappa系数分别提高了14.41%、9.09%;针对数据b,其总误差分别减小了10.82%、4.18%,kappa系数分别提高了11.55%、4.38%。CSF滤波算法总误差低于11%,表明滤波结果与手动分类建立的参考数据一致性较为良好(默认手动分类结果正确),其kappa系数优于92%,表明滤波效果良好。
表3 总误差 %
表4 kappa系数 %
CSF算法处理效率与分辨率GR、迭代次数iteration、粒子移动时间步长有关。一般而言,在地形较复杂的山区,粒子到达局部最优位置的迭代次数有所增加,其处理效率会有所下降。本次采用的测试数据范围较小,3种算法在处理效率上未见明显差别。
(1)布料模拟的点云滤波方法是通过模拟布料贴近地面的物理过程,以不断迭代来获取原始LiDAR点云的地面点。相较于传统的点云滤波算法,其参数少,且易于设置。在不同的地形场景下,参数的变化不大,滤波效果稳定。
(2)在一些植被茂密且地形相对复杂的区域,坡度变化是影响点云滤波的重要因素,一般的算法在滤波过程中往往难以获取到连续地面点,造成大量地面点出现空洞现象,其后续建立的DEM模型易出现“尖刺”现象或忽略陡坡细节。CSF算法通过布料模拟过程搜寻地面点,并经坡度后处理策略可以解决此类问题。
(3)为了进一步提高CSF算法的性能,在后续研究中将深化研究CSF参数自适应化。