首页> 中国专利> 一种基于Hough变换的车道线检测方法

一种基于Hough变换的车道线检测方法

摘要

一种基于Hough变换的车道线检测方法,该方法针对现有车道线检测技术的需要建立特定的模型,算法比较复杂,效率低,实时性差的缺点,通过对经过Hough变换后的含有车道线的图像,利用车道线像素的位置信息进行车道线检测和趋势的判断,算法具有良好的实时性,高效率得检测车道线。本方法不需要引入过多的参数来辅助判别弯道,不需要车道线建模等繁琐方法,可用于普通车道和高速公路,可以简单快速地实现弯道趋势的识别,有较好的实时性和准确性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-07

    授权

    授权

  • 2019-05-24

    专利申请权的转移 IPC(主分类):G06K9/00 登记生效日:20190507 变更前: 变更后: 申请日:20160115

    专利申请权、专利权的转移

  • 2016-08-10

    实质审查的生效 IPC(主分类):G06K9/00 申请日:20160115

    实质审查的生效

  • 2016-07-13

    公开

    公开

说明书

技术领域

本发明涉及一种基于Hough变换的车道线检测方法,属于车辆自主驾驶和计算机辅助驾驶技术领域。

背景技术

近年来,随着公路里程的不断增加和汽车产业的不断发展,交通安全问题也日益严重道,路上的车辆越来越多,发生的事故也在逐年增长,交通事故所带来的伤亡及财产损失是触目惊心的。为减少交通事故的发生,运用计算机辅助驾驶系统等科技手段保障行车的安全成为了一种趋势,实现这类系统面临的首要关键问题就是实现快速准确地从车载视频图像中检测车道线,这可以让车辆按照实时路况准确规范行驶,以保证车辆、行人的安全。

目前国内外对车道线的检测算法多种多样,比较有代表性的算法可以分为以下2种:

1、基于模型的车道标志线检测算法。这种算法主要是基于不同的道路图像模型(直线模型、样条曲线模型或双曲线模型等),结合不同的识别技术来对车道标志线进行识别。(1)申请号:CN201110129547、名称为“基于计算机视觉的高速公路弯道检测方法”的专利,其算法是建立弯道的模型,利用区域生长方法获得车道直线上的两个车道线像素点,并采用Hough变换将两个车道线像素点拟合为车道线,最后通过叠加计算曲线车道区域内的车道线像素点到车道直线的距离来获取公路弯道的弯曲度和方向。其缺点是:建立弯道的模型,在弯道已知的情况下进行弯道趋势的判别,降低了弯道的趋势判别的实时性和实用性。这是针对高速公路道路的标准而确定的模型,但是如何运用到一般的公路上,参数如何设置,模型如何改变,具体的内容没有提及,这也造成方法使用起来存在一定的复杂性。(2)论文名称:一种分步式弯道检测算法,国防科学技术大学自动化研究所,其算法是车道线的识别采用双曲线模型,引入了大量的参数来控制车道线的形状,和车道线的趋势,其缺点是:建立模型的过程中引入较多较复杂的参数来辅助确定车道的趋势,这造成算法设计较为复杂,一定程度上降低了弯道趋势判别的效率和实时性。

2、基于特征的车道标志线检测算法主要是结合道路图像中标志线的一些特征如颜色特征、灰度梯度特征等,利用不同的识别技术如变换、模板匹配等从所获取的图像中识别出车道标志线。论文名称:基于Hough变换的车道检测改进算法研究,四川大学。其算法是通过对图像遍历,划分搜索区域后,根据搜索区域内白色像素点和黑色像素点的个数来确定偏离点,然后通过对搜索区域内像素点的灰度统计并且根据偏离点的位置来确定弯道的方向。当判定了车道的弯曲方向。其缺点是:判断车道趋势时,搜索车道线像素点的范围比较大,算法设计较为复杂,一定程度影响了判断车道趋势的实时性。

发明内容

