一种基于编码单元层次的HEVC复杂度控制方法转让专利

申请号 : CN201610585079.8

文献号 : CN106231300B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张小云陈刚阳兵高志勇

申请人 : 上海交通大学

摘要 :

本发明提供一种基于编码单元层次的HEVC复杂度控制方法,包括以下步骤:用户设定视频编码目标复杂度系数,正常编码并统计第一个GOP中的各个编码单元层次的复杂度和一个GOP的总的复杂度,计算出各个编码单元层次的复杂度的比值,并通过不同的编码单元层次组合得到不同的门限值;把目标复杂度平均分配到待编码GOP内的每一帧,把复杂度平均分配给剩下的编码树单元,每个编码树单元根据分配到的复杂度选择编码单元层次的组合,编码完成后更新剩余的复杂度。本发明能够在GOP级别在一定范围内实现复杂度的控制,在每一帧编码复杂度的控制上更为准确,波动更小。

权利要求 :

1.一种基于编码单元层次的HEVC复杂度控制方法,其特征在于包括如下步骤:第一步,用户设定视频编码目标复杂度系数,正常编码并统计第一个GOP中的各个编码单元层次的复杂度和一个GOP的总的复杂度;

第二步,根据第一步的复杂度,计算各个编码单元层次的复杂度的比值;

第三步,通过第二步得到的编码单元层次的复杂度的比值计算不同编码单元层次组合的不同门限值;

第四步,由第一步目标复杂度系数与一个GOP总的复杂度计算目标复杂度,在每个GOP开始时,平均分配目标复杂度到GOP里面每一帧;

第五步,在每帧开始时,通过第四步中分配的每帧复杂度与前一帧剩余复杂度计算当前帧的实际复杂度;

第六步,在每个编码树单元开始时,把当前帧剩余的复杂度平均分配到当前编码树单元CTU;

第七步,针对第六步分配到的复杂度和第三步编码单元层次组合的门限值选择编码单元层次的组合;

第八步,完成当前CTU的编码,更新当前帧剩余复杂度,如当前帧编码完毕,更新复杂度,并判断过程是否结束。

2.根据权利要求1所述的基于编码单元层次的HEVC复杂度控制方法,其特征在于:第一步中:对第一个I帧后面的接下来的图像组大小的P帧,分别统计各个编码单元层次的复杂度和总的复杂度。

3.根据权利要求1所述的基于编码单元层次的HEVC复杂度控制方法,其特征在于:第二步中:在第一步的基础上,通过统计的编码单元层次的复杂度计算各个编码单元层次的复杂度的比值,各个编码单元层次的复杂度的比值在不同帧之间保持恒定。

4.根据权利要求1所述的基于编码单元层次的HEVC复杂度控制方法,其特征在于:第三步中,所述门限值用来区分编码单元层次的层数,该门限值确定了编码单元的层数之后需要确定在给定复杂度的情况下选择编码单元层次组合。

5.根据权利要求4所述的基于编码单元层次的HEVC复杂度控制方法,其特征在于:第三步中:在给定一层编码单元层次复杂度的情况下,选择编码单元层次2;在给定两层编码单元层次复杂度的情况下,选择编码单元层次1和3;在给定三层编码单元层次复杂度的情况下,选择编码单元层次 1、2和3;在给定四层编码单元层次复杂度的情况下,选择所有的编码单元层次。

说明书 :

一种基于编码单元层次的HEVC复杂度控制方法

技术领域

[0001] 本发明属于视频信息压缩领域,具体而言,涉及一种基于编码单元层次的HEVC复杂度控制方法。

背景技术

