对图像进行运动检测的装置和方法

文档序号:7655449阅读:181来源:国知局
专利名称:对图像进行运动检测的装置和方法
技术领域
本发明涉及图像处理领域,尤其涉及一种与视频编码单元相结合的运动检测的装置和方法。
背景技术
运动检测(移动帧测)技术是智能视频监控系统的关键技术,是智能视频监控系统进行运动跟踪和实时报警的基础。运动检测的主要目的是根据智能视频监控系统获得的系列背景图像,将运动物体从背景图像中提取出来,再对该运动物体进行轮廓提取、运动跟踪等后续的处理。
随着智能监控技术的迅速发展和人们对智能监控需求的不断增加,运动检测算法已经逐步得到很大的完善。目前,运动检测算法不仅能判断视频图像是否发生运动,还能通过视频压缩编码领域常用的运动估计技术来检测出运动物体的运动方向和运动速度等具体运动信息,现有技术中对图像进行运动检测的方法一为帧差法。此方法通过比较相隔一定时间间隔的两帧图像的象素点差值的绝对值之和(Sum of AbsoluteDifference,SAD)与预设的门限值的大小,根据比较结果来确定图像或图像的某个区域是否运动。该方案能较准确地检测出运动物体的轮廓,对于动态环境具有较强的自适应性,适合于一般情况下对精度要求不是很高的运动检测。
在实现本发明的过程中,发明人发现使用芯片实现上述方法一帧差法方案时,进行SAD值计算所需的两幅图像(当前图像和参考图像)通常都保存在外存中,运动检测单元需要先从外存中载入当前图像和参考图像,然后才能开始计算SAD值。因此,每计算一次SAD值,需要从外存中载入两帧图像,占用大量的存储器带宽资源。
现有技术中对图像进行运动检测的方法二为运动估计法。运动估计技术广泛应用于视频压缩编码领域,用于计算出运动图像中运动物体的运动方向和运动距离。该方法的原理如下取采样于不同时刻的两帧图像为当前图像(当前时刻)和参考图像(前一时刻)。将当前图像分为若干个宏块,每个宏块分别在参考图像中同一宏块的周围取一个一定大小的区域(搜索窗),并在此区域进行运动搜索。搜索的过程即找出最小SAD值的过程每搜索一个点就在参考图像中取出一个对应的参考块,该参考块的左上角像素点为上述搜索到的点。求当前宏块与参考块的对应像素点差值的绝对值之和(SAD值);搜索若干个点,找出SAD值最小的点,即与当前宏块最匹配的点;这个点与当前宏块左上角像素点的距离即为运动矢量(MV)。MV包括x分量和y分量,分别表示当前宏块相对于参考块在水平方向和垂直方向上运动的距离。搜索窗越大、或者当前图像和参考图像之间的时间间隔越短,搜索结果就越精确。但搜索窗越大,从片外存储器载入的搜索窗数据量就越大,所以实际的设计中对搜索窗大小一般有一定的限制;此外,当前帧与参考帧之间的时间间隔越短,运动估计运算从外存中载入数据的频度就越高,占用的存储器带宽就越大。
在实现本发明的过程中,发明人发现上述方法二中,由于运动估计的实现电路复杂、占用存储带宽较大,当同一个芯片需要同时支持带运动方向/运动速度检测的运动检测和视频编码时,需要两套重复的逻辑电路和两倍的存储器带宽占用,因此在独立的运动检测单元中加入运动估计电路是不划算的;而视频编码单元所带的运动估计电路又无法完全提供运动检测所需要的功能运动检测的运动估计要求当前帧和参考帧之间的时间间隔是可调的,而视频编码单元的运动估计使用的帧间隔是固定的(通常是1/25秒(PAL制)或1/30秒(NTSC制))。如果仅使用视频编码单元运动估计得到的当前图像相对于前一图像的运动矢量来近似确定运动检测的运动矢量,则只能代表当前图像相对于上一帧图像的运动信息,却不能体现在当前图像前面几帧图像的运动信息。因此,该方案对于运动过于剧烈的监视物体运动检测的精度不高,容易产生错误的运动检测结果。

