基于滑动窗口与多帧平均的车道检测算法

2020-12-14 09:14郑帅帅
计算机应用与软件 2020年12期
关键词:曲线拟合实时性鲁棒性

郑帅帅 王 刚

(哈尔滨工业大学机电工程学院 黑龙江 哈尔滨 150001)

0 引 言

随着人工智能领域的不断发展,人们对具备自动驾驶能力的汽车的需求也不断增强,越来越多的科研机构和企业投入到相关技术的研发之中。结构化道路上的车道检测是高级辅助驾驶系统(ADAS)的重要部分,根据道路图像获取车道线的位置信息,确定车与车道的相对位置,为车道偏离预警系统、车道保持辅助系统提供决策依据。

目前,车道检测方法主要分为如下两大类:

1)基于深度学习的车道检测算法[1-3]是当前研究热点,这类算法采用多层卷积神经网络提取车道线特征,具有准确率高、鲁棒性强等优点,但计算开销较高,需要较好的GPU资源才能达到实时性的要求。文献[4]提出一种端到端的车道线检测算法,实现对道路图片中的车道线实例分割以及对各车道线像素点的多项式曲线拟合,在NVIDIA 1080 TI显卡上能达到52帧/s的运行速度。

2)基于传统方法的车道线检测算法,主要有图像特征法[5-7]和几何模型法[8-9]。图像特征方法通过分析图像的底层特征,如车道颜色、边缘信息和纹理结构等,将图像分割成若干部分,得到车道线提取的预处理数据。文献[10]结合Hough变换与随机抽样一致(RANSAC)算法进行车道检测,在直车道上具有较好的检测效果,不过实时性较差,而且在车道弯曲和污损等条件下鲁棒性欠佳。几何模型法主要采用不同的道路模型来实现结构化的车道检测,如直线模型[11]、多项式模型[12]等。该方法一般分为3个步骤:选择道路模型,提取车道线像素,拟合车道参数。文献[13]利用一对平行的双曲线模型同时对两侧车道线进行检测,在结构化道路上准确率高且具有一定的鲁棒性,不过在光照变化、车道线不连续的情况下达不到预期的检测效果。

考虑到现有车道检测算法存在难以权衡实时性及鲁棒性等问题,本文提出一种基于滑动窗口与多帧平均的快速车道线检测方法,在结构化道路上,具有较高的准确率和鲁棒性,同时保证了检测的实时性,能够为ADAS提供有效的车道线位置信息。

1 算法设计

本文算法主要包括图像预处理、车道线提取和车道线输出三大部分,如图1所示。车道预处理主要包括对于选定感兴趣区域(ROI)进行逆透视变换(IPM)[14],将输入帧转化到鸟瞰图视角。车道线的提取是提取车道线像素点和得到拟合曲线的过程,首先通过颜色分割得到二进制灰度图,再根据像素分布直方图确定当前帧的车道线起始基点,然后算法判断上一帧的拟合曲线是否存在:若存在,则使用快速滑动窗口法搜索;若不存在,则出现漏检状况,重新使用滑动窗口搜索。最后,采用最小二乘法进行二次多项式曲线拟合。车道线的输出主要采取多帧平均化,再绘制车道线,并使用逆IPM的方式将处理后的图像与输入帧叠加得到输出帧。

图1 基于滑动窗口与多帧平均的车道检测算法

2 图像预处理

采集的视频图像数据包含当前车道和其他无关信息,如果直接对其进行处理,将增加检测算法的复杂性同时降低车道检测的效率[15]。预处理如图2所示,(a)为感兴趣区域(ROI),(b)为鸟瞰图视角。树木、天空等无用信息均集中在图像的上半部分,因此只需要处理选定ROI中的路面信息即可,这在很大程度上减少了算法计算量[16]。

(a)ROI (b)鸟瞰图

本文所用图像分辨率均为w×h=720×1 280,在多次实验中,发现选取h1=0.375h时,进行颜色分割取得的效果最好,即为图2(a)中水平线下方部分。

由于相机拍摄可以当作针孔成像的过程,因此图像中在现实世界中原本相互平行的车道线出现了不平行和近宽远窄的特征。若直接在原始图像空间中进行车道像素点的曲线拟合,不仅会受到各种噪声的干扰,而且必须使用高次多项式曲线来拟合车道,这无疑增加了算法的复杂度[17]。为了更好地解决这个问题,在车道检测领域中广泛采用逆透视变换(IPM),将相机获取的图像转换成鸟瞰图。在结构化的高速公路上,可以认为道路平坦,因此可采用固定的逆透视变换矩阵H对图像进行处理。假设图像坐标系下点的坐标为PI,鸟瞰图坐标系下点的坐标为PB,则有:

PI=HPB

(1)

(2)

式中:PI=[x,y,1]T;PB=[X,Y,1]T;H中共有8个待求参数,最少需要四组点对求解。本文选择四对相对应的源点(图2(a)中梯形的四个顶点)与目标点(图2(b)中矩形的四个顶点)。最终鸟瞰图结果如图2(b)所示,图像预处理的主要代码见算法1。