[0002] 如今,电视和电影行业飞速发展,视频服务越来越多样化。高清视频飞速增长,甚至超高清视频(4kx2k、8kx4k分辨率)的需求也在逐步兴起。更高质量和分辨率的追求也逐步反映在移动设备上,而相对目前来讲,移动设备和平板电脑视频的流量对移动网络已经造成了沉重的负担。在网络和无线传输当中,带宽成为了瓶颈。视频编码技术使得在有限带宽下传输高质量的内容变得可行。H.264/AVC作为最近十年最成功的视频压缩标准,在多个行业都取得了巨大的成功。随着视频容量的飞速膨胀,急需比H.264/AVC更高压缩效率的视频编码技术。
[0003] HEVC(高效视频编码标准)是ITU-T VCEG(国际电联电信标准化部视频编码组)与ISO/IEC MPEG(国际标准化组织国际电工委员会视频标准化组)的合作组织JCT-VC的最新项目,目标是在相同画质的情况下比目前最好的AVC/H.264标准节省50%的码流。ITU-T和ISO/IEC已经在2013年1月共同发布第一个版本。HEVC使得压缩性能得到了进一步的提升,同时也使得运算复杂度翻了好几倍。受半导体工艺影响,现在主流设备的计算能力还不能满足HEVC的计算能力需求。因此,针对HEVC来研究复杂度受限情况下的编码方法就变得尤其重要。
[0004] 在编码复杂度受限这个框架下,如何把某项编码技术有效地应用到编码树单元CTU(HEVC)或宏块MB(H.264等)是最重要的。在能量受限的情况下Correa针对HEVC考虑了复杂度控制问题(参见:Correa,G.,P.Assuncao,et al.(2011)."Complexity control of high efficiency video encoders for power-constrained devices.",IEEE Transactions on Consumer Electronics.)。文中通过动态的调整编码单元级别的最大编码单元的层次和帧级的受限制的帧数来达到复杂度的控制。在帧级调整的时候,有些帧需要限制最大编码单元层次有些帧不需要限制,所以可以动态的调整需要限制的连续帧的个数。这个论文的工作是最初的产品,虽然能够进行一定的复杂度控制,但是整体效果并不好,局部的波动会比较大,同时能够调整的复杂度动态范围也比较小。结合前期的工作,在使用最大编码单元深度信息的时候不仅考虑了时空相关性和运动补偿带来的影响,而且加入了预测块的划分(参见:Correa,G.,P.Assuncao,et al.(2014)."Complexity scalability for real-time HEVC encoders."Journal of Real-Time Image Processing.)。在帧内具体进行复杂度控制的时候,分为两级处理,一级是是否支持预测块的划分,另一级才是是否需要用到最大编码单元深度限制。具体处理的时候,按照前一帧的率失真值进行排序,先从那些率失真损失比较小的块进行处理。系统能够针对一些序列做到GOP级别的时间控制,在IPPP这种GOP结构下面可以做到节省一半时间的情况下RD性能下降的不是特别厉害。同时,该文还存在一个比较大的问题是不能实现较精准的复杂度控制。
[0005] 经检索,公开号为105120295A、申请号为201510490394.8的中国发明专利申请,该发明公开一种基于四叉树编码分割的HEVC复杂度控制方法,具体步骤如下:一、用户设定视频编码的初始目标复杂度;步骤二、利用区域显著性检测算法生成视频中每一帧的编码块权重图谱;步骤三、编码器设计每一帧的块级别复杂度-失真优化控制模型;步骤四、针对视频中的所有帧,循环更新当前帧的目标复杂度替换前一帧的目标复杂度,应用于当前帧的块级别复杂度-失真优化控制模型;步骤五、编码结束。
[0006] 但是上述专利:1.由于引入了区域显著性检测算法,带来了编码复杂度的上升;2.该专利需要至少3个视频序列作为训练,必须先训练后使用,应用受限。
[0007] HEVC能够取得很好的压缩性能,同时运算复杂度很高。受半导体工艺影响,现在主流设备的计算能力还不能满足HEVC的计算能力需求。因此,针对HEVC来研究复杂度受限情况下的编码方法就变得尤其重要。

发明内容

