适用于视频编码的运动自适应帧内刷新方法与流程

文档序号:16889423发布日期:2019-02-15 22:56阅读:468来源:国知局
适用于视频编码的运动自适应帧内刷新方法与流程

本发明涉及图像处理技术领域,具体地,涉及适用于视频编码的运动自适应帧内刷新方法。



背景技术:

随着视频编码技术的不断发展,各项视频业务的广泛应用给人们的生产和生活带来了极大的便利。在需要实时交互的应用中,对端到端延迟的要求也越来越高。在任何需要实时视频交互的视频传输系统中,低延迟都是一项关键的技术和设计目标。帧内刷新技术通过将帧内编码的columns或者slices嵌入到p帧或b帧中,以达到替代i帧的效果,从而保持码率平稳,获得低延迟的性能。通过采用强制帧内编码和对已刷新区域的保护来防止错误的扩散,另外也可以使得码率较为平稳。根据刷新策略的不同,帧内刷新可以分为周期性帧内刷新(periodicintrarefresh,pir)、随机帧内刷新(randomintrarefresh,rir)和自适应帧内刷新(adaptiveintrarefresh,air),但是只有pir方法可以确保在定义的刷新周期内完全恢复错误。

传统的周期性帧内刷新算法主要是通过一定的策略选取部分宏块,采用强制帧内编码实现,却没有充分利用视频的其他信息,比如运动矢量的信息。但是,schreierrm等人发表的“a.motionadaptiveintrarefreshfortheh.264videocodingstandard”一文中,就提出了一种在pir的基础上提出了一种针对h.264/avc的运动自适应帧内刷新方法。在该文章中,刷新周期被设定为一个常数,这意味着如果刷新周期的大小发生改变,该方案也就无法实现。另外,该方法需要对视频编码两次,第一次编码通过标准ip编码模式得到的运动矢量信息来选择合适的刷新策略,然后再进行编码,这使得该方法并不能用于实际的低延迟视频应用中。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种适用于视频编码的运动自适应帧内刷新方法。

根据本发明提供的一种适用于视频编码的运动自适应帧内刷新方法,包括:

将待编码的视频帧划分为若干个区块,且每个区块包含有若干个子区域;

根据每个区块中各个子区域的运动矢量信息,统计每个区块在不同刷新方向上的产生成本;

根据各个区块在不同刷新方向上的产生成本,以及相邻区块之间的相关程度,得到所述待编码的视频帧中各个区块的目标刷新策略;

根据所述目标刷新策略对所述待编码的视频帧的各个区块进行编码。

可选地,将待编码的视频帧划分为若干个区块,且每个区块包含有若干个子区域,包括:

将所述待编码的视频帧划分为预设数量的区块,并根据预设的帧内刷新周期,将每个区块划分为若干个子区域;其中,每个区块具有独立的刷新方向。

可选地,根据每个区块中各个子区域的运动矢量信息,统计每个区块在不同刷新方向上的产生成本,包括:

假设任意一个刷新周期下,第n帧待编码的视频帧中的第m个区块的第i个子区域regioni为已经采用强制帧内编码的区域,第m个区块中第j个子区域regionj为未采用或正在采用帧内编码区域,并且regioni的运动矢量指向regionj时,产生的成本的计算公式如下:

cm,n,i,j=∑|mvxi|

其中:mvxi为regioni的水平分量,m=1,2,3,4;且i不等于j;

若regioni的运动矢量不指向regionj时,产生的成本的计算公式如下:

cm,n,i,j=0

则,一个刷新周期下,不同刷新方向产生的累计成本的计算公式如下:

cm=∑framesn∑regionsi∑neighborsjcm,n,i,j

其中:cm为区块m在一个刷新周期内计算得到的累计成本,∑framesn表示统计该周期内的所有帧的成本信息,∑regionsi表示统计视频帧中每一个已刷新子区域i产生的成本,

neighborsj表示统计每一个与已刷新子区域i相邻的子区域j产生的成本,cm,n,i,j为刷新周期的第n帧中的第m个区块中,子区域i和j产生的成本。

可选地,根据各个区块在不同刷新方向上的产生成本,以及相邻区块之间的相关程度,得到所述待编码的视频帧中各个区块的目标刷新策略,包括:

当相邻的区块的刷新方向一致时,选择区块产生成本最小的刷新方向作为对应区块的最终刷新方向;

当相邻的区块的刷新方向不一致时,则以产生成本大的区块作为基准区块,计算基准区块以及与基准区块相邻的区块的平均运动矢量,根据平均运动矢量确定是否调整与基准区块相邻的区块所对应的最终刷新方向;

根据各个区块的最终刷新方向,制定所述待编码的视频帧中各个区块的目标刷新策略。

