发明名称 一种从单幅图像检测道路消失点的方法
摘要 本发明公开了一种从单幅图像检测道路消失点的方法。利用一幅道路图像中位于道路的标识线,或车辆轨迹上的像素点梯度方向应具有一致性,以及位于道路路面的像素点具有相似的纹理色彩特征,采用基于线段方法来检测图像中道路消失点。本发明的结合了基于图像边缘方法和基于图像纹理方法的优点,利用基于图像纹理方法中方向一致性概念去除一般道路图像中存在很多和道路不相关的直线,利用位于道路路面上像素点具有相似的纹理色彩特征等特点,能提高检测道路消失点的正确度,计算复杂度低,可以应用于实时道路监控,智能行走机器人或自动驾驶汽车等计算机视觉系统。
申请公布号 CN102609938A 申请公布日期 2012.07.25
申请号 CN201210012694.1 申请日期 2012.01.16
申请人 浙江大学 发明人 陆系群
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 林怀禹
主权项 1.一种从单幅图像检测道路消失点的方法,其特征在于:利用一幅道路图像中位于道路的标识线,或车辆轨迹上的像素点梯度方向应具有一致性,以及位于道路路面的像素点具有相似的纹理色彩特征,采用基于线段方法来检测图像中道路消失点,具体步骤如下:(1)输入一幅道路图像;(2)设定一个长度阈值T<sub>1</sub>,角度偏差阈值T<sub>2</sub>,以及将用于直线拟合图像边缘的数目N<sub>1</sub>,长度阈值逐次减少的数值T<sub>3</sub>,和满足方向一致性要求的图像边缘的数目N<sub>2</sub>;(3)采用图像边缘检测方法得到道路图像中每个像素点的梯度方向和边缘点;(4)采用光栅扫描方式和八连通方法去除图像中孤立的边缘点,连接边缘点,得到图像边缘;(5)检查前一步骤(4)得到的所有图像边缘的长度是否满足步骤(2)事先设置好的长度阈值T<sub>1</sub>,如果在当前长度阈值T<sub>1</sub>下,能收集到的用于直线拟合N<sub>1</sub>条符合长度要求的图像边缘,则跳转到下一步骤(6),反之则逐渐减少长度阈值T<sub>1</sub>,每次从当前长度阈值T<sub>1</sub>减少T<sub>3</sub>,直到能收集到N<sub>1</sub>条符合长度要求的图像边缘;(6)针对得到的N<sub>1</sub>条满足长度要求的图像边缘,计算每条满足长度要求的图像边缘上像素点梯度方向一致性的测度值:<maths num="0001"><![CDATA[<math><mrow><msub><mi>C</mi><mi>i</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mrow><msub><mi>p</mi><mi>k</mi></msub><mo>,</mo><msub><mi>p</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&Element;</mo><mi>edge</mi><mo>_</mo><mi>list</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></munder><mo>|</mo><mover><mi>&theta;</mi><mo>^</mo></mover><mrow><mo>(</mo><msub><mi>p</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>-</mo><mover><mi>&theta;</mi><mo>^</mo></mover><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>|</mo><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中p<sub>k</sub>和p<sub>k+1</sub>是第i条满足长度要求图像边缘上的两个像素点,<img file="FDA0000131334110000012.GIF" wi="112" he="64" />和<img file="FDA0000131334110000013.GIF" wi="143" he="64" />分别是这两个像素点上的梯度方向,符号||表示求绝对值,C<sub>i</sub>就是第i条满足长度要求的图像边缘上像素点梯度方向一致性的测度值;(7)依据公式(1),将N<sub>1</sub>条满足长度要求的图像边缘按照各自计算出来的像素点梯度方向一致性的测度值从小到大进行排列,然后从小到大选择N<sub>2</sub>条方向一致性较好的图像边缘,即它们的方向一致性测度值C比较小;(8)针对从步骤(7)得到的每一条满足长度和方向一致性要求的图像边缘,假设第i条满足长度和方向一致性要求图像边缘上共有n<sub>i</sub>个点,这些点构成如下齐次坐标矩阵A<sup>i</sup>:<maths num="0002"><![CDATA[<math><mrow><msup><mi>A</mi><mi>i</mi></msup><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msubsup><mi>x</mi><mn>1</mn><mi>i</mi></msubsup></mtd><mtd><msubsup><mi>y</mi><mn>1</mn><mi>i</mi></msubsup></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><msub><mi>n</mi><mi>i</mi></msub><mi>i</mi></msubsup></mtd><mtd><msubsup><mi>y</mi><msub><mi>n</mi><mi>i</mi></msub><mi>i</mi></msubsup></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中公式(2)中x和y表示位于第i条满足长度和方向一致性要求图像边缘上像素点的空间坐标,上标i表示满足长度和方向一致性要求图像边缘的序号,而下标则表示在该图像边缘上像素点的序号,范围从1到n<sub>i</sub>,然后采用奇异值分解方法分解这些得到的矩阵A<sup>i</sup>,这些矩阵的个数等同于满足长度和方向一致性要求的图像边缘的数目N<sub>2</sub>,矩阵A<sup>i</sup>最小奇异值所对应的单位奇异矢量就是满足长度和方向一致性要求第i条图像边缘拟合的直线参数矢量[a<sub>i</sub> b<sub>i</sub> c<sub>i</sub>],该直线方程为a<sub>i</sub>x+b<sub>i</sub>y+c<sub>i</sub>=0,换句话说是采用最小二乘方法得到这些图像边缘拟合的直线;(9)根据所得到直线的参数,计算这些直线之间的交点,假设第i条和第j条图像边缘拟合得到的直线参数矢量分别为[a<sub>i</sub> b<sub>i</sub> c<sub>i</sub>]和<img file="FDA0000131334110000021.GIF" wi="265" he="71" />通过直线参数矢量叉积得到第i条和第j条图像边缘拟合直线的交点;(10)针对每两条相交的直线,从它们的交点开始沿着这两条直线往图像下方方向检查这两条直线上每个像素点的梯度方向与所在直线方向之间的差异:<maths num="0003"><![CDATA[<math><mrow><mi>COR</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>#</mo><mrow><mo>(</mo><mo>|</mo><mover><mi>&theta;</mi><mo>^</mo></mover><mrow><mo>(</mo><msub><mi>p</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>-</mo><mi>&theta;</mi><mrow><mo>(</mo><msub><mi>l</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>|</mo><mo>&lt;</mo><msub><mi>T</mi><mn>2</mn></msub><mo>,</mo><msub><mi>p</mi><mi>k</mi></msub><mo>&Element;</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>)</mo></mrow></mrow><mrow><mi>length</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>s表示直线l<sub>i</sub>和直线l<sub>j</sub>的交点,其中<img file="FDA0000131334110000023.GIF" wi="29" he="50" />表示直线l<sub>i</sub>从交点s开始沿着直线朝向图像下方的那一段,p<sub>k</sub>表示位于线段<img file="FDA0000131334110000024.GIF" wi="30" he="50" />上的一个像素点,而<img file="FDA0000131334110000025.GIF" wi="112" he="64" />表示该像素点上的梯度方向,θ(l<sub>i</sub>)表示直线l<sub>i</sub>的方向(即<img file="FDA0000131334110000026.GIF" wi="376" he="107" />),T<sub>2</sub>就是步骤(2)中设置的角度偏差阈值,#是一个计数器,计算位于<img file="FDA0000131334110000027.GIF" wi="29" he="50" />上有多少个像素点的梯度方向和直线方向θ(l<sub>i</sub>)之间绝对值差异小于角度偏差阈值T<sub>2</sub>,<img file="FDA0000131334110000028.GIF" wi="193" he="50" />表示直线l<sub>i</sub>从交点s开始沿着直线朝向图像下方那一段的长度,公式(3)中<img file="FDA0000131334110000029.GIF" wi="168" he="50" />值越小标明直线段<img file="FDA00001313341100000210.GIF" wi="29" he="50" />上像素点的梯度方向和所在直线的方向越一致;(11)一般道路图像中道路标识线或车辆轨迹都是从远处的消失点朝向图像下方的,而不会朝向图像上方,所以图像中直线方向的范围应该是[0°,180°),其中180°方向直线和0°方向直线同属水平线,垂直向下的直线应该是90°,现在考虑每两条朝向图像下方相交直线所包裹区域内部纹理色彩之间的差异性:<maths num="0004"><![CDATA[<math><mrow><mi>CTdiff</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>l</mi><mi>j</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>=</mo><mo>|</mo><mo>|</mo><mfrac><mn>1</mn><mrow><mo>#</mo><mrow><mo>(</mo><msub><mi>&Omega;</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow></mfrac><munder><mi>&Sigma;</mi><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>&Element;</mo><msub><mi>&Omega;</mi><mn>1</mn></msub></mrow></munder><mi>c</mi><mrow><mo>(</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>-</mo><mfrac><mn>1</mn><mrow><mo>#</mo><mrow><mo>(</mo><msub><mi>&Omega;</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac><munder><mi>&Sigma;</mi><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>&Element;</mo><msub><mi>&Omega;</mi><mn>2</mn></msub></mrow></munder><mi>c</mi><mrow><mo>(</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>|</mo><mo>|</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>直线l<sub>i</sub>和直线l<sub>j</sub>相交于s点,其中<img file="FDA00001313341100000212.GIF" wi="29" he="50" />和<img file="FDA00001313341100000213.GIF" wi="31" he="55" />分别表示直线l<sub>i</sub>和直线l<sub>j</sub>从交点s开始沿着各自直线朝向图像下方的那一段,相交直线和图像边界所包裹的图像区域被通过交点s,并均分直线l<sub>i</sub>和直线l<sub>j</sub>之间夹角的中分线分成两个部分:Ω<sub>1</sub>和Ω<sub>2</sub>,公式(4)就是用来计算这两部分之间的纹理色彩的差异性,#(Ω<sub>1</sub>)和#(Ω<sub>2</sub>)表示分别落在Ω<sub>1</sub>和Ω<sub>2</sub>区域内的像素点个数,而p<sub>1</sub>和p<sub>2</sub>分别表示落在Ω<sub>1</sub>和Ω<sub>2</sub>内的像素点,c(p<sub>1</sub>)和c(p<sub>2</sub>)表示这些点上的色彩,符号||||表示区域Ω<sub>1</sub>和Ω<sub>2</sub>之间色彩平均差异的范数;(12)依照公式(3)和(4),构造相交于s点直线段<img file="FDA00001313341100000214.GIF" wi="30" he="50" />和<img file="FDA00001313341100000215.GIF" wi="31" he="55" />的能量函数:<maths num="0005"><![CDATA[<math><mrow><mi>E</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>l</mi><mi>j</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>=</mo><mi>CTdiff</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>l</mi><mi>j</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>-</mo><mi>COR</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>i</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>-</mo><mi>COR</mi><mrow><mo>(</mo><msubsup><mi>l</mi><mi>j</mi><mi>s</mi></msubsup><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>检查每两条相交直线的能量函数,具有最小能量直线对的交点就是检测到的道路消失点。
地址 310027 浙江省杭州市西湖区浙大路38号