本发明针对现有车道线检测技术的需要建立特定的模型,算法比较复杂,效率低,实时性差的缺点,提出了一基于Hough变换的车道线检测方法,对经过Hough变换后的含有车道线的图像,利用车道线像素的位置信息进行车道线检测和趋势的判断,算法具有良好的实时性,高效率得检测车道线。

以下结合附图1.1-6对本发明方法的实施过程进行详细阐述。本发明采用的步骤如下:

步骤1:图像预处理。

1.1、首先从监控相机等图像采集装置中获得原始图像R,对图像R二值化处理得到二值化图像R1。

1.2、针对上述二值化图像R1进行边缘提取处理。边缘提取处理采用Sobel算子或LoG算子。

确定LOG算子的具体步骤如下:

首先采用二维高斯滤波器平滑滤波;其次采用二维拉普算子进行图像增强;最后依据二阶导数零交叉进行边缘检测。

二维高斯滤波器的函数G(x,y)

G(x,y)=12πσ2e-(x2+y2)2σ2---(1)

用G(x,y)与原始图像f(x,y)进行卷积,得到平滑图像I(x,y)

I(x,y)=G(x,y)*f(x,y)(2)

其中*是卷积运算符,再用拉普拉斯算子(▽2)来获取平滑图像I(x,y)的二阶方向导数图像M(x,y)。由线性系统中卷积和微分的可交换性得:

M(x,y)=▽2{I(x,y)}=▽2[G(x,y)*f(x,y)]=▽2G(x,y)*f(x,y)(3)

对图像的高斯平滑滤波与拉普拉斯微分运算结合成一个卷积算子,

2G(x,y)=12πσ4(x2+y2σ2-2)e-(x2+y2)2σ2---(4)

式中▽2G(x,y)即为LOG算子,又称为高斯拉普拉斯算子。求取M(x,y)的零穿点轨迹即得到图像f(x,y)的边缘。以▽2G(x,y)对原始灰度图像进行卷积运算后提取的零交叉点作为边缘点。

边缘提取过程结束,得到边缘特征图像R2。

1.3、针对上述边缘特征图像R2进行图像去噪处理。对图像去噪采用均值滤波或高斯滤波方法。

其中,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。对上述边缘特征图像R2进行去噪处理后得到去噪后的图像R3。

确定高斯滤波的具体操作如下,

1.3.1确定一个n*n的模板(或称卷积、掩模),用于扫描图像中的每一个像素。高斯滤波器直接从离散高斯分布中计算模板值,二维零均值离散高斯函数作平滑滤波器,函数表达式如下:

g[i,j]=ce-(i2+j2)_2σ2---(5)

其中g[i,j]为模板元素,c是规范化系数,σ是高斯滤波器的宽度(决定着平滑程度),把式(5)重新表示如下:

g[i,j]c=e-(i2+j2)_2σ2---(6)

式(6)中,σ越大,高斯滤波器的频带越宽,其平滑程度越好。

选择适当的σ2值,以便获取模板。

选择n值和σ2值,然后根据下式:

g[i,j]*f[i,j]=Σk=0m-1e-k2_2σ2{Σl=0n-1e-l2_2σ2f[i-k,j-l]}---(7)

f(i,j)为图像像素值的灰度值。首先计算出模板的右下角元素,再根据高斯模板的中心左右上下对称性对应地复制给其它三个区域,即得出整个模板的元素,最后再对全部的模板元素求和、取倒数即求得规范化系数c。

c=1Σ0n-1Σ0n-1g[i,j]---(8)

1.3.2利用高斯模板对图像中每个像素进行遍历。h[i,j]为f[i,j]高斯滤波后的像素值。

h[i,j]=1Σ0n-1Σ0n-1g[i,j](g[i,j]*f[i,j])---(9)

图像R2经过滤波去噪后,得到去噪后的边缘特征图像R3。