发明内容
本发明实施例提供了一种对图像进行运动检测的装置和方法,解决了现有技术中运动检测单元占用大量的存储器资源,且对于运动过于剧烈的监视物体运动检测的精度不高的问题。
本发明实施例的目的是通过以下技术方案实现的一种对图像进行运动检测的装置,包括视频编码单元用于载入当前图像和运动估计参考图像,对当前图像进行运动估计,并根据所述运动估计得到运动矢量;运动检测单元用于对从视频编码单元获得的所述运动矢量进行帧间运动矢量累加;当视频编码单元中进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,运动检测单元载入运动检测参考图像,并根据累加得到的运动矢量,对所述当前图像进行运动信息提取。
一种对图像进行运动检测的方法,包括步骤A、载入当前图像、运动估计参考图像和运动检测参考图像,根据所述运动估计参考图像对所述当前图像进行运动估计,将获得的当前图像的宏块运动矢量输出;B、将得到的宏块运动矢量进行累加;当进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,根据所述累加的运动矢量和获得的运动检测参考图像,对所述当前图像进行运动信息提取。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过将运动检测单元与视频编码单元共用当前图像,从而解决了运动检测单元由于重复载入当前图像占用大量的存储器资源,减少了运动检测单元的芯片面积和功耗。
本发明实施例通过基于运动轨迹的帧间运动矢量累加方法,对视频编码单元运动估计得到的宏块运动矢量进行时空域的累加,不仅保证了用于运动检测的宏块运动矢量的精度,而且对于运动过于剧烈的监视物体,很好地起到了防止产生错误的运动信息的效果。


