具体实施方式
本发明的核心思想是采用边缘检测的方法得到边缘的强度和方向,并对边缘进行连接,对达到一定长度的边缘线上的点,在其边缘方向上,对哈夫变换进行累积,并求得累积强度最大的方向。在最大累积强度的方向上,寻找累积值最大的直线。统计落在所述累计最大直线上并达到一定长度的边缘线段的累积长度,将其与阈值进行比较,从而确定最终检测直线。然后,继续处理下一个最大累积值。
图1是根据本发明的车道线检测方法的流程图。
在步骤101中,通过对当前图像帧进行边缘检测,得出其中各像素点的边缘强度和边缘方向。
一种确定当前像素点检测边缘强度和边缘方向的方式如下:
采用水平边缘检测算子与图像卷积得到当前点的水平边缘强度EH,采用垂直方向的边缘检测算子与图像卷积得到当前像素点的垂直边缘强度EV,然后,根据各像素点的水平和垂直边缘计算其边缘强度和边缘方向。一种计算方式为,计算边缘强度为 边缘方向角为 边缘算子有很多定义方法,常见的如sobel算子,prewitt算子等。
进一步,按照定义式计算边缘方向角度的方式运算量较大,一种更优的方式是计算边缘强度和离散化边缘方向。首先,假定将处于0到360度的边缘方向角离散化为N个区间,并用所在区间序号NED作为其离散化边缘方向值。此时,边缘方向属于同一个角度区间范围内的像素点,它们离散化的边缘方向的值相同。
根据NED的定义,该像素点的离散化边缘方向 且i=0,1...N-1}。如果采用上述定义先计算ED,再由ED计算NED的值,其计算速度会比较慢。本发明采用一种快速计算方法:
步骤1:如果EH为0,则设定此时NED为0;否则,进行步骤2;
步骤2:初始化i=0,计算的值;
步骤3:如果
小于等于
的值,终止流程;否则,进行步骤4;
步骤4:i增加1,如果此时i<N-1,则回到步骤3,否则终止流程。
上述流程得出的i值即为该像素点NED的值。在上述过程中,可以对所有像素先计算得到i为0到N-1时的余切函数值
从而减少运算。显然,由于上述过程中只需要进行简单的代数运算和余切函数的计算,因此计算速度大大快于采用根据NED的定义进行计算的方法。
通过上述方法,遍历当前图像帧中的所有像素点,可以得到各像素点的边缘强度(EI)和离散化的边缘方向(NED)。
当然,求取边缘强度和边缘方向的方法也可以采用任何现有方法。
在步骤102中,根据步骤101中得出的边缘强度和边缘方向,对各像素点进行边缘连接,得到图像中的边缘线段。
将边缘像素点连接组成线段的方式有很多。最简单的方式是设定一个阈值,如果当前像素点的边缘强度大于阈值,则认为当前像素点为一个边缘像素点,否则,认为不是边缘像素点。然后,将相邻边缘像素点进行连接,得到边缘线段。但是,如果阈值设得太小,则容易受到背景干扰,会受到诸如道路以外的植被,阴影的干扰等,如果阈值设得太大,则会出现车道线由于不清晰断开的情况。
为了更好地得到车道线对应的边缘线段,避免干扰,同时避免中间断掉的情况,本发明采用基于双阈值的边缘连接方法。
对于上述得到的边缘强度,采用双阈值分别得到两幅边缘强度的掩模图像,即采用较低的阈值2得到边缘掩模图像1,采用较高的阈值1得到边缘掩模图像2。在边缘掩模图像2上,找出边缘强度最大的点,以该点为起点,在边缘掩模图像1中搜索存在的与其相邻的边缘点;在边缘掩模图像2中,将与找到的相邻边缘点位置对应的的像素点置为无效点;继续搜索,在边缘掩模图像1中,以找到的相邻边缘点为起点,寻找存在的与其相邻的边缘点;如果找不到存在的与之相邻的边缘点,则结束本次相邻边缘点的搜索,并根据该次搜索中找到的所有边缘点计算该连接边缘线段的长度,得到一条边缘线段;将在掩膜图像2中该边缘线段上所有点置为非边缘点,并继续在边缘掩模图像2中,寻找边缘强度最大的点,继续进行上述处理。直到边缘掩模图像2中所有有效点处理完毕。从而,通过上述边缘连接,得到多条边缘线段。
进一步可以对上述得到的边缘线段进行干扰滤除。可以在上述得到的边缘线段中进行挑选,将长度大于预定阈值的边缘线段作为有效边缘线段,从而滤除背景中的小的边缘的干扰,而保留车道线对应的边缘线段。
在步骤103中,对各边缘线段进行哈夫变换求其最大累积方向。
首先,采用基于极坐标的哈夫变换,得到各有效边缘线段的哈夫变换累积直方图,具体实施方法如下。
哈夫变换的基本思路是将原空间点的共线性关系转换为参数空间参数曲线的共线性关系。限定极坐标的角度的范围为[θmin,θmax],可取θmin为-90,θmax为90度。限定有效边缘线段到原点距离,即参数λ的取值范围为[λmin,λmax],可取λmin为负的图像对角线长度,λmax为正的图像对角线长度。将角度θ的限定范围均分为Nθ个区间,将距离λ的限定范围均分为Nλ个区间。建立一个二维的直方图,称为哈夫变换累积直方图,并将上述哈夫变换累积直方图的所有值初始化为0,该直方图的横坐标t对应角度所在区间序号,纵坐标r对应距离λ所在区间序号。
然后,对于上述得到的有效边缘线段上的所有像素点,分别进行如下累积处理:
1.对于Nθ个子区间,分别对应t=1,2...Nθ,假定当前对应第t个子区间,将该子区间中心点的角度θc,代入公式λ=xcosθ+ysinθ中,求得对应的λc=xcosθc+ysinθc,计算λc落入的λ区间r,将哈夫变换累积直方图对应(t,r)位置处的值增加。
2.对于1所得到的哈夫变换累积直方图,计算其在各方向区间的累积值和,共Nθ个值,找到各方向区间上累积值和最大的方向区间的中心点对应的角度值为θmax c,它代表各边缘线段的最大累积方向。
本发明没有直接确定累积值最大的直线,是因为考虑到车道上的车道线一般都是直线且相互平行,直接从哈夫变换后找车道线所在的方向即最大累积方向,比寻找单一直线对干扰具有更强的抵抗能力。从而将不在车道线方向上的所有直线去除。
上述方法中,没有考虑车道线上各点的边缘方向与车道线方向之间的关系。一般而言,车道线为宽度和亮度均匀的直线,那么车道线上各点的边缘方向与车道线本身的方向或者呈现90度,或者呈现270度。下面给出一种考虑车道线上点的边缘方向与车道线走向关系的优选方案:
对于步骤102中得到的的各有效边缘线段上面的所有像素点,分别进行如下累积处理得到其哈夫变换累积直方图:
在进行哈夫变换累积时,对当前边缘点,只对与边缘方向垂直即车道线所在的方向附近的方向子区间进行累积,使得累积值更加准确地反映了其边缘走向。所述与边缘方向垂直的方向称作垂直边缘方向。假定当前像素点的边缘方向离散化值为ED(x,y),其对应的方向角为
其对应的车道线的角度为
则N
θ个方向子区间t=1,2...N
θ中,与当前点边缘方向对应的车道线方向相近的子方向区间采用如下条件判定:如果满足
则认为二者临近,其中T2为阈值。
对当前点边缘方向附近的子区间进行如下处理:
假定当前对应第t个子区间,将该子区间中心点的角度θc,代入公式λ=xcosθ+ysinθ中,求得对应的λc=xcosθc+ysinθc,计算λc落入的λ的区间r,将哈夫变换累积直方图对应(t,r)位置处的值增加。
对上述得到的哈夫变换累积直方图,计算其在各方向区间的累积值和,共Nθ个值,找到方向区间上累积值和最大的方向区间的中心点对应的角度值为θmax c。
在步骤104中,在各边缘线段的最大累积方向上,找到最大累积值对应的λ区间,从而确定车道线。
对最大累积方向的角度所在区间对应的各个λ区间上的哈夫变换累积直方图共Nλ个值进行排序,按照从大到小的顺序进行如下处理:
得到当前λ区间中心对应的λ值为λmax c,则计算θmax c和λmax c决定的极坐标直线 该直线方程即为车道线所对应的直线。
需要指出,由于平行方向上可能有多条车道线,因此并非仅仅最大累积值对应的λ区间才能用来确定车道线。相反,从大到小排序后的多个累积值较大的λ值均有可能用做λmax c来确定车道线。可以设定一个累积值阈值,将累积值和该阈值相比较,累积值高于该阈值的λ区间可以确定车道线,借此可以排除环境因素对车道线判断的干扰。
在步骤105中,采用落在步骤104得出的直线上的边缘线段的长度和来滤除干扰。
计算落到该直线上的边缘线段长度和,如果该边缘线段的长度和大于预定阈值,则认为当前得到的直线有效;否则,认为是干扰,将其抛弃。
判断边缘线段是否处于直线上的准则可以采用如下方法。如果边缘线段上点(x,y)满足 则认为该点属于直线,其中ε为常数,取远小于1的正数,比如可以取1e-10,fabs()为取绝对值函数。继而,如果边缘线段上属于该直线的点的数量大于预定阈值,则认为该线段属于该直线。
在步骤106中,进一步采用直线跨度来滤除干扰。
由于车道线可能是虚线,所以上述阈值不能设定太大。为了更好地排除干扰,在步骤104得出一条直线之后,可以计算落在该直线上的相邻线段端点之间的最大距离,与阈值比较,如果大于阈值,则认为是正确结果;否则,认为是干扰。当然,判断边缘线段是否处于直线上的准则也可以采用上述方法。这种干扰滤除方法利用了车道线都具有一定跨度的特点,而干扰常常是聚集在一起的一系列边缘线段。
至此,可以得出多条通过验证的直线,即车道线。本领域的技术人员应当理解,也可以不执行步骤105和/或步骤106,而同样可以得出车道线的检测结果。
优选地,对于步骤103中得到的哈夫变换累积直方图在各方向区间的累积值和,如果求得的最大值Summax θ和次大值Summax2 θ间满足 关系,其中,T1为阈值,可以取为0.7,则进一步进行处理:
先对最大值进行步骤104,步骤105,和/或步骤106的处理,得到通过验证的多条直线。计算落在各直线上的边缘线段的长度和LSum1;
对次大值所在方向,同样进行步骤104,步骤105,和/或步骤106的处理,得到通过验证的方向为次大值对应方向的直线,计算落在各直线上的边缘线段的长度和LSum2;
如果,LSum1<LSum2,则认为次大值方向对应的通过验证的直线为最终检测到的车道线;否则,认为最大值方向对应的通过验证的直线为最终检测到的车道线。
本发明的车道线检测设备不仅用于摄像头中,还可以应用于汽车辅助驾驶系统中。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所述的权利要求书进行限定。