一种基于快速标记连通的停止线检测方法与流程

文档序号:13736158阅读:128来源:国知局
技术领域本发明涉及智能驾驶领域,具体地说是一种基于快速标记连通的停止线检测方法。

背景技术:
随着社会与科学技术的发展,汽车在人们的日常生活中扮演着越来越重要的角色。汽车给人们生活带来便利的同时,也为人们的安全带来了巨大的隐患,尤其是在道路交通路口,这种隐患尤为严重。自动驾驶技术与无人驾驶的发展,为解决这个隐患带来了福音。目前自动驾驶与无人驾驶中,常采用以霍夫变换为主体的停止线检测技术。该技术是在采集到的灰度图像中,用预处理技术、图像边缘化技术、霍夫变换技术来检测图像中的“直线”,并通过直线的角度等先验性知识来判断是否存在停止线。因霍夫变换算法非常耗时,导致算法整体耗时偏高,不能满足现在车载实时性系统的需求。在智能驾驶图像领域中,标记联通方法作为一个基本方法有着极其重要的作用和广泛的应用。在停止线的检测中,无论是切割感兴趣区域还是停止线位置的判断,都需要标记联通函数。而现在的标记连通函数,往往只能将连通区域置为相同值,给出一个连通域矩阵。而我们需要的单个连通域在图像中的起始行、终止行、起始列、终止列、连通域内点的个数、连通域的高、连通域的宽等统计信息,都没有给出,需要通过统计连通域矩阵来给出。而再次统计,不但消耗大量的时间,还容易造成错误。

