基于种子超像素生长的视觉道路检测
2023-10-09杨波
杨 波
(重庆对外经贸学院 重庆 401520)
0 引 言
近年来,道路检测技术作为自主驾驶、智能交通等领域的基础且关键的组成部分逐渐成为研究的热点问题。视觉检测是道路检测领域最为常用的解决方案,然而目前,基于视觉的道路检测仍然是一个极具挑战性的任务,其存在的主要问题是在一些复杂环境下的检测鲁棒性不高,容易受到光照变化、阴影、车辆及行人干扰等因素的影响[1-3]。
目前常用的视觉道路检测方法可以分为基于模型的方法和基于特征的方法。基于模型的方法[4-6]通过搜寻显著的道路特征来拟合训练好的道路模型,此类方法在复杂路况下很难找到匹配的道路模型,难以满足鲁棒性需求;基于特征的方法主要利用道路的颜色[7-9]、纹理[10]等信息与非道路区域区分开来,其中,后者主要通过检测道路的边缘、消失点等道路纹理信息完成道路检测,如Kong等[11]通过检测道路消失点来确定道路边缘,最终得到道路区域,但这种方法无法排除道路上的车辆、行人等干扰信息,容易造成误检,且算法复杂度高、实时性较差,故相比于纹理特征,道路颜色特征具有更强的可靠性。但传统的基于颜色特征的方法在存在阴影等干扰信息的环境下准确性和鲁棒性较差,且车道线所在道路区域通常被检测为非道路区域。
为了提高道路检测的性能,国内外学者进行了其他探索。文献[12-14]利用立体视觉得到深度信息来完成道路检测,但此方法成本高,且实时性很难满足。随着深度学习的快速发展,也有学者将深度神经网络(Deep Neural Network, DNN)应用于道路检测。由Levi等[15]提出的Stixel-NET通过训练具有5个卷积层的深度网络来分割道路区域。由Badrinarayanan等[16]提出的SegNet基于VGG16的网络模型构造了一个具有编码-解码结构的深度卷积网络来实现道路检测及分类。此类方法需要在线下利用大量样本集进行训练,无论是数据集的人工标注还是网络模型的训练都是一项繁重且耗时的工作,不利于道路检测算法的实际应用。
结合前人的研究成果与不足,本文提出一种基于种子超像素生长和多信息融合的视觉道路检测算法。该算法采用形态学运算去除结构化道路中的车道线,以避免其对后续处理的不利影响;采用超像素分割算法将图像分割成超像素块,将图像过分割成结构相似的若干区域;通过提取道路的HSV颜色空间的颜色特征,并结合预定义的道路模型完成基于视觉的道路检测任务。
1 道路图像预处理
1.1 形态学运算剔除车道线
由于在城市等结构化道路环境下存在大量的车道线,但车道线作为干扰信息不利于后续对道路的检测。针对上述问题,本文提出一种基于图像开运算的车道线剔除算法。该算法基于车道线亮度值明显高于周围道路区域的特点,利用图像开运算对车道线进行剔除。使用结构元素b(x,y)对图像f(x,y)进行开运算操作,定义为:
fopen(x,y)=f(x,y)∘b(x,y)=
(f(x,y)Θb(x,y))⊕b(x,y)
(1)
式中:符号“∘ ”表示开运算操作;符号“Θ”表示腐蚀操作;符号“⊕”表示膨胀操作。即先用结构元素b(x,y)对图像f(x,y)进行腐蚀,再用同样的结构元素对其结果进行膨胀。在图像形态学运算领域,腐蚀操作的主要目的为缩小目标边界和范围;膨胀操作则与腐蚀操作相反,其主要目的为扩张目标边界和范围。腐蚀操作和膨胀操作运算定义如下:
AΘB={z|(B)Z⊆A}
(2)
(3)
针对数字图像,从数学角度而言,形态学腐蚀操作通常以求取局部图像区域最小值的形式来实现,即通过获取定义好的结构元素B所覆盖的区域内所有图像像素的最小值来完成腐蚀操作。相应地,形态学膨胀操作则通常以求取局部图像区域最大值的形式来实现。
此外,针对车道线在水平方向宽度较小而在竖直方向长度较大的特点,本算法采用横向线形结构元素来对道路图像进行开运算操作。处理结果如图1所示(图1(a)为原图像,图1(b)为形态学开运算处理结果)。
图1 图像形态学处理
1.2 颜色空间选择
基于特征的道路检测算法由于其无须训练、算法高效等特点而被广泛应用。其中,相机的透视效应导致道路的纹理特征随着与相机距离的变化而变化,故道路的颜色特征具有更强的可靠性。相比于RGB颜色空间,HSV颜色空间能更有效地区分颜色相似性,且HSV颜色空间更加符合视觉特性。针对道路检测中颜色空间的选择问题,Alvarez等[17]对RGB和HSV颜色空间作了对比,其结果如表1所示(“+”表示鲁棒性强,“-”表示鲁棒性弱)。
表1 不同颜色空间各通道鲁棒性
基于以上讨论,本文将对输入图像车道线剔除后的图像进行颜色空间转换。由RGB颜色空间转换为HSV颜色空间的转换公式如下:
(4)
(5)
(6)
转换之后的效果如图2所示(第一列分别为R、G、B通道;第二列分别为H、S、V通道)。
图2 RGB转换为HSV颜色空间
1.3 超像素分割
图像超像素定义为具有相似特征的相邻图像像素构成的不规则像素块。图像超像素用少量的超像素代替大量的像素来表达图片的特征,大大降低了由像素之间的相似性带来的冗余性,并随之降低了后续图像处理任务的复杂性。近年来,超像素的理念已经广泛应用于目标检测及分割等领域。
本文使用Achanta等[18]提出的SLIC(Simple Linear Iterative Cluster)超像素分割算法对道路图像进行超像素分割,该超像素分割算法能够高质量地生成均匀紧凑的超像素。SLIC,即简单线性迭代聚类,首先,它将彩色图像转化为CIE-Lab颜色空间,对应每个像素的(L,a,b)颜色值和(x,y)坐标组成一个5维向量,然后对此构造距离度量标准,两个像素的相似性即可由它们的向量距离来度量,距离越大则相似性越小。最后通过迭代的方式对图像像素进行局部聚类。SLIC算法的伪代码如算法1所示。
算法1超像素分割算法
/*初始化*/
Initialize cluster centersCkby sampling pixels at regular grid stepsS.
Move cluster centers to the lowest gradient position in a 3×3 neighborhood.
Set labell(i)=-1 for each pixeli.
Set distanced(i)=∞ for each pixeli.
repeat
/*分配*/
for each cluster centerCkdo
for each pixeliin a 2S×2Sregion aroundCkdo
Compute the distanceDbetweenCkandi.
ifD setd(i)=D setl(i)=k end if end for end for /*更新数据*/ Compute new cluster centers. Compute residual errorE. UntilE≤threshold 上述过程中,迭代计算聚类中心是本算法的关键,而迭代的核心就是计算距离。其计算公式如下: (7) (8) (9) 式中:dc代表颜色距离;ds代表空间距离;NS表示类内最大空间距离。 (10) 式中:K表示超像素总数;N表示图像的像素个数,随图片及聚类不同而不同,所以作者取一个固定常数m代替。最终的度量公式为: (11) 由上述论述可知,该算法只需要用户输入两个参数,即超像素总数K和常数m。本文设置K值为2 000,m值为25,超像素分割结果如图3所示。 图3 超像素分割结果 在进行道路检测前,首先要确定道路图像中的某个道路区域作为种子点。对于本文而言,需要选择道路区域的超像素块作为种子超像素。当车辆在道路上行驶时,安装于车辆上的相机得到场景图像,而图像的中底部像素所对应的区域是距离车辆最近的地方,也是最有可能是道路的区域。基于此,本文提出一种种子超像素块选取方法。如图4所示,首先,在图像的中底部选择5个超像素块(最底层3个,次底层2个),然后分别统计5个超像素块的颜色均值并计算各均值之间的距离,为排除图像底部所对应的区域存在车辆、行人、道路破损等不利因素影响的可能,选择距离最近的3个超像素块作为最终的种子超像素。 图4 种子超像素块选取 由于本文拟提取超像素块的颜色特征来区分道路与非道路区域。而当图像中存在人行道、建筑物等与道路区域具有相似的颜色特征的内容时,容易造成误检,使道路检测的准确率降低。基于此,本文提出通过引入预定义道路模型解决此问题。本文认为越是同时靠近图像的底部和中部,该像素所对应的区域作为道路的可能性越大,反之,越是靠近图像的上部或者左右两边,其对应的区域越有可能是非道路区域。由此,本文提出的预定义的道路模型如下: (12) 式中:(x,y)表示每个超像素的均值横坐标和纵坐标;τ(x,y)表示坐标(x,y)对应的超像素;X和Y组成图像的分辨率。 接下来,本文在上述基础上进行道路的检测。首先是设计种子超像素生长准则,通过超像素生长实现基于颜色特征的视觉道路检测。具体来说,本文通过统计每个超像素的HSV各通道直方图,由于每个超像素块对应的像素数不同,所以,本文将直方图归一化,然后计算每个超像素和种子超像素之间归一化直方图的距离,定义为Dh,并将其作为种子超像素生长的准则。换言之,当图像超像素和种子超像素的归一化直方图距离较小,即颜色特征相似度越高时,进行种子超像素生长,反之,当图像超像素和种子超像素的归一化直方图距离较大时,停止生长,直至遍历所有的图像超像素为止。 最后,本文引入预定义道路模型以提升算法的鲁棒性,依据式(13)把不同的超像素块分为道路区域和非道路区域两部分。 (13) 式中:λ表示阈值;paver表示将超像素块的均值横坐标和均值纵坐标代入式(12)的结果。道路检测结果如图5所示。 图5 道路检测结果 本节对本文算法进行实验验证。实验基于Inter Core i7 CPU,配备16 GB RAM,采用MATLAB软件进行算法实现。实验图像来自KITTI(Karlsruhe Institute of Technology and Toyota Technological Institute)道路检测数据集[19]。 本文对KITTI数据集下的道路图像进行了道路检测实验,部分实验结果如图6所示,其中,第一行为选取于KITTI数据集的输入图像,第二行为对原始图像进行超像素分割结果,第三行为道路检测结果,第四行图像为最终得到的道路区域检测结果,第五行图像为对应的groundtruth。 图6 定性实验结果 值得一提的是,为了验证所提出的引入预定义道路模型的有效性,本文进行了消融实验,实验结果如图7所示,其中第一行图像为仅依靠颜色特征的道路检测结果,第二行图像为引入预定义道路模型之后的道路检测结果。可以看出,通过引入预定义道路模型,可以解决道路图像中的人行道、建筑物等与道路区域具有相似的颜色特征的内容对道路检测算法产生影响的问题。 图7 消融实验结果 本文选定精确率(precision,P)、召回率(recall,R)、F度量(F-measure,F)作为性能评估标准,这三个指标的具体定义为: (14) (15) (16) 式中:TP、FP、FN分别表示True Positive(被检测为道路的道路像素)、True Negative(被检测为非道路的非道路像素)、False Negative(被检测为非道路的道路像素)。本文方法定量分析结果及其与目前比较流行且效果较好的几种道路检测算法结果对比如表2-表4所示。 表2 UM道路环境下道路检测算法对比(%) 表3 UU道路环境下道路检测算法对比(%) 表4 UM道路环境下道路检测算法对比(%) 本文算法在MATLAB软件上每幅图像的平均检测时间约为0.8 s,如果算法转化为C++语言,平均检测时间将大大缩短,加之本文算法中SLIC超像素分割算法占用了大部分计算时间,针对SLIC算法的优化,2015年有学者实现并行执行速度达250帧/s,这也可以在很大程度上提高算法的执行效率。综上所述,本文算法在实际应用中可以满足实时性需求。 本文提出一种基于种子超像素生长的视觉道路检测算法。首先,对图像进行形态学处理去除结构化道路上的车道线信息,然后,将RGB颜色空间转换为HSV颜色空间,并对原图像进行超像素分割。最后,计算各超像素块和选取的种子像素块之间的归一化直方图距离,继而将其作为准则进行种子超像素生长,并结合先验知识完成基于视觉的道路检测。在KITTI测试集上的实验结果表明,本文道路检测算法在不同道路场景下准确率超过86.36%,召回率超过86.62%,在算法以C++作为开发语言的前提下,可以满足实际应用中的鲁棒性、准确性及实时性需求。2 道路图像预处理
2.1 种子超像素选取
2.2 道路模型
2.3 道路检测
3 实验结果分析
3.1 定性分析
3.2 定量分析
4 结 语