基于改进麻雀搜索算法的车道线检测与识别

2022-06-09 05:45:40沈业辉温秀平金承珂
自动化技术与应用 2022年5期
关键词:搜索算法畸变麻雀

沈业辉,杨 振,温秀平,金承珂

(1.南京工程学院 自动化学院,江苏 南京 211167;2.南京工程学院 工业中心、创新创业学院,江苏 南京 211167)

1 引言

近年来,学者们对无人驾驶汽车的研究呈爆炸式增长[1-7]。尽管许多无人驾驶汽车已经实验多时,可出现故障的新闻仍然屡见不鲜,于是人们将目光聚集到了自动驾驶技术等级更低的辅助驾驶系统中。实现车道线检测是辅助驾驶系统的重要前提,实时准确地实现车道线检测才可以为驾驶员在车道偏离和车道变换时提出预警。

在车道线检测与识别方面,周宇宏等人提出了基于Haar级联分类器的车道线检测算法,利用AdaBoost分类器得到车道线位置,再对找到的车道线进行拟合,鲁棒性强,但是依赖样本的制作[8]。王文豪等人提出了一种基于OpenCV实现的车道线检测方法,实现简单但是可移植性较低,实用性不理想[9]。吴宗胜等人提出基于卷积神经网络的方式实现图像分割的方式识别道路场景,准确率高但是需要大量数据集,不具有一定的泛用性[10]。吴骅跃等人提出通过计算图像RGB 熵的方式实现图像分割识别车道线,对于车道线模糊的道路有着更好的效果,但是准确率较低[11]。

本文首先对输入图像进行畸变校正,以消除图像畸变对车道线检测的影响,其次对图像进行灰度化和高斯模糊化,再基于上一帧车道线检测区域与感兴趣区域(The Region of Interest,ROI)的关系选取当前帧的ROI,然后基于改进麻雀搜索算法实现边缘检测,最后使用Hough 变换提取车道线。具体流程如图1所示。

图1 车道线检测流程图

本文的创新如下:(1)基于上一帧车道线检测区域与ROI的关系选取当前帧的ROI,极大的减少了计算量,缩短了车道线检测和识别时间;(2)本文采用基于改进麻雀搜索算法实现边缘检测,解决了Canny 边缘检测易把噪声误判为边缘的问题;(3)本文所提出的车道线检测与识别方法提高车道线检测识别率。

2 畸变校正

因为光学透镜会发生透视失真,所以辅助驾驶系统中车载摄像头拍摄的图像会不可避免的发生畸变[12]。这种畸变较难察觉,且会对后续操作和车道线检测的精度造成影响,因此在进行车道线检测之前需要对图像进行畸变校正。

2.1 畸变校正模型的建立

在车载摄像头拍摄的过程中主要产生的畸变是径向畸变和切向畸变[13],其数学表达式如下所示:

(1)径向畸变:

(2)切向畸变:

综合以上两式,可以得出畸变校正公式:

其中x0,y0是未发生畸变情况下点在图像坐标系上经过归一化的位置,x1,y1是发生畸变后点在图像坐标上经过归一化的位置,,k1、k2、k3为径向畸变系数,p1、p2为切向畸变系数。

2.2 畸变校正模型的求解

由式(3)可知,只要求得k1、k2、k3、p1、p2等畸变系数的值,就可以完成畸变校正,本文借鉴文献[14]的方法对畸变系数进行求解。首先,将各点从图像坐标系转换至像素坐标系。其转换过程如下:

其中dx和dy分别是各个像素点在图像坐标系中x轴方向和y轴方向上的物理尺寸,m和n是图像坐标系中的原点转换至像素坐标系时的坐标。

由上式(4)可以得出畸变前后的像素坐标:

畸变前的像素坐标(m0,n0):

畸变后的像素坐标(m1,n1):

综合式(5)-(8),可将式(3)转化为以下式子:

本文采用文献[14]中的处理方法,通过拍摄多组不同角度和不同位置的单平面棋盘格的图片来进行相机标定的,故上式中的m1、m0、n1、n0可以通过棋盘的角点来获得,假设拍摄了a 幅图片,每幅图片上的棋盘有b个角点,就可以得到ab个约束方程,接着使用最小二乘法求得k1、k2、k3、p1、p2等畸变系数的值,从而完成车道线图像畸变的校正,其效果如图2所示。

