基于自适应滑动窗口检测的车道线识别

2021-09-10 01:15魏双叶任子豪
关键词:像素点车道滑动

万 斌,童 亮,魏双叶,任子豪

(北京信息科技大学 机电工程学院,北京 100192)

0 引言

车道线是限制车辆按照规定路线行驶的路面信号。准确检测车道线并保持实时跟踪是智能车实现无人驾驶、车道偏离检测等的首要条件。然而在实际情况下,车道线被遮挡、光照环境的变化或是其他不可抗因素都会干扰车道线检测,使其结果精度下降[1]。为了实现车道线检测,国内外有诸多不同的解决方法。吕侃徽等[2]使用改进的Hough变换耦合密度空间聚类的车道线检测算法,通过引入空间聚类算法实现车道线检测;Babenko等[3]在检测系统中加入基于卡尔曼滤波的车道线状态参数表,通过算法实现对车道线的实时跟踪,但存在初始误差过大的缺点,需要通过递归循环卡尔曼增益来弥补精度的不足;Nummiaro K[4]通过结合B样条曲线的车道线数学模型,使用随机采样的方法,在保持参数一致性的前提下拟合获取车道线,该方法具有一定的环境适应能力;吴彦文等[5]通过改进霍夫变换提取的边缘线段,结合高精度地图中的车道线先验模型参数来预测车道线轨迹,实现车道线检测;Alsenan S等[6]通过递归神经网络来检测复杂工况下的车道线信息,但处理速度较慢;田锦等[7]通过一种基于实例分割的方法,将神经网络与传统算法结合检测车道,有较好的检测精度。

本文提出了一种基于自适应滑动窗口的车道线识别算法,通过对检测单帧图像内的车道线进行小窗口分割,求得车道线方程参数组,最终实现不同环境因素影响下的车道线识别。

1 图像预处理

1.1 图像灰度化

若对原始彩色图像进行直接处理,由于图片信息过多,算法难以提取到有效信息,故首先对于原图像进行灰度化处理,RGB图与灰度图的转换关系如下:

Y(x,y)=0.2989×R(x,y)+

0.5870×G(x,y)+0.1140×B(x,y)

(1)

式中:Y(x,y)为图像中像素点灰度值;R(x,y)为红色像素;G(x,y)为绿色像素;B(x,y)为蓝色像素。

1.2 图像滤波

车载摄像头获取的原图往往存在诸多不同的噪声干扰,将会降低算法识别的效率,这就需要一种既能降低图片噪声又不会使原图边缘过于模糊的滤波器来对原图进行处理。通过高斯滤波进行图像的降噪处理,可以有效降低图片的噪声干扰。高斯滤波器的模板矩阵大小设为5×5,标准偏差sigma为1。如图1所示,左侧为原图像,右侧为滤波后的灰度图。

图1 道路原图与滤波图

1.3 图像二值化

图像二值化处理是分割图像的首要步骤。通过原图像像素灰度值与预定的阈值S进行比对,将所有像素值分为两类,大于阈值的置为1,小于阈值的置为0,从而达到区分的目的,区分关系如下:

(2)

本文通过OTSU算法对灰度图进行自适应二值化,提升对于光照变化的鲁棒性。图2为自适应二值化后的示意图,可以明显区分出车道像素与环境像素。

图2 处理过后的二值图

1.4 逆透视变换选取车道ROI区域

通过对于原图像进行逆透视变换处理,可以大幅减少非车道线信息,且车道线形状能够近似平行,从而提高车道线识别的效率。通过已知图像消失点、相机参数、相机高度、相机角度生成车道线的鸟瞰图,确定车道ROI(region of interest)区域。PreScan软件相机参数,如相机焦距、相机位置坐标等设定示意图如图3所示。

图3 相机参数设定界面示意图

1.4.1 车道消失点检测

图像消失点是空间上无穷远处投影到图像上的点,也可以认为是平行线的视觉相交点。本文把车载摄像头前视方向直线的无穷远处在图像上的投影点定义为消失点。根据相机成像原理以及空间坐标系,转换关系如下:

(3)

