一种基于机载摄像机的高速公路车道线检测方法与流程

文档序号:13673774阅读:240来源:国知局
技术领域本发明涉及图像处理和交通视频检测领域,是一种基于机载摄像机的高速公路车道线检测方法,其主要是用于进一步的高速公路违法事件检测。

背景技术:
交通拥挤,事故频发目前正困扰着我国乃至全世界人民,俨然已经成为社会一大公害,近年来我国车辆数量急剧增加,但是道路交通管理相对滞后,随之而来的交通事故也快速增加,因此急需强有力的交通监测手段,尽管目前很多城市都已经使用了视频监控,但是缺乏有效的自动事件检测方法,尤其是高速公路上的违法事件检测,考虑到高速公路上车辆行驶速度快,而且高速公路延伸范围长,不似城市交通集中,所以为了实现大范围的交通监控,提出使用无人机搭载摄像机进行交通监控,其中,实现车道线的准确检测是完成高速公路上的违法事件检测分析的重要内容。使用无人机搭载摄像机监控与智能驾驶系统中的车载摄像机以及固定摄像机监控有很大的不同:(1)不论是车载摄像机,还是固定摄像机,道路基本上都在图像的正中央,车道以外的背景物相对较少,但是由于无人机的控制问题,拍摄到的图像很难保证道路就在图像正中央,而且可能存在较大的偏角;(2)无人机搭载的摄像机视野更加广阔,不可避免的将很多复杂背景拍摄下来,同时车辆在车道中会显得更加密集,对车道线的检测带来很大的影响;(3)无人机的高度会发生变化,这会使得高速公路在图像中的比例发生较大的变化,以至于检测车道线更加困难。