图2 畸变校正前后对比图

3 图像预处理

3.1 图像灰度化

一般来说,车载摄像头拍摄的图像是彩色图像,但是彩色图像的每个像素由R、G、B 三个通道组成,且每个通道都有255 个可以选择的值,这极大的增加了图像处理的计算量,故首先需要将车载摄像头拍摄的图像转换为单通道的灰度图像,本文采取加权平均法对车载摄像头拍摄的图像进行灰度化处理,其转换公式如下:

式中,R(x,y)是(x,y)位置的像素点R通道的取值,G(x,y)是(x,y)位置的像素点G通道的取值,B(x,y)是(x,y)位置的像素点B通道的取值,Gray(x,y)是(x,y)位置的像素点经过灰度化处理后的灰度值。灰度化的效果如图3所示。

图3 图像灰度化

3.2 高斯模糊

在车载摄像头拍摄的图像中,常会产生图像噪声。噪声的存在会影响图像质量,对图像处理的后续操作带来困难,因此需要去除图像噪声。考虑到高斯函数的旋转对称性,使用它进行滤波时,不会偏袒任一方向,能很好的保留图像细节,不会对后续的边缘检测造成干扰,故本文选用高斯模糊来去除噪声。由于输入图像是二维图像,故选用二维高斯函数进行滤波,其公式如下:

式中,σ是高斯函数的方差,(x,y)是中心像素的位置。本文通过二维高斯函数求取中心像素周围8 个像素的权重,经过加权平均后输出中心点的像素。高斯模糊的效果如图4所示。

图4 高斯模糊

3.3 ROI选取

车载摄像头拍摄的图像中,只有一部分是车道,那些非车道的图像信息无需进行处理,为了减少图像处理的计算量,故需要选取感兴趣区域(ROI),只对ROI 进行图像处理。本文采取以下方案进行ROI选取:一般来说,车道线处于图像下半部分,对于第一帧图片,选取图像的下半部分为ROI区域,对于第二帧以后的图片,均以上一帧图片检测出的车道线区域作为参考选取ROI,若检测出的车道线区域超出上一帧图片的ROI,下一帧图片的ROI 进行该方向的适当扩大,若检测出的车道线区域未超出上一帧图片的ROI,下一帧图片的ROI进行该方向的适当减小,其工作流程图如图5所示。

图5 ROI选取流程图

4 基于改进麻雀搜索算法的边缘检测

车道线检测的前提是检测出车道线的边缘,目前最常用的是基于Canny 算子的边缘检测方法,但是该方法存在易把噪声误判为边缘的问题,且需人工选择阈值[15]。而本文采用的麻雀搜索算法是受到麻雀觅食并在觅食过程中逃避危险启发而提出的智能优化算法[16],其局部搜索能力极强,并且收敛速度很快。基于此特点,本文对麻雀搜索算法进行了改进,使其能够很好应用于边缘检测。基于改进麻雀搜索算法的边缘检测主要步骤如下:

(1)输入经过预处理的图像,每个像素点视为一个麻雀可以觅食的位置。

(2)初始化麻雀位置:将n 只麻雀随机分布至图像的像素点。

(3)在每代麻雀中选取固定比例的麻雀作为发现者,发现者为整个麻雀种族的觅食提供方向,其位置更新公式如下:

式中,H(x,y)表示(x,y)位置的像素的灰度值,显然在边缘区域的像素灰度值变化大,具有更好的适应度。当C(x,y)<ST时,未达到警戒阈值,即该麻雀不在边缘区域,此时可以进行广泛搜索,当C(x,y)≥ST时,达到警戒阈值,即该麻雀在边缘区域,此时只能按标准正态分布随机进行小范围移动。

(4)在每代麻雀中除了被选为发现者的麻雀外均视为跟随者,跟随者跟随发现者进行觅食,其位置更新公式如下:

(5)有一部分麻雀能够意识到危险存在,当意识到危险后,这部分麻雀会调整位置,其位置更新公式如下:

(6)继续迭代,直至达到设定的最大迭代次数。在边缘检测中,输出的图像为二值化图像,将图像有麻雀停留的位置像素值设为1,没有麻雀停留的位置像素值设为0,最后将图像输出,输出图像的效果如图6所示。

图6 边缘检测前后对比图

5 Hough变换

上一步的边缘检测已经检测出了车道线的边缘,但是除了车道线的边缘,还检测出了一些干扰因素,故还需要对边缘检测后的图像进行进一步操作,找到车道线。在大部分情况下,车道线是直线,针对这个特征,本文选用Hough 变换的方式提取车道线[17-18]。

输入图像是二维图像,其坐标是笛卡尔坐标,在笛卡尔坐标系中,直线的函数表达式是y=kx+b,转换到Hough坐标系后的函数表达式是b=-xk+y。如图7所示,笛卡尔坐标系中的一条直线上的点转换到Hough 空间后交于一个点:

图7 笛卡尔坐标系Hough变换示意图

但是当k=∞时,直线在笛卡尔坐标系中不方便表示,故需要先将笛卡尔坐标系转换为极坐标系xcosθ+ysinθ=ρ,再将笛卡尔坐标系转换到Hough 坐标系,其转换后的函数表达式是:ρ=cosθx+sinθy。如图8所示,极坐标系中的一条直线上转换到Hough空间后交于一点:

图8 极坐标系Hough变换示意图

因此,经过Hough变换可以很好地拟合出车道线,实现车道线检测的效果如图9所示。

图9 车道线检测效果图

6 实验与分析

为了验证本文提出的基于改进麻雀搜索算法的车道线检测与识别方法的效果,本文对3组实际车辆在道路上行驶时拍摄的视频在同一台计算机上进行车道线检测,其结果如表1所示。

表1 本文方法检测结果

针对3 组同样视频在同一台计算机上使用传统的基于canny 算子的边缘检测方法和基于均值漂移的图像分割方法进行车道线检测,其结果如表2和表3所示。

表2 基于canny算子边缘检测方法检测结果

表3 基于均值漂移的图像分割方法检测结果

表1、表2和表3中视频1 是白天在高速公路行驶视频,视频2 是阴天在高速公路行驶视频,视频3 是强光下在高速公路行驶视频。由表1、表2和表3的仿真结果可以看出,在相同帧数下,本文所提出的基于改进麻雀搜索算法的车道线检测与识别方法具有更高的检测识别率

综上,实验结果表明,本文提出的基于改进麻雀搜索算法的车道线检测与识别方法无论在正常天气还是在阴天和强光的条件下,都可以较为准确的实现车道线检测,平均检测正确率为95.33%,并且在阴天和强光的条件下,检测正确率也能保持在94.35%以上,具有良好的鲁棒性。与传统的基于canny 算子的边缘检测方法和基于均值漂移的车道线检测方法相比在准确率上均有明显提升。

7 结束语

本文针对阴天、强光等复杂天气情况下车道线检测准确率低问题,提出一种基于改进麻雀搜索算法的车道线检测与识别方法。基于上一帧的车道线检测情况实现感兴趣区域(ROI)选取,极大的减少了计算量,缩短了车道线检测和识别时间。同时,采用改进麻雀搜索算法实现边缘检测,解决了传统方法中Canny 边缘检测易把噪声误判为边缘的问题。经实验验证,该方法与传统方法相比,在车道检测识别正确率上表现出明显优势。

猜你喜欢
搜索算法畸变麻雀
改进的和声搜索算法求解凸二次规划及线性规划
拯救受伤的小麻雀
1958年的麻雀
麻雀
趣味(语文)(2018年2期)2018-05-26 09:17:55
在Lightroom中校正镜头与透视畸变
紧盯着窗外的麻雀
山东青年(2016年1期)2016-02-28 14:25:22
基于汽车接力的潮流转移快速搜索算法
基于逐维改进的自适应步长布谷鸟搜索算法
基于跳点搜索算法的网格地图寻路
辐射诱导染色体畸变的快速FISH方法的建立