可选地,根据平均运动矢量确定是否调整与基准区块相邻的区块所对应的最终刷新方向,包括:

假设第i个区块bandi和第j个区块bandj是具有不同刷新方向的两个相邻区块;其中,bandi为基准区块,当满足mvyi+mvyj>|mvxj|时,则调整bandj的刷新方向;其中:mvyi为bandi指向bandj的竖直分量,mvyj为bandj指向bandi的竖直分量,mvxj为bandj的水平分量。

可选地,根据所述目标刷新策略对所述待编码的视频帧的各个区块进行编码,包括:

根据所述待编码的视频帧的各个区块的最终刷新方向,对所述待编码的视频帧的各个区块内的各个子区域进行强制帧内编码。

可选地,还包括:

在对i帧进行编码时,关闭对i帧码率的修正,以使得i帧和p帧的目标码率近似。

与现有技术相比,本发明具有如下的有益效果:

本发明提供的适用于视频编码的运动自适应帧内刷新方法,通过将待编码的视频帧划分为若干个区块,且每个区块包含有若干个子区域;根据每个区块中各个子区域的运动矢量信息,统计每个区块在不同刷新方向上的产生成本;根据各个区块在不同刷新方向上的产生成本,以及相邻区块之间的相关程度,得到所述待编码的视频帧中各个区块的目标刷新策略;根据所述目标刷新策略对所述待编码的视频帧的各个区块进行编码。从而改善了现有的周期性帧内刷新方法的不足,将运动状态信息引入帧内刷新策略,最大限度的降低了运动矢量逆向带来的率失真性能的下降,使得帧内刷新在保持低延迟特性的同时能够获得更高的视频质量。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明提供的适用于视频编码的运动自适应帧内刷新方法的流程图。

图2为本发明实施例中缓存区充盈度的比较图;

图3为本发明实施例中帧psnr抖动的比较图;

图4(a)为现有方法的编码效果示意图;

图4(b)为应用本发明方法的编码效果示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

图1为本发明提供的适用于视频编码的运动自适应帧内刷新方法的流程图,参见图1,本发明可以包括:

s1:将视频帧横向划分为四个矩形band,各band拥有独立的刷新策略,同事根据预设的镇内刷新周期将各band分为若干各区域,每次刷新各band中的一个区域;

s2:在进行一个刷新周期的编码时,统计各个band的运动矢量(motionvector,mv)信息,并根据mv信息来计算各个band在本刷新周期的不同刷新策略的产生成本值;

s3:各个band默认选择具有较小产生成本的刷新策略进入下一个周期的编码,同时如果当各band刷新方向不一致时,需要根据band之间的相关程度来调整刷新方向;

s4:根据最终调整后的刷新策略进行下一周期的编码,同时继续计算本周期各个band的产生成本,根据实际编码情况不断更新刷新方向。

s5:调整第一帧(i帧)码率,以避免i帧与p帧过大的码率差异。

以下通过具体实施例对上述各个步骤中涉及的详细技术操作进行说明,应当理解的是,以下仅仅是本发明部分实施例。

1.视频帧的划分

首先,考虑到视频帧的不同区域可能具有不同的运动矢量,所以在本文的方案中视频帧被划分为四个矩形band,如图2所示。根据刷新周期大小m将每个band划分为m个区域。在编码过程中,每个band根据该band的运动矢量信息计算两种刷新方向的产生成本(产生成本的计算方法见式(1)(2)(3)),自适应地选择成本较低的刷新策略(从左到右或从右到左)。

2.运动矢量逆向代价值(产生成本)的计算

当视频内容具有运动性,尤其是高速运动时,传统的pir方法无法获得最优的编码性能。为了防止错误传播到干净区域,当干净区域的运动矢量(motionvector,mv)指向脏区域时,需要限制干净区域的mv,干净区域无法使用最优mv导致编码性能的下降。因此需要计算不同刷新方向所带来的运动矢量逆向的代价。

在一个刷新周期的编码中,第n帧中的第m(m=1,2,3,4)个band的产生成本函数定义如下:

假设任意一个刷新周期下,第n帧待编码的视频帧中的第m个区块的第i个子区域regioni为已经采用强制帧内编码的区域,第m个区块中第j个子区域regionj为未采用或正在采用帧内编码区域,并且regioni的运动矢量指向regionj时,产生的成本的计算公式如下:

cm,n,i,j=∑|mvxi|(1)

其中:mvxi为regioni的水平分量,m=1,2,3,4;且i不等于j;

若regioni的运动矢量不指向regionj时,产生的成本的计算公式如下:

cm,n,i,j=0(2)

则,一个刷新周期下,不同刷新方向产生的累计成本的计算公式如下:

cm=∑framesn∑regionsi∑neighborsjcm,n,i,j(3)