式中:(u∞,v∞)为消失点在图像平面中的坐标;fx为图像平面坐标系中相机焦距的横向像素单位值;fy为图像平面坐标系中相机焦距的纵向像素单位值;(Cx,Cy)为相机光轴与图像平面坐标系交点处的坐标;y表示yaw即相机的偏航角;p表示pitch即相机的俯仰角。

1.4.2 图像逆透视变换

因为摄像头所拍摄的图像与实际车道线信息存在区别,在图像中所有车道线会相交于一点。为了使车道线检测算法更加快速和精确,本文根据摄像头成像原理,通过图像逆变换的方法将原图像的像素点根据空间位置投影到鸟瞰图上。式(4)为逆透视变换公式。

(4)

式中:Zc为相机坐标系下的坐标;cx,cy为单位像素在物理成像平面坐标系X轴和Y轴中所占的物理尺寸;(u,v)为图像平面坐标系的坐标;(u0,v0)为相机坐标点在图像平面坐标系中的值;f为相机焦距;h为相机距离地面的高度;R为相机坐标系到世界坐标系之间的转换关系的旋转矩阵,具体计算关系为

(5)

由于车道线识别需要高处理速度,根据我国城市车道线标准,经过大量实验,确定只对车前40 m内、左右宽度5.25 m内进行图像逆透视变换,从而得到车道线ROI区域。处理效果如图4所示。

图4 逆变换图以及ROI区域

2 基于自适应滑动窗口的车道线检测

2.1 车道线起点检测

车道线ROI图内,最接近车辆的车道线可以近似地认为平行于图像下底线,故可以通过局部像素全检测的方法来确定车道的起点,检测思路如下:

1)对于我国城市道路,车辆行驶过程中前方15 m内至少存在一条车道标志线,所以将车辆前方15 m的范围作为车道中点检测区域。

2)设计一个open表,将种子像素放入该表中;从原图中向表内置入一个单元,之后在该单元周围未检测过的像素继续加入表中;重复上述过程,得到每一列白色像素点的个数N。

3)找到N中的第一个局部峰值,记录第一个峰值坐标uj,根据图像大小以及车道像素宽度确定车道像素值W,将uj前后W/2像素置0,重新搜索N中的局部峰值,记录第二个峰值坐标uj。由此,得到了当前帧车道线的起点坐标。

如图5为上节ROI区域的车道线起点检测结果。本文设计的算法能够高效率、低失误地找到对应的车道中点。

图5 车道线起点检测图及其峰值像素点

2.2 车道像素坐标检测

对于一条连续光滑的曲线,若一个点从位置1滑动到位置2,滑动方向可以认为是点在位置1的切线方向。由此,在获取车道线起点之后,通过自适应滑动窗口算法检测出所有车道线像素点。本文假设车道线为连续光滑曲线,通过滑动的矩形窗口沿一定的路径从ROI图底部滑向顶部,反复搜索窗口内车道线像素点信息,并根据其进行曲线方程的拟合,来指导窗口的滑动方向。滑动窗口算法检测车道线像素点的流程如图6所示。

图6 检测流程

通过ROI区域来阐述算法实现流程,首先定义以下集合存储坐标信息:

1)令集合Ai={(u0,v0),(u1,v1),…,(uni,vni)}为单次搜索时在滑动窗口内的车道线像素点坐标,其中i为搜索的次数,ni为集合Ai中的元素个数。

2)令集合C={(u0,v0),(u1,v1),…,(uN,vN)}为所有已经搜索到的车道线像素点坐标,其中N值为集合C中的坐标个数的总和。

2.2.1 参数初始化

1)滑动窗口的参数初始化。滑动窗口是一个矩形,其参数包含宽度w、高度h以及下边缘中点Mi(ui,vi),其中i表示第i次搜索得到的窗口内的车道线像素点。根据车道线宽度像素值W得到窗口的宽与高:

(6)

式中h0为预定的图像比例系数。

2)像素点搜索。在进行第i次搜索时,提取当前窗口内所有像素不为0的点,记录点对应坐标加入集合Ai以及集合C。窗口范围由左上角坐标以及窗口宽和高确定,左上角坐标为PLU(ui-w/2+0.5vi-h+1)。

2.2.2 参数更新