[0008] 针对现有技术中的缺陷和HEVC复杂度控制方法的需求,本发明的目的是提供一种基于编码单元层次的HEVC复杂度控制方法,能够在GOP级别在一定范围内实现复杂度的控制。
[0009] 为实现上述目的,本发明采用以下技术方案:
[0010] 一种基于编码单元层次的HEVC复杂度控制方法,包括如下步骤:
[0011] 第一步,用户设定视频编码目标复杂度系数,正常编码并统计第一个GOP中的各个编码单元层次的复杂度和一个GOP的总的复杂度;
[0012] 第二步,根据第一步的复杂度,计算各个编码单元层次的复杂度的比值;
[0013] 第三步,通过第二步得到的编码单元层次的复杂度的比值计算不同编码单元层次组合的门限值;
[0014] 第四步,由第一步目标复杂度系数与一个GOP总的复杂度计算目标复杂度,在每个GOP开始时,平均分配目标复杂度到GOP里面每一帧;
[0015] 第五步,在每帧开始时,通过第四步中分配的每帧复杂度与前一帧剩余复杂度计算当前帧的实际复杂度;
[0016] 第六步,在每个编码树单元开始时,把当前帧剩余的复杂度平均分配到当前编码树单元CTU;
[0017] 第七步,针对第六步分配到的复杂度和第三步编码单元层次组合的门限值选择编码单元层次的组合;
[0018] 第八步,完成当前CTU的编码,更新当前帧剩余复杂度,如当前帧编码完毕,更新复杂度,并判断过程是否结束。
[0019] 优选地,第一步中:对第一个I帧后面的接下来的图像组大小Gop_size的P帧,分别统计各个编码单元层次的复杂度和总的复杂度。
[0020] 优选地,第二步中:在第一步的基础上,通过统计的编码单元层次的复杂度计算各个编码单元层次的复杂度的比值,各个编码单元层次的复杂度的比值在不同帧之间保持恒定。
[0021] 优选地,第三步中,所述门限值用来区分编码单元层次的层数,该门限值确定了编码单元的层数之后需要确定在给定复杂度的情况下选择编码单元层次组合。
[0022] 更优选地,第三步中:在给定一层编码单元层次复杂度的情况下,选择编码单元层次2;在给定两层编码单元层次复杂度的情况下,选择编码单元层次1和3;在给定三层编码单元层次复杂度的情况下,选择编码单元层次1、2和3;在给定四层编码单元层次复杂度的情况下,选择所有的编码单元层次。在给定一定复杂度情况下,编码单元层次的选择是经过离线训练得到,能够在在保证控制复杂度情况下取得较好的编码性能。
[0023] 本发明HEVC复杂度控制方法考虑了基于编码单元层次,整个方法避免引入额外的复杂度,且无需专门的训练视频序列,对于任何视频可以直接编码。
[0024] 与现有技术相比,本发明具有如下的有益效果:
[0025] 本发明提供的方法能够使得编码树单元选择不同的编码单元层次从而在一定范围内达到复杂度的控制。与现有方法相比,复杂度控制的动态范围较高,而且波动较小。本发明能够在GOP级别在一定范围内实现复杂度的控制,在每一帧编码复杂度的控制上更为准确,波动更小。

附图说明

[0026] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0027] 图1是本发明的HEVC复杂度控制方法处理流程图;
[0028] 图2是目标复杂度和实际复杂度的示意图(QP=22);
[0029] 图3是在不同目标复杂度下的每个GOP复杂度波动的示意图(BQTerrace,QP=27)。

具体实施方式