技术实现要素:
针对现有技术的不足,本发明提供一种基于快速标记连通的停止线检测方法,通过统计连通域信息,并利用斑马线、路面标识符等辅助信息共同完成停止线的有无判断,并记录停止线在图像中所在的位置,快速给出图像中,每个连通区域的统计信息,用来加快停止线的检测速度。本发明为实现上述目的所采用的技术方案是:一种基于快速标记连通的停止线检测方法,包括以下步骤:步骤1:采集路面灰度图片,提取感兴趣区域;步骤2:对提取出来的感兴趣区域进行预处理得到二值图;步骤3:判断图像中是否存在斑马线,如果存在,则根据斑马线与停止线之间的关系检测停止线,完成停止线检测;否则检测图像中是否存在路面标识符;步骤4:如果存在路面标识符,则根据路面标识符与停止线之间的关系检测停止线,完成停止线检测。所述提取感兴趣区域的过程为,一个车道内的梯形的区域,通过行近邻差值法,将该梯形区域转化为矩形区域,即为感兴趣区域;所述行近邻差值法为:将任意长度的行,通过近邻差值,拉伸为指定宽度的行。所述预处理过程为:对感兴趣区域图像进行大尺度均值滤波处理,得到目标图像,然后对目标图像进行二值化处理,得到二值图。所述判断图像中是否存在斑马线包括以下过程:步骤1:提取图像第一行灰度信息作为检测斑马线的特征向量;步骤2:将检测斑马线的特征向量输入adboost神经网络中,判断该特征向量是否为斑马线,如果是,则图像中存在斑马线,判断结束,否则执行步骤3;步骤3:判断当前行是否为图像最后一行,如果是,则提取下一行灰度信息,作为检测斑马线的特征向量,执行步骤2,否则图像中不存在斑马线,判断结束。所述根据斑马线与停止线之间的关系检测停止线包括以下过程:步骤1:将当前行灰度值进行累加,得到当前行的累加和,记为Sum_Zebra;步骤2:对图像进行行累加,得到累加和数组;步骤3:在累加和数组中找到小于0.8*Sum_Zebra的行,记为R1;步骤4:从R1行开始,在累加和数组中找到大于1.4*Sum_Zebra的行;步骤5:如果找到,则该行为停止线所在行,完成检测过程;步骤6:否则对图像进行标记连通,并统计连通域信息;步骤7:如果存在连通域宽度大于图像宽度的2/3,则连通域起始行为停止线所在行,完成检测过程;否则不存在停止线,完成检测过程。所述根据路面标识符与停止线之间的关系检测停止线包括以下过程:步骤1:提取路面标识符特征向量;步骤2:将检测路面标识符的特征向量输入adboost神经网络中,判断该特征向量是否为路面标识符,如果是,则图像中存在路面标识符,执行步骤3,否则不存在路面标识符,完成停止线检测过程;步骤3:截取图像第一行到标识符起始行之间的部分图像,对部分图像进行标记连通,并统计连通域信息;步骤4:如果存在连通域宽度大于图像宽度的2/3,则连通域起始行为停止线所在行,完成检测过程;否则不存在停止线,完成检测过程。所述标记连通过程为:步骤1:采集灰度图像;步骤2:对采集的灰度图像用均值-直方图法,求得二值化阈值,得到二值图;步骤3:统计第一行中单个的连通域信息;步骤4:将当前行的连通域信息保存到信息数组中;步骤5:判断是否为图像最后一行,如果是,则信息数组统计结束,执行步骤7;否则,统计下一行中单个的连通域信息,并执行步骤6;步骤6:判断当前行连通域信息与上一行连通域信息是否有重叠,如果有,则更新当前信息数组,否则执行步骤4;步骤7:根据统计的信息数组,统计图像中存在的连通域信息。所述均值-直方图法为:步骤1:统计灰度图像的直方图,记为piA;求的图像灰度值的平均值为:aver=(Σi∈(0,255)piA[i]*i)/(iH*iW)]]>其中,piA为存储图像的直方图,iH为图像的高,iW为图像的宽,aver为图像灰度值的平均值;步骤2:利用直方图计算不大于图像灰度值的平均值aver的灰度值的平均值:aver1=(Σi=0averpiA[i]*i)/(Σi=0averpiA[i])]]>同理计算大于图像灰度值的平均值aver的灰度值的平均值:aver2=(Σi=aver+1255piA[i]*i)/(Σi=aver+1255piA[i])]]>其中,aver1为不大于图像灰度值的平均值aver的灰度值的平均值,aver2为大于图像灰度值的平均值aver的灰度值的平均值;步骤3:判断条件|aver-(aver1+aver2)/2|<5是否成立,若成立,则图像灰度值的平均值aver就是所求的二值化阈值,否则aver=(aver1+aver2)/2,返回步骤2。所述统计图像中存在的连通域信息包括以下过程:在信息数组中检索第四位相同的行;在第四位相同的行中统计第四位相同的行中第一位的最小值、第二位的最大值和第三位的累加和;在第四位相同的行中统计第四位相同的行中最小行序列和最大行序列;根据统计出的行、列信息,计算出连通域的起始列为第四位相同的行中第一位的最小值,连通域的终止列为第四位相同的行中第二位的最大值,连通域内像素点的个数为第四位相同的行中第三位的累加和,连通域的起始行为第四位相同的行中最小行序列,连通域的终止行为第四位相同的行中最大行序列。所述信息数组是一个列数为5的数组,用来存储一行中,单个连通区域的连通域信息;信息数组的每一行中,第一位用来存储当前行单个连通域的起始像素点所在的列,第二位用来存储当前行单个连通域的终止像素点所在的列,第三位用来存储单个连通域的像素点的个数,第四位用来存储该连通域的标记值,第五位用来存储当前行的行序列;连通域的标记值是一个由2开始的递增序列。本发明具有以下有益效果及优点:1.利用停止线对列方向不敏感,可以对感兴趣区域进行大尺度列抽样,进而减小处理图像的大小,保证所述方法能够满足系统实时性的需求。速度是普通霍夫变换算法的5-10倍;2.停止线的检测,辅助以斑马线与路面路面标识符。提高了停止线检测的准确性,排除了路面复杂路况对算法的干扰,增强了程序的鲁棒性;3.本发明在统计连通域的同时,给出图像中单个连通域的信息;4.本发明统计连通域的速度加快,带单个连通域信息的标记连通算法是传统标记连通实现的十倍以上。附图说明图1是本发明的方法流程图;图2是本发明的停止线检测示意图;图3是本发明的标记连通方法流程图;图4是本发明的均值-直方图法;图5是本发明的信息数组示意图。具体实施方式下面结合附图及实施例对本发明做进一步的详细说明。本发明的流程图如图1所示。本发明检测部分实现可以分成三个部分。第一部分,判断是否有斑马线和路面标识符。第二部分如果有斑马线,则联合斑马线判断是否有停止线。第三部分,如果有路面标识符,联合路面标识符判断是否有停止线。第一部分,判断是否有斑马线和路面路面标识符。首先在采集到灰度图像中,选择感兴趣区域,即停止线可能出现的位置。为了联合斑马线一起判断停止线的有无,本发明选择一个梯形区域作为感兴趣区域。在实际处理的过程中,将梯形区域通过线性变化拉伸为矩形区域,采用线性差值的方法,至此提取感兴趣区域部分完成。接下来对图像进行预处理,主要操作为对图像进行直方图统计去噪点处理,目的是干掉图像的较亮的部分和较暗的部分,排除复杂路面对算法的影响。本发明用Adboost算法判断斑马线的有无。Adboost算法分为训练和测试两个部分。预处理之后的图像,每一行可以当做一个Adboost样本。通过大样本的训练得到Adboost网络参数。在测试阶段,每提取一行形成特征向量,将特征向量给Adboost网络,得到该特征是否是斑马线。如果是斑马线,则第一部分结束,将当前行记录下来,斑马线存在标志置为1。如果不是斑马线则提取路面标识符特征,判断是否为路面标识符。不是路面标识符则程序结束,图像中没有停止线,因为停止线一定是和路面标识符或者斑马线成对出现的,如果存在路面标识符,则第一部分结束,路面标识符标志位记为1,并记录路面标识符在图像中的起始行。当斑马线标志位为1时,启动算法的第二部分。第二部分主要解决的问题是,当存在斑马线时,如何检测是否存在停止线。图2是本发明的停止线检测示意图。首先对图像进行行累加,得到累加和数组,从斑马线所在的行开始,寻找比斑马线所在行像素值和小很多的行,一般取斑马线所在行累加和的一半。该行为斑马线与停止线之间的空白部分。从空白部分开始,找累加和比斑马线所在行大很多的行,一般取斑马线所在行的1.7倍。因停止线在灰度图像中表现为全白,而斑马线为黑白相间,停止线所在的行的灰度值和一般在斑马线所在行累加和的1.7倍以上。如果找到,则可以确定停止线在图像中的位置,程序结束,记录停止线在图像中的位置。如果没有找到符合条件的行,则通过统计标记连通信息,找是否存在一个连通域,他的宽度大于图像宽的的三分之二。如果存在,则可以确定停止线在图像中的位置,程序结束,记录停止线在图像中的位置为该连通区域的起始行。如果不存在,则该图像中不存在停止线,程序结束。当标识符标志位为1时,启动算法的第三部分。第三部分主要解决的问题是,当存在路面标示且没有斑马线时,如何检测是否存在停止线。首先通过统计图像的标记连通信息,找是否存在一个连通域,他的宽度大于图像宽的的三分之二。如果存在,则可以确定停止线在图像中的位置,程序结束,记录停止线在图像中的位置为该连通区域的起始行。如果不存在,则该图像中不存在停止线,程序结束。如图3所示为本发明的标记连通流程图。在前期采集的灰度图像中,首先对图像进行二值化处理。传统的二值化手段,如大津法、局部二值化法等,存在时间与效果相对立的情况,时间与效果很难兼顾。本文采用了一种快速直方图-均值二值化的方法对图像进行二值化处理,该方法是一种类似大津法的全局二值化方法,但较大津法效率更高,而结果相差不大。如图4所示为本发明的均值-直方图法。首先统计灰度图像的直方图,记为piA。利用图像的直方图,可以求的图像灰度值的平均值为:aver=(Σi∈(0,255)piA[i]*i)/(iH*iW)]]>其中piA存储图像的直方图,iH为图像的高,iW为图像的宽,i属于(0,255)利用直方图计算小于等于aver的灰度的平均值aver1=(Σi=0averpiA[i]*i)/(Σi=0averpiA[i])]]>同理计算大于aver的灰度的平均值aver2=(Σi=aver+1255piA[i]*i)/(Σi=aver+1255piA[i])]]>判断条件|aver-(aver1+aver2)/2|<5是否成立,若成立,则aver就是所求的二值化阈值,否则aver=(aver1+aver2)/2,重复上述步骤。如图5所示为本发明的信息数组示意图。利用求得的阈值对图像进行二值化处理得到二值图。在二值图中统计第一行的每个连通区域的连通信息,并将每个连通区域的连通信息存到“信息数组”中。在第一行中,有两个连通域。第一个连通域从第1个像素到第三个像素。第二个连通域从第8个像素到第9个像素。“信息数组”用来存储一行中,单个连通区域的连通信息,信息数组piY是一个宽度为5的数组。每一行中,第一位用来存储本行单个连通域的起始像素点、第二位用来存储本行单个连通域的终止像素点、第三位用来存储单个连通域的长度、第四位用来存储该连通域的标记值、第五位用来存储本行的行号。第四位存储的连通域的标记值是一个由2开始的递增序列。统计完第一行连通信息之后,统计第二行的连通信息。如果第二行的连通信息与第一行有重叠部分。则更新信息数组。若没有重叠部分,则进行下一行。第二行有两个连通域,第一个连通域与第一行的连通域有交接。所以要将这两个连通域合并成一个连通域,将这两个连通域的标记值记为第二行连通域的标记值。第二行第二个连通域的与第一行的连通域没有叠加的部分,因此不需要更改信息数组。完成第二行标记区域统计之后,进行下一行,单个连通域的统计。并查看该连通域与上一行的连通域是否有叠加。如果有叠加则需要更新信息数组第四位连通区标记值。以此类推,逐渐更新标记连通“信息数组”,完成整幅图像的连通区域的统计。完成全图连通区域的统计之后,需要统计图像中单个连通域的信息。此时利用标记连通信息数组,在数组中检索第四位相同的行。对第四位相同的行,统计所有行中第一位最小的值与第二位最大的值,完成对单个连通域信息起始列与终止列的统计,而该连通域的起始行与终止行则可以通过第五位来进行统计。将第四位相同的行,第三位数值进行累加,可以统计出该单个连通区域内,所有为1的点的个数。通过该连通域的起始行、列可以计算出该连通域的高与宽,完成图像中单个连通域的统计工作。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1