技术背景
伴随机器视觉的发展,驾驶员辅助驾驶技术受到越来越多的关注,车辆偏离车道极易发生车辆碰撞从而造成交通事故,车道线检测技术能够帮助驾驶员及时准确的把握路况信息,一旦有偏离车道的情况出现,可以及时提醒驾驶员车道出现偏离,及时调整方向盘,避免事故的发生,当然车道线技术也可以应用的汽车自动驾驶,当前许多大公司包括google都在大力发展汽车自动驾驶技术,但是这个技术的关键也就在车道线检测上,只有识别出了车道线,汽车才能按照车道线行驶,从而能够避开障碍物等,当前对于车道线的检测主要有以下5种检测方法:
1.将H-MAXIMA变换和霍夫变换相结合,在感兴趣区域中寻找车道线,从而实现对车道线的检测,这种方法对于突变的车道线有较好的效果。
2.将车道线检测技术融合了阈值化的车道偏离,这种方法能有效的提取出不同颜色的车道标线,并对驾驶员及时预警。
3.将基于边缘的车道线检测技术用FPGA实现,对然后检测时间,检测精度和硬件资源消耗进行综合优化。
4.将Principle Component Analysis(PCA,主成分分析)降维和k-means的车道线检测以及Mean-Shift跟踪算法结合实现车道线的检测,但是此方法在车道标线污损时,效果不佳。
5.基于加权投票的车道线检测算法,这种方法对于光照变化、车道线颜色变化及道路结构变化有较好的适应性。也是当前的一个热门研究方向。
由于场景光照变化,道路情况复杂,车道线污损等实际情况,车道线的准确定位一直未得到有效解决。
发明内容
本发明所要解决的技术问题是,提供一种能快速、准确定位车道线的方法。
本发明为解决上述技术问题所采用的技术方案是,一种基于多特征融合及多态均值的车道线定位方法,包括以下步骤:
步骤1、转换色彩空间:将摄像头采集的原始图像转换为灰度图像和HSI图像;
步骤2、车道线区域初步划分:
对于灰度图像的处理:在车辆正前方的区域取局部区域作为道路样本,计算区域内像素的均值m和标准差σ,若标准差σ小于预设阈值,则将该标准差σ作为道路灰度分布的依据;再计算灰度图像中各像素点与均值m之差的绝对值τ1;
对HSI图像的处理:计算HSI图像中各像素点与由先验知识得到的白色或黄色区域中心的距离τ2;
计算各像素点融合特征λ:
式中,α1,α2∈[0,1]分别为灰度通道和HSI通道的权重;β1,β2∈(0,∞)为通道的调整系数;
当像素点融合特征λ大于车道线判定阈值,则将该像素点划分至车道线区域,否则将该像素点划分至非车道线区域;对所有像素点划分完毕后,再进行闭操作,得到车道线区域初步划分图像;
步骤3、车道线精确提取
以车道线区域初步划分图像取设定高度范围内的每一行的中间像素点为起始位置分别向左、右两边搜索左侧车道线端点、右侧车道线端点;
所述左侧车道线端点的标准为:以车道线端点为起始位置向左搜索方向上的预设宽度范围内存在连续的属于车道线区域的像素点,并在连续的车道线区域的像素点之后出现非车道线区域的像素点,并且以该端点作为左下角取设定大小的子图像内有满足设定斜率范围内的设定长度直线段;
所述右侧车道线端点的标准为:以车道线端点为起始位置向右搜索方向上的预设宽度范围内存在连续的属于车道线区域的像素点,并在连续的车道线区域的像素点之后出现非车道线区域的像素点,并且以该端点作为右下角取设定大小的子图像内有满足设定斜率范围内的设定长度直线段;
步骤4、利用多态均值对车道线定位:
将连续帧中检测出的左侧车道线端点、右侧车道线端点位置坐标求平均值,得到左侧车道线端点、右侧车道线端点的定位结果,并将当前图像中所有的左侧车道线端点连为直线得到车辆前方左侧车道线定位结果,将当前图像中所有的右侧车道线端点连为直线得到车辆前方右侧车道线定位结果。
本发明通过摄像头获取车辆前方路况图像,根据路面灰度正态分布特征和HSI颜色空间信息,提出了将不同特征融合判定的具体方法,根据道路实际情况,可设定不同的参数,将车道线的灰度分布信息和HSI空间中的颜色分布信息按权重融合,得到车道线疑似区域;然后根据先验知识,从道路中间向两边搜索,将类似车道线的条形区域认定为车道线可能存在的区域,并在该子区域中进行检测,排除非车道区域,得到了避免非道路特征的干扰的包含车道线的子图像;再对子图像求边缘,运用霍夫变换检测直线,确定车道线在当前帧中的位置;最后通过对多帧车道线状态的融合,利用车道线位置不会突变的实际情况,对连续帧的检测结果求均值,得到稳定的车道线定位结果,克服了可能出现的不稳定情况,进一步提高了鲁棒性。
本发明的有益效果是,利用了多特征对车道线进行检测,并对检测结果进行了融合,使检测精度和速度都得到了大面积提升。
具体实施方案
为了方便地描述实施例内容,首先对一些现有术语进行定义。
定义1:正态分布特征。正态分布又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为:服从正态分布的随机变量的概率规律为:与μ邻近的值的概率大,而离μ越远的值的概率越小;σ越小,分布越集中在μ附近,σ越大。
定义2:256级灰度颜色空间。灰度使用黑色调表示物体,即用黑色为基准色,不同的饱和度的黑色来显示图像。每个灰度对象都具有从0到255的灰度值,表示亮度从深到浅,对应图像中的颜色为从黑到白。由RGB颜色空间到256级灰度空间的转换公式如式(1)。
Gray=R*0.299+G*0.587+B*0.114 (1)
定义3:HSI颜色空间。HSI模型是美国色彩学家孟塞尔(H.A.Munseu)于1915年提出的,它反映了人的视觉系统感知彩色的方式,以色调H(Hue)、饱和度S(Saturation)和强度I(Intensity)三种基本特征量来感知颜色。色调(H)是描述纯色的属性,就是平时所说的颜色名称(纯黄色,橘黄色,红色等),按照在标准色轮上的位置,取0-360度的数值(或者归一化为0-100%的数值)。饱和度(S)是指一种纯色被白色稀释的程度的度量,其值越大,色彩纯度越高,越低则逐渐变灰,取0-100%的数值。亮度(I)是一个主观的描述子,取0-100%的数值。HSI模型非常适合彩色特性检测与分析。HSI色彩空间是从人的视觉系统出发来描述色彩,能很好的描述人眼中的色彩。由RGB颜色空间到HSI颜色空间的转换公式如式(2)。
其中
定义4:闭操作。闭操作可使轮廓线更光滑,闭操作通常消弥狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓线中的断裂。使用结构元素B对集合A进行闭操作,定义为这个公式表明,使用结构元素B对集合A的闭操作就是用B对A进行膨胀,然后用B对结果进行腐蚀。膨胀是形态学的基本操作,公式为运算前A、B分别为两个区域,B中的黑点为B的中心,运算后相当于用B的中心在A的边界走一圈,B的边界扫过的区域加上A本身的区域就是A膨胀B的结果。腐蚀是形态学的基本操作,公式为使用B对A进行腐蚀就是所有B中包含于A中的点z的集合用z平移。
定义5:斜向Sobel算子。Sobel算子是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来计算图像亮度函数的梯度近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是法矢量。传统Sobel算子主要用于检测垂直和水平边缘。斜向Sobel算子是Sobel算子的改进,斜向Sobel算子包含两组3x3的矩阵,如式(3),将之与图像作平面卷积,即可分别得出45°和-45°方向亮度梯度近似值。
如果梯度值G大于某一阈值,则被认为是图像斜向边缘。
定义6:霍夫变换。霍夫变换(Hough Transform)霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,最基本的霍夫变换是从黑白图像中检测直线(线段)。利用直线方程ρ=x·cosθ+y·sinθ θ∈[-π,π)转到参数平面,对原图像平面的每个像素点进行遍历,将每个像素点对应参数的出现次数,在参数平面中进行累加,统计参数平面中各点的累加值,即可得到原平面中与之对应的像素点个数组成的线段。
定义7:多态均值。图像每一帧为一个状态,由车辆平稳行驶和车道线连续的特点,可以得出,车道线在连续的帧图像中的位置不会突变。由多帧的车道线状态,利用求平均的方法,得到稳定的车道线定位结果的思想,称为多态均值。
如图1所示实施例的车道线检测方法,包含下列步骤:
步骤1、转换色彩空间
摄像头采集的图像一般为RGB图像,RGB图像不利于颜色的聚类。通过实验数据,我们认为图像中道路区域的灰度值服从正态分布,而车道线颜色分为白色和黄色,在HSI空间中分布于两个特定区域中。我们根据车道线的这些信息,对车道线进行初步的提取。首先,我们需要将RGB图像装换为灰度图像和HSI图像。为避免浮点运算,我们用公式(4)将图像转换为灰度图像,用式(2)将图像转换为HSI图像。为避免图像尺度的影响,我们将图像缩放到宽度640像素,高度480像素,为后续的车道线提取做好准备。
步骤2、车道线区域初步提取
我们在车辆正前方的区域取100*100的一块区域作为道路样本,局部区域的大小根据图像原始尺寸以及先验的车辆正前方道路区域在图像中的比例而定,计算区域内像素的均值m和标准差σ,若标准差σ<5,表示样本提取成功,并将之作为道路灰度分布的依据。白色车道线的灰度值大于均值,黄色车道线的灰度值小于均值,所以计算图像中像素点与均值之差的绝对值,得到第一个特征:τ1;在灰度图像中,已经得到像素点对应的颜色,则在HSI空间中,计算像素点与由先验知识得到的白色或黄色区域中心的距离,作为第二个特征:τ2。由式(5)计算像素点融合特征。
式中,α1,α2∈[0,1]为灰度通道和HSI通道的权重,代表了我们对这两个通道的信任程度;β1,β2∈(0,∞)为通道的调整系数,β1值越小,表示在灰度空间中,车道线灰度值和均值的差别要求越大;β2值越小,表示对HSI空间中距离偏差的容忍度越大。
设车道线判定阈值为θ,当λ>θ,认为是疑似车道线区域,疑似结果用二值图像表示,数值“1”表示车道线区域,再对图像进行闭操作,去除细小缝隙。
步骤3、车道线精确提取
步骤3-1:从步骤2所得图像中,设图像高度为H,则从LOC=0.9*H位置,从中间分别独立的向两边寻找左(右)车道线,当遇到“1”时,判断在宽度w范围内,是否存在一定长度的连续“1”像素,并最终变为“0”像素。若不存在,将位置LOC降低0.05*H,重复步骤3-1。若位置低于0.6*H,仍未满足条件,表示未找到左(右)车道线。此时,初始化左(右)车道线端点容器,即清空端点容器。LOC的位置范围根据车道线出现在图像中的位置而定,为避免干扰,去除地平线上天空的位置,取图像的中上部分。
步骤3-2:将步骤3-1得到的点作为车道线子图像的左下角(右下角)点,取100*100像素的子图像,作为车道线子图像。对子图像进行45°(-45°)斜向Sobel滤波,并对滤波后的图像进行霍夫变换找到最长的直线。考虑到可能产生的误差,将间隔小于5个像素的线段视为同一线段,将之合并。若没有找到长度大于50的线段,将位置LOC降低0.05*H,重复步骤3-1。
步骤3-3:将步骤3-2得到的线段两个端点,分别存入左(右)车道线端点容器。容器元素为线段两个端点P1(x,y),P2(x,y)的坐标值,靠近图像底部的点P1(x,y)放前面。容器大小n可以根据对灵敏度和稳定性的权衡,取5到15,典型值取10,即容器中存放10条线段的20个端点,可以满足大多数应用场合。
步骤4、利用多态均值对车道线定位
在实际情况中,车辆位置不会突变,车道线在图像中的相对位置较为稳定。步骤3中容器内的左(右)端点,在短时间内,可以认为是同一条车道线上的点。若连续K帧检测出左(右)车道线,判定为左(右)车道线检测正确,K的值可取5到10。此时,我们将左(右)端点容器中的位置坐标,按照式(6)求平均值,得到车道线端点的平均坐标值,即车道线端点定位结果P1'(p1x,p1y),P2'(p2x,p2y),将端点连为直线,即得到车辆前方车道线定位结果。
式中,pi(num,axis)表示第i帧图像,num取值为1或2,表示左(右)车道线端点,axis表示坐标值。
采用本发明方法,在C++平台上实现算法,与传统的方法比较,基于灰度特征和HSI颜色空间特征的车道线检测算法,充分利用了车道线的固有特征,提高了车道线检测精度;仅对车道线子区域进行检测,提高了车道线检测速度;多态均值的应用,提高了车道线定位的稳定性。通过大量实验证明,本发明具有以下特点:
1.低成本。利用安装在车辆上的普通摄像机即可得到前方道路情况,无需其他采集设备。
2.实时性。本算法实时性好,每秒能处理50帧以上的图像,不会给高级驾驶员辅助系统带来巨大运算。
3.鲁棒性。本算法鲁棒性较强,能适应不同天气和道路情况。