1.4针对上述步骤得到去噪后的边缘特征图像R3并设置有效区域。本方法中的图像有效区域是指车辆在正常行驶过程中近处车道线出现概率高的地方,设置有效区域的目的就是去除与图像无关的信息以减少处理的数据量,提高算法执行效率和实时性。在确定有效区域之前,首先确定图像采集器的固定位置,然后确定近处车道线出现概率高的位置,所述近处即为车载摄像头三分之一至二分之一范围内的车道线拍摄角度图像。

确定有效区域设置的步骤如下:有效区域设置为任何形状,如设置为矩形,该矩形的有效区域在图像R3中距离上边界n1个像素,下边界n2个像素,左边界n3个像素,右边界n4个像素,n1、n2、n3、n4均为正整数;去噪后的边缘特征图像R3经过设置有效区域后,得到图像R4。

步骤2、Hough变换。

针对图像R4中的有效区域作Hough变换。

Hough提出点(xi,yi)满足直线方程

y=a×x+b(10)

式(10)中,a是直线的斜率,b是直线的截距。通过点A(xi,yi)的直线有无限条,并且每一条直线对应不同的a值和b值,同时二者均满足直线方程(1)。将式(10)改写如下,

b=-a×x+y(11)

因此在a-b参数空间平面,就得到关于(xi,yi)的唯一直线方程。此时将参数空间中另一个点(xj,yj)也做出相同的变换,又会得到关于B(xj,yj)的唯一直线方程,这两条直线会在a-b参数空间中会相交于一个点,设这一点为(a’,b’),其中a’是原图像空间中的过(xi,yi)、(xj,yj)的直线的斜率,b’则是其截距,所以可知图像空间x-y内的一点与参数空间a-b内的一条直线相对应。即图片空间x-y中直线上的所有点转换后得到一个直线簇,直线簇内所有直线都经过参数空间a-b中的点(a’,b’):

由于这种方法不能表达斜率为无穷的直线,所以用极坐标方程进行Hough变换,极坐标方程为:

ρ=x×cosθ+y×sinθ(12)

ρ是直角坐标系的原点到直线的法线距离,θ是该法线与x轴的正向夹角。将图像空间直线上的点(xi,yi)带入xcosθ+ysinθ=ρ中,得到一条在O-ρθ平面上的正弦曲线,将图像空间中直线上的点(xj,yj)带入xcosθ+ysinθ=ρ中,得到另一条在O-ρθ平面上的正弦曲线,且两条正弦曲线交于一点(ρ’,θ’),即图片空间x-y中直线上的所有点转换后得到一个正弦线簇,正弦线簇内所有曲线都经过参数空间O-pθ中的点(ρ’,θ’),可知图像空间x-y中的一点与极坐标空间O-ρθ中的一条正弦曲线相对应。

在实际应用中,要把参数空间O-ρθ离散化成一个累加器阵列,即将参数空间细分成一个网格阵列,其中的每一个格子对应一个累加器,累加器阵列中每个累加器的初值为零,且[θmaxmin]和[ρminmax]分别为预期的斜率和截距的取值范围。图像空间x-y中每一个点(x,y)映射到极坐标空间O-ρθ中对应的一系列的累加器中,即对于图像空间x-y中每一个点,按照xcosθ+ysinθ=ρ进行变换,就会得到其在极坐标空间O-ρθ中所对应的曲线,凡是曲线经过的网格,对应的累加器就加1。由于通过同一格子的曲线所对应的点近似于共线,于是网格对应的累加器的累加值就等于共线的点数。

步骤3、检索局部极大值。

检索局部极大值就是在上述图像R5中,即在累加器二维数组Hough[n][180]中进行,当图像R5中存在若干条直线,就会有同样数量对应的累加器内的累加值出现局部极大值,每一个局部极大值对应图像R5中的一条直线,检索出局部最大值从而检测出图像R5中的直线,得到检索后的图像R6。

检索局部极大值的步骤如下:

(1)经上述步骤Hough变换之后,针对二维数组Hough[n][180],车道线位于道路的左右两侧,所以对应的θ值的范围不同。所以检索局部极大值时,将θ值分为0°-90°与90°-179°两组,也相应的调整每一个分组的范围。分别遍历这个数组中两组θ值对应的所有的点,然后进行比较,取得每个分组中的极大值,

