一种视频编码复杂度自适应调整方法及装置转让专利

申请号 : CN201010122607.9

文献号 : CN102196254B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姜东张大勇梁利平

申请人 : 中国科学院微电子研究所

摘要 :

本发明公开了一种视频编码复杂度自适应调整方法,包括对宏块编码模式进行预分类;调用复杂度控制模型,初步计算按照预分类编码模式进行编码所需的计算复杂度,将此预估计算复杂度与目标计算复杂度进行比较,当预估计算复杂度满足给定的目标复杂度时,进入视频编码的后续环节进行运动估计和模式选择;否则调整宏块级计算复杂度,直至满足目标复杂度要求。本发明还公开了一种视频编码复杂度自适应调整装置,包括宏块预分类单元、复杂度估计单元、编码复杂度控制单元。根据本发明实施例提供的方法及装置,在电源供电能力不足时可以主动调整自身编码参数,降低编码复杂度,同时仍能保证重建视频的质量。

权利要求 :

1.一种视频编码复杂度自适应调整方法,其特征在于,所述方法包括如下步骤:

A1:对宏块编码模式进行预分类;

A2:调用视频编码复杂度控制模型,按照预分类后的模式进行编码,计算帧的预估的计算复杂度C_frame;

A3:将所述帧的预估的计算复杂度C_frame与所述帧的目标复杂度C_target进行比较,当C_frame小于或等于C_target时,β为0,进行运动估计和模式选择;当C_frame大于(3/2)*C_target时,强制增加帧内SKIP模式的宏块数量β的值;当C_frame大于C_target且小于(3/2)*C_target时,进行宏块级复杂度调整,重新计算调整后的C_frame;

所述宏块级复杂度调整包括如下步骤:

当C_frame大于C_target且小于(3/2)*C_target时,调用复杂度控制模型,将所述帧内复杂度档次处于最高水平的宏块的计算复杂度降低一个计算复杂度档次;

计算当前宏块复杂度与宏块的初始复杂度的差值Cmb_diff,根据所述Cmb_diff,更新并记录所述当前宏块的计算复杂度;

根据调整后的宏块复杂度C_MB计算调整后的计算复杂度C_frame,直至满足C_frame小于或等于C_target。

2.如权利要求1所述的方法,其特征在于,所述对宏块编码模式进行预分类采用以下两种方式之一实现,(1)统计每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及其编码模式,根据统计结果判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,对所述宏块编码模式进行预分类;

(2)计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver,根据所述Variance_hor及所述Variance_ver的比较结果,对所述宏块编码模式进行预分类。

3.如权利要求2所述的方法,其特征在于,统计所述每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及其编码模式,根据统计结果判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,对所述宏块编码模式进行预分类包括如下步骤:计算所述每个宏块的零运动矢量一致性,当其大于或等于TMOTION时,判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,其中,TMOTION为零运动矢量一致性阈值;

当所述零运动矢量一致性小于TMOTION时,判断所述宏块的前n个参考帧的大块一致性,根据统计结果判断所述宏块前n个参考帧的最终编码模式为SKIP模式或Inter16x16模式,并计算所述宏块的大块一致性,根据所述宏块的大块一致性,判断所述宏块适合编码模式为Inter16x16模式或SKIP模式。

4.如权利要求2所述的方法,其特征在于,计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver,根据所述Variance_hor及所述Variance_ver的比较结果,对所述宏块编码模式进行预分类包括如下步骤:计算所述每个宏块内每个象素的亮度值F(xi,yi);

根据所述宏块内每个象素的亮度值F(xi,yi)计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver;

根据所述每个宏块的所述Variance_hor、Variance_ver以及判定规则预先判定该宏块适合的编码模式。

5.一种视频编码复杂度自适应调整装置,其特征在于,该装置包括宏块预分类单元、复杂度估计单元、编码复杂度控制单元,所述宏块预分类单元,用于对宏块编码模式进行预分类;

所述复杂度估计单元,用于调用视频编码复杂度控制模型,对宏块按照预分类后的模式进行编码,计算帧的计算复杂度C_frame;