在第i次搜索完成之后,进行更新以确定下一次滑动窗口向上滑动的参数。本文主要以窗口的下边缘中点Mi+1(ui+1,vi+1)信息确定滑动方向,更新阶段中点由以下情况决定:

1)若当前窗口上边缘像素均为0:则取集合Ai中所有非零点坐标拟合一条直线l1∶x=ay+b作为当前窗口内车道线延长方向的参考线。求出直线l1与直线l2=vi+h的交点,并且取整得到下一窗口下边缘中点Mi+1(ui+1,vi+1)。

(7)

3)若当前窗口未检测到车道线像素点:则按照上一次更新信息更新Mi+1(ui+1,vi+1),其中ui+1=ui+Δui,vi+1=vi+h。

2.2.3 结束搜索

在窗口滑动过程中,当满足下列情况时,搜索结束。

1)在进行第i次搜索时,若Mi(ui,vi)中vi<0,则认为i-1次搜索时已经达到了ROI图的顶部,停止搜索。

2)对于连续的W-1次搜索,若ni-W+1、…、ni-1和ni均为0,则认为当前车道线已经结束,停止搜索。

图7所示为车道线像素点搜索结果,滑动窗口通过时以切线拟合的方式确定滑动方向,因此能够很好地沿着车道线的曲率轨道进行搜索。

图7 左右车道线检测结果

2.3 车道线拟合

对于集合C中所有车道线像素点元素,通过最小二乘法拟合二次曲线得到车道线方程,拟合二次曲线为

x=ay2+by+c

(8)

本文算法所得的车道线ROI图的噪声比较少,因此使用最小二乘拟合可以在提高算法速率的同时保持较高的精度。

3 实验分析

一种优良的检测算法应当满足准确性、鲁棒性、实时性的性能要求。对于车道线的检测算法,准确性由检测率和误检率反映;鲁棒性由算法对于不同行驶工况的适应好坏决定;实时性由算法单帧图像处理时间决定。本文通过PreScan软件,使用软件内摄像头采集到的仿真视频信息,以20帧/s提取图像制作数据集,对算法性能进行多场景车道线检测实验。仿真车辆为奥迪A8,图像分辨率为1 280×1 024。实验检测数据如表1所示。

表1 实验检测数据

由表可知,典型道路检测效果最好,而在急弯、污秽路面和行车阻挡场景中,由于算法获得的车道线信息相对较少,识别率有所下降。图8为各场景车道检测示意图。

图8 不同工况的车道线检测结果

车辆行驶过程中,根据车道环境的不同,车道线信息也不相同,本文检测算法窗口通过相机信息以及车道像素信息自适应调整窗口大小,从而提高了车辆应对不同行车情况的鲁棒性。

为了比较算法性能,使用相同的数据集测试,比较覃雄臻等[13]、吕侃徽等[2]和邓天民等[14]的车道线检测算法,如表2所示。可以看出本文算法相比于传统算法检测率和准确率均有所提高;相比改进SegNet算法,识别率较高但是单帧处理时间略慢。

表2 算法检测评估对比

4 结束语

本文提出的自适应滑动窗口车道线检测算法具有良好的准确性、鲁棒性和实时性,能够减少冗余信息获取,提高算法检测速率,适应不同车道的检测,具备一定的实际应用价值。通过车道线起点以及自适应滑动窗口搜索车道线信息,有效提升车道线检测精度,且对于不同行车场景有较好的车道识别准确率。但是算法对不同类型的车道线如双黄线等无法进行识别区分,且检测过程中只识别当前车辆行驶过程中的左右车道线,存在无法判断车辆自主变道的问题,且没有做到实车道路试验。今后可以在不同车道类型和多车道检测方面做工作,并进一步服务于车道偏离预警的研究。

猜你喜欢
像素点车道滑动
北斗+手机实现车道级导航应用
避免跟车闯红灯的地面车道线
基于局部相似性的特征匹配筛选算法
浅谈MTC车道改造
一种新型滑动叉拉花键夹具
基于5×5邻域像素点相关性的划痕修复算法
Big Little lies: No One Is Perfect
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
低速ETC/MTC混合式收费车道的设计与实现