(2)检索出这些极大值,根据这些极大值确定与之所对应的ρ、θ的数值,每一组(ρ,θ)对应一条直线,从而检测出各条直线。

(3)加入阈值进行辅助判断,阈值是判断是否在检索到的直线上是否有足够多的像素点,增加检索直线的准确性。

步骤4、跟踪有效性判断。

针对检索后的图像R6,进行跟踪有效性的判断。

当车道线被前车或其他物体严重遮挡,或车辆换道时,检测得到的车道线和实际车道线发生偏移的现象,即被认定为车道线跟踪失效,引入跟踪有效性是判断检测得到的车道线是否准确。

跟踪有效性判断步骤如下:

1、记录前五帧图像R6、R7、R8、R9、R10的车道线数据,车道线数据为检测出的车道线两侧中任何一侧车道线像素的个数,或是当前帧图像R6的车道线斜率K和截距B数据。车道线斜率K和截距B。

车道线截距B的计算公式为:

B=-ρsinθ---(13)

ρ原点到直线的距离,θ为ρ与x轴正向夹角。

车道线斜率K的计算公式为:

K=-cosθsinθ---(14)

2、计算前四帧图像R6、R7、R8、R9中车道线的数据加权值叠加,为与第五帧图像R10的数据相比较,前四帧的加权叠加公式为:

Kave=w1×K1+w2×K2+w3×K3+w4×K4(15)

Bave=w1×B1+w2×B2+w3×B3+w4×B4(16)

其中,Kave是前四帧图像车道线的斜率的加权叠加值,Bave是前四帧图像车道线的截距的加权叠加值,w1、w2、w3、w4分别表示前四帧图像车道线的权重。K1、K2、K3、K4分别是前四帧图像车道线的斜率,B1、B2、B3、B4分别是前四帧图像车道线的截距。

3、将前四帧图像R6、R7、R8、R9中车道线的数据加权叠加值与第五帧图像R10的数据相比较,通过斜率变化量或截距变化量判断图像车道线数据是否有较大变化。前四帧图像R6、R7、R8、R9中车道线的数据加权叠加值与第五帧图像R10的数据相比较的计算公式为:

ΔK=K5-Kave(17)

ΔB=B5-Bave(18)

其中,K5为第五帧图像R10中车道线的斜率,B5为第五帧图像R10中车道线的截距,ΔK为第五帧图像的斜率相比较前四帧图像的加权累加值的变化量。ΔB为第五帧图像的截距相比较前四帧图像的加权累加值的变化量。

4、如果ΔK、ΔB超出了判断依据值,认为跟踪失效,就忽略第五帧图像R10车道线数据,使用图像R9的车道线数据,最终得到跟踪有效性检测后图像R11。

5、如果ΔK、ΔB未超出了判断依据值,即认为跟踪失效,就使用第五帧图像R10的车道线数据,得到跟踪有效性检测后图像R11。

步骤5、计算灭点。

针对图像R11中检测到的车道线,计算车道线的灭点。

灭点是上述步骤检测到的直线车道线延伸后的交点,在实际道路上指道路消失不见的点。计算灭点是为确定灭点直线,灭点直线是为下防止步骤6中所设置的弯道敏感区域发生重叠,弯道敏感区域在步骤6中进行解释。

计算灭点的步骤如下:

1、计算出图像R11中左右直线车道线的直线方程。车道线截距B的计算公式为:

B=-ρsinθ---(19)

ρ原点到直线的距离,θ为ρ与x轴正向夹角。

车道线斜率K的计算公式为:

K=-cosθsinθ---(20)

2、计算灭点的坐标:设灭点的坐标为(xm,ym),灭点横坐标x的计算公式为:

xm=(B2-B1)(K1-K2)---(21)

B1为左车道线的的截距,B2为右车道线的截距,K1为左车道线的的斜率,K2为右车道线的的斜率。

