顾及相邻点序号差的路面点云自动提取方法研究
2022-01-20马茜芮沈月千黄腾
马茜芮 沈月千 黄腾
0 引言
精确道路三维信息在高精度地图构建、道路信息维护及城市三维可视化等方面具有重要作用[1-2].传统道路信息的获取主要通过人工测量进行,作业周期长、效率低[3],存在一定交通安全隐患,且获取的数据主要为道路二维信息[4],已经无法满足城市建设和管理的需要[5].而车载激光扫描系统的出现为道路三维信息的获取提供了一种新的途径,具有速度快、精度高、密度大、非接触、灵活性强等优点[6-7].然而,由于道路环境复杂以及遮挡等因素,如何从车载点云中快速、准确地提取道路点云依然是一个亟待深入研究的问题.
现有研究中,文献[8]将车载点云数据利用统计学方法生成高度直方图,通过设置高度阈值提取路面点云;文献[9]在文献[8]的基础上,根据道路先验信息对道路提取结果进行优化.此类方法将三维点云信息降维表示,丢失其特有的空间分布信息,同时提取结果依赖于高度阈值的设定,只适用于简单规则的道路环境.文献[10]根据路面法向量的分布特征,利用迭代模糊聚类算法对路面点云进行提取;文献[11]利用高度差异对点云数据进行KNN聚类,并根据路坎参数对提取结果进行优化.此类算法运行效率较低且容易出现分割问题.文献[12]使用深度学习方法对图像进行语义分割,并将语义化的图像与点云数据融合进行粗分类,之后通过霍夫变换和区域生长方法对点云数据进行细分类,最终精确提取道路点云,但该类方法的语义分割结果受二三维数据融合质量影响较大;文献[13]构造一种端到端深度学习网络,能够对城市大场景点云数据进行高效准确的语义标识,但道路等实体目标的提取效果还需要进一步验证;文献[14]以扫描线为单位对点云数据进行处理,首先利用移动窗口高差对扫描线进行滤波,得到道路区域点云,然后根据高差、点密度和累计坡度三个特征指标进行路坎点的提取,最后通过优化和跟踪手段提取道路边界;文献[15]在文献[14]的基础上建立双向扫描线索引,根据扫描线上不同地物目标的空间分布特征,采用移动动态窗口分类法提取路面和路边点云.此类方法往往需要顾及多个特征因子,且要求道路具有较为规则的路坎,而在现实情况中,有些道路两侧是草地,不存在路坎,以往利用路坎特征的道路提取方法不再适用.针对上述问题,本文引入相邻点序号差这一特征,提出一种融合移动窗口高差和相邻点序号差的道路自动提取方法,不仅实现了有规则路坎的结构化道路的完整、准确的提取,也实现了路边为草地(本文统称为伪路坎)的非结构化道路完整、准确的提取.
1 路面点云自动提取方法
本文所提方法的具体流程如图1所示.
图1 路面点云提取流程Fig.1 Road surface point cloud extraction process
1.1 扫描线提取
首先对点云数据进行布料模拟滤波[16](Cloth Simulation Filtering,CSF)处理,滤除建筑物、树木、车辆等非地面点云,得到主要包含道路、路边草地以及周围人行道等连续分布且高程变化不大的地面点云.然后基于滤波后的点云数据提取扫描线,扫描线的提取方法包括基于扫描角度差、基于GPS时间差、基于相邻点间距跳跃等[17].若车载点云数据中记录了扫描角度和GPS时间,则可用前两种方法,否则可以使用第三种方法.由于本文所用的点云数据没有扫描角度和GPS时间信息,故借鉴第三种方法(基于相邻点间距跳跃)的思想,设计了本文扫描线的提取方法.
车载激光扫描点云的每个数据点是按激光脚点返回顺序连续排列的,相邻两个点云序号相差1,当扫描至天空视场角时无激光脚点返回,这样会导致前一条扫描线的最后一点与后一条扫描线的第一点之间的距离产生显著突变,记该突变距离为Ld.设相邻两个点云的平面坐标分别为Pi-1(Xi-1,Yi-1)和Pi(Xi,Yi),下标i为点云的返回序号,则相邻点间平面距离:
通过设置阈值Ld,求出满足Li>Ld的点对序号(k,k+1)(其中k为前一条扫描线的最后一点序号,k+1为后一条扫描线的第一点序号),最后加入原始点云首点序号1和末点序号N,这样就能得到每条扫描线上的首末点对序号.比如若只有两条扫描线,则第一条扫描线的首末点对序号为(1,k),最后一条扫描线的首末点对序号为(k+1,N).最后通过搜索点对序号之间的点云进而提取每条扫描线.考虑到原始点云数据由于分割可能存在不完整的扫描路径,不利于后续道路的提取研究,同时一些噪声点的干扰可能导致某些扫描线中只包含少量杂点,因此通过统计各条扫描线上的点数分布情况,将集中分布的扫描线点数最小值和最大值分别作为阈值边界num1和num2,删除点数在阈值边界范围之外的扫描线,保留点数在阈值边界范围以内的扫描线,从而得到最终的扫描线点云.
1.2 道路边界点提取
以上一节提取的单条扫描线为单位,首先利用移动窗口高差法识别出路坎点和伪路坎点,然后根据相邻点序号差的最大值提取出道路边界点.具体步骤如下:
1)路坎点和伪路坎点的提取
首先根据道路的实际情况确定路坎或伪路坎提取阈值hcurb和移动窗口点数n.对于一般路面,扫描线上局部路面点云高差hpavement较小,将略大于局部路面点云高差hpavement的值作为伪路坎提取阈值hcurb;而窗口点数n的确定则要同时考虑路面点云和伪路坎点云,使得n个点云确定的窗口高差h(窗口内高程最高点与最低点之差)既能保护路面点云不被识别出来,同时能够将与路面有显著高差的路坎点或伪路坎点云提取出来.让窗口在扫描线上移动,求取每个窗口高差大小,将窗口中满足h>hcurb的第一点序号进行存储.对每条扫描线都进行上述处理,得到所有路坎点或伪路坎点的索引号,进而提取得到所有的路坎点或伪路坎点.
2)道路边界点的提取
路坎点和伪路坎点提取之后,考虑路坎或伪路坎的空间分布特征和扫描线上点云排列的顺序性,求出同一条扫描线上的相邻路坎点或伪路坎点的序号之差,将差值最大的点对提取出来.因移动窗口在扫描线上单向滑动,且取移动窗口中满足h>hcurb的第一点作为路坎点或伪路坎点,故需要结合路坎或伪路坎处相邻扫描点的平均高差,确定上述提取出的点对序号分别需要增加的点数m1和m2,然后将第一点对应的序号加上m1,将第二点对应的序号和m2,得到新的点对,最后将所得新的点对作为最终的道路边界点.比如若路坎或伪路坎处相邻扫描点平均高差为10 cm,窗口内点数n为5个,路坎或伪路坎提取阈值hcurb为3 cm,则此处路坎或伪路坎上只要有的一个点云在移动窗口内,就能够满足提取条件,此时m1取1,m2取4,即点对中第一点序号加上1,第二点序号加上4.对每条扫描线都进行上述处理,得到所有路边点的索引号,进而提取得到所有的道路边界点.
图2 原始点云数据Fig.2 Original point clouds of data 1 (a) and data 2 (b)
1.3 道路边界拟合
提取的道路边界点是一些离散的点,需要对其进行矢量拟合.因车辆等地物的遮挡以及草地边缘的不规则性,这些边界点中难免存在噪声.考虑RANSAC(RANdom SAmple Consensus,随机抽样一致)算法能够在一组包含噪声点的数据集中通过迭代计算自适应寻找给定模型的最优解,将数据点分为内点和外点,只对允许误差范围内的内点进行拟合,故使用该算法对提取的道路边界点进行拟合,求得左右边界的平面拟合方程.
1.4 道路提取
上一节已经获得道路边界的拟合方程,将它们分别记为L(x,y)=0和R(x,y)=0,其中L(x,y)=0为道路左边界一般式方程,R(x,y)=0为道路右边界一般式方程.路面点云位于左右边界方程所确定的曲线(直线)之间,根据线性规划原理,若满足式(1)则提取出路面点云.但此时提取的路面点云还包含车辆下部和车轮等噪声点,最后再次利用布料模拟滤波算法,将这些高出路面的噪声点去除,从而得到最终的路面点云.
(1)
2 实验结果及分析
2.1 实验数据
本文利用MATLAB编程语言实现了第一章中的算法,采用车载移动测量系统提供的两组道路数据进行实验.数据1是有规则路坎的结构化道路,路面平均点云密度1 000个/m2,扫描线上平均点间距3 cm,道路长约80 m,路宽约10 m,包含树木、路灯、车辆等干扰目标,路面有裂纹;数据2是路边为草地的非结构化道路,路面平均点云密度300个/m2,扫描线上平均点间距6 cm,道路长约40 m,路宽约23 m,包含建筑物、树木、电线杆、横杆等干扰目标,路面较为平整光滑.实验数据如图2所示.
2.2 实验过程和结果
首先对原始点云数据进行布料模拟滤波,设置布料网格尺寸为2 cm,最大迭代次数为500,分类阈值为0.5 m,将建筑物、电线杆、树木、路灯和车辆等较高的地物滤除,保留高程变化不大的道路区域,滤波后的结果如图3所示.
图3 滤波后的点云Fig.3 Point clouds filtered from data 1 (a) and data 2(b)
接着,基于滤波后的道路区域点云数据根据上文1.1节所述算法进行扫描线提取.数据1道路平均宽度为10 m,设置阈值Ld为15 m;数据2道路平均宽度为23 m,设置阈值Ld为25 m.考虑实验点云中含有一部分不完整的扫描路径和一些噪声点,对各条扫描线所含点数进行统计,确定单条扫描线点数阈值边界,直方图分布如图4所示.由直方图可知,数据1中单条扫描线点数集中在270~360之间,数据2中单条扫描线点数集中在450~570之间,故数据1中阈值边界num1和num2分别取270和360,数据2中阈值边界num1和num2分别取450和570.将数据1中点数小于270和大于360的扫描线删除,将数据2中点数小于450和大于570的扫描线删除,最终提取的扫描线如图5所示.为了便于观察,数据1每隔50条扫描线抽取一条用不同颜色进行显示,数据2每隔20条扫描线抽取一条用不同颜色进行显示.
然后,基于提取的扫描线点云根据上文1.2节所述算法进行道路边界点提取.根据道路实际情况将路坎和伪路坎最低高度阈值hcurb设为3 cm.为了保护路面点云不被识别出来,同时较好地识别出伪路坎点云,本文取窗口点数n值为5,进而提取出路坎点和伪路坎点云.在此基础上,求每条扫描线上相邻两个路坎点或者伪路坎点的序号之差,得到序号差最大的点对.由于数据1路坎处相邻点平均高差约为5 cm,移动窗口包含路坎上1个点与路面上4个点即可将路坎点识别出,故将点对第一点对应的序号增加1,第二点对应的序号增加4; 同理,由于数据2伪路坎处相邻点平均高差约为2 cm,移动窗口包含伪路坎上2个点与路面上3个点即可将路坎点识别出,故将点对第一点对应的序号增加2,第二点对应的序号增加3,将所得新的点对提取出来作为道路边界点,结果如图6所示.
图4 各条扫描线所含点数分布直方图Fig.4 Histogram of the distribution of points contained in each scan line from data 1 (a) and data 2 (b)
图5 扫描线点云Fig.5 Scan line point clouds from data 1 (a) and data 2 (b)
因两组试验数据均为直线道路,且长度不超过100 m,故将其两条边界当作直线处理.用RANSAC算法对道路边界点进行平面拟合,得到左右道路边界的拟合方程,式(2)和式(3)为数据1中两条道路边界的拟合方程,式(4)和式(5)为数据2中两条道路边界的拟合方程.根据线性规划原理,数据1中路面点云由式(2)所确定的直线与式(3)所确定的直线之间的点云组成,数据2中路面点云由式(4)所确定的直线与式(5)所确定的直线之间的点云组成,故满足式(6)的点云即为数据1中的路面点云,满足式(7)的点云即为数据2中的路面点云.最后利用布料模拟滤波算法对提取的路面点云进行处理,设置布料网格尺寸为2 cm,最大迭代次数为500,分类阈值为0.1 m,将高出地面的车辆下部和轮胎等噪声点滤除,得到最终的道路点云,结果如图7中红色区域所示.
-0.107 4x-y+12.181 6=0,
(2)
-0.007 9x-y+24.076 3=0,
(3)
-9.403 1x-y+214.725 9=0,
(4)
-16.162 8x-y+743.851 7=0,
(5)
(6)
(7)
2.3 实验结果分析
首先从定性角度进行分析,将本文算法提取的路面与滤波后点云进行叠加显示,观察两组数据的提取效果,分别如图8和图9所示.由图8可知本文算法对于有规则路坎的结构化道路路面可以取得很好的提取效果,提取的路面边界与实际边界位置偏差非常小.由图9可知本文算法对于路边为草地的非结构化道路也可以取得不错的提取效果.因数据2中道路两侧不是规则路坎,而是高度不规则的草地,故伪路坎处相邻点高差差异较大,导致不同扫描线上的移动窗口在此处识别的伪路坎点个数不同,使得一些伪路坎点被错误识别成路面点并被提取出来.另外,因为道路右边界有一段不是草地,而是楼房与道路连接处的平地(如图10黄色方框中所示),此处识别出来的点是横杆上的点,而非道路边界点,因此右边界有一处平面没有被当成路面提取出来是正确的,一定程度上验证了RANSAC算法在道路边界拟合上的可靠性.
图6 提取的道路边界点Fig.6 Road boundary points extracted from data 1 (a) and data 2 (b)
图7 提取的路面点云(红色区域)Fig.7 Road surface (red area) point clouds extracted from data 1 (a) and data 2 (b)
图8 数据1提取的路面(红色区域)与滤波点云叠加图及其不同角度放大图Fig.8 Overlay of the extracted road surface (red area) and the filtered point cloud of data 1 and its enlargements at different angles
图9 数据2提取的路面(红色区域)与滤波点云叠加图及其不同角度放大图Fig.9 Overlay of the extracted road surface (red area) and the filtered point cloud of data 2 and its enlargements at different angles
图10 边界非草地路段Fig.10 Non-grass section of the border
然后进行定量分析,借鉴文献[15]的方法,采用准确率(Correctness)、完整率(Completeness)和提取质量(Quality)对本文方法的提取效果进行综合评价.完整率的计算公式为Completeness=TP/(TP+FN),正确率的计算公式为Correctness=TP/(TP+FP),提取质量的计算公式为Quality=TP/(TP+FP+FN),其中TP表示正确提取的路面点个数,FP表示错误提取的路面点个数(即不是路面点却被当成路面点提取出来),FN表示漏提取的路面点个数,统计结果如表1所示.由表1可知,对于两组数据本文算法提取的路面完整率、准确率和提取质量都在99%以上,算法处理时间分别为2.23 min和1.02 min.
可见,本文算法对结构化道路路面和非结构化道路路面的提取均能够取得很好的效果.
3 结束语
本文以车载激光扫描点云数据为研究对象,提出一种融合移动窗口高差和相邻点序号差的路面自动提取方法.通过将提取结果与滤波后点云进行叠加显示,定性评价路面的提取效果.定量评价结构化道路路面和非结构化道路路面提取的完整率、正确率和质量均在99%以上,算法运行时间分别为2.23 min和1.02 min.定性和定量实验结果表明,本文算法能够同时实现结构化道路路面点云和非结构化道路路面点云的完整、准确提取,解决了路边为草地的非结构化道路自动提取问题.
表1 路面提取结果定量评价