车道偏离预警系统中图像处理方法的研究与分析∗
2021-06-02张德俊龚元明
张德俊 龚元明
(上海工程技术大学机械与汽车工程学院 上海 201620)
1 引言
车道偏离预警系统LDWS(Lane Departure Warning System)是高级驾驶辅助系统ADAS(Ad⁃vanced Driving Assistant System)中的重要组成部分,该系统通过机器视觉的方式采集车辆及道路信息,信息经过处理之后,如果系统判断有风险存在,会提前将有害信息提供给驾驶员,驾驶员可以及时对可能发生的状况和危险作出反应。能够有效避免因车道偏离而引发的交通事故,保证驾驶员的人身安全。
车道偏离预警系统中首先要对路面信息进行采集,然后通过不同的方法对道路图像进行处理,最终得到车道线的位置,根据不同的车道偏离预警模型对车辆的实际偏离情况进行判断。其中,对采集到的图像信息进行有效的处理能够极大地提高算法的识别率甚至会直接影响检测的结果。
目前,人们对车道偏离预警系统(LDWS)的研究已经比较成熟,提出了很多处理图像的方法可以将车道线从复杂的路面图像中提取出来。对于LDWS来说,主流方向是对单目摄像头采集的图像进行研究与处理,有着成本低,计算量小的优势。图像处理的方法也多种多样,例如:感兴趣区域(ROI)的提取、道路图像的灰度化处理、图像增强、图像滤波处理、边缘检测等。通过运用不同的图像处理方法,又或者将各种图像处理方法进行不同的组合,会产生完全不同的效果。
2 图像尺寸处理
2.1 图像的尺度缩放
通过单目摄像头采集的道路实时图像,其分辨率通常都在800×600和1440×1080之间[1]。算法一般都需要对图像里的每一个像素点进行处理计算,每一帧图像里面的像素点越多,计算量越大,算法实时性可能就越差。而且,同一个物体出现在分辨率不同的图像中,其尺度也会不同,会影响到后续图像处理算法的准确性。如果将图像传感器采集的实时图像统一缩放到合适的分辨率,可以有效提高整体算法的准确性和实时性。经过大量测试,将道路图像的分辨率缩放为640×480时,能够在保证车道线检测算法准确率的同时,明显提高算法的实时性。取道路图像中的一帧,进行尺度缩放,效果如图1所示。
图1 图像尺度缩放效果图
2.2 感兴趣区域的划分
通过车载单目摄像头采集的信息多而杂,处理起来时间比较长,然而在道路图像中,我们所需要的信息只是整幅图像的一小部分;而且车载单目摄像头在安装固定以后,只要路况不发生大的改变,我们所需要处理的目标在道路图像中的相对位置是基本不变的。因此,我们可以将需要的一小部分图像从道路图像中提取出来,以减少计算量来提高算法的实时性。
车道偏离预警系统正常安装在车辆上之后,摄像头位置固定并且摄像头的光轴与道路平面平行,摄像头采集完道路图像后,我们所需要的车道图像通常位于整幅图像的下半部分[2~3]。这部分就是所说的感兴趣区域ROI(Region of Interest),如图2所示;而天空、树枝、高层建筑等无用的信息出现在上半部分,我们可以将上半部分的图像舍弃,只对下半部分进行处理,这样可以节省几乎一半的时间,同时还能提高算法的识别率。
3 图像的色彩处理
3.1 图像的灰度化
图像的灰度化是一种经典并且实用的处理方法,由于车辆抖动、天色明暗、昼夜变化等原因导致采集到的图像色彩及亮度差异极大,为了减小环境变化所带来的影响,早期的大部分算法都抛弃了颜色信息,直接将RGB图像转化为灰度图像,利用车道标识线的灰度特征完成对车道标识线的识别。同时,图像由彩色图转为灰度图,每个像素点关于色彩的三个分量(R、G、B)转化为一个灰度值,减少了计算量,保证了算法的实时性[3~5]。
图2 感兴趣区域的划分
图像灰度化主要使用三种方法:最大值法、平均值法、加权平均值法。
1)最大值法。找出每个像素点R、G、B三个分量中的最大值,将此值作为灰度图像中像素点的灰度值,如式(1)所示。
2)平均值法。计算出每个像素点R、G、B三个分量的平均值,将此值作为灰度图像中像素点的灰度值,如式(2)所示。
3)加权平均值法。人眼对红、绿、蓝三种颜色的敏感程度是不一样的,敏感程度绿>红>蓝。根据敏感程度的高低,来确定颜色的三个分量的重要性,按照R、G、B三分量的重要性赋予不同的权值系数,分别用每个分量的值乘以它们的权值系数,最后相加得到灰度图像的灰度值,如式(3)所示。
根据大量实验分析表明,将R、G、B三个分量的权值系数分别赋值为0.59、0.30、0.11时,与正常人类的视觉系统最相似。
本文分别使用三种方法对采集的道路图像进行了处理,结果如图3~图5所示,通过最大值法得到的灰度图像亮度偏高,降低了图像的对比度;另外两种算法得到的图像差别不大,但加权平均法得到的图像在车道标线区域对比度较高,能够更好地突出车道线的特征,有利于车道线的检测。
3.2 白平衡
随着现在LDW硬件基础的更新换代,计算速度和数据传输速度也在不断提升,以及机器学习领域的渗透,已经有许多算法直接对彩色图像进行处理。RGB图像中的色彩提供了更为丰富的信息[6],完全可以利用这些信息得到更为精确的识别结果。
图3 最大值法
图4 平均值法
图5 加权平均值法
一般处理彩色图像的时候都需要进行白平衡的操作,因为车辆的抖动或者光照的变化等原因,采集的道路图像色彩不均匀,有一定的是噪声影响。因此,需要对采集的图像进行白平衡处理,保证后续检测不会受到图像传感器成像色差的影响。软件中所做的白平衡也是为了防止低成本摄像头中没有白平衡硬件电路所带来的问题。
白平衡算法主要有两种:Bright Block算法和Automated算法[7]。白平衡处理后能够使道路图像中的白色车道线更加明显,极大地减少了阴天或较暗的环境下光照不足带来的影响,有利于后续算法的实现,保证了后续图像处理的准确性。
4 图像滤波
车载图像传感器采集的道路信息,会受到道路中的车辆、环境中的光照、路面的平整度、道路两旁的高大建筑物等因素影响,图像中会产生很多不利的噪声;并且图像传输和解码等过程中也容易产生椒盐噪声,具体表现为图像中出现很多黑白点,这些噪声与周围邻域像素点的差异较大,会降低图像的质量甚至影响到车道线等有用的信息。导致算法产生误差,影响车道线检测效果。使用平滑处理(也称模糊处理),可以减少图像上的噪点或者失真,有效消除噪声对图像的影响。
噪声的种类不同,处理的方法也不同,常用的去噪方法有高斯滤波、均值滤波、方框滤波、中值滤波、双边滤波、维纳滤波等[2]。
4.1 高斯滤波
高斯滤波可以有效地减少高斯噪声,需要把原始图像中像素点的值与该点邻域内的像素点的值进行加权平均,得到的值作为滤波过的图像中对应像素点的值,这种处理方法属于线性平滑滤波。在高斯滤波的算法中,经常使用的滤波器是二维零均值离散高斯函数。该滤波器的公式如式(4)所示。
高斯滤波是一种常用的滤波手段,效果如图6所示。
图6 高斯滤波处理结果
4.2 双边滤波
双边滤波是一种非线性的滤波方法,使用它的最大好处是可以很好做边缘保存,相比维纳滤波和高斯滤波,可以对高频细节进行有效的保护,比较适合用在LDWS中,在滤波的同时保存车道线的特征。双边滤波器中,输出像素的值依赖于邻域像素值的加权组合,如式(5)所示。
双边滤波的图像处理效果如图7所示,图像中白色车道线的边缘部分较为清晰,证明双边滤波器能够在滤波的同时较好地保留车道线的特征。
4.3 滤波结果分析比较
线性滤波器易于构造,易于从频率响应角度来进行分析,如方框滤波器、均值滤波器、高斯滤波器等,它们过滤后的图像的像素值是原图像像素值的加权和。但在很多情况下,非线性滤波能够起到更好的效果,如中值滤波和双边滤波。
图7 双边滤波处理结果
很多文献中都是使用中值滤波来处理道路图像,因为中值滤波在消除脉冲噪声和椒盐噪声时有非常大的优势,而且算法相对比较简单,滤波效果也不会像均值滤波和高斯滤波那样,使图像显得十分模糊。
双边滤波比高斯滤波多了一个高斯方差sig⁃ma-d,能够保证边缘附近的像素不会被距离较远的像素影响太多,同时又能有效地去除散粒噪声,也非常适合用来做车道线识别。
非线性滤波的劣势是在运算速度上,如中值滤波花费的时间是均值滤波的5倍以上,因为计算量较大,会一定程度上影响到算法的实时性。
5 图像的阈值分割
图像的阈值分割也就是进行二值化处理[8~9],将像素点的灰度值变为0或255,让整幅图像变为纯粹的黑白图像,只有黑白两种颜色[4]。二值化后的图像中包含的干扰信息较少,可以清楚地显示物体的轮廓,对后续边缘检测算法提供了可靠的保障。图像二值化如式(6)所示。
公式中输出图像用g(x,y)来表示,输入图像用f(x,y)来表示,阈值用T来表示。因为不同天气、不同环境下得到的灰度图像会有差异,最合适二值化的阈值也会有所变动,所以一直使用一个固定的阈值并不是一个很好的选择。OTSU算法(最大类间方差法),也称作大津法,该算法使用聚类的思想,把图像中的物体按灰度等级分为两类,两类之间像素点的灰度值差异最大,同一个类之间的像素灰度值差异最小,最后通过计算方差的方式来寻找到最合适的阈值。大津算法被认为是图像阈值分割时选取阈值的最佳算法,计算简单并且不会受到图像亮度和对比度的影响。使用大津法二值化后的图像如图8所示。
图8 阈值分割后图像
6 图像的边缘检测
目前,车道线的检测技术大多以灰度阈值分割加边缘检测为基础。一般情况下,边缘检测可以处理掉大部分的干扰信息,保留图像的主要结构和特征。图像中物体的边缘处灰度的一阶导数数值很大,而二阶导数数值为零[3],利用这一特点,巧妙地使用图像的微分算子能够把图像中各种物体的边缘提取出来。下面列举了两种边缘检测算子。
6.1 Sobel算子与Scharr滤波器
索贝尔算子(sobel operator)利用了加权平均、微分、求梯度等方法[10~11],对道路图像中的像素点进行筛选,最终找出图像中为极值点的像素点。图9和图10是与Sobel算子有关的两个模板,经常被用来计算水平和垂直两个方向上的梯度。
图9 水平边缘算子
图10 垂直边缘算子
而Scharr滤波器则是经常配合Sobel算子来进行边缘检测,速度跟Sobel滤波器一样快,但是准确率更高。所以当我们使用3*3的滤波器进行边缘检测的时候一般都会优先选用Scharr滤波器,图11是使用Scharr滤波器对阈值分割后图像进行边缘检测后的效果图。
图11 Scharr滤波器检测效果图
6.2 Canny算子
Canny边缘检测算子于1986年被John F.Canny开发,由于它的低错误率、高定位性、最小响应(图像中的边缘只会标识一次),被很多人推崇为当今最优边缘检测算法。它的计算过程可以分为四个部分:1)消除噪声,一般使用高斯平滑滤波器卷积降噪。2)计算图像中梯度的幅值和方向。3)非极大值抑制,排除非边缘像素。4)滞后阈值,需要设定一个高阈值和一个低阈值。当像素点位置的幅值大于设定的高阈值时,该像素点被保留;幅值低于设定的低阈值时,该像素点被排除;幅值位于两个阈值之间时,若该像素点连接到一个高于高阈值的像素点时才会被保留。
经过大量测试,Canny边缘检测算子在使用合适的参数时,效果十分优秀,配合改进后的霍夫变换检测车道线错误率极低。图12与图13是在使用Canny边缘检测算子的前提下,设置不同的高低阈值所产生的不同结果(两幅图片使用了相同的3*3的高斯内核降噪)。
图12 Canny算子边缘检测效果图(低阈值为6,高阈值为15)
图13 Canny算子边缘检测效果图(低阈值为10,高阈值为45)
7 结语
本文研究的LDW算法采用了灰度图像边缘检测的方法来检测车道线,主要介绍了LDWS中对图像的预处理部分,并且按照图像处理的先后顺序分析了每一步操作可以使用的算法,以及这些算法的优劣性。
经过图像的预处理,就可以采用霍夫变换,检测图像中的直线,再经过各种筛选将图像中的车道线提取出来。当然,这种算法可以巧妙地利用车道线的边缘特征,筛选、提取图像中的车道线,但同时也会检测出一些具有车道线边缘特征的干扰项,如较高的建筑物、护栏、位于道路上方的高架桥等,这些干扰容易对车道检测的精确度产生一定的影响。不过,如果在霍夫变换时加上合适的斜率与角度等限制条件,检测出车辆当前所在的车道线也不难。
同时,除了本文所介绍的图像处理方法,仍有许多优秀的算法可以用来检测车道线。如:道路图像增强[12~13],逆透视变换[5,14],基于彩色聚类的车道检测算法,基于模型的车道检测算法[15]等。总之,无论使用什么方法,核心算法必须要有足够鲁棒性以适应各种不同的道路情况和不同的天气情况,并且在保证准确性的前提下,尽量减少算法的计算量来确保算法的实时性。