一种实现运动估计的方法及电子设备与流程

文档序号:11292567阅读:366来源:国知局
一种实现运动估计的方法及电子设备与流程

本申请涉及视频压缩领域,尤其涉及一种实现运动估计的方法及电子设备。



背景技术:

视频的编解码主要靠,预测,转换,编码,来实现的。预测又分为帧间预测和帧内预测,帧内预测用来压缩空间相关性,帧间预测用来压缩时间相关性。

帧内预测是指在程序中定义好一些预测算法,如4*4宏块有9种预测算法(垂直,水平,对角线,平均值……..),16*16宏块有4种预测算法,8*8宏块有4种预测算法。

帧间预测是指从当前片的前面和后面已编码的图像中通过运动估计算法(全局收索,钻石收索,六边形收索等等)计算出当前块相对于参考图像的一个运动矢量。

在经过预测处理操作后,可以将一个宏块的像素点数据,转换为宏块的预测方式既宏块类型,预测模式,运动矢等信息,与宏块的像素点数据占用的空间大小(数据大小)相比宏块类型,预测模式,运动矢量所占的空间会非常小,视频帧是以宏块为单位,从而达到将视频数据进行压缩的目的。

而如何降低视频数据量来提高压缩效率,则是本申请要考虑的问题。



技术实现要素:

本发明了提供了一种实现运动估计的方法及电子设备,以解决目前的如何降低视频数据量来提高压缩效率的技术问题。

为解决上述技术问题,本发明提供了一种实现运动估计的方法,所述方法包括:

将视频帧划分为多个16*16的像素子块,对于每一个16*16的像素子块做如下处理:

计算所述16*16像素子块的第一运动矢量和第一误差值;

将所述16*16像素子块划分为4个8*8像素子块;

计算所述4个8*8像素子块的第二运动矢量和第二误差值;

对比所述第一运动矢量和所述第二运动矢量;

若所述第一误差值大于所述第二误差值,将所述16*16像素子块划分为16个4*4像素子块;

计算所述16个4*4像素子块的第三运动矢量和第三误差值;

将所述第三误差值和所述第二误差值进行对比;

若所述第三误差值小于所述第二误差值,则确定出最小第三误差值对应的4*4像素子块的宏块分割和对应的第三运动矢量进行运动估计;

若所述第二误差值小于所述第三误差值,则确定出最小第二误差值对应的8*8像素子块的宏块分割和对应的第二运动矢量进行运动估计。

优选的,所述对比所述第一运动矢量和所述第二运动矢量之后,还包括:

若所述第一运动矢量小于所述第二运动矢量,则确定出所述16*16像素子块的宏块分割和所述第一运动矢量进行运动估计。

优选的,所述确定出所述16*16像素子块的宏块分割和所述第一运动矢量进行运动估计,包括:

将所述16*16像素子块分割为两个16*8像素子块;

计算所述两个16*8像素子块的第四运动矢量和第四误差值。

优选的,所述确定出所述16*16像素子块的宏块分割和所述第一运动矢量进行运动估计,包括:

将所述16*16像素子块分割为两个8*16像素子块;

计算所述两个8*16像素子块的第五运动矢量和第五误差值。

优选的,所述将所述16*16像素子块划分为16个4*4像素子块,包括:

先将所述16*16像素子块划分为4个8*8像素子块;

对于每个8*8像素子块,分别划分为4个4*4像素子块。

优选的,所述计算所述16个4*4像素子块的第三运动矢量和第三误差值,包括:

在每个8*8像素子块中,确定出至少一个4*4预设像素子块;

在所述至少一个4*4预设像素子块中确定出预设像素点,所述预设像素点的数目小于4*4预设像素子块中的像素点总数目;

利用所述预设像素点计算出所述至少一个4*4预设像素子块的所述第三误差值。

优选的,所述4*4预设像素子块是每个8*8像素子块中的右下角的像素子块。

优选的,所述确定出最小第二误差值对应的8*8像素子块的宏块分割和对应的第二运动矢量进行运动估计,包括:

将所述8*8像素子块划分为两个8*4像素子块;

计算所述两个8*4像素子块的第五运动矢量和第五误差值。

优选的,所述确定出最小第二误差值对应的8*8像素子块的宏块分割和对应的第二运动矢量进行运动估计,包括:

将所述8*8像素子块划分为两个4*8像素子块;

计算所述两个4*8像素子块的第六运动矢量和第六误差值。

本发明公开了一种电子设备,其特征在于,包括处理器和存储器:

所述存储器用于存储执行上述技术方案所述方法的程序,

所述处理器被配置为用于执行所述存储器中存储的程序。

通过本发明的一个或者多个技术方案,本发明具有以下有益效果或者优点:

本发明公开了一种实现运动估计的方法及电子设备,先将视频帧划分为16*16的像素子块,然后计算所述16*16像素子块的第一运动矢量和第一误差值;在将16*16像素子块划分为4个8*8像素子块计算第二运动矢量和第二误差值;对比第一运动矢量和第二运动矢量;若第一误差值大于第二误差值,再将16*16像素子块划分为16个4*4像素子块计算第三运动矢量和第三误差值;再次和第二误差值进行对比,进而选用最小误差的宏块分割和运动矢量进行运动估计。本发明利用对比方式确定出具体的运动估计所需的运动矢量,能够降低数据量节约时间,提高压缩率。

进一步的,本发明在计算第三误差值时,并不是所有的4*4像素子块的像素点都进行了计算,而只是挑选预设像素点来进行计算,故而可以降低计算量,提高运动估计运算效率。一般进行运动估计计算时,图中间像素区域对计算结果影响大,所以采用上述改进方法效率更高。

附图说明

图1为本发明实施例中单向预测的实施原理图;

图2为本发明实施例中一种实现运动估计的方法的实施过程图;

图3为本发明实施例中电子设备的示意图;

图4为本发明实施例中8*8像素子块的示意图。

具体实施方式

为了使本申请所属技术领域中的技术人员更清楚地理解本申请,下面结合附图,通过具体实施例对本申请技术方案作详细描述。

基于上述问题,本发明公开了一种实现运动估计的方法。

首先,参看图1,先介绍帧间预测的实施原理。

帧间预测分为单向预测和双向预测,单向预测的实施过程如下:

1,输入当前视频帧数据ft(x,y);

2,获取预测预测帧数据,由帧预测器返回。

a.从预测器中获取当前帧前面或后面已编码帧作为参考帧。

b.利用运动估计算法(全局收索,钻石收索,六边形收索)计算出当前块相对于参考图像的一个运动矢量。

c.输入运动矢量mv通过运动补偿预测器返回作为预测数据。

3,使用当前的视频帧数据ft(x,y)与预测数据相减获得e(x);

4,对e(x)进行转换和量化操作获得

5,对进行反量化和反转换,与相加获得重建帧,作为下一次的参考帧用于预测。

6,对再经熵编码,与解码所需的一些边信息(如预测模式量化参数、预测模式等)一起组成一个压缩后的码流,经nal(网络自适应层)供传输和存储用。

注意:在进行帧内预测之前需要判断当前帧或片的类型(如是i帧/片,p帧/片,b帧/片),由于判断过程比较复杂,这里只做简单的介绍,首先对视频帧进行1/2缩放(长和宽减少1/2),减小数据量然后对视频帧中的每个宏块进行帧内预测获取每个像素块总共代价值,在进行帧间预测计算总共的代价值,比较哪个值最小来判断帧类型。除此之外,每个i帧的间隔是确定的,所以也可以用来判断帧类型,还有b帧在p帧中间也可以用来判断帧类型。)

双向预测:双向预测不只是利用前一帧像素预测,还需利用后一帧像素,即预测值为αt-1和αt+1为预测权值,ij为前一帧运动矢量,i’、j’为后一帧预测矢量。