其中:cm为区块m在一个刷新周期内计算得到的累计成本,∑framesn表示统计该周期内的所有帧的成本信息,∑regionsi表示统计视频帧中每一个已刷新子区域i产生的成本,∑neighborsj表示统计每一个与已刷新子区域i相邻的子区域j产生的成本,cm,n,i,j为刷新周期的第n帧中的第m个区块中,子区域i和j产生的成本。

通过式(1)(2)(3)分别计算两个刷新策略的产生成本,然后在下一个刷新周期中选择产生成本较小的刷新方向。

3.根据各band之间的相关程度调整刷新方向

当每个band的刷新方向相同时,可以直接进入下一个刷新周期。但是,如果两个相邻band的刷新方向不一致,则意味着这两个band不能互相参考,因此,当方向不一致时,有必要考察两个band的相关性,以便为下一周期选择最佳刷新方向。

当两个相邻band刷新方向不一致时,我们采用如下策略确定两个band的最终刷新方向:

首先,选择产生成本较大的band作为基准。这是因为当产生成本较大时,更改刷新方向会导致编码性能下降更多,因此尽可能保持成本大的band不改变刷新方向。

其次,计算两个band的平均运动矢量以确定刷新方向是否需要改变。假设bandi和bandj是具有不同刷新方向的两个相邻band。bandi是基准,如果满足以下公式中的条件,bandj的刷新方向将会改变:

mvyi+mvyj>|mvxj|(4)

其中mvyi是bandi指向bandj的竖直分量,mvyj是bandj指向bandi的竖直分量,mvxj是bandj的水平分量。

4.对第一帧(i帧)的处理

编码过程中只有第一帧是i帧。由于第一帧中的所有宏块都是帧内编码的,因此其比特率要比后续的p帧高很多。当第一帧通过固定速率信道时,传输时间将会更长,导致更大的视频延迟。因此,为了减少视频延迟,第一帧(i帧)的比特率必须降低。所以本发明对视频序列中第一个i帧做了如下处理。

在对i帧进行编码时,可以通过减少i帧分配的比特数来减少i帧的数据量,从而减少缓冲区延迟。同时,i帧比特数的降低会导致第一帧图像质量的下降。但是在低延迟应用中,第一帧的质量下降是可以接受的。更重要的是,采用帧内编码的columns会陆续嵌入到后续的p帧中,从而在一个刷新周期内恢复视频的质量。为了保持码率的平稳,关闭了对i帧码率的修正,使得i帧和p帧的目标比特率几乎相同。

5.对低延迟效果的验证

保持缓冲区不发生上溢和下溢的能力是衡量低延迟效果的关键标准之一。如果缓冲区累积数据的大小过大,则编码器必须跳过一些帧以减少缓冲区延迟并防止缓冲区溢出。相反,如果编码器输出比特率低于通道带宽,则会发生缓冲区下溢并导致带宽浪费。为了考察两种方法的低延迟效果,实验中将缓冲区大小设置为:

buffer=tdelay×rtarget(5)

其中tdelay是实时视频码流的延迟时间,rtarget是目标码率。为了检测本发明的低延迟效果,tdelay的值设定为两帧。

6.实施条件与结果

基于hm16.14实现应用本发明方法的实施例中的hevc编码框架,采用了hevc提供的classc和classd中的标准测试序列,并同时选取了cif格式和高清(hd)以及超高清(uhd)序列中的一些运动特征明显的序列进行测试。在本发明方法的实施例中,依据传统的做法,在使用帧内刷新算法时将参考帧的数量也设定为1。编码采用了lowdelayp的编码结构,该配置文件是适用于低延迟应用的。目标码率为hm16.14编码器中采用码率控制方法得到的实际码率。

在上述实施条件下,得到了表1的实验结果。其中的“传统方法”指的是用于对比的在hm16.14中实现的周期性帧内刷新方法。而“目前方法”指的是应用了本发明的实施例的运动自适应帧内刷新方法。经过对比发现,两种方法具有相同的低延迟效果。但是本发明中的实施例中的视频质量要优于传统方法。如图2所示,在缓冲区大小设定很小的情况下,本发明中的方法与传统的周期性帧内刷新方法具有相同的低延迟效果,且都不会导致溢出和下溢。

图3显示出本发明中的具有更高的视频质量。图4(a)、图4(b)是实际编码效果的对比图,可以看出,本发明中的方法可以较好的避免运动矢量逆向的发生。另外,分别记录本发明方法和周期性帧内刷新的编码时间,并计算两种方法所用时间的比值。结果显示实施例与pir方法的编码时间比为99.85%,表明并未带来编码时间上的增加。尽管目前方法需要进行额外的成本估算,但是该部分对整体编码时间的影响很小。

表1实施例的编码结果

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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