算法1图像预处理

def pre_process(img,M,mtx,dist):

# 图像去畸变

img_undistort=cv2.undistort(img,mtx,dist)

# 逆透视变换

h,w=img.shape[:2]

img_unwarp=cv2.warpPerspective(img,M,(w,h),flags=cv2.INTER_LINEAR)

return image

3 车道线提取

3.1 颜色分割

由于在结构化高速公路上,车道线主要由黄、白线组成,使用传统的梯度阈值与方向阈值联合分割的方法,在车道线清晰,无阴影遮挡的情况下,效果较好。但是受光照,外物遮挡的影响较大,经常发生误检及漏检的情况,鲁棒性较差。因此,本文采取在颜色空间进行分割的方法,提取黄、白线车道。颜色分割过程如图3所示。

(a)原图 (b)颜色分割后

Lab颜色模型基于人颜色的感觉,其中L表示明度,a表示从洋红色至绿色的范围,b表示从黄色至蓝色的范围。本文选取b通道,以归一化阈值(190,255),提取黄色车道,结果如图3(d)所示。HSL色彩模式是工业界的一种颜色标准,HSL分别代表色相、饱和度和明度三个颜色通道,经过多次实验,选取L通道,以归一化的阈值(220,255),提取白色车道,结果如图3(c)所示。通过式(3)可得到车道线二进制掩模,如图3(b)所示。