图1为本发明实施例所述装置的结构示意图;图2为本发明实施例所述方法的处理流程图;图3为本发明实施例所述不同图像中运动宏块位置变化(宏块运动轨迹)示意图。
具体实施例方式
本发明实施例提供了一种对图像进行运动检测的装置和方法。
本发明实施例首先需要确定运动检测的帧间隔值为N帧,即对用于运动检测的图像进行采样的周期为N(与用于运动估计的帧间隔不同,运动估计是隔帧实现)。该N值可以根据实际情况进行调节,对于运动比较缓慢或精度要求比较低的运动检测,N值可相对取大些;对于运动比较激烈或运动精度要求比较高的运动检测,N值可相对取小些。
本发明实施例所述装置的结构示意图如图1所示,包括如下模块视频编码单元和运动检测单元。
视频编码单元负责载入当前图像和运动估计参考图像(上一图像的重构图像,不同于运动检测参考图像),除了对载入的当前图像进行现有的编码处理之外,还对当前图像进行运动估计,并将获得的当前图像的运动矢量传输给运动检测单元。
运动检测单元对从视频编码单元获得的运动矢量进行基于运动轨迹的帧间运动矢量累加;当运动估计的图像总数达到预先设定的运动检测帧间隔值时,当前图像即为待检测图像时,运动检测单元载入运动检测参考图像,并读取视频编码单元载入的当前图像,对当前图像进行报警检测;并根据累加后的宏块运动矢量提取运动信息。
上述视频编码单元包括第一图像载入模块和运动估计模块。其中,第一图像载入模块用于依次载入进行运动估计的当前图像和运动估计参考图像(即上一图像的重构图像,不同于运动检测参考图像),将载入的当前图像和运动估计参考图像传输给运动估计模块;当用于运动估计的图像总数达到预先设定的运动检测帧间隔值时,将当前图像作为待检测图像传输给运动检测单元。
运动估计模块用于对第一图像载入模块传输过来的当前图像(即待检测图像)和运动估计参考图像进行运动估计,并将获得的当前图像所有宏块的运动矢量传输给运动检测单元。
上述运动检测单元包括第二图像载入模块、报警检测信息计算模块、报警检测判断和处理模块以及运动矢量累加模块、运动信息提取模块。其中第二图像载入模块用于当运动估计的图像总数达到预先设定的运动检测的间隔值时,从外部存储器或视频编码单元载入运动检测参考图像,并从视频编码单元读取作为待检测图像的当前图像。
报警检测信息计算模块用于根据第二图像载入模块所载入的运动检测参考图像和当前图像,计算当前图像的宏块SAD或统计当前图像的宏块的像素变化个数。
报警检测判断和处理模块用于将报警检测信息计算模块所获得的宏块SAD或像素变化个数,与预先设定的报警门限进行比较,根据比较结果进行宏块报警检测处理,提取宏块报警信息。
运动矢量累加模块用于对从视频编码单元获得的运动矢量进行基于运动轨迹的帧间运动矢量累加,得到当前图像中所有宏块相对于N-1幅(N-1个采样时刻)之前的参考图像的运动矢量,即得到帧间隔为N的两幅图像之间的运动矢量。
运动信息提取模块根据运动矢量累加模块获得的宏块运动矢量(间隔为N的两幅图像之间的运动矢量),提取出当前图像中运动物体的运动方向和运动速度等运动信息。
上述本发明实施例所述装置适用于16×16、8×16、16×8、8×8、8×4、4×8、4×4等宏块划分形式的运动检测。
本发明实施例所述方法的处理流程如图2所示,包括如下步骤步骤2-1载入当前图像和运动估计参考图像;进行运动估计,获取宏块运动矢量。
视频编码单元从片外存储器载入用于运动估计的当前图像和运动估计参考图像,根据上述运动估计参考图像对上述当前图像进行运动估计,并将获得的当前图像中所有宏块相对于上述运动估计参考图像的运动矢量传输给运动检测单元。上述运动估计参考图像可以为上一个当前图像进行视频编码后生成的重构图像。
步骤2-2进行帧间宏块运动矢量累加,并获取当前图像和运动检测参考图像信息。
运动检测单元根据视频编码单元传输过来的各个相邻图像的运动矢量,将在运动检测帧间隔值N之内的相邻图像的运动矢量累加在一起,得到当前图像(如第n+i帧,i<=N)中所有宏块相对于运动估计起始图像(如第n帧)的运动矢量。当i等于运动检测帧间隔值N时,所得的运动矢量即为当前图像和与当前图像帧间隔为N的参考图像(即视频编码单元在N帧之前载入的当前图像)之间的运动矢量。
下面以视频编码单元和运动检测单元工作时,块大小为16×16(即宏块)、帧间隔等于5为例来说明本发明实施例所述基于运动轨迹的帧间运动矢量累加方法。具体处理过程如下对于运动图像来说,在不同的时刻,宏块在每帧图像的位置是不同的。如图3所示,第n+1帧的宏块A’的位置在第n帧为宏块A的位置,即宏块A在第n帧、第n+1帧、第n+2帧、第n+4帧和第n+5帧中的位置都是不同的。宏块A在各帧中的位置连在一起就形成一条运动轨迹,第n+5帧中图像右上角的宏块A是从第n帧中图像左下角的宏块A运动过去的。因此,当计算第n+5帧(当前图像)各个宏块相对于第n帧的运动矢量时,不能简单将第n帧、第n+1帧、第n+2帧、第n+4帧和第n+5中各个相邻图像中相同位置宏块运动矢量的直接相加,而应该先根据当前图像中的宏块的运动矢量确定相同内容宏块在前一图像中的位置,然后将当前图像中宏块的运动矢量与前一图像中相同内容宏块的运动矢量累加。
例如,如图3所示,第n+1帧为视频编码单元进行第一次运动估计时搜索到的图像,视频编码单元对该帧进行运动估计搜索,获得宏块A在此图像中相对于前一图像(第n帧)的运动矢量为MV1(x1,y1)。由于第n+1帧为视频编码单元进行第一次运动估计搜索的图像,故此帧不需要进行运动矢量累加。视频编码单元对第n+2帧进行运动估计搜索,获得宏块A在第n+2帧的运动矢量为MV2(x2,y2)。此时,在进行运动矢量累加前,需要先根据MV2(x2,y2)的大小判断宏块A在第n+1帧的位置,从而选中宏块A在第n+1图像中的位置处的运动矢量,即MV1(x1,y1)。然后,将上述MV1(x1,y1)、MV2(x2,y2)中对应的x和y分量分别相加,获得一个累加后的运动矢量,即为累加后的第n+2帧相对于n帧的运动矢量。重复进行上述运动矢量累加操作,当累加到第n+5帧(当前图像)后,此检测图像的帧间宏块运动矢量累加完毕,就得到相隔5帧的宏块运动矢量MV_5(x,y)。上述中的(xn,yn)为宏块A在第n帧的位置(n=1~N)。
上述运动矢量累加的计算公式如下述公式(1)所示(式中N=5)MV_N(x,y)=MV1(x1,y1)+MV2(x2,y2)+MV3(x3,y3)+.....+MVN(xN,yN)(1)上述公式1成立的基本条件是所有宏块的运动矢量总是指向参考图像的宏块边界(宏块左上角的像素点),即宏块在帧间的运动距离都是以宏块为单位的。在实际应用中,并非当前图像中的所有宏块的运动矢量都指向上一图像的宏块边界的。因此,为了进行上述运动矢量的累加,运动检测单元需要对视频编码单元输出的宏块运动矢量进行近似运算,从而得到此宏块在前一图像的位置。
近似运算时采用四舍五入原则,水平位置和垂直位置分别处理,处理方法相同。下面以宏块A为例,对此处理方法进行描述。宏块坐标以块为单位,宏块A在当前图像的位置为(CurX,CurY),在前一图像的位置为(LastX,LastY)。
设块的水平大小为X,块大小的1/2为x,宏块A运动矢量的水平分量为A_MV_X,A_MV_X与X的商为Xp,A_MV_X与X的余数为Xq。以X为除数,以x为位置判决边界,把块分为上边块和下边块。若Xq大于或等于x,则认为宏块A在水平上边块,此时宏块A在当前图像与前一图像的水平位置坐标相差大小为Xp+1;否则,认为宏块A在水平下边界,此时宏块A在当前图像与前一图像的水平位置坐标相差大小为Xp。假设运动向量的方向是由参考图像指向当前图像的,所以若A_MV_X>=0,则宏块A在前一图像的水平位置LastX为(CurX+Xp)或者(CurX+Xp+1),若A_MV_X<0,则宏块A在前一图像的水平位置LastX为(CurX-Xp)或者(CurX-Xp-1)。
设块的垂直大小为Y,块大小的1/2为y,宏块A运动矢量的垂直分量为A_MV_Y,A_MV_Y与Y的商为Yp,A_MV_Y与Y的余数为Yq。以Y为除数,以y为位置判决边界,把块分为上边块和下边块。若Yq大于或等于y,则认为宏块A在垂直上边块,此时宏块A在当前图像与前一图像的垂直位置坐标相差大小为Yp+1;否则,认为宏块A在垂直下边界,此时宏块A在当前图像与前一图像的垂直位置坐标相差大小为Yp。假设运动向量的方向是由参考图像指向当前图像的,所以若A_MV_Y>=0,则宏块A在前一图像的垂直位置LastY为(CurY+Yp)或者(CurY+Yp+1),若A_MV_Y<0,则宏块A在前一图像的垂直位置LastY为(CurY-Yp)或者(CurY-Yp-1)。
根据上述近似运算,可得到在宏块A在前一图像的位置为(LastX,LastY)。根据(LastX,LastY)采用式(1)描述的计算方法进行帧间运动向量累加即可得到相隔N帧的宏块运动矢量。
因为运动检测对运动矢量的精度要求没有视频编码高,所以对运动矢量采取上述近似运算就可以满足检测物体运动方向的要求。
此外,运动检测单元对视频编码单元的图像帧数进行计数,当计数值达到运动检测的帧间隔值N时,运动检测单元通过视频编码单元和运动检测单元之间的数据通道从视频编码单元读取当前图像;同时,运动检测单元从片外存储单元载入运动检测参考图像。
运动检测单元也可以通过视频编码单元和运动检测单元之间的数据通道从视频编码单元载入运动检测参考图像。即当计数值达到运动检测的帧间隔值N时,视频编码单元将从片外存储器载入的用于运动估计的当前图像和运动估计参考图像一起传输给运动检测单元。这样可以节省一些逻辑资源。
步骤2-3对当前图像进行报警检测和运动信息提取。
运动检测单元根据上述获得的当前图像和从片外存储单元或视频编码单元载入的运动检测参考图像,以及累加后的宏块运动矢量(即第N+n帧相对于第n帧的宏块运动矢量,N为运动检测间距),对当前图像进行运动检测,即对当前图像进行报警检测和运动信息提取。
报警检测时,运动检测单元以当前图像的宏块为单位,计算当前图像和参考图像块SAD或统计块像素变化个数;将计算结果与报警门限进行比较,若前者大于后者,则提取宏块的报警信息;反之不提取宏块的报警信息。
运动检测单元根据累加后的运动矢量就可以得到当前图像相对于与当前图像帧间隔为N的参考图像之间的运动矢量。根据该运动矢量,就可以提取出当前图像中运动物体相对于参考图像的运动方向和运动速度等具体运动信息。
综上所述,本发明实施例通过将运动检测单元与视频编码单元共用当前图像,基于运动轨迹进行帧间运动矢量累加,充分利用视频编码单元的运动估计功能,既实现了对视频图像的进行运动方向和运动速度估计的需求,又节省了逻辑资源和系统带宽。解决了独立的运动检测单元占用系统存储带宽过大和消耗逻辑资源过大的问题,节省了系统带宽,减少了运算量,节约了芯片的面积和功耗;同时解决了运动检测时间间隔较大时运动估计搜索不准以及运动过于剧烈时容易产生错误运动信息的问题,提高了运动检测的精度和灵活度。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种对图像进行运动检测的装置,其特征在于,包括视频编码单元用于载入当前图像和运动估计参考图像,对当前图像进行运动估计,并根据所述运动估计得到运动矢量;运动检测单元用于对从视频编码单元获得的所述运动矢量进行帧间运动矢量累加;当所述视频编码单元中进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,运动检测单元载入运动检测参考图像,并根据累加得到的运动矢量,对所述当前图像进行运动信息提取。
2.根据权利要求1所述的对图像进行运动检测的装置,其特征在于,所述视频编码单元包括第一图像载入模块和运动估计模块。其中,第一图像载入模块用于依次从外部存储器载入当前图像和运动估计参考图像,将载入的当前图像和运动估计参考图像传输给运动估计模块;当进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,将当前图像作为待检测图像传输给运动检测单元;运动估计模块用于根据所述运动估计参考图像对所述当前图像进行运动估计,并将获得的当前图像所有宏块的运动矢量传输给运动检测单元。
3.根据权利要求1或2所述的对图像进行运动检测的装置,其特征在于,所述运动检测单元包括第二图像载入模块、运动矢量累加模块和运动信息提取模块,其中,第二图像载入模块用于当进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,从视频编码单元读取当前图像作为待检测图像;并且从外部存储器载入运动检测参考图像;运动矢量累加模块用于对从视频编码单元获得的运动矢量进行基于运动轨迹的帧间运动矢量累加,得到当前图像中所有宏块相对于与其相隔所述运动检测的帧间隔的参考图像的运动矢量;运动信息提取模块用于根据运动矢量累加模块获得的所述当前图像中所有宏块的运动矢量,提取出当前图像中运动物体的运动信息,该运动信息主要包括运动方向和运动速度。
4.根据权利要求3所述的对图像进行运动检测的装置,其特征在于,所述运动检测单元还包括报警检测信息计算模块用于根据第二图像载入模块所得到的运动检测参考图像和当前图像,计算当前图像的宏块SAD或统计当前图像的宏块的像素变化个数;报警检测判断和处理模块用于将报警检测信息计算模块所获得的宏块SAD或像素变化个数,与预先设定的报警门限进行比较,根据比较结果进行宏块报警检测处理,提取宏块报警信息。
5.根据权利要求1所述的对图像进行运动检测的装置,其特征在于,所述装置适用于16×16、8×16、16×8、8×8、8×4、4×8、4×4等块划分形式的运动检测。
6.一种对图像进行运动检测的方法,其特征在于,包括步骤A、载入当前图像、运动估计参考图像和运动检测参考图像,根据所述运动估计参考图像对所述当前图像进行运动估计,将获得的当前图像的宏块运动矢量输出;B、将得到的宏块运动矢量进行累加;当进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,根据所述累加的运动矢量和获得的运动检测参考图像,对所述当前图像进行运动信息提取。
7.根据权利要求6所述的对图像进行运动检测的方法,其特征在于,所述步骤A中的运动估计参考图像为上一个当前图像进行视频编码后生成的重构图像。
8.根据权利要求6或7所述的方法,其特征在于,所述步骤B具体包括对所述输出的当前图像的运动矢量进行基于运动轨迹的帧间运动矢量累加,得到当前图像中所有宏块相对于与其相隔所述运动检测的帧间隔的参考图像的运动矢量;当进行了运动估计的图像总数达到预先设定的运动检测的帧间隔值时,载入运动检测参考图像,并读取作为待检测图像的当前图像;根据所述得到的当前图像中所有宏块的运动矢量,提取出当前图像中运动物体的运动信息。
9.根据权利要求8所述的方法,其特征在于,所述基于运动轨迹的帧间运动矢量累加的过程,具体包括根据当前图像中的宏块的运动矢量进行近似运算,确定相同内容宏块在前一图像中的位置,然后将当前图像中宏块的运动矢量与前一图像中相同内容宏块的运动矢量累加。
10.根据权利要求6或7所述的方法,其特征在于,所述步骤B还包括根据所述载入的当前图像和运动检测参考图像,计算当前图像的宏块SAD或统计当前图像的宏块的像素变化个数;将所述宏块SAD或像素变化个数与预先设定的报警门限进行比较,根据比较结果进行宏块报警检测处理,提取宏块报警信息。
全文摘要
本发明提供了一种对图像进行运动检测的装置和方法,该装置主要包括视频编码单元和运动检测单元。该方法概述如下视频编码单元载入当前图像和参考图像,对当前图像进行运动估计,并将获得的当前图像的运动矢量输出给运动检测单元进行帧间运动矢量累加;当进行了运动估计的图像总数达到预先设定的运动检测帧间隔值时,当前图像即为待检测图像,运动检测单元根据累加后的运动矢量和参考图像,对待检测图像进行运动信息提取。利用本发明,解决了独立的运动检测单元占用系统存储带宽过大和消耗逻辑资源过大的问题,节省了系统带宽,减少了运算量,节约了芯片的面积和功耗;同时解决了运动检测时间间隔较大时运动估计搜索不准以及运动过于剧烈时容易产生错误运动信息的问题,提高了运动检测的精度和灵活度。
文档编号H04N7/36GK101090498SQ200710119290
公开日2007年12月19日 申请日期2007年7月19日 优先权日2007年7月19日
发明者顾骧, 陈劲勤 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1