[0030] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0031] 以下首先对本发明的技术用语进行解释和说明。
[0032] 编码单元:Coding Unit,简称CU,视频编码的最基本单元,每个编码单元的大小可以是64x64、32x32、16x16、8x8。其中最大编码单元叫做编码树单元CTU(Coding Tree Unit),可以通过四叉树分割技术递归划分成大小不一的小编码单元。
[0033] 编码单元层次:Coding Unit Depth,四叉树的某一层次,HEVC支持编码单元层次0、1、2、3,其对应的编码大小为64x64、32x32、16x16、8x8。
[0034] 如图1所示,根据HEVC复杂度控制方法的需求,本发明提供一种基于编码单元层次的HEVC复杂度控制方法,具体实施步骤如下:
[0035] 步骤1:用户设定视频编码目标复杂度系数α,α∈[0,1],正常编码并统计第一个GOP中的各个编码单元层次的复杂度和总的复杂度:
[0036] HEVC标准支持四种编码单元层次0、1、2、3。在第一个I帧后面接下来的Gop_size(图像组大小)的P帧,分别统计各个编码单元层次的复杂度和总的复杂度,记为其中下标d0、d1、d2、d3为编码单元层次0、1、2、3,以及一个GOP(图像组)的总编码复杂度
[0037] 步骤2:根据第一步的复杂度,计算各个编码单元层次的复杂度的比值:
[0038] 分别把各个编码单元层次的复杂度的比值记为R0,R1,R2,R3。把编码单元层次0的复杂度作为分母,则计算公式如下:
[0039]
[0040] 其中Ri的下标i=0,1,2,3表示编码单元层次。
[0041] 步骤3:通过第二步得到的编码单元层次的复杂度的比值计算不同编码单元层次组合的门限值:
[0042] 在完成复杂度的分配之后,需要把复杂度映射到具体的编码操作当中。为了使得取得的编码率失真性能较优,针对编码单元层次的组合,通过离线学习的方法先确定了在给定复杂度的情况下如何去选择编码单元层次组合。如下表1所示,即在给定一层编码单元层次复杂度的情况下,选择编码单元层次2;在给定两层编码单元层次复杂度的情况下,选择编码单元层次1和3;在给定三层编码单元层次复杂度的情况下,选择编码单元层次1,2和3;在给定四层编码单元层次复杂度的情况下,选择所有的编码单元层次。
[0043] 表1给定复杂度下的最佳的编码层次组合
[0044]复杂度的层数 编码单元组合
一层编码单元 编码单元层次2
二层编码单元 编码单元层次1和3
三层编码单元 编码单元层次1,2和3
四层编码单元 编码单元层次1,2,3和0
[0045] 在给定复杂度的情况下,需要确定选择的编码单元层次的层数。HEVC的四种编码单元层次,需要四个门限值去区分,记这四个门限值为 其计算公式为:
[0046]
[0047] 上述四个门限值 分别表示对应编码单元的全复杂度(编码单元选择4个层次),高复杂度(编码单元选择3个层次),中复杂度(编码单元选择2个层次),低复杂度(编码单元选择1个层次)。
[0048] 步骤4:由第一步目标复杂度系数与一个GOP总的复杂度计算目标复杂度,在每个GOP开始时,把目标复杂度平均分配到GOP里面每一帧:
[0049] 第一个GOP中的总的复杂度是 目标复杂度系数为α∈[0,1]。因此,分配到每帧的复杂度为:
[0050]
[0051] 步骤5:在每帧开始时,通过第四步中分配的每帧复杂度与前一帧剩余复杂度,计算当前帧的实际复杂度:
[0052] 每帧的复杂度 由两部分组成,一部分是分配到每帧的复杂度 另一部分是前一帧剩余的复杂度 即
[0053] 步骤6:在每个编码树单元开始时,把当前帧剩余的复杂度 平均分配到当前编码树单元CTU:
[0054] 记每帧有NCTU个CTU,当前处理的CTU是第j个,则当前CTU分配到的复杂度为:
[0055]
[0056] 步骤7:针对分配到的复杂度选择编码单元层次的组合:
[0057] 当前编码单元CTU分配到的复杂度确定之后,就是针对分配到的复杂度选择编码单元层次的组合。由于在选定编码单元层次的层数之后,具体的编码单元层次组合已经确定,这里要解决的问题就是如何选定编码单元的层数。具体公式如下:
[0058]
[0059] 步骤8:完成当前CTU的编码,更新当前帧剩余复杂度,并判断过程是否结束。
[0060] 在每个编码树单元CTU完成编码之后,更新帧内剩余的复杂度,计算公式如下:
[0061]
[0062]
[0063] 如果是帧内的最后一个编码单元,则进入下一帧编码,否则进入下一个编码单元。当GOP内所有帧都完成编码时,进入下一个GOP。如果所有GOP都完成编码,则过程结束。
[0064] 为了验证本发明的可行性和有效性,在真实环境下验证本发明方法。实验室测试条件为Windows7操作系统,3.1GHz主频的CPU,8G内存。测试代码为HEVC参考代码HM,测试QP为22、27、32、37。RD性能的参考是原始HM代码在复杂度不受限情况下的性能。测试序列特征如下表2:
[0065] 表2测试序列特征
[0066]序列 编码帧数 帧率 尺寸
BQTerrace 120 60 1920x1080
RaceHorses 90 30 832x480
BlowingBubbles 150 50 416x240
FourPeople 180 60 1280x720
SlideEditing 90 30 1280x720
[0067] 表3基于编码单元层次的HEVC复杂度控制方法的BD-BR值
[0068]
[0069]
[0070] 附图2是目标复杂度和实际复杂度的示意图,附图3是在不同目标复杂度下的每个GOP复杂度波动的示意图。由实验结果可知,本发明可以在一定范围内(30%-100%)对复杂度进行有效的控制,并且取得较好的率失真性能。
[0071] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。