灭点纵坐标ym的计算公式为:

ym=K1×x+B1(22)

3、最后以灭点为顶点,描绘出出图像R8中左右两条直线车道,

所描绘的直线方程为:

y=K×x+B(23)

并且设置两条直线车道线的颜色,这样就得到含有灭点的图像R12。

步骤6、确定弯道敏感区域。

针对图像R12,在弯道出现概率高的位置设置弯道敏感区域。

弯道敏感区域是用来统计弯道像素点的分布特征的区域。敏感区域的设置形状不唯一,一般位于能够覆盖图像R12中车道的区域。

确定弯道敏感区域的步骤如下:

(1)若弯道敏感区域位于图像R12中检测到的直线车道线两侧,设置四个弯道的敏感区域,弯道敏感区域的数量也能够根据不同的情况进行调整。四个弯道的敏感区域分布方式为:左直道线的两侧设置两个弯道敏感区域,左直道线的左侧弯道敏感区域设为敏感区域1,左直道线的右侧弯道敏感区域设为敏感区域2,右直道线的两侧设置为两个弯道敏感区域,右直道线的左侧弯道敏感区域设为敏感区域3,右直道线的右侧弯道敏感区域设为敏感区域4。

(2)确定四个弯道敏感区域的具体位置的大小。弯道敏感区域宽为N1(正整数)个像素的距离,长为N2(正整数)个像素的距离。根据步骤5得到的灭点坐标(xm,ym),以直线方程:

y=ym(24)

为弯道敏感区域的上边界。以直线方程:

y=w5×ym(25)

为敏感区域的下边界,w5表示权重,0<w5≤1。根据上述步骤所确定的两条直线车道线,在左右直线车道线的两侧拓展N1个像素的长度,来表示弯道敏感区域的宽。

(3)然而,设置的弯道敏感区域2、3易出现重叠,这些因素会影响后续弯道趋势的判断,如果出现上述情况,要做出相应的调整。调整的方法为:对于弯道敏感区域2、3出现重叠现象这种情况,要进行对敏感区域2、3的分隔。利用灭点直线来进行分隔,灭点直线是以灭点(xm,ym)为顶点,垂直于图片底边的一条分界线,分隔就是防止敏感区域2、3不能跨越灭点直线。灭点直线的方程为,

x=xm(26)

灭点直线设置相应的颜色,在图像中清楚地显示。由此得到含有四个弯道敏感区域的图像R13。

步骤7、判断车道趋势。

针对图像R13中车道,判断车道的趋势。

经过上述步骤6后确定了弯道敏感区域,实际车道处于不同的趋势时,车道线上的像素点在弯道敏感区域内的分布特征是不同的。当实际车道处于直线车道状态时,弯道敏感区域内的车道线像素点分布比较均匀;当实际车道处于转弯状态时,弯道相比较直道发生弯曲,所以检测的弯道像素点也会在相应的弯曲方向发生偏移,由此,弯道的像素点在四个弯道敏感区域内的分布相比较直线车道会发生明显变化,根据这一特征,进行车道趋势的判断。

车道趋势的判断步骤如下:

(1)在弯道区域内搜索实际车道线上的像素点。遍历图像R13中每一个像素点,而实际车道线每一个像素点都有自己的特征,根据这一特征,在遍历图像R13中每一个像素点的过程中寻找出实际车道线的像素点。如所引用的是实际车道线像素点的灰度值为255这一特征,进行检索。

(2)确定检索到的实际车道线每一个像素点的横值,横值指在弯道敏感区域中,相邻的弯道敏感区域(弯道敏感区域1和2或弯道敏感区域3和4)的水平方向的取值范围规定为[-N1,N1],即两个敏感区域的宽度,实际车道线每一个像素点在弯道敏感区域水平方向的位置,这个位置在[-N1,N1]内对应的值为横值。因为在图像R13中出现弯道的情况下,弯道敏感区域1、3的车道线像素点的分布情况变化一致。弯道敏感区域2、4的车道线像素点的分布情况变化一致,分布情况指实际车道像素点的增加和减少。