所述编码复杂度控制单元,用于将所述帧的计算复杂度C_frame与所述帧的目标复杂度C_target进行比较,所述编码复杂度控制单元包括宏块编码模式调整单元和宏块复杂度更新单元;

所述宏块编码模式调整单元根据所述帧的计算复杂度C_frame与所述帧的目标复杂度C_target的比较结果,当C_frame大于(3/2)*C_target时,所述宏块编码模式调整单元强制增加帧内SKIP模式的宏块数量β的值;当C_frame小于或等于C_target时,β为0,进行运动估计和模式选择;

所述宏块复杂度更新单元根据所述帧的计算复杂度C_frame与所述帧的目标复杂度C_target的比较结果,当C_frame大于C_target且小于(3/2)*C_target时,调用所述视频编码复杂度控制模型,将所述帧内复杂度档次处于最高水平宏决的计算复杂度降低一个计算复杂度档次;

计算当前宏块复杂度与宏块的初始复杂度C_MB的差值Cmb_diff,根据所述Cmb_diff,更新并记录所述当前宏块的计算复杂度;

计算调整后的计算复杂度C_frame,直至满足C_frame小于或等于C_target。

6.如权利要求5所述的装置,其特征在于,所述宏块预分类单元采用以下两种方式之一实现对所述宏块的预分类,(1)所述宏块预分类单元统计每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及编码模式,根据统计结果判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,对所述宏块编码模式进行预分类;

(2)所述宏块预分类单元计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver,根据所述Variance_hor及所述Variance_ver的比较结果,对所述宏块编码模式进行预分类。

7.如权利要求6所述的装置,其特征在于,所述宏块预分类单元统计所述每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及编码模式,根据统计结果判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,对所述宏块编码模式进行预分类包括:所述宏块预分类单元计算所述每个宏块的零运动矢量一致性,当其大于或等于TMOTION时,判断所述宏块适合的编码模式为SKIP模式或Inter16x16模式,其中,TMOTION为零运动矢量一致性阈值;

当所述零运动矢量一致性小于TMOTION时,判断所述宏块的前n个参考帧的大块一致性,根据统计结果判断所述宏块的前n个参考帧最终编码模式为SKIP模式或Inter16x16模式,并计算所述宏块的大块一致性,根据所述宏块的大块一致性,判断所述宏块适合编码模式为Inter16x16模式或SKIP模式。

8.如权利要求6所述的装置,其特征在于,所述宏块预分类单元计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver,根据所述Variance_hor及所述Variance_ver的比较结果,对所述宏块编码模式进行预分类包括:计算所述每个宏块内每个象素的亮度值F(xi,yi);

根据所述F(xi,yi)计算所述每个宏块的水平方向方差Variance_hor、垂直方向方差Variance_ver;

根据所述每个宏块的所述Variance_hor、Variance_ver以及判定规则预先判定该宏块适合的编码模式。

说明书 :

一种视频编码复杂度自适应调整方法及装置

技术领域

[0001] 本发明涉及数视频处理领域,具体而言,本发明涉及一种视频编码复杂度自适应调整方法及装置。

背景技术

