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

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

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



背景技术:

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

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

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

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

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



技术实现要素:

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

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

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

对16*16的像素子块的第一预设像素点进行实际赋值;

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

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

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

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

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

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

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

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

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

对所述两个16*8像素子块的第二预设像素点进行实际赋值。

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

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

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

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

若所述第一误差值大于所述第二误差值,则确定出最小第二误差对应的8*8像素子块;

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

确定出所述16个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的像素子块,然后对16*16的像素子块的第一预设像素点进行实际赋值;由于进行了实际赋值,故而可以降低16*16块分割误差值,从而达到降低码率的效果。然后计算所述16*16像素子块的第一运动矢量和第一误差值;然后将所述16*16像素子块划分为4个8*8像素子块;并计算所述4个8*8像素子块的第二运动矢量和第二误差值;然后对比所述第一运动矢量和所述第二运动矢量;若所述第一误差值小于所述第二误差值,则确定选用所述第一运动矢量、和所述16*16像素子块的宏块分割进行运动估计。本发明利用对比的方式确定出具体的运动估计所需的运动矢量,并且是根据实际赋值来求得运动矢量,故而在进行帧间预测时,能够降低数据量节约时间,提高压缩率。

附图说明

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

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

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

具体实施方式

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

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

首先,参看图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的像素子块的任意像素点作为第一预设像素点,例如,本申请取16*16的像素子块中左上角,右上角,左下角,右下角像素点作为第一预设像素点,总共四个第一预设像素点进行实际赋值,赋值到参考帧中,通过将左上角,右上角,左下角,右下角总共四个第一预设像素点赋值到参考帧中,可以降低16*16块分割误差值,从而达到提高16*16分割的可能性。因为如果将16*16块分割的越细(子块越多),则在编码时发送和保存的数据就越多,故而通过上述的方法可以降低16*16块分割误差值,从而达到降低码率的效果。

所述对16*16的像素子块的第一预设像素点进行实际赋值之后,还包括:

对16*16的像素子块进行滤波。例如对左上角,右上角,左下角,右下角像素点又是交点位置会进行强滤波,故不会对视频质量产生较大影响。当然,对于滤波方式,本发明不做限制。

步骤22,计算所述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):该方法是一种全搜索算法,它对搜索区域内的点进行光栅式搜索,逐一计算并较。

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

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

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

步骤25,对比所述第一运动矢量和所述第二运动矢量;

步骤26,若所述第一误差值小于所述第二误差值,则确定选用所述第一运动矢量、和所述16*16像素子块的宏块分割进行运动估计。

由于本发明将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个像素点。当然也可以为其他,在此本发明不再赘述。

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

故而,在所述对比所述第一运动矢量和所述第二运动矢量之后,包括:

若所述第一误差值大于所述第二误差值,则确定出最小第二误差对应的8*8像素子块;

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

确定出所述16个4*4像素子块的第五运动矢量和第五误差值;具体来说,由于将16*16像素子块划分为16个4*4像素子块,那么确定出来的第五运动矢量也有16个,然后将每个第五运动矢量和最小第二误差值进行对比。

将所述第五误差值和所述最小第二误差值进行对比;

若所述第五误差值小于所述最小第二误差,则利用最小第五误差对应的最小第五运动矢量和宏块分割进行运动估计。在进行运动估计时,也可以利用上述搜索算法进行计算。

若所述最小第二误差值小于全部第五误差值,则确定选用所述第二运动矢量、和所述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块分割误差值,从而达到降低码率的效果。然后计算所述16*16像素子块的第一运动矢量和第一误差值;然后将所述16*16像素子块划分为4个8*8像素子块;并计算所述4个8*8像素子块的第二运动矢量和第二误差值;然后对比所述第一运动矢量和所述第二运动矢量;若所述第一误差值小于所述第二误差值,则确定选用所述第一运动矢量、和所述16*16像素子块的宏块分割进行运动估计。本发明利用对比的方式确定出具体的运动估计所需的运动矢量,并且是根据实际赋值来求得运动矢量,故而在进行帧间预测时,能够降低数据量节约时间,提高压缩率。

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

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

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