确定的4个弯道敏感区域内所有的横值,用横值组表示,弯道敏感区域1、2、3、4横值组分别是(a1,a2,....ak1)、(b1,b2,....bk2)、(c1,c2,....ck3)、(d1,d2,....dk4),将确定的敏感区域1、3的横值组归为一类,确定的敏感区域2、4的横值组归为一类。

(3)计算代表车道线趋势的最终值F。最终值F代表实际车道线趋势的特征值,计算最终值F的公式为:

sum1=Σn=1n=k1an×an+Σn=1n=k3cn×cn---(27)

sum2=Σn=1n=k2bn×bn+Σn=1n=k4dn×dn---(28)

sum1、sum2分别是横值组1、3和2、4的乘积的累加值,那么

F=sum2-sum1(29)

(4)然后设定出两个阈值T1、T2,与最终值F相比较,阈值是直道与弯道趋势判断的临界值,T1代表直道与右弯道趋势判断的临界值,T2代表直道与左弯道趋势判断的临界值。当最终值F大于阈值T1(正值)的时候,判断为车道向右弯曲的趋势;当最终值小于阈值T2(负值)的时候,判断为车道向左弯曲的趋势;当最终值F处于两个阈值的范围之中时,证明车道线上的像素点在弯道敏感区域内分布比较均匀,判断为直线车道的趋势。

经过上述的对图像R13的处理,得到了已判断车道线趋势的图像R14。

步骤8、绘制车道线。

利用多段折线法绘制车道线。所谓的多段折线法,就是在弯道敏感区域内,搜索车道的像素点,如果找到一个弯道上的像素点,就保存找到的点,并继续转到上一行执行,如果没有找到,那就不保存这一行上的弯道上的像素点,转到上面一行进行搜索,通过上面的处理,把车道线上的点找出来,然后再利用直线将相邻的点进行相连,就形成了多段直线,因此通过这样画出来车道线的方法成为多段直线法。

与现有技术相比,本发明不需要引入过多的参数来辅助判别弯道,不需要车道线建模等繁琐方法,可用于普通车道和高速公路,可以简单快速地实现弯道趋势的识别,有较好的实时性和准确性。

附图说明

图1.1为Hough直线方程示意图一。

图1.2为用极坐标方程进行Hough变换示意图。

图2.1为Hough直线方程示意图二。

图2.2为a-b参数空间中的相交图。

图3为车辆右转示意图。

图4为整个实施方法流程图。

图5为图像预处理流程图。

图6为跟踪有效性判断流程图。

具体实施方式

Hough变换处理过程如下:

(1)用二维向量(ρ,θ)描述图像上的每一条直线区域,则可将图像上的直线区域累加器映射到参数空间中的存储单元。由于ρ为直线区域到原点的距离,因此对于对角线长度为n的图像,固定左上角为原点,可得到ρ的取值范围[0,n],θ是该法线与x轴的正向夹角,可得到θ的取值范围[0°,179°],θ以1度为增量。定义二维数组Hough[n][180]作为存储单元,其中对于任意(ρ,θ)决定的直线区域,累加器为Hough[ρ][θ]。

(2)依次遍历图像的所有像素,对于每个像素判断是否满足一定条件,在本实施例中判断像素值是否为255,因为本实施例中使用的是8bit的图像,所以图像的最大灰度值为255,最小灰度值为0。若满足则对经过该像素的所有直线区域的累加器加1,否则继续判断下个像素。为了得到经过某个像素的所有直线区域,可依次用θ的所有可能取值,再借助此像素的坐标和直线的极坐标方程计算ρ的值,而每一组(ρ,θ)就对应了一条经过此像素的直线区域。

(3)将Hough变换得到的各直线区域的累加器的值看作图像的灰度,把用于存储的二维数组Hough[n][180]看做像素矩阵,则可得到Hough变换的图像R5。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号