img[((l_thresh==1)|(b_thresh==1)]=1

(3)

颜色分割的主要代码见算法2。

算法2颜色分割

def segmentation(img_unwarp)

img_LThresh=hls_lthresh(img_unwarp)

img_BThresh=lab_bthresh(img_unwarp)

combined=np.zeros_like(img_BThresh)

combined[(img_LThresh==1)

|(img_BThresh==1)]=1

return combined

3.2 滑动窗口搜索

在进行车道线的滑动搜索之前,需要确定左右车道线的起始基点,其具体步骤如下:

对于由颜色分割得到的二进制掩模图,将其沿横轴方向,累加垂直方向的像素值,公式如下:

(4)

得到如图4所示的像素分布直方图,然后计算左右起始基点:

图4 像素分布直方图

(5)

式中:arg max函数用来计算Sum(x)取最大值的x坐标值;w为图像宽度。

得到车道线的左右起始基点之后,采用纵向滑动窗口搜索的方式提取车道线像素点。为了避免其他因素所造成的二进制颜色分割图像的干扰,选择滑动窗口的宽度为车道线宽度的5倍,而滑动窗口高度的选取需要将车道线在鸟瞰图中的最大斜率考虑在内,经过多次实验,本文选择图像高度的1/10作为滑动窗口的高度值。

滑动窗口搜索算法从左右车道线的两个基点处,由下到上按矩形窗口搜索,不断更新车道线基点,直至到达图像的顶部为止。其具体计算步骤如下:

假设当前第i与i+1窗口的车道线基点坐标分别为(xi,yi)和(xi+1,yi+1),则:

(6)

yi+1=yi-h

(7)

式中:n为第i个窗口包含像素点的个数。当n=0时,即该窗口未发现像素点,则下一窗口的基点x坐标值保持不变。该算法的具体效果如图5所示,其中各个矩形为滑动窗口,左右曲线分别为左右车道线像素点。

图5 滑动窗口搜索结果

考虑到在鸟瞰图变换视角下,视频图像相邻两帧之间车道线的斜率,位置变化很小,因此可以利用前一帧的拟合曲线,来简化滑动窗口搜索过程,提高计算速度。以拟合的二次曲线为中心线,宽度为滑动窗口宽度,高度为h的搜索区域,来提取车道线像素点,在该区域内的像素点保留,反之则舍弃。最终输出效果如图6所示,图中两个较宽区域为搜索区域。

图6 快速滑动窗口结果

3.3 二次多项式曲线拟合

对于车道线的曲线拟合问题,主要有随机抽样一致(RANSAC)法[18]和最小二乘法两种算法,前者能够克服外点的干扰,但算法的实时性较差;后者对于噪声敏感,处理速度较快。考虑到算法的鲁棒性和实时性,以及车道线的拟合效果,本文采用最小二乘法来拟合二次多项式曲线,其具体公式如下:

x=f(y)=ay2+by+c

(8)

式中:a、b、c为最小二乘法的拟合参数。算法的拟合效果如图7所示。

图7 曲线拟合结果

曲线拟合的主要代码见算法3。

算法3曲线拟合

leftx=nonzerox[left_lane_inds]

lefty=nonzeroy[left_lane_inds]

rightx=nonzerox[right_lane_inds]

righty=nonzeroy[right_lane_inds]

left_fit,right_fit=(None,None)

if len(leftx)!=0:

left_fit=np.polyfit(lefty,leftx,2)

if len(rightx)!=0:

right_fit=np.polyfit(righty,rightx,2)

4 车道线输出

即使在结构化道路上,依然会出现车道线模糊不清、被遮挡的情况,如果算法不具备车道预测与跟踪的功能,当出现漏检、误检的情况时,可能会对快速行驶的车辆造成巨大的危害。因此,在车道线输出部分中,本文采用多帧平均化的方式实现车道预测与跟踪,增强算法的鲁棒性。其具体的实现步骤如下:

在进行曲线拟合之后,首先判断拟合曲线是否存在,若存在,则将当前帧加入帧列表;若不存在或者帧列表长度超过5,则将列表中的第一帧舍弃,即最旧的数据。然后对帧列表中存储的拟合系数取平均值,作为当前帧的拟合曲线系数。最后画出车道线,利用逆IPM将鸟瞰图变换到原视角下,与输入帧叠加得到输出帧。车道线处理的部分代码见算法4。

算法4车道线处理

#车道线类中处理车道线的函数

def add_fit(self,fit,inds):

if fit is not None:

#若拟合曲线存在

self.detected=True

self.px_count=np.count_nonzero(inds)

self.current_fit.append(fit)

#判断帧列表长度

if len(self.current_fit)>5:

self.current_fit=self.current_fit[

len(self.current_fit)-5:]

#进行平均化处理

self.best_fit=np.average(self.current_fit,axis=0)

else:

#未检测到车道线

self.detected=False

if len(self.current_fit)>0:

#丢弃最旧的拟合系数

self.current_fit=self.current_fit[

len(self.current_fit)-1:]

if len(self.current_fit)>0:

self.best_fit=np.average(self.current_fit,axis=0)

5 实 验

为了验证本文算法的实际效果,基于Python 3.6和PC机进行实验。PC机的配置为:CPU为Intel Core i7-8550U 1.80 GHz,无GPU加速。本文在Udcity(优达学城)自动驾驶数据集中的高速公路视频数据上做实验验证,主要分为典型道路,污损干扰、遮挡道路两种。在污损、遮挡道路中,主要包括太阳光光线变化、树木、桥梁遮挡、路面车道线模糊不清的复杂场景。所用图像为RGB图像,均来自于视频帧,分辨率均为w×h=720×1 280。逆透视变换矩阵H与相机在车辆上安装位姿有关,求取矩阵H的过程其实就是求解当前相机位姿相对垂直于路面时的位姿变换,其目的就是得到尽可能平行的车道线,便于后续算法的处理。滑动窗口的大小的选择主要取决于车道的最大斜率和经过逆透视变换后车道像素点的宽度,经过多次实验,选择滑动窗口的宽度为车道线宽度的5倍,而滑动窗口高度的选取需要将车道线在鸟瞰图中的最大斜率考虑在内,本文选择图像高度的1/10作为滑动窗口的高度值,算法的检测效果较好。若滑动窗口高度和宽度太大,则会包含更多的干扰像素点并且由于车道斜率的限制可能会导致算法失效;如果窗口高度太小,则会增加计算消耗代价而且不能带来算法性能的提升;如果窗口宽度太小,则无法检测出完整车道线,算法失效。考虑到高速公路等结构化道路车道的曲率变化较为平缓,以及准确性和鲁棒性的要求,在算法实时处理视频帧时,建立帧列表并选择合适的长度来进行多帧平均处理。若帧列表的长度太大,则检测车道输出准确性低;反之,算法的鲁棒性差,受环境干扰严重。

车道检测的实验的结果如表1和图8所示。本文算法平均每帧检测耗时仅为12 ms,在典型道路上的检测正确率达到了98.7%,在存在大量污损、遮挡情况的道路上,准确率也达到了93.8%。

表1 车道线检测结果

(a)典型车道 (b)光照变化,树木遮挡

6 结 语

本文提出了一种面向结构化道路的车道检测算法,通过实验证明,算法具有良好的正确率、实时性和鲁棒性。本文算法可以应用于高速公路等结构化道路场景之中,能够满足辅助或者自动驾驶系统对于车道检测算法的实时性和准确性的要求,可以用于车辆的车道保持、车道预警等基本任务。该算法权衡准确性、实时性及鲁棒性,可以弥补自动驾驶领域内深度学习算法不具备实时性的缺点,在自动驾驶快速发展的当下,具有较好的应用前景。本文主要的创新点如下:1)在鸟瞰图视角下进行双通道的颜色分割,具有简单,高效的特点;2)动态地选择滑动窗口搜索方式,可降低算法复杂度,提高实时性;3)采用多帧平均化的方式增强算法的鲁棒性,减弱漏检、误检对算法的影响。

猜你喜欢
曲线拟合实时性鲁棒性
武汉轨道交通重点车站识别及网络鲁棒性研究
基于MATLAB 和1stOpt 的非线性曲线拟合比较
浅谈Lingo 软件求解非线性曲线拟合
曲线拟合的方法
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
一种基于三维小波变换的鲁棒视频水印方案
电子节气门非线性控制策略
可编程控制器的实时处理器的研究
基于鲁棒性改进理论的大面积航班延误治理分析