[0002] 视频具有直观生动、内容丰富等显著特点,是人类最重要的信息载体之一。随着信息技术的快速发展,无线多媒体通信、数字电视等各种视频应用对视频分辨率等要求越来越高,相应地,所获取的视频数据量也急剧增加,远远超过信道带宽和存储容量的增长速度。因此,视频编码技术已成为信息技术领域的重点研究课题,受到学术界和产业界的广泛关注。
[0003] 视频领域的两大国际组织ISO-MPEG与ITU已经相继推出了一系列视频压缩标准如MPEG-1、MPEG-2和MPEG-4以及H.261、H.263、H.263+、H.264/AVC等,这些标准不断地提高了视频编码效率。最新的视频编码标准H.264/AVC是联合视频组JVT制定的,于2003年3月正式成为国际标准。H.264/AVC采用了一系列新技术,如整数块变换、块大小自适应的整象素/亚象素运动估计、多参考帧、基于率失真理论的模式选择、改进的循环滤波以及高效率的熵编码等,这些技术使得H.264/AVC标准能在恢复图像质量相同的前提下比H.263或MPEG-4节约大约40%~50%的码流量,或者在编码位率相同的情况下重建图像质量平均有2dB提高。
[0004] 与此同时,H.264/AVC视频编码器的计算复杂度也急剧升高,超出了现有硬件平台的计算能力,高计算复杂度同时也意味着高功耗。然而在嵌入式应用特别是手持或移动式设备环境下,处理器不仅受处理能力限制,还常常受到电池供电能力限制,这些应用不能支持长时间的高功耗。在设计此类应用环境下的视频编码器时,不仅要考虑电池电量充足时的工作状态,还必须要考虑在电量不足,只有满载50%甚至30%时的系统工作状态。供电能力不足时,自然无法再继续保证视频编码器在传统的R-D性能上的最优,需要建立新的模型,以保证编码器的C-R-D性能达到最优。
[0005] 通过对H.264/AVC编码器的详细测试,结果发现运动估计和运动补偿模块是最为耗时的部分,约占全部复杂度的70%,因此,控制视频编码器的复杂度,运动估计与运动补偿模块是无法回避的重点。事实上,运动估计与运动补偿模块的复杂度有多个参数决定,具体来说,就是所采用的整象素运动估计算法、亚象素运动估计算法、采用的参考帧数目以及运动补偿采用的块种类即运动补偿块模式。
[0006] 在当前的H.264/AVC编码器中,对于上述提到的几个环节,多数都实现了多种不同的算法,这同时也意味着当前的H.264/AVC编码器复杂度具有很大的伸缩性。这些不同算法的组合决定了编码器的复杂度,同时也对应一个或多个不同的编码器R-D性能。因此,需要考虑在一个给定的复杂度C情况下,在对应的众多R-D性能中,找到一个最优解。

发明内容

[0007] 为解决上述问题,本发明提供了一种视频编码复杂度自适应调整方法,该方法通过对宏块编码模式进行预分类,初步估计出帧一级的计算复杂度,判断此估计复杂度是否满足给定的目标计算复杂度,通过调用P-R-D模型,调整宏块的计算复杂度档次,确定具体的编码模式,实现准确控制视频编码器的整体计算复杂度,同时保持在同等编码复杂度下获得更佳的重建视频质量。
[0008] 为实现上述目的,本发明实施例的一方面提供了一种视频编码复杂度自适应调整方法,该方法包括如下步骤:
[0009] A1:对宏块编码模式进行预分类;
[0010] A2:调用视频编码复杂度控制模型,对宏块按照预分类后的模式进行编码,计算帧的实际计算复杂度C_frame;
[0011] A3:将所述帧的实际计算复杂度C_frame与所述帧的目标复杂度C_target进行比较,当C_frame小于或等于C_target时,进行运动估计和模式选择;当C_frame大于C_target时,进行宏块级复杂度调整,根据所述宏块级复杂度调整的调整结果,重新计算帧的实际计算复杂度C_frame,直至满足C_frame小于或等于C_target。
[0012] 本发明实施例的另一方面提供了一种视频编码复杂度自适应调整装置,包括宏块预分类单元、复杂度估计单元、比较及调整单元,
[0013] 所述宏块预分类单元,用于对宏块编码模式进行预分类;
[0014] 所述复杂度估计单元,用于调用视频编码复杂度控制模型,对宏块按照预分类后的模式进行编码,计算帧的实际计算复杂度C_frame;
[0015] 所述编码复杂度控制单元,用于将所述帧的实际计算复杂度C_frame与所述帧的目标复杂度C_target进行比较,当C_frame小于或等于C_target时,进行运动估计和模式选择;当C_frame大于C_target时,进行宏块级复杂度调整,根据所述宏块级复杂度调整的调整结果,重新计算该帧的实际计算复杂度C_frame,直至满足C_frame小于或等于C_target。
[0016] 根据本发明实施例提供的方法及装置,在电源供电能力不足时可以主动调整自身编码参数,降低编码复杂度,同时仍能保证视频编码的重建质量。
[0017] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0018] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0019] 图1为根据本发明实施例的视频编码复杂度自适应调整方法示意图;
[0020] 图2为根据本发明实施例的视频编码复杂度自适应调整算法流程图;
[0021] 图3为根据本发明实施例的视频编码复杂度自适应调整方法框图;
[0022] 图4为图1中宏块模式预分类方法流程图;
[0023] 图5为根据本发明实施例的P-R-D模型拟合曲线;
[0024] 图6为根据本发明实施例的帧级复杂度控制流程图;
[0025] 图7为根据本发明实施例的宏块级复杂度调整流程图;
[0026] 图8为根据本发明实施例的视频编码复杂度自适应调整装置结构图。