而本发明主要提供一种实现运动估计的方法,用以确定出运动矢量进行运动估计,以降低码率提高压缩率。本发明的方法主要针对视频流进行处理,例如xx直播视频流、或者普通的视频流等等。

参看图2,本发明的方法包括:

首先,对于每一帧视频,本发明都会将视频帧划分为多个16*16的像素子块,对于每一个16*16的像素子块做如下处理:

步骤21,计算所述16*16像素子块的第一运动矢量和第一误差值。

在具体的实施过程中,可通过运动估计的快速搜索算法来计算16*16像素子块的第一运动矢量和第一误差值。

在本申请中多次出现有运动矢量和误差值。故而本申请首先介绍运动矢量,举例来说,在连续的视频帧中,一般情况下前一帧与后一帧的相似度是比较高的例如我们在利用手机进行拍照是当快速连续拍多张照片是每一张相似度是比较高的,无非是手臂,嘴巴眼睛有幅度的差别既手臂向上或向下移动了,嘴巴闭上了等,因此在视频编码时我们可以将前一帧编码过的视频帧作为参考帧,后一帧为当前需要编码帧,上文提到的运动幅度则是运动矢量,是一个相对值,由于视频是2维的则运动矢量也是2维。通常在编码时是以宏块为单位的故运动矢量都是指宏块的运动矢量。

误差值,误差值的计算方法很多其中sad是其中之一,误差值可以理解为相似度值越小相似度越大,如把2张视频帧进行sad计算这是视频帧的相似度,通常在编码时都是以宏块为单位进行编码,当前宏块(当前编码帧的当前编码宏块)和参考宏块(参考帧里面与当前宏块相似度比较高的宏块)会存在一个误差值。

下面介绍运动估计的快速搜索算法。

运动搜索可以分成两种基本类型:(1)全局搜索算法。(2)快速搜索算法。

(1)全局搜索算法。该方法是把搜索区域内所有的像素块逐个与当前宏块进行比较,查找具有最小匹配误差的一个像素块为匹配块。这一方法的好处是可以找到最佳的匹配块,坏处是速度太慢。目前全局搜索算法极少使用。

(2)快速搜索算法。该方法按照一定的数学规则进行匹配块的搜索。这一方法的好处是速度快,坏处是可能只能得到次最佳的匹配块。

下面举例解释几种搜索算法,当然,本发明并不仅限于使用这几种算法。

菱形搜索算法(dia):以搜索起点为中心,采用小菱形模板(模板半径为1)搜索。计算各点的匹配误差,得到mbd(最小误差)点。如果mbd点在模板中心,则搜索结束,此时的mbd点就是最优匹配点,对应的像素块就是最佳匹配块;如果mbd点不在模板中心位置,则以现在mbd点为中心点,继续进行小菱形搜索,直至mbd点落在中心点为止。

六边形搜索算法(hex):该方法采用1个大模板(六边形模板)和2个小模板(小菱形模板和小正方形模板)。具体的搜索步骤如下:步骤1:以搜索起点为中心,采用图中左边的六边形模板进行搜索。计算区域中心及周围6个点处的匹配误差并比较,如最小mbd点位于模板中心点,则转至步骤2;否则以上一次的mbd点作为中心点,以六边形模板为模板进行反复搜索。步骤2:以上一次的mbd点为中心点,采用小菱形模板搜索,计算各点的匹配误差,找到mbd点。然后以mbd点为中心点,采用小正方形模板搜索,得到的mbd点就是最优匹配点。

非对称十字型多层次六边形格点搜索算法(umh):步骤1:进行一次小菱形搜索,根据匹配误差值和两个门限值(对于一种尺寸的宏块来说是固定大小的threshold1和threshold2)之间的关系作相应的处理,可能用到中菱形模板或者正八边形模板,也有可能直接跳到步骤2。步骤2:使用非对称十字模板搜索。“非对称”的原因是一般水平方向运动要比垂直方向运动剧烈,所以将水平方向搜索范围定为w,垂直方向搜索范围定为w/2。步骤3:使用5x5逐步搜索模板搜索。步骤4:使用大六边形模板搜索。步骤5:使用六边形搜索算法找到最优匹配点。

