发明名称 基于视频技术的车辆检测与跟踪方法
摘要 本发明提供一种通过对交通场景的视频图像进行处理来进行车辆检测与跟踪的方法,该方法为:采集交通场景的图像,将交通图像按8×8像素进行分块,初始化背景图像并不断进行背景图像更新,在车道入口处设置与车道方向垂直的宽度为8像素的虚拟检测线,通过计算虚拟检测线上的块相对于背景图像的灰度变化来检测车辆,利用车辆到达检测线的次序对属于车辆区域的块进行标号,得到车辆标号的初始位置,之后结合三步法及全搜索法计算车辆的运动矢量并利用运动矢量对车辆标号的位置不断进行更新,实现了车辆的跟踪。本发明还针对复杂交通场景内可能出现的车辆间遮挡现象进行了检测和分割,因此具有检测和跟踪精度高、实时性好的优点。
申请公布号 CN100595792C 申请公布日期 2010.03.24
申请号 CN200810024699.X 申请日期 2008.04.01
申请人 东南大学 发明人 路小波;刘斌;朱周
分类号 G06T7/20(2006.01)I;G06T7/00(2006.01)I;G06K9/00(2006.01)I;G08G1/01(2006.01)I;G08G1/123(2006.01)I 主分类号 G06T7/20(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 陆志斌
主权项 1.一种基于视频技术的车辆检测与跟踪方法,其特征在于:①交通场景背景图像的不断更新设背景初始化之后得到的背景图像为B<sub>0</sub>,每当重新采集到第i帧图像P<sub>i</sub>时,计算对应于第i-1帧图像P<sub>i-1</sub>的背景图像B<sub>i-1</sub>,设当i=2时不需对背景进行更新,即B<sub>1</sub>=B<sub>0</sub>,B<sub>1</sub>为第1帧图像P<sub>1</sub>的背景图像;而当i>2时,首先利用连续三帧图像P<sub>i-2</sub>、P<sub>i-1</sub>和P<sub>i</sub>计算对称帧差图像|P<sub>i-1</sub>-P<sub>i-2</sub>|和|P<sub>i</sub>-P<sub>i-1</sub>|,并利用这两幅对称帧差图像进行二值化计算,得到与所采集第i帧图像P<sub>i</sub>大小相等的第1标号图L<sub>1</sub>,<maths num="0001"><![CDATA[<math><mrow><msub><mi>L</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>if</mi><mo>|</mo><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo><mo>></mo><msub><mi>t</mi><mn>1</mn></msub><mi>and</mi><mo>|</mo><msub><mi>P</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo><mo>></mo><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>else</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>式中,P<sub>i</sub>(x,y)表示第i帧图像P<sub>i</sub>中坐标为(x,y)的像素的灰度,L<sub>1</sub>(x,y)表示第1标号图L<sub>1</sub>中坐标为(x,y)的点的标号,L<sub>1</sub>(x,y)取1时表示点(x,y)在连续三帧图像P<sub>i-2</sub>、P<sub>i-1</sub>和P<sub>i</sub>中是运动的,L<sub>1</sub>(x,y)取0时表示点(x,y)在连续三帧图像P<sub>i-2</sub>、P<sub>i-1</sub>和P<sub>i</sub>中是静止的,t<sub>1</sub>表示二值化计算时的阈值,预先设定为5~10,在得到第1标号图L<sub>1</sub>之后,接着对第1标号图L<sub>1</sub>进行种子填充,得到新的第1标号图L<sub>1</sub>′,其次,对第i-1帧图像P<sub>i-1</sub>中所有像素的灰度P<sub>i-1</sub>(x,y)进行四邻域平均计算,得到图像P<sub>i-1</sub>′,即:P<sub>i-1</sub>′(x,y)=(P<sub>i-1</sub>(x-1,y)+P<sub>i-1</sub>(x,y-1)+P<sub>i-1</sub>(x,y)+P<sub>i-1</sub>(x,y+1)+P<sub>i-1</sub>(x+1,y))/5接着,利用图像P<sub>i-1</sub>′和背景图像B<sub>i-2</sub>计算背景差图像|P<sub>i-1</sub>′-B<sub>i-2</sub>|,并对该背景差图像进行二值化计算,得到第2标号图L<sub>2</sub>,<maths num="0002"><![CDATA[<math><mrow><msub><mi>L</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>if</mi><mo>|</mo><msup><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo><mo>></mo><msub><mi>t</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>else</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中B<sub>i-2</sub>为第i-2帧图像的背景图像,t<sub>2</sub>为二值化计算时的阈值,通过车辆检测过程中的阈值计算方法计算得到,最后,根据新的第1标号图L<sub>1</sub>′和第2标号图L<sub>2</sub>中对应点之间的4种逻辑关系,将第i-2帧图像的背景图像B<sub>i-2</sub>分为4个区域,并对该4个区域采用下列灰度更新方法进行更新,得到更新后的背景图像B<sub>i-1</sub>:<maths num="0003"><![CDATA[<math><mrow><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mtd><mtd><mi>if</mi><msup><msub><mi>L</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><msub><mi>andL</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mi>M</mi></mtd><mtd><mi>if</mi><msup><msub><mi>L</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><msub><mi>andL</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mi>and</mi><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>></mo><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mi>M</mi></mtd><mtd><mi>if</mi><msup><msub><mi>L</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mi>and</mi><msub><mi>L</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mi>and</mi><msub><mi>P</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&lt;</mo><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>B</mi><mrow><mi>i</mi><mo>-</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mtd><mtd><mi>else</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,M取值决定背景更新的速度,取1或2;②设置虚拟检测线,当车辆通过检测线时对其进行检测,得到车辆的初始标号在背景初始化完成之后,重新开始采集图像,设重新采集的第i帧图像为P<sub>i</sub>,在图像P<sub>i-1</sub>上的车道入口处设置与车道垂直的虚拟检测线Line,其宽度为8像素,设图像矩阵P<sub>i</sub>的大小为M×N,以8×8像素为块,得到块的矩阵D<sub>i</sub>,其大小为m×n,其中m=M/8,n=N/8,块矩阵D<sub>i</sub>中的每个元素都表示一个大小为8×8的块D<sub>i</sub>(x,y),定义大小为m×n的块标号矩阵Label<sub>i</sub>,其中块标号矩阵Label<sub>i</sub>中的元素Label<sub>i</sub>(x,y)表示块D<sub>i</sub>(x,y)的标号,将背景区域的块D<sub>i</sub>(x,y)的标号Label<sub>i</sub>(x,y)设为0,将第h辆车区域的块D<sub>i</sub>(x,y)的标号Label<sub>i</sub>(x,y)设为h,h为自然数,Label<sub>i</sub>中的所有元素初始化为0,设检测线Line在块矩阵D<sub>i</sub>中的x方向坐标为l,则它在图像P<sub>i-1</sub>中上边缘线的x坐标为(l-1)×8+1,下边缘线的x坐标为l×8,将当前帧图像P<sub>i-1</sub>与背景图像B<sub>i-1</sub>进行相减,并取绝对值,得到背景差图像BP<sub>i-1</sub>:BP<sub>i-1</sub>=|P<sub>i-1</sub>-B<sub>i-1</sub>|BP<sub>i-1</sub>中检测线区域的图像设为Line<sub>i-1</sub>,其大小为8×N,可以分成为1×n个块,车辆检测的步骤如下:步骤一:计算检测线图像Line<sub>i-1</sub>的分割阈值T,该分割阈值T采用迭代法得到,步骤二:分别计算检测线图像Line<sub>i-1</sub>中n个块的平均灰度值,对第j个块而言,其平均灰度值K<sub>j</sub>为:<maths num="0004"><![CDATA[<math><mrow><msub><mi>K</mi><mi>j</mi></msub><mo>=</mo><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><munderover><mi>&Sigma;</mi><mrow><mi>y</mi><mo>=</mo><mrow><mo>(</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mn>8</mn><mo>+</mo><mn>1</mn></mrow><mrow><mi>j</mi><mo>&times;</mo><mn>8</mn></mrow></munderover><msub><mi>Line</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>/</mo><mn>64</mn></mrow></math>]]></maths>其中,Line<sub>i-1</sub>(x,y)是检测线图像Line<sub>i-1</sub>中坐标为(x,y)的像素的灰度,步骤三:分别对检测线图像Line<sub>i-1</sub>中n个块的平均灰度值和阈值T进行比较,如果第j个块的平均灰度值K<sub>j</sub>大于或等于阈值T,则说明检测线图像Line<sub>i-1</sub>上检测到了车辆,并给该块赋予标号h,表示该块属于第h次到达检测线的车辆,如果第j个块的平均灰度值K<sub>j</sub>小于阈值T,则第j个块的标号仍然为0,表示该块属于背景区域,即,如果K<sub>j</sub>≥T,则Label<sub>i-1</sub>(l,j)=h;如果K<sub>j</sub><T,则Label<sub>i-1</sub>(l,j)=0其中,Label<sub>i-1</sub>(l,j)是块标号矩阵Label<sub>i-1</sub>中坐标为(l,j)的块的标号,h表示该车到达检测线的次序,且当前两帧检测线图像Line<sub>i-3</sub>和Line<sub>i-2</sub>中没有检测到车辆,而当前帧检测线图像Line<sub>i-1</sub>中检测到车辆时,对h进行一次更新,即h=h+1;③检测到车辆之后,计算车辆的运动矢量,利用运动矢量进行标号移位在对第i-1帧图像P<sub>i-1</sub>进行车辆检测之后,如果第i-2帧图像P<sub>i-2</sub>中存在第h次到达的车辆,则首先确定所有属于该车辆的块的集合Block<sub>i-2</sub>={D<sub>i-2</sub>(m,n)|Label<sub>i-2</sub>(m,n)=h},然后分别计算块集合Block<sub>i-2</sub>中每个块D<sub>i-2</sub>(m,n)在第i-2帧图像P<sub>i-2</sub>和第i-1帧图像P<sub>i-1</sub>之间的运动矢量,记为(v<sub>mx</sub>,v<sub>ny</sub>),这些运动矢量的集合为<img file="C2008100246990004C1.GIF" wi="667" he="73" />计算集合V中出现频率最大的运动矢量作为车辆的运动矢量(vt<sub>x</sub>,vt<sub>y</sub>),并利用运动矢量(vt<sub>x</sub>,vt<sub>y</sub>)对车辆标号的位置进行更新,即,对于任意的块<img file="C2008100246990004C2.GIF" wi="419" he="63" />而言,块D<sub>i-2</sub>(m,n)的位置从第i-2帧图像P<sub>i-2</sub>中的坐标(m,n)运动到第i-1帧图像P<sub>i-1</sub>中的坐标(m+vt<sub>x</sub>,n+vt<sub>y</sub>),故令Label<sub>i-1</sub>(m+vt<sub>x</sub>,n+vt<sub>y</sub>)=h,完成车辆标号位置的更新,所述车辆的运动矢量(vt<sub>x</sub>,vt<sub>y</sub>)的计算方法为:选择车辆后部分的运动矢量代表整辆车的运动矢量,即对车辆最后两行的所有块进行运动矢量计算,并从这些运动矢量中找出出现频率最大的矢量,以之作为车辆的运动矢量,所述运动矢量(v<sub>mx</sub>,v<sub>ny</sub>)的计算方法为:首先采用三步法,然后,在运动矢量长度小于2个像素时,采用全搜索法;④车辆标号的校正车辆标号的校正只需在包含车辆标号h的最小矩阵框[x<sub>min</sub> x<sub>max</sub> y<sub>min</sub> y<sub>max</sub>]中进行,其中x<sub>min</sub>、y<sub>min</sub>分别是块标号矩阵Label<sub>i-1</sub>中所有标号为h的块的最小横纵坐标,x<sub>max</sub>、y<sub>max</sub>分别是块标号矩阵Label<sub>i-1</sub>中所有标号为h的块的最大横纵坐标,首先利用在车辆检测中用到的阈值计算方法计算背景差图像BP<sub>i-1</sub>的分割阈值T2,再分别计算最小矩阵框中的所有块的平均灰度,如果块的平均灰度大于阈值T2,则给该块标上车辆的标号h;否则将该块的标号设置为0,即:对于任意的块D(x,y),x<sub>min</sub>≤x≤x<sub>max</sub>且y<sub>min</sub>≤y≤y<sub>max</sub>,其平均灰度为:<maths num="0005"><![CDATA[<math><mrow><mrow><mi>K</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>=</mo><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mn>8</mn><mo>+</mo><mn>1</mn></mrow><mrow><mi>x</mi><mo>&times;</mo><mn>8</mn></mrow></munderover><munderover><mi>&Sigma;</mi><mrow><mi>n</mi><mo>=</mo><mrow><mo>(</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mn>8</mn><mo>+</mo><mn>1</mn></mrow><mrow><mi>y</mi><mo>&times;</mo><mn>8</mn></mrow></munderover><msub><mi>BP</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>/</mo><mn>64</mn></mrow></math>]]></maths>如果K(x,y)≥T2,则Label<sub>i-1</sub>(x,y)=h;如果K(x,y)<T2,则Label<sub>i-1</sub>(x,y)=0;⑤检测车辆间的遮挡现象并进行分割(1)遮挡现象的检测对单辆车而言,以包含所有标号的最小矩形框[x<sub>min</sub> x<sub>max</sub> y<sub>min</sub> y<sub>max</sub>]作为该车的位置,则当前图像P<sub>i-1</sub>中的所有车辆分别由各自的最小矩形框来表示,且矩形框的标号与框内块的标号一致,对所有的矩形框进行两两比较和判断,若两个矩形框存在重叠部分,则表明矩形框所代表的车辆间存在遮挡现象,并将重叠部分定义为遮挡区域;反之,若两个矩形框不存在重叠部分,则表明矩形框所代表的车辆间不存在遮挡现象,(2)遮挡区域的分割检测到遮挡现象并得到遮挡区域之后,针对遮挡区域建立Markov模型,模型中标号的个数即为遮挡区域中块的个数,给遮挡区域中所有块的标号都设定一个确定值便得到一组标号组合,每组标号组合都对应一个能量函数,在所有可能的标号组合的范围内,对能量函数进行最小优化,得到的最小能量函数所对应的标号组合即为遮挡区域的分割结果。
地址 210096江苏省南京市四牌楼2号