发明名称 一种基于智能驾驶的地面交通标志实时检测的方法
摘要 一种基于智能驾驶的地面交通标志实时检测的方法属于智能交通行业的交通信息检测领域。本发明实时获取智能车辆前方道路的图像Src,对获取的原始图像Src进行切割、灰度变换、高斯滤波、二值化处理,得到二值图像Src_bw。同时,读入提前准备好的地面交通标志模板图像temp_i。通过模板匹配,每一幅模板均可在Src_bw中,找到一个与之相对应的最匹配区域,将其切割存成新的图像dst_i。将temp_i与相对应的dst_i进行相减,得到新的图像diff_i。统计每一福diff_i中的白色像素点个数diff_i_Sum,白色像素点最少的diff_i,所对应的模板与我们的地面标志最为相似;当diff_i_Sum少于我们设定的阈值时,即认为我们Src_bw中存在该模板中的地面交通标志。本发明适用于复杂城市道路环境的智能驾驶。
申请公布号 CN103577809B 申请公布日期 2016.08.17
申请号 CN201310557886.5 申请日期 2013.11.12
申请人 北京联合大学 发明人 刘宏哲;王棚飞;吴焰樟
分类号 G06K9/00(2006.01)I;G08G1/01(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 一种基于智能驾驶的地面交通标志实时检测的方法,其特征在于,包括以下步骤:1)将摄像机置于车内中央后视镜处,摄像机镜头与水平线垂直,位置固定;剪切摄像头获得的含有地面交通标志的图像,初步得到地面交通标志模板templ_i;灰度化、二值化、形态学膨胀腐蚀、高斯滤波处理templ_i,得到地面交通标志模板templ_i_bw,templ_i_bw是一个templ_i_bw_width×templ_i_bw_height维图像矩阵;每一种地面交通标志对应一种模板,共得到六种地面交通标志模板,分别为:直行箭头模板templ_1_bw、左转箭头模板templ_2_bw、右转箭头模板templ_3_bw、直行加左转箭头模板templ_4_bw、直行加右转箭头模板templ_5_bw、掉转箭头模板templ_6_bw;2)通过车辆上固定的摄像机,以30帧/秒的帧率实时获取智能车辆前方道路的图像Src,对获取的原始图像Src进行剪切,将图像上部2/3裁剪,取余下的1/3,得到新的图像Src_height;继续对图像Src_height裁剪,从图像的左侧到右侧,图像左侧为0宽度,图像右侧为1宽度,从0.4宽度部分开始裁剪,到0.9宽度截止,得到感兴趣区域Src_roi;对感兴趣区域进行灰度变化,得到新的图像Src_gray;对于灰度图像进行图像压缩,得到新的图像Src_gs;对于图像Src_gs,进行二值化处理,得到新的图像Src_bw,此图像仅为原始图像Src的1/24大小;Src_bw作为我们检测的区域;Src_bw是一个Src_bw_width×Src_bw_height维图像矩阵;3)直行箭头模板templ_1_bw在待测区域图像Src_bw中遍历扫描,计算模板templ_1_bw与待测图片的重叠区域的相似度,并分别将结果存入对应的映射图像ftmp_1当中,ftmp_1图像中的每一个点的值代表了一次相似度比较结果;遍历扫描的思想是:在待测图片中用处理过的模板templ_1_bw建立一个滑动窗口,该窗口大小与对应模板大小一致,从顶点位置开始一次滑动扫描,每次在横向或是纵向上移动一个像素,作一次比较计算;由此,横向比较Src_bw_width‑templ_1_bw_width+1次,纵向比较Src_bw_height‑templ_1_bw_height+1次,从而得到一个(Src_bw_width‑templ_1_bw_width+1)×(Src_bw_height‑templ_1_bw_height+1)维的结果矩阵,ftmp_1即是用图像来表示此矩阵,图像ftmp_1为ftmp_1_width×ftmp_1_height维图像矩阵;ftmp_1_width=Src_bw_width‑templ_1_bw_width+1      (1)ftmp_1_height=Src_bw_height‑templ_1_bw_height+1      (2)通过归一化相关匹配法来计算相似度;采用模板和图像间的乘法操作,较大的数表示匹配程度较高,0表示最坏的匹配效果,将结果存于ftmp_1中;<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>f</mi><mi>t</mi><mi>m</mi><mi>p</mi><mo>_</mo><mn>1</mn><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo><mo>=</mo><mfrac><mrow><msub><mi>&Sigma;</mi><mrow><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow></msub><mrow><mo>(</mo><mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mi>l</mi><mo>_</mo><mn>1</mn><mo>_</mo><mi>b</mi><mi>w</mi><mrow><mo>(</mo><mrow><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>S</mi><mi>r</mi><mi>c</mi><mo>_</mo><mi>b</mi><mi>w</mi><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><mi>y</mi><mo>+</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><msqrt><mrow><msub><mi>&Sigma;</mi><mrow><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow></msub><mo>(</mo><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mi>l</mi><mo>_</mo><mn>1</mn><mo>_</mo><mi>b</mi><mi>w</mi><msup><mrow><mo>(</mo><mrow><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow><mn>2</mn></msup><mo>&CenterDot;</mo><msub><mi>&Sigma;</mi><mrow><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow></msub><mi>S</mi><mi>r</mi><mi>c</mi><mo>_</mo><mi>b</mi><mi>w</mi><msup><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>,</mo><mi>y</mi><mo>+</mo><msup><mi>y</mi><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000964678910000021.GIF" wi="1918" he="159" /></maths>4)直行箭头模板templ_1_bw用二维函数templ_1_bw(x',y')表示,检测区域图像Src_bw用二维函数Src_bw(x,y)表示;(x',y')表示图像templ_1_bw矩阵中点的坐标,(x,y)表示图像Src_bw矩阵中点的坐标;使用函数cvMinMaxLoc从ftmp_1中提取最大值以及最大值的位置,即在ftmp_1中该最大值max_val的坐标位置max_loc;此时,max_loc_1.x就是原图中与模板最相似区域的横坐标,max_loc_1.y为原图中与模板最相似区域的纵坐标,该区域大小与模板大小一致;从原图中将该区域剪切,得到新的图像dst_1;dst_1_width=templ_1_width       (4)dst_1_height=templ_1_height      (5)5)将dst_1与模板templ_1_bw进行相减得到新的图像diff_1,diff_1是一个diff_width×diff_height维图像矩阵;diff_1(x<sub>1</sub>,y<sub>1</sub>)=dst_1(x,y)‑templ_1_bw(x',y')       (6)diff_1(x<sub>1</sub>,y<sub>1</sub>)表示图像矩阵各个点,在二值图像diff_1中每个像素点的值为0或者255,黑色像素点值为0,diff_1(x<sub>1</sub>,y<sub>1</sub>)用0表示;白色像素点的值为255,diff_1(x<sub>1</sub>,y<sub>1</sub>)用1表示;计算diff_1图像中白色像素点个数diff_1_Sum;<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>d</mi><mi>i</mi><mi>f</mi><mi>f</mi><mo>_</mo><mn>1</mn><mo>_</mo><mi>S</mi><mi>u</mi><mi>m</mi><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>d</mi><mi>i</mi><mi>f</mi><mi>f</mi><mo>_</mo><mi>i</mi><mo>_</mo><mi>w</mi><mi>i</mi><mi>d</mi><mi>t</mi><mi>h</mi></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>d</mi><mi>i</mi><mi>f</mi><mi>f</mi><mo>_</mo><mi>i</mi><mo>_</mo><mi>h</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></munderover><mi>d</mi><mi>i</mi><mi>f</mi><mi>f</mi><mo>_</mo><mn>1</mn><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000964678910000022.GIF" wi="1846" he="135" /></maths>6)继续使用其他的处理好的模板进行遍历扫描,相似度比较,图像相减,计算白色像素点个数,分别得出对应的映射图像ftmp_i、对应的相似度最高区域图像dst_i、对应的相减后的图像diff_i,直至六幅模板分别计算出相应的白色像素点个数diff_i_Sum;7)最后比较不同模板得到的白色像素点个数diff_i_Sum;像素点个数diff_i_Sum最小,就说明templ_i_bw与dst_i最相似;将diff_i_Sum与预先设定的阈值T相比较,若diff_i_Sum小于或者等于阈值T,则图像Src_bw中含有相对应的模板templ_i_bw所代表的交通标志,就可以输出该模板所含有的指示信息;若diff_i_Sum大于阈值T,则说明图像Src_bw中不含有相对应的模板templ_i_bw;阈值T=390。
地址 100101 北京市朝阳区北四环东路97号