连续消除法(esa、tesa):该方法是一种全搜索算法,它对搜索区域内的点进行光栅式搜索,逐一计算并较。

步骤22,将所述16*16像素子块划分为4个8*8像素子块。

步骤23,计算所述4个8*8像素子块的第二运动矢量和第二误差值。

具体来说,在计算4个8*8像素子块的第二运动矢量和第二误差值时,也是利用上述描述的搜索算法进行计算。

步骤24,对比所述第一运动矢量和所述第二运动矢量。

由于本发明将16*16像素子块划分为4个8*8像素子块,故而也会获得4个第二运动矢量和4个第二误差值。而在对比时,是利用第一误差值和4个第二误差值进行对比,在对比之后,如果第一误差值比4个第二误差值都小,那么则确定选用所述第一运动矢量、和所述16*16像素子块的宏块分割进行运动估计,又由于本发明在之前已经进行了赋值,故而在计算运动矢量时能够减少误差值,进而降低码率,提高压缩率。

而在进行运动估计时,具体实施过程如下:

由于在对16*16像素子块分割时,可以划分为两个16*8像素子块;也可以划分为两个8*16像素子块,故而本发明有两种方式:

第一种:将所述16*16像素子块分割为两个16*8像素子块;利用运动搜索算法计算所述两个16*8像素子块的第三运动矢量和第三误差值。当然,作为一种可选的实施例,可以在计算所述两个16*8像素子块的第三运动矢量和第三误差值之前,对所述两个16*8像素子块的第二预设像素点进行实际赋值,然后再进行计算。第二预设像素点可以是16*8像素子块的左上角、左下角、右上角、右下角总共4个像素点。当然也可以为其他,在此本发明不再赘述。

第二种:将所述16*16像素子块分割为两个8*16像素子块;利用运动搜索算法计算所述两个8*16像素子块的第四运动矢量和第四误差值。当然,在此之前也可以对两个8*16像素子块的第三预设像素点进行实际赋值,第三预设像素点的确定可以随意,例如可以是8*16像素子块的左上角、左下角、右上角、右下角总共4个像素点。当然也可以为其他,在此本发明不再赘述。

以上是第一误差值小于所述第二误差值所做的处理,若所述第一误差值大于所述第二误差值,那么则进行下面的实施方式。

步骤25,若所述第一误差值大于所述第二误差值,将所述16*16像素子块划分为16个4*4像素子块。

在划分的过程中,先将所述16*16像素子块划分为4个8*8像素子块;

对于每个8*8像素子块,分别划分为4个4*4像素子块。

而在计算所述16个4*4像素子块的第三运动矢量和第三误差值时,在每个8*8像素子块中,确定出至少一个4*4预设像素子块。在8*8像素子块中共有4个4*4像素子块,故而,在确定4*4预设像素子块时,可以将这4个4*4像素子块中的任意一个、两个或者多个确定为4*4预设像素子块。例如,所述4*4预设像素子块是每个8*8像素子块中的右下角的像素子块。即:每个8*8像素子块中的右下角的像素子块确定为4*4预设像素子块。

4*4预设像素子块的计算第三误差值和第三运动矢量的方法和其他4*4像素子块的计算第三误差值和第三运动矢量的方法不同。其他4*4像素子块的计算第三误差值和第三运动矢量的方法参照上述描述的搜索算法。而对于4*4预设像素子块的计算第三误差值和第三运动矢量的方法,则请参看下方:

在所述至少一个4*4预设像素子块中确定出预设像素点,所述预设像素点的数目小于4*4预设像素子块中的像素点总数目;为了减少数据量,在计算误差值时,可以不使用全部的像素点,而只是在4*4预设像素子块中确定出预设像素点。预设像素点就是用来计算第三误差值的。故而可以利用所述预设像素点计算出所述至少一个4*4预设像素子块的所述第三误差值。

