魏荣琨,马 荣,赵龙庆,周 沫,魏明洋
(西南林业大学机械与交通学院,昆明 650224)
随着科学技术的发展,汽车已成为生活中必不可少的交通工具。为此国内外科研人员以及各大高校开始以提高汽车的安全性、舒适性、稳定性等性能为目的,以减少环境污染,交通事故等不利影响带来的财产损失为研究目标,对无人驾驶汽车进行研发。道路边界准确可靠的检测可用于确定自动驾驶车辆可行驶区域,并为智能车路径规划系统提供关键信息。因此,道路边界检测成为近年来的研究热点之一。
在选取可行驶区域的实际操作过程中,发现不同的道路边界检测算法所达到的效果存在较大差异,因此选择一个合适的道路边界检测算法是划分可行驶区域必不可少的前提条件。
目前,结构化道路边界的检测主要有两种方法:基于道路几何特征与基于图像分割的方法。
文献[1]提出一种采用直方图均衡和Otsu 二值分割增强道路边界特征,最终利用分空间的Hough 变换方法实现道路边界检测的方法;文献[2]提出了一种道路边界检测方法,首先提取道路图像的Lab 色度空间中的a与b特征以及Hue特征分别构建最近邻分类器,最终使用软投票的方法将3 个分类器的结果进行融合,输出最终结果;文献[3-4]实现道路边界检测的思路是首先将图像进行Canny 边缘检测,之后通过Hough 直线检测从而检测出道路边界;文献[5]使用二维Otsu 算法分割对HSV色度提取道路边界点,再选择最小二乘法进行边界点拟合操作。
基于图像分割方法易受光照环境变化的影响,而基于几何特征方法抗干扰性强,检测精度高,是目前主要的研究方向。用于道路边界检测的传感器主要有视觉被动传感器和雷达主动传感器。视觉被动传感器包括单目视觉、立体视觉;雷达主动传感器包括二维、三维激光雷达。二维激光雷达主要应用在室内场景,如扫地机器人;三维激光雷达主要应用于室外场景,比如自动驾驶场景感知等。
在基于激光雷达的检测方法中,又可以分为对逐层激光雷达数据进行数据检测、对感兴趣区域内全局激光雷达数据点检测两种主要方法。比如文献[6-11]其主要思路是通过对每层激光雷达数据进行检测,从而判断出道路边界点,之后通过拟合筛选出可行驶区域;而文献[12-15]却给出了不同的思路:从全局的角度对空间中的激光雷达点云进行整体处理,从而筛选出道路边界,最终确定可行驶区域。
文献[6]提出的算法是首先对激光雷达数据点云进行分层与滤波,然后人为设定道路边缘的高度阈值,提取各层的左右边界点,而后利用Ransac算法对左右边界点集进行直线拟合,最后用卡尔曼滤波算法进行跟踪。文献[7]提出的算法首先利用局部均值变点统计对激光雷达数据点中检测发生突变的z 坐标值,并提取所对应的(x,y)点;之后通过分段双阈值对提取的道路边界点数据滤波处理;最后利用最小二乘法拟合道路边界点数据。文献[8]基于单线激光雷达的路面所提出的可行区域提取方法,首先用相邻扫描点间的欧氏距离对点聚类,然后对聚类产生的每一类激光雷达数据点进行平滑滤波,再利用斜率将数据点分割成多段近似直线段,用最小二乘法对线段进行拟合,最后从多条线段中选取可行路面。文献[9]与文献[7]的思路相同,都是基于道路边沿存在一定高程跳变的特征,利用非参数变点统计,对激光雷达数据点中z 坐标值进行检测,若z 值发生突变,则提取对应的(x,y)点;之后利用最大期望(EM)聚类算法对候选道路边界点进行聚类去噪,最后利用最小二乘法拟合道路边界。文献[10]首先对激光雷达数据点的高度信号进行滤波处理,以识别道路候选区域;将地面高度的方差作为一个特征进行特征提取,判断候选区域是否为道路段。然后将激光雷达数据点通过自上向下视图下的投影,与简单道路模型进行比较,确定候选区域是否为具有路边的路段。
文献[7,9-10]在判断每层激光雷达数据点是否为道路边界的方法和思路大致相同,与文献[6]手动设置道路边界高度阈值的方法相比有很大的先进性;文献[9]在道路边界拟合的方法上比文献[6-7]更加先进,由于其采用高阶最小二乘拟合法,能够适用于更多的场景,而直线属于特殊的曲线,所以用直线来拟合道路边界,将会造成更大的误差。
文献[12]与文献[15]拥有相同的思路:首先将RGB图像通过SLIC 超像素表征,之后将激光点投影在RGB图像上,通过对每个超像素块上的激光雷达点进行Delaunay三角剖分,将某个激光雷达点所有相邻三角形的法向量的均值作为该的法向量,并判断该点的法向量与地面夹角的关系,来判断该点是否为障碍物点;以图像的中间底部的像素点为起始点,向两边延伸,若遇到障碍物边界,则停止延伸最终得到可行驶区域。文献[13]的主要思路是将汽车前方40 m,左右两侧各20 m的区域定义为感兴趣区域,将环境地图用均匀的网格表示,每个单元格表示环境中该位置存在障碍物的可能性,计算每个网格内的点云密度,每个格的密度数等于该网格内激光雷达数据点数;不考虑z值,只考虑x和y分量,将三维立体空间环境转化为二维图像,其每个像素块的坐标是对应网格在感兴趣区域内的位置,其每个像素值的大小是对应网格内激光雷达数据点的个数,之后通过图像处理库中的边缘检测算法进行边缘检测操作。文献[14]首先限定感兴趣区域为车前50 m 以及左右各10 m的区域,通过将激光雷达的点云数据进行网格化处理,求出每个网格中最高数据点与最低数据点之间的高度差,并针对道路边缘的高度特征,根据道路边界的高度值对网格数据进行阈值处理;再由近及远逐个提取左右道路边缘,利用最小二乘法对左右道路边缘网格进行曲线拟合平滑处理,得到左右道路边缘。
文献[13]与文献[14]相比有很大的先进性,因为在未知区域中不能确定是否存在道路边界,也不能确定道路边界的高度差具体是多少。文献[12]和[15]所提出的方法与文献[13]相比有很大的先进性,采用了激光雷达与视觉图像融合的方法,使其具有更高的鲁棒性。
从以上文献及其处理方法上可以看出,对逐层激光雷达数据进行检测的方法主要应用在线束数量比较少的激光雷达传感器上,比如文献[8]中的1 线激光雷达、文献[6]中的8 线束激光雷达、文献[7,9]中的32 线束激光雷达;而对感兴趣区域内全局激光雷达数据点检测的方法主要应用在线束数量较多的激光雷达传感器上,比如文献[12,14-15]中的使用的64 线束激光雷达。
线束数量较少的激光雷达传感器所采用的对逐层激光雷达数据进行检测的方法,同样可以应用到线束数量较高的激光雷达传感器上;但是线束数量较多的激光雷达传感器所采用的对感兴趣区域内全局激光雷达数据点进行检测的方法,是无法应用到线束数量较少的激光雷达传感器上的。如果使用线束数量较低的激光雷达传感器对感兴趣区域内全局激光雷达数据点进行检测,就需要通过运动的方式累计统计空间中的激光雷达数据点,如文献[13]中使用的是4 线束激光雷达传感器,在车辆速度大于或等于50 km/h,算法性能基本保持不变,但是当车辆完全停止,导致路面上激光雷达数据点高度集中,没有激光雷达数据点的积累,因此无法重建道路信息。
本文通过对比研究针对道路边界所提出的激光雷达检测方法,分析不同检测方法之间的特点与不足,最终确定选用基于梯度滤波器来实现检测道路左右边界。
通过最终的对比实验可以看出,基于梯度滤波器的道路边界检测算法相较于其他检测算法而言有更高的准确性和实用性。
读取激光雷达的某一帧数据,将激光雷达数据点按式(1)中所给出的x范围与y范围进行截取。
截取之后的激光雷达数据点效果如图1 所示。在空间坐标系下,已知激光点云是由单束窄带激光器旋转一周产生,效果如图2 所示。
图1 感兴趣区域
图2 单束窄带激光器旋转
在激光雷达坐标系(图3)下,令空间中某点与雷达坐标系原点之间的连线为l,令xoy平面为S,令直线l与平面S之间的夹角为θ,则:
图3 激光雷达坐标
对其中θ=-15°的激光点云数据进行提取,其效果如图4 所示。
图4 夹角为-15°的点云效果
这里首先选取俯角为-15°的激光雷达数据点,并构建以Y 方向距离值为X 轴,激光数据点Z 方向高度值为Y 轴的折线关系如图5 所示。
图5 距离值与高度值关系
为了筛选出道路边缘点,文献[14]提出一种算法,首先对激光雷达点云数据进行网格化处理,求出每个网格中的高度差,通过限制每个网格中高度差阈值,提取出左右道路边缘,最后利用最小二乘法对左右道路边缘网格进行曲线拟合,得到左右道路边缘。
根据论文中所提到的网格化方法,并根据16 线程激光雷达点云数据的实际情况,将图5 中的X 轴分成6 个区间,计算每个区间中最大Z 值与最小Z 值的高度差,记为ΔZ。统计ΔZmax所处的X区间,并求出此区间的中值,记为Ymid。
对激光雷达扫描俯角为-15°的激光雷达数据点,计算并筛选出满足式(3)的激光数据点,记为(p1,p2,…,pn)。计算出这些数据点的作为某一层某一侧的道路边缘点。
将激光雷达坐标系中X方向的正方向记为前向,将Y方向的正方向记为左侧,将Y方向的负方向记为右侧。将左侧路沿上的候选点记为,将右侧路沿上的候选点记为。同理对激光雷达扫描俯角为-13°、-11°、-9°、-7°、-5°的激光雷达数据进行处理,计算出左侧的候选点为,,,,,,),右侧的候选点为(,,,,,,),通过最小二乘法对道路边缘进行拟合。
试验结果如图6 所示,通过将激光雷达数据点网格化划分,并根据高度变化来选取道路边缘点的方法,精度低,效果差。
图6 基于高度差的道路边缘拟合
文献[13]基于点云密度梯度的原理,通过将点云扁平化到2D,并使用传统的计算机视觉梯度和边缘检测技术来实现的,这也提高了处理速度。其理论依据是,将3D激光雷达从上而下投影到2D 平面上时,累积在垂直平面上的激光雷达点投影到2D 平面上的点的密度,将比水平面上的激光雷达点投影到2D 平面上的点的密度更加集中。垂直面和水平面的点浓度之间的差异随着激光雷达扫描俯角|α|的增大而减小,其中|α|值越大,垂直面上的浓度越高,同时保持水平面上点的浓度不变。
采用密度栅格的方法进行道路边缘。首先将感兴趣区域内的激光雷达数据点网格化处理,统计每个网格单元的激光点数量,并将激光点的数量作为图像的像素值,构建出自上而下的俯视2D图像,如图7 所示。
图7 激光雷达数据转化为像素图像
对像素图像使用图像处理中的边缘检测算子,每个算子的检测结果如图8所示。从图中可以看到,越靠近车辆的激光雷达数据,边缘检测的效果越明显,越远离车辆的激光雷达数据,边缘检测的效果越差。因为在激光雷达传感器在测量频率和扫描频率不变的情况下,随着激光雷达扫描俯角增大,两个相邻的激光雷达数据点之间的距离也随之增大,导致单位面积内的激光雷达点的密度随之降低。文献[13]提出的方法适合应用车辆处于运动状态下的道路边缘检测,不适用于车速较慢或静止车辆的道路边缘检测。由于本次实验处于静止状态下,因此没有得到较好的结果,此外,本文所采用的激光雷达传感器为16 线程,每一层的激光雷达数据之间的间隔相较参考文献采用的激光雷达传感器每层激光雷达数据之间的间隔比较大。不能很好地根据道路边缘激光雷达点的数量,分离出道路边缘。
图8 图像边缘检测算子效果
文献[10]提出了一种基于对高程信号进行滤波处理识别道路候选区域的检测方法,为本文提供了很好的思路。首先,将感兴趣区域中的每层激光雷达数据作为输入信号进行局部极值信号检测滤波器卷积;然后,将梯度滤波器输出信号中的局部极值峰值识别为输入信号中的局部极大点和局部极小点。峰值响应幅度需要大于一个固定的阈值,以减少噪声。最后,将局部极小值点(左侧)和局部极大值点(右侧)分别对应道路左侧边界与道路右侧边界,如图9 所示。图9 是对激光雷达扫描俯角为-15°的激光雷达数据点的处理过程,同理对激光雷达扫描俯角为-13°、-11°、-9°、-7°、-5°的激光雷达数据进行处理,将激光雷达坐标系中X 方向的正方向记为前向,将Y方向的正方向记为左侧,将Y方向的负方向记为右侧。将左侧路沿上的候选点记为,将右侧路沿上的候选点记为。通过上述方法,计算出左侧的候选点为(,,),右侧的候选点为,,)。
图9 梯度滤波路缘检测
通过最小二乘法对道路边缘进行拟合,拟合效果如图10 所示。
图10 基于梯度滤波道路边缘拟合
使用文献[16]所提出的一种用于道路区域和自我车道检测的基准。文章中为了能够更好地进行评估,且考虑到车辆控制通常发生在2D 世界中,所以将车辆所行驶的道路通过从上到下的视角,转化为2D 鸟瞰图(BEV)空间。
将感兴趣区域转化为从上到下视角的2D 视角的平面区域,并进行网格化处理,如果网格在可行驶区域内,则认为它是正的,如果不是,则认为是负的。因此有:真正值(True Positive,TP)为在所有正类中被正确识别为正类的个数;假正值(True Negative,FP)为在所有负类中被正确识别为负类的个数;真负值(False Positive,TN)为将所有负类中被错误识别为正类的个数;假负值(False Negative,FN)为将所有正类中被错误识别为负类的个数(漏报)。
在文献[13]中,TP 值为被正确识别为道路的网格数;FP值为本不是道路网格但被错误识别为道路网格的网格数;TN值为指正确识别出超出极限的网格数;FN值为本是道路网格但被错误识别为非道路网格的网格数。
而在本文中,TP值为被正确识别为道路区域的区域面积;FP 值为本不是道路区域但被错误识别为道路区域的区域面积;TN值为指正确识别出非道路区域的区域面积;FN 值为本是道路区域但被错误识别为非道路区域的区域面积,实际边缘与检测到的边缘示意图如图11所示。
图11 感兴趣区域中实际边缘与检测边缘示意图
在本文中,感兴趣区域为图11 中(S +Sm1+Sm2+SF1+SF2+Sr1+Sr2);正类(真实的道路区域)为(ST+Sr1+Sr2);负类(感兴趣区域内真实道路以外的区域)为(Sm1+Sm2+SF1+SF2)。
因此:TP值为ST;FP 值为(Sm1+Sm2);TN 值为(SF1+SF2);FN值为(Sr1+Sr2)。
精确率(Precision)是最常见的评价指标,且容易理解,就是被正确分类的样本数除以所有的样本数,通常来说,精确率越高越好。
特异性(Specificity)表示的是所有被识别为负类的样本中,是真正为负类的比例,特异性衡量了分类器对负类的识别能力。
准确率(Accuracy)表示的是所有被正确识别的样本(包括正类和负类)占全部样本的比例。
召回率(Recall)表示的是被识别为正类的的样本占全部实际正类样本的比例。可以理解为查全率。
综合评价指标(FMeasure)有时候会出现准确率(Pr)和召回率(Re)矛盾的情况,这样就需要综合考虑他们,最常见的方法就是FMeasure。FMeasure是Precision 和Recall加权调和平均:在F 测度中,参数β决定了精度和灵敏度之间的重要性比,并考虑β取值为1(β=1)。
3.1.1 直线拟合
在基于网格高度差的道路边缘检测,并用直线拟合中,拟合直线与道路边缘线如图12 所示。将真实的道路边缘通过运用拉格朗日插值法,得到道路边界函数为l1(x)与l2(x)。
图12 道路边缘线与拟合直线示意图
将基于网格高度差的道路边缘检测的直线拟合函数命名为f1(x)与f2(x),有
l1(x)与f1(x)相交于M 点;l2(x)与f2(x)相交于Q点。则Sm1=4.138 43,Sm2=0,Sr1=6.844 67,Sr2=0.801 40,ST=111.147 26,SF1=45.733 33,SF2=31.334 90。
所以有:TP=ST=111.147 26,FP=(Sm1+Sm2)=4.138 43,TN=(SF1+SF2)=77.068 23,FN=(Sr1+Sr2)=7.646 07。
最后可以求出:
3.1.2 曲线拟合
在基于网格高度差的道路边缘检测,并用曲线拟合中,拟合曲线与道路边缘线如图13所示。
图13 道路边缘线与拟合曲线示意图
将真实的道路边缘通过运用拉格朗日插值法,得到道路边界函数为l1(x)与l2(x)。
将基于网格高度差的道路边缘检测的曲线拟合函数命名为g1(x)与g2(x)。
l1(x)与g1(x)相交于N 点、O 点。则:Sm1=3.58376,Sm2=0.981 06,Sr1=4.310 60,Sr2=0.991 87,ST=100.388 10,SF1=41.091 53,SF2=35.473 33。
所以有:TP=ST=100.388 10,FP=(Sm1+Sm2)=4.564 82,TN=(SF1+SF2)=76.564 86,FN=(Sr1+Sr2)=5.302 47。
最后可以求出:
在基于梯度的道路边缘检测,并用曲线拟合中,拟合曲线与道路边缘线如图14 所示。将真实的道路边缘通过运用拉格朗日插值法,得到道路边界函数为l1(x)与l2(x)。
图14 道路边缘线与拟合曲线示意图
将基于网格高度差的道路边缘检测的曲线拟合函数命名为h1(x)与h2(x)。
l1(x)与h1(x)相交于M 点,l2(x)与h2(x)相交于N点。则:Sm1=0.728 74,Sm2=0.013 55,Sr1=0.672 90,Sr2=1.243 53,ST=116.879 85,SF1=44.955 89,SF2=35.459 11。
所以有:TP=ST=116.879 85,FP=(Sm1+Sm2)=0.742 99,TN=(SF1+SF2)=80.415,FN=(Sr1+Sr2)=1.916 43。
最后可以求出:
本文在此对相同场景下的不同检测算法分别进行统计,计算并比较每个检测算法的精确率(Precision)、特异性(Specificity)、准确率(Accuracy)、召回率(Recall)以及综合评价指标(Fmeasure),从而能够量化的比较出算法的优点,具体数据如表1 所示。
表1 不同检测算法比较
本文使用PyCharm软件,基于Python 编程语言对近几年所提出的基于激光雷达的道路边界检测方法进行研究对比分析,根据表1 中的数据可以看出:基于高度差并采用直线拟合的道路边界检测算法的精确率、召回率等诸多指标的平均值达到94.12%;基于高度差并采用曲线拟合的道路边界检测算法为95.02%;基于图像边缘检测的道路边界检测算法为76.20%;而基于梯度滤波器的道路边界检测算法最高,达到了98.90%。所以可以认为基于梯度滤波器的道路边界检测算法相较于其他算法拥有更好的效果。