发明内容
本发明提供道路中的运动方向检测方法及装置,以实现对道路中的运动方向的自动检测。
本发明的技术方案是这样实现的:
一种道路中的运动方向检测方法,该方法包括:
每采集一帧道路图像,对该道路图像进行块划分,计算各块的运动矢量,并对各块的运动矢量进行平滑;
对于每帧道路图像中的每个块,计算平滑前的该块的运动矢量与平滑后的该块的运动矢量的角度之差,若该差值在预设范围内,则计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的偏差,若该偏差小于阈值,则将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的平均方向作为该块的运动正向,其中,n为预设的大于1的整数。
所述计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的偏差为:计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的方差;
或者,计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的均值,然后分别将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量与该均值相减,对所得到的n个差值的绝对值求和,即得到所述偏差。
所述对各块的运动矢量进行平滑为:采用均值滤波或中值滤波对各块的运动矢量进行平滑。
预设道路中的运动正向检测条件,
所述每采集一帧道路图像对该道路图像进行块划分之前进一步包括:确定当前满足道路中的运动正向检测条件。
所述将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的平均方向作为该块的运动正向之后进一步包括:
采集到一帧道路图像,对该道路图像进行块划分,计算各块的运动矢量,并对各块的运动矢量进行平滑;
对于该帧中的每个块,计算该块的平滑后的运动矢量与该块的运动正向的夹角,将得到的该帧中的所有块的所述夹角值相加,若所得和值大于预设阈值,则确定道路中存在逆行现象。
所述计算该块的平滑后的运动矢量与该块的运动正向的夹角进一步包括:判断该夹角值是否大于预设阈值,若是,令该夹角值为1;否则,令该夹角值为0。
一种道路中的运动方向检测装置,该装置包括:
图像采集模块,采集道路图像,将道路图像发送给运动矢量计算模块;
运动矢量计算模块,对接收到的道路图像进行块划分,计算各块的运动矢量,将各块的运动矢量发送给平滑模块;
平滑模块,对接收到的各块的运动矢量进行平滑,将平滑前的各块的运动矢量及平滑后的各块的运动矢量发送给运动正向确定模块;
运动正向确定模块,对于每帧道路图像中的每个块,计算接收到的该块的平滑前的运动矢量与平滑后的该块的运动矢量的角度之差,若该差值在预设范围内,则计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的偏差,若该偏差小于阈值,则将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的平均方向作为该块的运动正向,其中,n为预设的大于1的整数。
所述装置进一步包括:逆行检测模块,接收平滑模块发来的道路图像中平滑后的各块的运动矢量,对于每个块,从运动正向确定模块获取该块的运动正向,计算该块的平滑后的运动矢量与该块的运动正向的夹角,将该道路图像中所有块的所述夹角相加,若所得和值大于预设阈值,则确定该道路图像中存在逆行现象。
所述逆行检测模块包括:
检测模块,接收平滑模块发来的道路图像中平滑后的各块的运动矢量,对于每个块,从运动正向确定模块获取该块的运动正向,计算该块的平滑后的运动矢量与该块的运动正向的夹角,将该夹角值发送给二值化模块,接收二值化模块返回的二值结果,将该二值结果相加,若所得和值大于预设阈值,则确定该道路图像中存在逆行现象;
二值化模块,接收检测模块发来的夹角值,若该夹角值大于预设阈值,则令该夹角值为1;否则,令该夹角值为0,将该经二值化处理的二值结果返回给检测模块。
与现有技术相比,本发明中,每采集一帧道路图像,对该道路图像进行块划分,计算各块的运动矢量,并对各块的运动矢量进行平滑;对于每帧道路图像中的每个块,计算平滑前的该块的运动矢量与平滑后的该块的运动矢量的角度之差,若该差值在预设范围内,则计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的偏差,若该偏差小于阈值,则将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的平均方向作为该块的运动正向,其中,n为预设的大于1的整数。本发明实现了对道路中的运动正向的自动检测,不会受主观影响,在遇到突发事件或摄像头角度、位置发生了变化时,可以及时更新道路的运动正向,提高了检测准确度。
进一步地,本发明实施例中,在确定道路的运动正向后,对采集到的道路图像,通过计算道路图像中每个块的平滑后的运动矢量与该块的运动正向的夹角,将得到的该帧中的所有块的所述夹角值相加,若所得和值大于预设阈值,则可确定道路中存在逆行现象,实现了对道路中的逆行现象的自动检测。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明实施例提供的检测道路的运动正向的流程图,如图1所示,其具体步骤如下:
步骤101:采集一帧道路图像,设为第k帧,按照预先设定的块划分方法,将该帧划分为多个块。
例如:设每帧道路图像的大小为:A×B,则可预先设定每个块的大小为a×b,其中,A/a=P,B/b=Q,P、Q为正整数,P为帧中块的高度,Q为帧中块的宽度。
步骤102:计算该帧中各块的运动矢量。
计算块的运动矢量可采用现有技术。例如:若道路图像为非压缩图像,则可利用块匹配的方法,在当前块的邻域块中搜索与当前块匹配的块,从该匹配块指向当前块的矢量即为当前块的运动矢量;若道路图像为压缩图像,则可利用视频压缩模块中已有的运动估计模块直接得到各块的运动矢量。
步骤103:对该帧中各块的运动矢量进行平滑。
平滑可以采用均值滤波或中值滤波实现。
例如:设采用p*q的均值滤波进行平滑,则对于该帧中的块(i,j),其平滑后的运动矢量的角度Vavg(i,j)为:
其中,p、q为整数,且p<P,q≤Q,P为帧中块的高度,Q为帧中块的宽度;i、j为块在帧的所有块中的横、纵坐标,i=1、2、…、P,i=1、2、…、Q;x、y为整数,V(i+x,j+y)为平滑前的块(i+x,j+y)的运动矢量的角度。
对帧中的每个块设为块(i,j),执行如下步骤:
步骤104:计算平滑后的块(i,j)的运动矢量与平滑前的块(i,j)的运动矢量的角度之差。
步骤105:判断该角度之差是否位于预设范围内,若是,执行步骤106;否则,执行步骤107。
步骤106:计算第k-n帧到第k-1帧中的块(i,j)的方差。
从第k-n帧到第k-1帧中,每帧中有一个块(i,j)。
n为预先设定的正整数,且n>1。
步骤107:判断步骤106得到的方差是否小于预设阈值,若是,执行步骤108;否则,执行步骤107。
步骤106也可为:计算第k-n帧到第k-1帧中的块(i,j)的均值,然后再分别将第k-n帧到第k-1帧中的块(i,j)与该均值相减,对所得到的n个差值的绝对值求和。同时,步骤107为:判断所得和值是否小于预设阈值,若是,执行步骤108;否则,执行步骤107。
步骤107:确定块(i,j)不存在道路的运动正向。
块(i,j)不存在道路的运动正向说明块(i,j)可能不是道路块。
步骤108:将第k-n帧到第k-1帧中的各个块(i,j)的平滑后的运动矢量的平均方向作为该块道路的运动正向。
例如:设第k-n帧到第k-1帧中块(i,j)的平滑后的运动矢量的角度分别为:V(k-n)、V(k-n+1)、…、V(k-1),则该块道路的运动正向的角度为:
其中,z为整数。
若位于道路上方的摄像头固定,则可每隔预定时长执行一次步骤101~108,以对道路中的运动正向进行更新;若摄像头可动,则每当摄像头转动到一个新角度或移动到一个新位置时,在该新角度或新位置上,可每隔预定时长执行一次步骤101~108,以对道路中的运动正向进行更新。
当确定出道路的运动正向时,就可检测出采集到的道路图像中是否存在逆行现象。
图2为本发明实施例提供的检测道路中的逆行现象的流程图,如图2所示,其具体步骤如下:
步骤201:采集一帧道路图像,按照预先设定的块划分方法,将该帧划分为多个块。
例如:设每帧道路图像的大小为:A×B,则可预先设定每个块的大小为a×b,其中,A/a=P,B/b=Q,P、Q为正整数,P为帧中块的高度,Q为帧中块的宽度。
步骤202:计算该帧中各块的运动矢量。
计算块的运动矢量可采用现有技术。
步骤203:对各块的运动矢量进行平滑。
步骤204:对于该帧中的每个块,计算该块的平滑后的运动矢量与步骤108中得到的该块道路的运动正向的夹角。
若该块不存在运动正向,则认为该夹角为0。
步骤205:根据预设阈值,对得到的各夹角进行二值化处理。
例如:若夹角大于预设阈值,则令夹角为1;否则,令夹角为0。
步骤206:对经过二值化处理的各夹角求和。
步骤207:判断所得和值是否大于预设阈值,若是,执行步骤208;否则,执行步骤209。
步骤208:确定道路图像中存在逆行现象,转至下一帧道路图像,返回步骤201。
步骤209:确定道路图像中不存在逆行现象,转至下一帧道路图像,返回步骤201。
可见,步骤201~203与步骤101~103相同,若对某帧道路图像既要进行运动正向检测又要进行逆行检测,则在执行步骤101~108后,可直接执行步骤204~209。
图3为本发明实施例提供的检测道路中的运动方向的装置的组成图,如图3所示,其主要包括:图像采集模块31、运动矢量计算模块32、运动正向确定模块33和逆行检测模块34,其中:
图像采集模块31:采集道路图像,将采集到的每帧道路图像发送给运动矢量计算模块32。
运动矢量计算模块32:接收道路图像,对道路图像进行块划分,计算各块的运动矢量,将道路图像的各块的运动矢量发送给平滑模块33。
平滑模块33:接收运动矢量计算模块32发来的道路图像的各块的运动矢量,对各块的运动矢量进行平滑,将平滑后的各块的运动矢量发送给逆行检测模块35;且,若检测到当前满足预设运动正向检测条件,则将平滑前的各块的运动矢量及平滑后的各块的运动矢量发送给运动正向确定模块34。
运动正向确定模块34:接收平滑模块33发来的道路图像的平滑前的各块的运动矢量及平滑后的各块的运动矢量,对于道路图像的每个块,计算平滑前的该块的运动矢量与平滑后的该块的运动矢量的角度之差,若该差值位于预设范围内,则计算当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的方差,若该方差小于预设阈值,则将当前帧的最近n帧中与该块位于同一位置的n个块的平滑后的运动矢量的平均方向作为该块道路的运动正向,其中,n为预先设定的大于1的整数。
逆行检测模块35:接收平滑模块32发来的道路图像中平滑后的各块的运动矢量,对道路图像的每个块,从运动正向确定模块34获取该块的运动正向,计算平滑后的该块的运动矢量与该块的运动正向的夹角,将该道路图像中所有块的所述夹角相加,若所得和值大于预设阈值,则确定该道路图像中存在逆行现象。
如图4所示,逆行检测模块35可包括:检测模块351和二值化模块352,其中:
检测模块351:接收平滑模块33发来的道路图像中平滑后的各块的运动矢量,对道路图像的每个块,从运动正向确定模块34获取该块的运动正向,计算平滑后的该块的运动矢量与该块的运动正向的夹角,将该夹角值发送给二值化模块352,接收二值化模块352返回的经二值化处理后二值结果,将该道路图像中所有块的二值结果相加,若所得和值大于预设阈值,则确定该道路图像中存在逆行现象。
二值化模块352:接收检测模块351发来的各夹角值,若该夹角值大于预设阈值,则令夹角值为1;否则,令夹角值为0,将该经二值化处理后的二值结果返回给检测模块351。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。