发明名称 一种基于机载摄像机的高速公路车道线检测方法
摘要 本发明是一种基于机载摄像机的高速公路车道线检测方法。第一步逐帧读入图像,第二步截取感兴趣区域图像,第三步对感兴趣区域图像进行降采样,第四步基于彩色图像进行二值化,获取含有车道线的二值图像,第五步利用车道线宽度信息去除车辆和路边建筑物等干扰物,然后根据图像中每个连通域的面积进行滤波,去除面积较小的杂散点,得到车道线图像,第六步获取直线段参数,第七步根据车道线分布特点剔除非车道线直线,第八步更新感兴趣区域ROI宽度和左上角点坐标。本发明是一种基于机载摄像机的高速公路车道线检测方法,可以检测视频图像中的所有车道线,为进行高速公路上各车辆的违法行为分析提供了重要保障,而且该方法准确性高,鲁棒性好。
申请公布号 CN105740809A 申请公布日期 2016.07.06
申请号 CN201610060174.6 申请日期 2016.01.28
申请人 东南大学 发明人 路小波;唐涛;姜良维;曾维理;卫朋
分类号 G06K9/00(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 32204 代理人 柏尚春
主权项 一种基于机载摄像机的高速公路车道线检测方法,其特征在于按照以下步骤进行:步骤1:逐帧读取无人机上的摄像机拍摄的大小为M<sub>1</sub>×M<sub>2</sub>×3的三通道BGR彩色图像,并将当前读取的三通道BGR彩色图像记为S<sub>1</sub>,其中,M<sub>1</sub>,M<sub>2</sub>分别表示三通道BGR彩色图像S<sub>1</sub>的高度和宽度;步骤2:在三通道BGR彩色图像S<sub>1</sub>上截取一个左上角点坐标、高度为M<sub>3</sub>像素、宽度为M<sub>4</sub>像素的感兴趣区域ROI,得到大小为M<sub>3</sub>×M<sub>4</sub>×3的BGR彩色图像S<sub>2</sub>,感兴趣区域ROI的初始值设定如下:高度M<sub>3</sub>=M<sub>1</sub>,宽度M<sub>4</sub>=M<sub>2</sub>,左上角点坐标(x<sub>0</sub>,y<sub>0</sub>)=(0,0);步骤3:对BGR彩色图像S<sub>2</sub>进行降采样,获得大小为M<sub>5</sub>×M<sub>6</sub>×3的采样图像S<sub>3</sub>,M<sub>5</sub>=M<sub>3</sub>/scale,M<sub>6</sub>=M<sub>4</sub>/scale,降采样公式为<maths num="0001" id="cmaths0001"><math><![CDATA[<mfenced open = "{" close = ""><mtable><mtr><mtd><mi>x</mi><mo>=</mo><msub><mi>x</mi><mn>3</mn></msub><mo>&CenterDot;</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mo>,</mo><msub><mi>x</mi><mn>3</mn></msub><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>M</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>=</mo><msub><mi>y</mi><mn>3</mn></msub><mo>&CenterDot;</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mo>,</mo><msub><mi>y</mi><mn>3</mn></msub><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>M</mi><mn>6</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>dst</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>3</mn></msub><mo>,</mo><msub><mi>y</mi><mn>3</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>src</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000917126300000011.GIF" wi="536" he="203" /></maths>其中,dst<sub>3</sub>(x<sub>3</sub>,y<sub>3</sub>)为采样图像S<sub>3</sub>在第x<sub>3</sub>行、第y<sub>3</sub>列的像素点的像素值,src<sub>2</sub>(x,y)为BGR彩色图像S<sub>2</sub>在第x行、第y列的像素点的像素值,scale是图像降采样系数,初始值为1,之后根据感兴趣区域ROI的宽度与三通道BGR彩色图像S<sub>1</sub>的宽度比值进行调整,调整规则为<img file="FDA0000917126300000012.GIF" wi="787" he="203" />步骤4:对采样图像S<sub>3</sub>进行二值化处理,得到一个二值图像S<sub>4</sub>,二值化处理过程为<img file="FDA0000917126300000013.GIF" wi="1539" he="139" />其中,x<sub>4</sub>=x<sub>3</sub>,y<sub>4</sub>=y<sub>3</sub>;dst<sub>4</sub>(x<sub>4</sub>,y<sub>4</sub>)为二值图像S<sub>4</sub>中的第x<sub>4</sub>行、第y<sub>4</sub>列的像素点的像素值;src_B(x<sub>3</sub>,y<sub>3</sub>),src_G(x<sub>3</sub>,y<sub>3</sub>),src_R(x<sub>3</sub>,y<sub>3</sub>)分别为采样图像S<sub>3</sub>的第x<sub>3</sub>行、第y<sub>3</sub>列的像素点在BGR颜色空间蓝色、绿色、红色分量的值;th1、th2、th3分别为蓝色、绿色、红色分量的阈值,th1、th2、th3都取为180;步骤5:获取车道线二值图像步骤5.1利用车道线的宽度信息按照如下步骤剔除二值图像S<sub>4</sub>的每一行中宽度大于给定阈值的连续白色点:步骤5.1.1从二值图像S<sub>4</sub>的第一行第一个像素点开始进行扫描,然后进入步骤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,将二值图像S<sub>4</sub>中当前扫描行的列坐标在index_1和index_2之间的像素点全部赋值为0,变为黑色点,然后进入步骤5.1.6;如果n≤thresh,则进入步骤5.1.6;步骤5.1.6若二值图像S<sub>4</sub>中所有的点都扫描结束,则进入步骤5.2,否则,继续扫描下一像素点并返回步骤5.1.2;步骤5.2检测步骤5.1处理过的二值图像S<sub>4</sub>的白色点形成的连通域,并且计算每个连通域中像素点的个数,将像素点的个数少于30的连通域去掉,得到车道线二值图像S<sub>5</sub>,车道线二值图像S<sub>5</sub>的行坐标表示为x<sub>5</sub>,列坐标表示为y<sub>5</sub>;步骤6:获取直线段参数检测车道线二值图像S<sub>5</sub>中的直线段,获取直线段参数集L<sub>1</sub>,其步骤如下:步骤6.1从车道线二值图像S<sub>5</sub>中收集所有白色点的一对行坐标和列坐标,得到一个坐标集C<sub>1</sub>,并创建一个总行数为181,总列数为2×(M<sub>5</sub>+M<sub>6</sub>)的参数空间矩阵D,参数空间矩阵D的所有元素的初值为0,然后进行步骤6.2;步骤6.2如果坐标集C<sub>1</sub>为空集,则得到一个直线段参数集L<sub>1</sub>,所述直线段参数集L<sub>1</sub>中的每条线段由两个端点坐标(x<sub>start,i</sub>,y<sub>start,i</sub>)、(x<sub>end,i</sub>,y<sub>end,i</sub>)共4个参数表示,每条线段的参数作为一组参数,则共有N<sub>1</sub>组,并结束步骤6,反之,则随机抽取C<sub>1</sub>中的一对行坐标x<sub>p</sub>和列坐标y<sub>p</sub>,并且从坐标集C<sub>1</sub>中去除当前抽取的这一对行坐标x<sub>p</sub>和列坐标y<sub>p</sub>,然后进行步骤6.3;步骤6.3将当前抽取的这一对行坐标x<sub>p</sub>和列坐标y<sub>p</sub>按如下公式进行变换:ρ=x<sub>p</sub>·cos(θ)+y<sub>p</sub>·sin(θ),θ=0°,1°,2°,…,180°总共得到181组ρ和θ,再对参数空间矩阵D中的第θ+1行、第[ρ]+M<sub>5</sub>+M<sub>6</sub>列的元素加1,[ρ]表示对ρ取整数,然后找出参数空间矩阵D中所有元素的最大值max及最大值max所在的行坐标θ<sub>m</sub>+1和列坐标ρ<sub>m</sub>+M<sub>5</sub>+M<sub>6</sub>,再判断这个最大值max是否大于给定阈值50,如果大于,则进行步骤6.4,否则返回步骤6.2;步骤6.4将参数空间矩阵D中所有元素的最大值max所在的行坐标θ<sub>m</sub>和列坐标ρ<sub>m</sub>代入以下公式:ρ=x<sub>i</sub>·cos(θ)+y<sub>i</sub>·sin(θ),得到车道线二值图像S<sub>5</sub>中的一条直线方程ρ<sub>m</sub>=x<sub>5</sub>·cos(θ<sub>m</sub>)+y<sub>5</sub>·sin(θ<sub>m</sub>),然后在车道线二值图像S<sub>5</sub>中,以当前抽取的这一对行坐标x<sub>p</sub>、列坐标y<sub>p</sub>所对应的像素点为起始点,沿着ρ<sub>m</sub>=x<sub>5</sub>·cos(θ<sub>m</sub>)+y<sub>5</sub>·sin(θ<sub>m</sub>)这条直线搜索白色点,当遇到图像边界或者连续黑色点的数量超过50时,结束搜索,得到一条白色直线段的两个端点坐标和在这条白色直线段上的N个白色点的行坐标和列坐标,如果当前直线段上的两个端点的距离等于或大于100像素,则记录当前直线段的两个端点坐标(x<sub>start,i</sub>,y<sub>start,i</sub>)、(x<sub>end,i</sub>,y<sub>end,i</sub>),然后去除坐标集C<sub>1</sub>中已经确定属于这条直线段的这N个白色点的行坐标和列坐标,并且将已经确定属于这条直线段的这N个白色点的每一对行坐标x<sub>i</sub>和列坐标y<sub>i</sub>,i为正整数,i=1,2,…,N,按照公式ρ=x<sub>i</sub>·cos(θ)+y<sub>i</sub>·sin(θ),θ=0°,1°,2°,…,180°进行变换,然后对参数空间矩阵D中的第θ+1行、第[ρ]+M<sub>5</sub>+M<sub>6</sub>列的元素减1,如果当前直线段上的两个端点距离小于100像素,直接去除坐标集C<sub>1</sub>中已经确定属于当前直线段的这N个白色点的行坐标和列坐标,然后返回步骤6.2;步骤7:利用高速公路的车道线分布特点,去掉非车道线的直线,得到车道线参数序列L<sub>5</sub>,其步骤如下:步骤7.1首先利用步骤6中获取到的直线段参数集L<sub>1</sub>中候选线段两个端点坐标(x<sub>start,i</sub>,y<sub>start,i</sub>)、(x<sub>end,i</sub>,y<sub>end,i</sub>)计算每条线段的线段角度<img file="FDA0000917126300000031.GIF" wi="451" he="123" />i=1,2,…,N<sub>1</sub>,然后使用统计学方法得到所有线段角度{α<sub>i</sub>}的统计直方图,从统计直方图中选择候选车道线线段的角度区间[α<sub>min</sub>,α<sub>max</sub>],具体步骤为:从统计直方图的第一个区间开始往后面的区间方向找到第一个频数大于4的区间,以这个区间的下限值作为α<sub>min</sub>,从统计直方图的最后一个区间开始往前面的区间方向找到第一个频数大于4的区间,以这个区间的上限值作为α<sub>max</sub>,舍弃候选车道线线段的角度区间[α<sub>min</sub>,α<sub>max</sub>]以外的线段角度值所对应的直线段参数,得到参数组数为N<sub>2</sub>的候选车道线线段参数集L<sub>2</sub>;步骤7.2将候选车道线线段参数集L<sub>2</sub>中的线段参数由两个端点坐标表示转变为每条线段所在直线的斜率k<sub>1</sub>和截距b<sub>1</sub>表示,如果有多条线段在一条直线上,仅保留一组直线参数,最后得到一个参数组数为N<sub>3</sub>的候选车道线参数集L<sub>3</sub>;步骤7.3将候选车道线参数集L<sub>3</sub>中的参数k<sub>1i</sub>及b<sub>1i</sub>转换成对应于三通道BGR彩色图像S<sub>1</sub>的参数k<sub>i</sub>及b<sub>i</sub>,k<sub>i</sub>=k<sub>1i</sub>,b<sub>i</sub>=b<sub>1i</sub>*scale,i为正整数,i=1,2,…,N<sub>3</sub>,并且计算出候选车道线参数集L<sub>3</sub>中每组参数对应直线与三通道BGR彩色图像S<sub>1</sub>下边界的交点的列坐标y<sub>bottom,i</sub>,i为正整数,i=1,2,…,N<sub>3</sub>,之后对候选车道线参数集L<sub>3</sub>中的直线参数按照每组参数对应的y<sub>bottom,i</sub>的大小进行从小到大的排序,得到候选车道线参数序列L<sub>4</sub>,再依次计算候选车道线参数序列L<sub>4</sub>中相邻参数对应的直线与三通道BGR彩色图像S<sub>1</sub>下边界交点的列坐标之间的差值,得到间距序列{d<sub>bottom,j</sub>},同时依次计算候选车道线参数序列L<sub>4</sub>中相邻参数对应直线之间的角度差,得到角度差序列{Δβ<sub>j</sub>},j正整数,j=1,2,…,N<sub>3</sub>‑1,并且分别计算间距序列{d<sub>bottom,j</sub>}的均值<img file="FDA0000917126300000032.GIF" wi="99" he="75" />及角度差序列{Δβ<sub>j</sub>}的均值<img file="FDA0000917126300000033.GIF" wi="87" he="67" />然后按照以下步骤去掉非车道线直线:步骤7.3.1从候选车道线参数序列L<sub>4</sub>中取第一组和第二组直线参数,并作为一对相邻直线参数,同时从候选车道线参数序列L<sub>4</sub>中删除抽取的这第一组和第二组直线参数,并设一车道线参数序列L<sub>5</sub>,此时为空序列,进入步骤7.3.2;步骤7.3.2如果当前抽取的这对相邻直线参数对应的直线与三通道BGR彩色图像S<sub>1</sub>下边界交点的列坐标之间的差值d<sub>bottom</sub>和角度差Δβ满足条件:<img file="FDA0000917126300000034.GIF" wi="476" he="83" />且<img file="FDA0000917126300000035.GIF" wi="379" he="89" />则这对相邻直线参数对应的两条直线都是车道线,将这两组直线参数按照它们在候选车道线参数序列L<sub>4</sub>中的先后顺序依次放在车道线参数序列L<sub>5</sub>的尾部,进入步骤7.3.9,否则进入步骤7.3.3;步骤7.3.3如果候选车道线参数序列L<sub>4</sub>是空序列,进入步骤7.3.4,否则进入步骤7.3.5;步骤7.3.4将当前这对相邻直线参数中的前一组直线参数放在车道线参数序列L<sub>5</sub>的尾部,得到最后的车道线参数序列L<sub>5</sub>,车道线参数序列L<sub>5</sub>中每组直线参数对应着一条车道线,并结束步骤7;步骤7.3.5再从候选车道线参数序列L<sub>4</sub>中抽取第一组直线参数并且从候选车道线参数序列L<sub>4</sub>中删除第一组直线参数,与步骤7.3.2中的那对相邻直线参数进行两两配对,形成三对直线参数,分别判定每对直线参数对应的直线与三通道BGR彩色图像S<sub>1</sub>下边界交点的列坐标之间的差值d<sub>bottom</sub>和角度差Δβ是否满足条件:<img file="FDA0000917126300000036.GIF" wi="477" he="83" />且<img file="FDA0000917126300000037.GIF" wi="379" he="82" />结果存在以下三种情况:如果有且仅有一对直线参数对应的d<sub>bottom</sub>和Δβ满足条件,则进入步骤7.3.6,如果有两对直线参数对应的d<sub>bottom</sub>和Δβ满足条件,则进入步骤7.3.7,如果三对直线参数对应的d<sub>bottom</sub>和Δβ都不满足条件,则进入步骤7.3.8;步骤7.3.6满足条件的这对直线参数对应的两条直线都是车道线,将这两组直线参数按照它们在候选车道线参数序列L<sub>4</sub>中的先后顺序依次放在车道线参数序列L<sub>5</sub>的尾部,然后进入步骤7.3.9;步骤7.3.7分别计算满足条件的两对直线参数中每对直线参数对应的d<sub>bottom</sub>、Δβ与均值<img file="FDA0000917126300000041.GIF" wi="211" he="75" />的差异和δ即<img file="FDA0000917126300000042.GIF" wi="545" he="87" />选择差异和δ最小的这对直线参数对应的两条直线作为车道线,将这两组直线参数按照它们在候选车道线参数序列L<sub>4</sub>中的先后顺序依次放在车道线参数序列L<sub>5</sub>的尾部,进入步骤7.3.9;步骤7.3.8将这三组直线参数中的最前一组直线参数对应的直线作为车道线,并将这组直线参数放在当前车道线参数序列L<sub>5</sub>的尾部,进入步骤7.3.9;步骤7.3.9如果候选车道线参数序列L<sub>4</sub>为空序列,则得到最后的车道线参数序列L<sub>5</sub>,车道线参数序列L<sub>5</sub>中每组直线参数对应着一条车道线,结束步骤7,否则抽取候选车道线参数序列L<sub>4</sub>的第一组直线参数和车道线参数序列L<sub>5</sub>的最后一组直线参数,形成一对相邻直线参数,并删除候选车道线参数序列L<sub>4</sub>的第一组直线参数和车道线参数序列L<sub>5</sub>的最后一组直线参数,返回步骤7.3.2;步骤8:更新感兴趣区域ROI将车道线参数序列L<sub>5</sub>中第一组直线参数对应的直线l<sub>left</sub>和最后一组直线参数对应的直线l<sub>right</sub>分别作为高速公路的左右边界线,先计算直线l<sub>left</sub>与三通道BGR彩色图像S<sub>1</sub>上下边界的交点的列坐标y<sub>lu</sub>和y<sub>ld</sub>,然后计算直线l<sub>right</sub>与三通道BGR彩色图像S<sub>1</sub>上下边界的交点的列坐标y<sub>ru</sub>和y<sub>rd</sub>,并根据这些值对感兴趣区域ROI的左上角点坐标(x<sub>0</sub>,y<sub>0</sub>)中的y<sub>0</sub>及宽度M<sub>4</sub>进行更新,<img file="FDA0000917126300000043.GIF" wi="1235" he="142" />x<sub>0</sub>和高度M<sub>3</sub>不变,将此更新后的感兴趣区域ROI作为下一帧图像的感兴趣区域ROI,返回步骤1。
地址 210000 江苏省南京市四牌楼2号