以上的方式可以降低计算量,提高运动估计运算效率。一般进行运动估计计算时,图中间像素区域对计算结果影响大,所以采用上述改进方法效率更高。本方案适用于图像的背景运动较大大的情况,例如动作片

下面举例进行说明,请参看图4,为8*8像素子块图。是针对当计算16个4*4运动矢量和误差值时,一个8*8像素块中,左上角,右上角,左下角,3个4*4像素块进行一般的运动矢量和误差计算,右下角4*4像素块首先计算8个黄色像素点与当前块对应的像素点的误差值的和,加上4个蓝色像素点与当前块对应的误差的和,其中红色像素点不参与误差计算。

步骤26,计算所述16个4*4像素子块的第三运动矢量和第三误差值。

步骤27,将所述第三误差值和所述第二误差值进行对比。

步骤28,若所述第三误差值小于所述第二误差值,则确定出最小第三误差值对应的4*4像素子块的宏块分割和对应的第三运动矢量进行运动估计。

步骤29,若所述第二误差值小于所述第三误差值,则确定出最小第二误差值对应的8*8像素子块的宏块分割和对应的第二运动矢量进行运动估计。

在具体的实施过程中,如果对8*8像素子块的宏块分割进行运动估计,那么也会先对8*8像素子块的宏块进行划分。在划分时具有两种方式:第一种方式:将所述8*8像素子块划分为两个8*4像素子块。第二种方式:将所述8*8像素子块划分为两个4*8像素子块。

第一种方式:将所述8*8像素子块划分为两个8*4像素子块;计算所述两个8*4像素子块的第五运动矢量和第五误差值。

第二种方式:将所述8*8像素子块划分为两个4*8像素子块;计算所述两个4*8像素子块的第六运动矢量和第六误差值。

参看图3,基于同一发明构思,本发明公开了一种电子设备,本申请涉及的电子设备包括但不限于是:移动终端(手机、智能手机、pad、笔记本电脑等等)、固定终端(计算机)。

该电子设备包括处理器31和存储器32:

所述存储器32用于存储执行上述实施例中的方法的程序,

所述处理器31被配置为用于执行所述存储器中存储的程序。

为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该移动通信终端可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)等任意移动终端设备。如图3所述,所述移动终端包括存储器32和处理器31。

存储器32可用于存储软件程序以及模块,处理器31通过运行执行存储在存储器32的软件程序以及模块,从而执行移动终端的各种功能应用以及数据处理。

存储器32可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能(比如声音播放功能、图像播放功能等)所需的应用程序(比如游戏类应用程序、音乐类应用程序等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。处理器31移动通信终端的控制中心,利用各种接口和线路连接整个移动通信终端的各个部分,通过运行或执行存储在存储器32内的软件程序和/或模块,以及调用存储在存储器32内的数据,执行移动终端机的各种功能和处理数据,从而对移动终端机进行整体监控。可选的,处理器31可包括一个或多个处理单元。

通过本发明的一个或者多个实施例,本发明具有以下有益效果或者优点:

本发明公开了一种实现运动估计的方法及电子设备,先将视频帧划分为16*16的像素子块,然后计算所述16*16像素子块的第一运动矢量和第一误差值;在将16*16像素子块划分为4个8*8像素子块计算第二运动矢量和第二误差值;对比第一运动矢量和第二运动矢量;若第一误差值大于第二误差值,再将16*16像素子块划分为16个4*4像素子块计算第三运动矢量和第三误差值;再次和第二误差值进行对比,进而选用最小误差的宏块分割和运动矢量进行运动估计。本发明利用对比方式确定出具体的运动估计所需的运动矢量,能够降低数据量节约时间,提高压缩率。

进一步的,本发明在计算第三误差值时,并不是所有的4*4像素子块的像素点都进行了计算,而只是挑选预设像素点来进行计算,故而可以降低计算量,提高运动估计运算效率。一般进行运动估计计算时,图中间像素区域对计算结果影响大,所以采用上述改进方法效率更高。

尽管已描述了本申请的优选实施例,但本领域内的普通技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1