具体实施方式

[0027] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0028] 为了实现本发明之目的,本发明公开了一种视频编码复杂度自适应调整方法,如图1所示,该方法包括如下步骤:
[0029] A1:对宏块编码模式进行预分类。
[0030] 宏块编码模式预分类可以包括多种方法,以实现在视频进行编码模式搜索前对搜索的模式种类进行预先判定,将出现概率非常小的编码模式预先排除,缩小了模式搜索范围,降低了计算复杂度的目的。
[0031] 本发明涉及的宏块编码模式预分类可以通过以下两种方式之一实现。
[0032] 1)统计每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及编码模式,根据统计结果判断宏块适合的编码模式为SKIP模式或Inter16x16模式,对上述宏块编码模式进行预分类。
[0033] 具体的说,首先采用ZMCS准则,统计零运动矢量一致性(ZMC),ZMCt(n,m;i,j)表示宏块内连续包含零运动矢量的大小,
[0034]
[0035] 其中,t为帧的标识号,ZMC0=0。
[0036] 根据ZMCt(n,m;i,j),判断宏块适合的编码模式,
[0037]
[0038] 其中,TMOTION为零运动矢量一致性阈值。
[0039] 根据上述计算得到的ZMCSt(i,j),当ZMCt(n,m;i,j)≥TMOTION时,判断宏块适合的编码模式为SKIP模式或Inter16x16模式。
[0040] 在本实施例中,TMOTION=4,在该条件下,宏块编码模式采用Inter16x16的平均概率为94%。
[0041] 当ZMCt(n,m;1,j)<TMOTION时,即ZMCSt(i,j)为低时,进一步采用LBCS准则,判断宏块适合的编码模式。具体的说,首先判断前n个参考帧的大块一致性,根据上述大块一致性,判断当前宏块的前n个参考帧的最终编码模式为SKIP或Inter16x16模式。
[0042] 计算当前宏块的大块一致性LBCt(i,j),LBCt(i,j)=LBCt(i,j)+1。
[0043]
[0044] 根据上述判断结果,进一步判断当前宏块适合的编码模式。
[0045](i,j)
[0046] 其中,TMODE1和TMODE2为用于评估LBCt 的阈值。(i,j) (i,j) (i,
[0047] 如上述公式中所示,根据LBCt <TMODE1,TMODE1≤LBCt <TMODE2,TMODE2≤LBCtj)的不同条件下,宏块适合编码模式为Inter16x16模式的概率依次降低。
(i,j)
[0048] 在本实施例中,TMODE1=1、TMODE2=4,在此条件下,当LBCSt 为高时,宏块适合(i,j)编码模式为Inter16x16的平均概率为90%;当LBCSt 为中时,宏块适合编码模式为
(i,j)
Inter16x16的平均概率为69%;当LBCSt 为低时,宏块适合编码模式为Inter16x16的平均概率为47%。
[0049] 综合利用ZMC准则和LBCS准则,根据宏块的零运动矢量的大小及前n个参考帧的适合编码模式,判断当前宏块适合编码模式为SKIP模式或Inter16x16模式,实现对宏块编码模式的预分类。
[0050] 2)宏块编码模式进行预分类还可以通过以下方式实现,采用基于水平方向和垂直方向的方差计算方法来预判宏块纹理复杂度的算法。图4示出了宏块模式预分类的流程框图。
[0051] 结合图2和图3所示,首先,计算宏块的水平方向方差Variance_hor和垂直方向方差Variance_ver。
[0052] 具体的说,计算水平方向的宏块方差Variance_hor的方法包括如下步骤:首先求出宏块内一行象素的均值,再求出每个象素与均值的差值,其平方和即是该行象素的方差。宏块内所有行的方差相加即该宏块的水平方向方差。设宏块内每个象素的亮度值为F(xi,yj),
[0053]
[0054] 计算垂直方向的宏块方差Variance_ver的方法包括如下步骤:首先求出宏块内一列象素的均值,再求出每个象素与均值的差值,其平方和即是该列象素的方差。宏块内所有列的方差相加即该宏块的垂直方向方差。设宏块内某象素值为F(xi,yj),
[0055]
[0056] 根据本发明的实施例提供的方法,预判宏块的初始模式,以决定对于该宏块来说,哪些模式可以直接跳过而不必再做搜索。
[0057] 根据计算得到的水平方向上的方差Variance_hor和垂直方向上的方差Variance_ver,判断Variance_hor同Variance_ver之和与设定阈值threshold的大小。
[0058] 当Variance_hor+Variance_ver<=threshold时,表明该宏块的纹理极其简单,因此,只保留SKIP模式和Inter16×16模式,省略其他所有模式的搜索,可极大地降低计算复杂度。对上述宏块采用基于PSNR的强制性准则编码为SKIP模式。
[0059] 当Variance_hor+Variance_ver>threshold时,进一步判断,当Variance_hor>Variance_ver时,该宏块适合的编码模式判定为Inter 16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式;
[0060] 当Variance_hor<Variance_ver时,该宏块适合的编码模式判定为Inter16×16模式、Inter 16×8模式、Inter 8×8模式或Skip模式。
[0061] 通过以上两种方式,均可实现对宏块编码模式进行预先判定,缩小模式搜索范围,降低计算复杂度的目的。
[0062] A2:调用视频编码复杂度控制模型P-R-D,对宏块按照预分类后的模式进行编码,计算帧的实际计算复杂度C_frame。
[0063] 在步骤A1中,初步确定了宏块的初始模式,将此初始模式记录到该宏块的列表中。接下来进入帧一级控制步骤。
[0064] 图6示出帧级复杂度控制的控制流程。如图6中所示,首先根据硬件及其他用户需求设定对该帧期望的目标复杂度C_target,根据初步确定的宏块模式调用P-R-D模型计算本宏块需要的计算复杂度C_MB。
[0065] 上述P-R-D模型针对嵌入式平台特别是手持应用环境下电池供电能力受限的情况,提出了一种面向电源约束的H.264/AVC视频编码复杂度控制模型P-R-D模型,在电源供电能力不足甚至是严重不足时仍能保证视频编码的重建质量。该模型包括:选取整象素运动估计、亚象素运动估计、参考帧数目、帧内预测模式、帧间预测模式作为影响编码器计算复杂度的关键因子。对上述提到的不同算法进行交叉分组测试,得到每一组合对应的时间计算复杂度和编码效率。对这些交叉分组测试结果,在同等编码效率的前提下可能对应有多组不同的算法组合。如果只对应一组,则保留该组;如果对应有多个组,保留编码效率最高的一组,剔除其余编码效率较低的组合。如此得到一张由从高到低的计算复杂度对应于不同算法组合的C-R-D表。表1示出了上述C-R-D表。该C-R-D表与映射复杂度水平的拟合曲线一起,构成编码器算法复杂度控制模型的主要内容。
[0066] 表1
[0067]计算复杂度 运动补偿块 亚象素运动估 损失失真 归一化复杂
水平 模式 计水平 (dB) 度值
0 SKIP 0
1 1 1 -0.76 0.228
2 2 1 -0.59 0.246
3 3 1 -0.46 0.265
4 4 1 -0.44 0.283
5 6 1 -0.53 0.359
6 3 2 -0.3 0.397
7 4 2 -0.26 0.438
8 3 3 -0.2 0.491
9 3 4 -0.18 0.528
10 3 5 -0.16 0.544
11 4 3 -0.15 0.577
12 4 4 -0.13 0.614
13 4 5 -0.12 0.637
14 5 3 -0.12 0.707
15 5 4 -0.1 0.745
16 5 5 -0.08 0.775
17 6 3 -0.03 0.918
18 6 4 -0.02 0.955
19 6 5 0 1
[0068] 控制编码器的计算复杂度,通常有几种备选方案:序列级,帧级,SLICE级直至宏块级。显然,控制粒度越小,控制精度也就越高。本发明对宏块编码模式预先判断初始模式,先按照此算法估计该帧的整体复杂度,比较此估计值是否与预先设定的目标复杂度一致,利用上述P-R-D控制模型,据此决定是否改变本宏块的复杂度水平并调整本宏块的计算复杂度。
[0069] 其中,在本实施例中上述P-R-D模型为y=0.045x+0.1389,图5示出了P-R-D模型的示意图。如图中所示,横轴为计算复杂度水平,纵轴为归一化的复杂度,拟合曲线为y=0.045x+0.1389。
[0070] 由于本发明做到了宏块级的复杂度控制,根据宏块所包含的信息量自适应分配计算复杂度,因此,控制准确度更高,而对整体编码效率的影响也降低到最小。
[0071] 根据上述P-R-D模型,分别计算出各个宏块复杂度。将上述各个宏块复杂度叠加,进一步得到该帧的C_frame。
[0072] A3:将帧C_frame与帧的目标复杂度C_target进行比较。上述目标复杂度C_target可以通过以下两种方式之一获得。
[0073] 1)人工获取:根据视频编码的需求,由用户设定目标复杂度C_target;
[0074] 2)自动获取:根据设备的电源情况,由系统自动生成目标复杂度C_target。
[0075] 当C_frame<=C_target时,进行运动估计和模式选择;当(3/2)*C_target>C_frame>C_target时,进行宏块级复杂度调整,根据宏块级复杂度调整的调整结果,重新计算帧的实际计算复杂度C_frame,直至满足C_frame<=C_target。
[0076] 结合图6所示,对步骤A2中计算得到的实际计算复杂度C_frame与帧的目标复杂度C_target进行比较。
[0077] 如果C_frame超出C_target倍数达到设定阈值的话,即,当C_frame>(3/2)*C_target时,表明该帧内需要强制增加帧内SKIP模式的宏块数量,以大幅降低计算复杂度。其中,帧内SKIP模式的宏块的增加数量,记为β,设定β的值。
[0078] 若C_frame<=C_target,表明该帧的实际复杂度不超过设定值,则直接跳过,不做处理,即β=0。
[0079] 若(3/2)*C_target>C_frame>C_target,进行宏块级复杂度调整,重新计算调整后的帧的实际计算复杂度计算复杂度C_frame。
[0080] 图7示出了宏块级复杂度调整的流程图。如图7中所示,若实际计算的帧复杂度C_frame超出设定值C_target,即(3/2)*C_target>C_frame>C_target时,需要改变预先设定的宏块初始模式,同时改变其计算复杂度档次。具体包括如下步骤:
[0081] 首先,将帧内复杂度档次处于最高水平的宏块的计算复杂度,在原有基础上降低一个计算复杂度档次。然后,计算当前宏块复杂度与宏块的初始复杂度C_MB的差值Cmb_diff,根据Cmb_diff,重新计算该帧调整后的帧级计算复杂度C_frame,更新并记录上述调整后的计算复杂度。根据上述调整后的计算复杂度,再判断是否满足条件要求,如此循环,直至满足C_frame<=C_target为止。
[0082] 本发明实施例的另一方面还公开了一种视频编码复杂度自适应调整装置,结合图8所示,该装置100包括宏块预分类单元110、复杂度估计单元120和比较及调整单元130。
[0083] 宏块预分类单元110对宏块编码模式进行预分类,宏块预分类单元110可以通过以下两种方式之一实现对宏块编码模式的预分类。
[0084] 1)宏块预分类单元110统计每个宏块在前n个参考帧对应位置宏块最终选择的运动矢量及其编码模式,根据统计结果判断宏块适合的编码模式为SKIP模式或Inter16x16模式,对上述宏块编码模式进行预分类。
[0085] 具体的说,首先采用ZMCS准则,统计零运动矢量一致性(ZMC),ZMCt(n,m;i,j)表示宏块内连续包含零运动矢量的大小,
[0086]
[0087] 其中,t为帧的标识号,ZMC0=0。
[0088] 根据ZMCt(n,m;i,j),判断宏块适合的编码模式,
[0089]
[0090] 其中,TMOTION为零运动矢量一致性阈值。(i,j) (n,m;i,j)
[0091] 根据上述计算得到的ZMCSt ,当ZMCt ≥TMOTION时,判断宏块适合的编码模式为SKIP模式或Inter16x16模式。
[0092] 在本实施例中,TMOTION=4,在该条件下,宏块编码模式采用Inter16x16的平均概率为94%。(n,m;i,j)
[0093] 当ZMCt <TMOTION时,进一步采用LBCS准则,判断宏块适合的编码模式。具体的说,首先统计前n个参考帧的大块一致性,根据上述大块一致性,判断宏块前n个参考帧最终编码模式为SKIP或Inter16x16模式。(i,j) (i,j) (i,j)
[0094] 计算当前宏块的大块一致性LBCt ,LBCt =LBCt +1。
[0095]
[0096] 宏块预分类单元110根据上述判断结果,进一步判断宏块适合的编码模式。
[0097]
[0098] 其中,TMODE1和TMODE2为用于评估LBCt(i,j)的阈值。
[0099] 如上述公式中所示,根据LBCt(i,j)<TMODE1,TMODE1≤LBCt(i,j)<TMODE2,TMODE2≤LBCt(i,j)的不同条件下,宏块适合编码模式为Inter16x16模式的概率依次降低。
[0100] 在本实施例中,TMODE1=1、TMODE2=4,在此条件下,当LBCSt(i,j)为高时,宏块适合(i,j)编码模式为Inter16x16的平均概率为90%;当LBCSt 为中时,宏块适合编码模式为
(i,j)
Inter16x16的平均概率为69%;当LBCSt 为低时,宏块适合编码模式为Inter16x16的平均概率为47%。
[0101] 综合利用ZMC准则和LBCS准则,根据宏块的零运动矢量的大小及前n个参考帧的适合编码模式,判断当前宏块适合编码模式为SKIP模式或Inter16x16模式,实现对宏块编码模式的预分类。
[0102] 2)通过采用基于水平方向和垂直方向的方差计算方法来预判宏块纹理复杂度的算法。结合图4所示,首先,宏块预分类单元110计算宏块的水平方向方差Variance_hor和垂直方向方差Variance_ver。
[0103] 具体的说,计算水平方向的宏块方差Variance_hor包括:首先求出宏块内一行象素的均值,再求出每个象素与均值的差值,其平方和即是该行象素的方差。宏块内所有行的方差相加即该宏块的水平方向方差。设宏块内某象素值为F(xi,yj),
[0104]
[0105] 宏块预分类单元110计算垂直方向的宏块方差Variance_ver包括:首先求出宏块内一列象素的均值,再求出每个象素与均值的差值,其平方和即是该列象素的方差。宏块内所有列的方差相加即该宏块的垂直方向方差。设宏块内某象素值为F(xi,yj),
[0106]
[0107] 据此,宏块预分类单元110可以实现预判宏块的初始模式,以决定对于该宏块来说,哪些模式可以直接跳过而不必再做搜索。
[0108] 根据上述水平方向上的方差Variance_hor和垂直方向上的方差Variance_ver,判断Variance_hor同Variance_ver之和与设定阈值threshold的大小。
[0109] 当Variance_hor+Variance_ver<=threshold时,表明该宏块的纹理极其简单,因此,只保留SKIP模式和Inter16×16模式,省略其他所有模式的搜索,可极大地降低计算复杂度。对上述宏块采用基于PSNR的强制性准则编码为SKIP模式。
[0110] 当Variance_hor+Variance_ver>threshold时,进一步判断,当Variance_hor>Variance_ver时,该宏块适合的编码模式判定为Inter 16×16模式、Inter 8×16模式、Inter 8×8模式或Skip模式;
[0111] 当Variance_hor<Variance_ver时,该宏块适合的编码模式判定为Inter16×16模式、Inter 16×8模式、Inter 8×8模式或Skip模式。
[0112] 视频编码复杂度自适应调整装置100还包括复杂度估计单元120。复杂度估计单元120用于调用视频编码复杂度控制模型P-R-D,对宏块按照预分类后的模式进行编码,计算帧的实际计算复杂度C_frame。在初步确定了宏块的初始模式后,将此初始模式记录到该宏块的列表中。
[0113] 结合图6所示,复杂度估计单元120首先根据硬件及其他用户需求设定对该帧期望的目标复杂度C_target,根据初步确定的宏块模式调用P-R-D模型计算本宏块需要的计算复杂度。表1示出了与该P-R-D模型对应的C-R-D表。该C-R-D表与映射复杂度水平的拟合曲线一起,构成编码器算法复杂度控制模型的主要内容。
[0114] 其中,在本实施例中,上述P-R-D模型为y=0.045x+0.1389,图5示出了P-R-D模型的示意图。如图中所示,横轴为计算复杂度水平,纵轴为归一化的复杂度,拟合曲线为y=0.045x+0.1389。
[0115] 由于本发明做到了宏块级的复杂度控制,根据宏块所包含的信息量自适应分配计算复杂度,因此,控制准确度更高,而对整体编码效率的影响也降低到最小。
[0116] 复杂度估计单元120根据上述P-R-D模型,分别计算出各个宏块复杂度。将上述各个宏块复杂度叠加,进一步得到该帧的实际计算复杂度C_frame。
[0117] 编码复杂度控制单元130包括宏块编码模式调整单元131和宏块复杂度更新单元132。结合图6所示,编码复杂度控制单元130对将帧的实际计算复杂度C_frame与帧的目标复杂度C_target进行比较。宏块编码模式调整单元131根据比较结果,如果C_frame超出C_target倍数达到设定阈值的话,即,当C_frame>(3/2)*C_target时,表明宏块编码模式调整单元131需要强制增加该帧内SKIP模式的宏块数量,以大幅降低计算复杂度。其中,帧内SKIP模式的宏块的增加数量,记为β,设定β的值。
[0118] 若C_frame<=C_target,表明该帧的实际复杂度不超过设定值,则直接跳过,不做处理,即β=0。
[0119] 宏块复杂度更新单元132根据实际计算复杂度C_frame与帧的目标复杂度C_target的比较结果,若(3/2)*C_target>C_frame>C_target,则进行宏块级复杂度调整,重新计算调整后的帧的实际计算复杂度计算复杂度C_frame。
[0120] 图7示出了宏块级复杂度调整的流程图。具体地说,若实际计算的帧复杂度C_frame超出设定值C_target,即(3/2)*C_target>C_frame>C_target时,宏块复杂度更新单元132需要改变预先设定的宏块初始模式,同时改变其计算复杂度档次。
[0121] 首先,将帧内复杂度档次处于最高水平的宏块的计算复杂度,在原有基础上降低一个计算复杂度档次。然后,计算当前宏块复杂度与宏块的初始复杂度C_MB的差值Cmb_diff,根据Cmb_diff,重新计算该帧调整后的帧的实际计算复杂度C_frame,更新并记录上述调整后的计算复杂度。根据上述调整后的计算复杂度,再判断是否满足条件要求,如此循环,直至满足C_frame<=C_target为止。
[0122] 综上所述,图3所示的视频编码复杂度自适应调整的框图中,左侧虚框包括的模块用于完成在对视频进行编码前的预处理,即首先进行宏块编码模式的预分类,利用P-R-D模型预估帧的计算复杂度,再由编码复杂度控制器将其余帧的目标计算复杂度进行比较,根据比较结果调整宏块编码模式并更新宏块复杂度记录表。右侧虚框包括的模块用于完成对视频的编码,即运动估计和模式选择。
[0123] 本发明实施例涉及的方法和装置,在手持设备等存在电源约束的应用下,通过自定义的简单数学算子对宏块编码模式进行预分类,初步估计出帧一级的计算复杂度。判断此估计复杂度是否满足给定的目标计算复杂度,进一步决定是否需要重新调整该帧内SKIP模式宏块的占比及每一宏块的复杂度。通过调用P-R-D模型,调整宏块的计算复杂度档次,确定具体的编码模式。根据本发明实施提供的方法和装置可以准确控制视频编码器的整体计算复杂度,同时保持在同等编码复杂度下获得更佳的重建视频质量。
[0124] 本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0125] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0126] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0127] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。