技术实现要素:
技术问题:本发明提供一种精度较高的、易实现的基于机载摄像机的高速公路车道线检测方法,技术方案:本发明为了实现一种基于机载摄像机的高速公路车道线检测方法,按照以下步骤进行:步骤1:逐帧读取无人机上的摄像机拍摄的大小为M1×M2×3的三通道BGR彩色图像,并将当前读取的三通道BGR彩色图像记为S1,其中,M1,M2分别表示三通道BGR彩色图像S1的高度和宽度;步骤2:在三通道BGR彩色图像S1上截取一个左上角点坐标为(x0,y0)、高度为M3像素、宽度为M4像素的感兴趣区域ROI,得到大小为M3×M4×3的BGR彩色图像S2,感兴趣区域ROI的初始值设定如下:高度M3=M1,宽度M4=M2,左上角点坐标(x0,y0)=(0,0),之后在每一帧的检测完成后按照步骤8对感兴趣区域ROI的高度M3、宽度M4、左上角点坐标(x0,y0)自动进行调整;步骤3:首先创建一个大小为M5×M6×3的BGR彩色图像作为采样图像S3,其中M5=M3/scale,M6=M4/scale,然后对BGR彩色图像S2进行降采样,获得采样图像S3,降采样公式为x=x3·scale,x3=1,2,...,M5y=y3·scale,y3=1,2,...,M6dst3(x3,y3)=src2(x,y)]]>其中,dst3(x3,y3)为采样图像S3在第x3行、第y3列的像素点的像素值,src2(x,y)为BGR彩色图像S2在第x行、第y列的像素点的像素值,scale是图像降采样系数,初始值为1,之后根据感兴趣区域ROI的宽度与三通道BGR彩色图像S1的宽度的比值进行调整,调整规则为步骤4:对采样图像S3进行二值化处理,得到一个二值图像S4,二值化处理过程为其中,x4=x3,y4=y3;dst4(x4,y4)为二值图像S4中的第x4行、第y4列的像素点的像素值;src_B(x3,y3),src_G(x3,y3),src_R(x3,y3)分别为采样图像S3的第x3行、第y3列的像素点在BGR颜色空间蓝色、绿色、红色分量的值;th1、th2、th3分别为蓝色、绿色、红色分量的阈值,th1、th2、th3都取为180;步骤5:获取车道线二值图像步骤5.1首先利用车道线的宽度信息按照如下步骤剔除二值图像S4的每一行中宽度大于给定阈值的连续白色点,去掉比较大的干扰物,如车辆、建筑物等:步骤5.1.1从二值图像S4的第一行第一个像素点开始进行扫描,然后进入步骤5.1.2;步骤5.1.2如果当前扫描像素点为黑色点,则进入步骤5.1.6,如果当前扫描像素点为白色点,则进入步骤5.1.3;步骤5.1.3若当前扫描像素点为每行的第一个像素点或者当前扫描像素点的前一个像素点为黑色点,则用index_1记录当前扫描像素点所在列坐标,作为这段连续白色点的起始位置,然后进行步骤5.1.4,若当前扫描像素点的前一个像素点为白色点,则进入步骤5.1.4;步骤5.1.4若当前扫描像素点为每一行的最后一个像素点或者当前扫描像素点的下一个像素点为黑色点,则用index_2记录当前扫描像素点所在列坐标,作为这段连续白色点的结束位置,然后进行步骤5.1.5,若当前扫描像素点的后一个像素点为白色点,则进入步骤5.1.6;步骤5.1.5计算这段连续白色点个数n=(index_2-index_1)+1,连续白色点数的阈值thresh=3,如果n>thresh,将二值图像S4中当前扫描行的列坐标在index_1和index_2之间的像素点全部赋值为0,变为黑色点,然后进入步骤5.1.6;如果n≤thresh,则进入步骤5.1.6;步骤5.1.6若二值图像S4中所有的点都扫描结束,则进入步骤5.2,否则,继续扫描下一像素点并返回步骤5.1.2;步骤5.2首先采用传统的两次扫描法检测步骤5.1处理后的二值图像S4的中的白色点形成的连通域,第一遍扫描对每个白色像素点进行标号,像素点的像素值就是它的标号,第二次扫描对等价的标号进行替换处理以及统计每个标号的像素点个数,最后标记为同一个标号的像素点形成一个连通域,标记为这个标号的像素点个数就是这个连通域的像素点个数,可以用来表示这个连通域的面积,然后再一次扫描图像,将图像中像素点的个数少于30的连通域去掉,得到车道线二值图像S5,其详细步骤如下:5.2.1从步骤5.1中处理后的二值图像S4的第一行第一列进行扫描,进入步骤5.2.2;5.2.2如果当前扫描像素点B为白色点,则进入步骤5.2.3,如果当前扫描像素点B为黑色点,则进入步骤5.2.4;5.2.3此时存在以下几种情况,需要分别进行处理:(1)若当前扫描像素点B为第一行第一列的像素点,则将当前扫描像素点B的值赋值为1,即当前扫描像素点B被标号为1,label=1,然后进入步骤5.2.4;(2)若当前扫描像素点B是第一行但不是第一列的像素点,则将当前扫描像素点B赋值为label+1,即将该点标号为label+1,label=label+1,然后进入步骤5.2.4;(3)若当前扫描像素点B为第一列但不是第一行的像素点,则如果当前扫描像素点B的正上方和右上方的像素点的值均为0,就将当前扫描像素点B的值赋值为label+1,即将该点标号为label+1,label=label+1,然后进入步骤5.2.4,如果当前扫描像素点B的正上方或右上方的像素点中只有一个像素点的值(即标号)不为0或者两个像素点的值都不为0但是相等,就将这个不为0的值赋值给当前扫描像素点B作为标号,然后进入步骤5.2.4;如果当前扫描像素点B的正上方或右上方的像素点中两个像素点的像素值(即标号)都不为0且不相等,则取其中较小的值赋值给当前扫描像素点B作为标号,并记录当前两个像素点标号的等价关系,然后进入步骤5.2.4;(4)若当前扫描像素点B不为第一行也不为第一列的像素点,则如果8邻域像素点中的左上角点、正上方点、右上方点、正前方点的值都为0,则将当前扫描像素点B的值赋值为label+1,即将该点标号为label+1,label=label+1,然后进入步骤5.2.4,如果8邻域像素点中的左上角点、正上方点、右上方点、正前方点的值中只有一个值不为0,或者有多个点的值都不为0但是相等,就将这个不为0的值赋值给当前扫描像素点B,然后进入步骤5.2.4,如果8邻域像素点中的左上角点、正上方点、右上方点、正前方像素点的值中有多个不为0而且还不相等,则记录这几个标号的等价关系,即标号为这几个不为0的值的像素点属于同一个连通区域,并将这些值中最小的不为0的值赋值给当前扫描像素点B,作为像素点B的标号,进入步骤5.2.4;5.2.4若二值图像S4的所有像素点都扫描结束,则进入步骤5.2.5,否则扫描下一个像素点,然后返回步骤5.2.2;5.2.5重新逐行逐点的扫描经过标号处理的二值图像S4,对每一个像素点的标号(即像素值)检查是否有存在相等关系的最小标号值,如果存在,则将该像素点的像素值赋值为这个最小的标号值,否则不对标号进行处理,同时统计每一个标号的像素点数量,直至经过标号处理的二值图像S4的所有像素点都扫描结束后,得到重新标号处理后的二值图像S4和每个最终剩余标号所占有的像素点数量,然后进入步骤5.2.6;5.2.6再一次逐行逐点的扫描重新标号处理后的二值图像S4,当前扫描像素点的标号(即像素值)所占有的像素点数量count<30,当前扫描像素点的值赋值为0,当前扫描像素点(即标号值)所占有的像素点数量count≥30,则当前扫描像素点的值赋值为255,直至这个经过重新标号处理后的二值图像S4扫描结束,这个最后经过处理得到的二值图像S4就是要获取的车道线二值图像S5,车道线二值图像S5的行坐标表示为x5,列坐标表示为y5;步骤6:获取直线段参数检测车道线二值图像S5中的直线段,获取直线段参数集L1,其步骤如下:步骤6.1从车道线二值图像S5中收集所有白色点的一对行坐标和列坐标,每个白色点的行坐标和列坐标成对的存放,得到一个坐标集C1,并创建一个总行数为181,总列数为2×(M5+M6)的参数空间矩阵D,参数空间矩阵D中所有元素的初值为0,然后进行步骤6.2;步骤6.2如果坐标集C1为空集,则得到一个直线段参数集L1,所述直线段参数集L1中的每条线段由两个端点坐标(xstart,i,ystart,i),(xend,i,yend,i)共4个参数表示,每条线段的参数作为一组参数,则共有N1组,并结束步骤6,否则,则随机抽取C1中的一对行坐标xp和列坐标yp,并且从坐标集C1中去除当前抽取的行坐标xp和列坐标yp,进入步骤6.3;步骤6.3将当前抽取的这一对行坐标xp和列坐标yp按如下公式进行变换:ρ=xp·cos(θ)+yp·sin(θ),θ=0°,1°,2°,…,180°总共得到181组ρ和θ,再对参数空间矩阵D中的第θ+1行、第[ρ]+M5+M6列的元素加1,[ρ]表示对ρ取整数,然后找出参数空间矩阵D中所有元素的最大值max及最大值max所在的行坐标θm+1和列坐标ρm+M5+M6,并且判断这个最大值max是否大于给定阈值50,如果大于,则进行步骤6.4,否则返回步骤6.2;步骤6.4将参数空间矩阵D中所有元素的最大值max所在的行坐标θm和列坐标ρm代入以下公式ρ=xi·cos(θ)+yi·sin(θ),得到车道线二值图像S5中的一条直线方程ρm=x5·cos(θm)+y5·sin(θm),然后在车道线二值图像S5中,以当前抽取的这一对行坐标xp、列坐标yp所对应的像素点为起始点,沿着ρm=x5·cos(θm)+y5·sin(θm)这条直线搜索白色点,当遇到图像边界或者连续黑色点的数量超过50时,结束搜索,得到一条白色直线段的两个端点坐标和在这条白色直线段上的N个白色点的行坐标和列坐标,如果当前直线段上的两个端点的距离等于或大于100像素,则记录当前直线段的两个端点坐标(xstart,i,ystart,i),(xend,i,yend,i),然后去除坐标集C1中已经确定属于这条直线段的这N个白色点的行坐标和列坐标,并且将已经确定属于这条线段的这N个白色点的每一对行坐标xi和列坐标yi,i为正整数,i=1,2,…,N,按照公式ρ=xi·cos(θ)+yi·sin(θ),θ=0°,1°,2°,…,180°进行变换,然后对参数空间矩阵D中的第θ+1行、第[ρ]+M5+M6列的元素减1,如果当前直线段上的两个端点距离小于100像素,直接去除坐标集C1中已经确定属于当前直线段的这N个白色点的行坐标和列坐标,然后返回步骤6.2;步骤7:利用高速公路的车道线分布特点,去除非车道线直线,其步骤如下:步骤7.1首先利用直线段参数集L1中候选线段的两个端点坐标(xstart,i,ystart,i),(xend,i,yend,i)计算每条线段的线段角度i为正整数,i=1,2,…,N1,然后使用统计学方法得到所有线段角度{αi
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1