应用于H.264到HEVC的帧间快速视频转码方法与流程

文档序号:12731993阅读:376来源:国知局
应用于H.264到HEVC的帧间快速视频转码方法与流程

本发明涉及视频数据的转码,具体地指一种基于统计分析的H.264到HEVC转码方法,用于将H.264/AVC标准的视频数据转码为HEVC标准的视频数据。



背景技术:

MPEG和ITU两大国际组织在2013年正式发布了HEVC新一代数字视频编解码标准,以适应高质量视频应用的发展。HEVC使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,有效地提高了视频编码效率。HEVC依旧是沿用了前几代编码标准的预测加变换的混合编码框架。与H.264不同的是,HEVC扩大了编码块的尺寸大小。在H.264中,编码块的大小是从4×4到16×16,而HEVC将块的大小扩展为4×4到128×128来应对高分辨率视频。同时,HEVC也引入了更为灵活的块结构RQT(Residual Quad-tree Transform),自适应的选择最优大小的变换块。

除此之外,HEVC采用了更为灵活的图像编码结构,对于每一帧图像,HEVC会按照最大编码单元LCU(Largest Coding Unit)来进行编码,LCU的大小通常为64×64,而对于每个LCU,其中又可以划分为更小的编码单元CU(Coding Unit),而在每个CU中,在模式选择过程可以划分为预测单元PU(Prediction Unit),在变换过程中有可以划分为变换单元TU(Transform Unit)。目前网络上现存的大多数视频主要是基于H.264标准进行压缩编码的,为了减少视频传输的网络带宽及存储空间,需要将现存的H.264编码视频码流转换为HEVC视频码流,以进一步对视频进行压缩。由于HEVC采用了预测加变换的混合编码框架,其编码结构和H.264有部分相似性,如果能够利用H.264解码的码流信息来预测PU的搜索过程,那么就可以跳过一部分的模式搜索过程,除此之外,运动估计过程在HEVC中占了大约70%的编码复杂度,因此可以考虑对运动估计过程进行加速,这样可以有效地加快转码器的转码速度。

HEVC的测试软件(HEVC Test Model,HM)所采用的CU的大小为64×64、32×32、16×16和8×8,分别对应CU的深度层次为0、1、2、3。而在H.264的测试软件(Joint Model,JM)所采用的宏块大小为16×16和8×8。在HEVC帧间编码中,对于深度层次为0和1的CU,其大小并不存在于H.264的宏块结构中。而对于深度层次为2和3的CU,H.264拥有和HEVC一样的分块大小。对于帧间编码,其中主要可以分为模式选择和运动估计两部分。HM的编码器采用递归的方式对LCU进行划分,对于每一层的CU都要利用基于率失真优化(Rate-Distortion Optimization,RDO)的预测来决定PU和TU的划分,其中TU的划分也采用了四叉树的划分方式,在帧间编码中,它允许变换块的大小根据运动补偿块的大小进行自适应的调整。

为了减少四叉树编码结构递归划分所带来的多余的计算,现有的一些方案针对模式决策和运动估计进行了一系列的优化:例如

文献1(参见蒋炜.H.264到HEVC视频转码技术研究[D].浙江大学,2013.)提出了基于统计分析和基于区域特征分析的快速帧间转码算法。该文献首先根据HEVC码流中SKIP模式与H.264码流中各种模式的映射关系对SKIP模式进行提前判定,然后利用预测单元对应编码区域内宏块编码比特数的统计特性,对其分割模式进行了快速选择。同时文中还考虑了编码比特数和编码复杂度之间的关系,通过比较平均编码比特数和分割阀值来确定编码复杂度,借此来确定编码单元的搜索深度。同时对运动矢量进行聚类,对预测单元进行快速的分类。除此之外,一种优化运动估计搜索起点和搜索范围的方法也被给出,算法中将HEVC当前CU对应H.264所有宏块运动矢量的中值直接作为新的搜索起点,并根据运动矢量的最大值来重新限制搜索范围。

文献2(参见Peixoto,E.,Izquierdo,E.,"A complexity-scalable transcoder from H.264/AVC to the new HEVC codec,"Image Processing(ICIP),2012 19th IEEE International Conference on,pp.737-740,Sept.30 2012-Oct.3 2012.)中提出了一种基于运动矢量的转码算法,通过对运动矢量的处理,来得到编码单元划分预测的阈值,通过阈值的限定来提前划分或是终止,由于使用的运动信息较为单调,该算法在加速的同时带来了巨大的BD-rate损失。



技术实现要素:

本发明的目的在于提供一种H.264到HEVC的帧间快速转码方法。

首先对HEVC中深度为0和1的CU的预测模式分布情况进行统计,其中图1给出了2N×2N和AMP模式在QP为22时最优模式中的分布比例。判断对模式决策优化的可行性。通过统计分析,从表中可以直观的看出,2N×2N的划分在其中占据了极大的比例,基本占比都处于70%左右。而四种非对称分割模式累积所占比例不过10%,相对于2N×2N划分来说,这一部分的计算就显现除了冗余性。除了SKIP模式和Intra模式之外,其他PU模式的编码复杂度都是近似的,由于不同PU分布比例的不平衡,整个模式选择过程就显得过于费时。因此在CU深度为0和1时,首先提前判断该CU是否为Skip模式,然后预测是否要进行AMP模式搜索,而在CU深度为2时,则根据码流信息进行模式映射,对CU的划分提前中止。而对于运动估计过程,我们可以定义一些规则来建立H.264运动信息和HEVC编码信息的相关性。首先,对于HEVC的运动搜索过程,我们可以根据获取的运动信息来对搜索范围进行一个限定。其次,运动搜索精度也是一个可以优化的部分,将运动搜索精度分成零运动矢量,整像素精度(不包含零运动矢量),亚像素精度,通过阈值分类来判断运动矢量的整体搜索过程。

为达到上述目的,本发明的给出的技术方案概括为:首先使用JM解码器对原始码流进行解码,在解码过程中提取后续转码所需的码流信息,并得到解码后视频序列。在HEVC重编码时保存部分所需HEVC编码信息,结合H.264解码信息计算阈值,在深度0和1时用于2N×2N模式的提前判定和AMP模式是否需要搜索,在深度2时则判断CU是否继续向下划分。对于运动估计过程,在PU计算运动矢量时,可以根据当前PU对应H.264解码得到的运动矢量最大值,限制其运动矢量的搜索范围,同时根据运动矢量值来确定运动矢量的搜索精度,包括可能产生的零运动矢量。

具体说,本发明技术方案包括以下步骤:

步骤S1:基于H.264通用的测试平台JM,对输入码流进行解码,提取所需码流信息,同时得到解码后的视频序列。随后将解码得到的视频序列送入优化后的HEVC测试平台HM,并在编码过程中获取所需的阈值。

步骤S1.1对于模式选择部分的相关阈值公式如下:

首先对于2N×2N划分,可以确定的是,2N×2N大小内的所有区域共享一个运动矢量,因此其内部的运动矢量方差一定为0。同样的,对于非对称分割的模式,其划分出的两个不规则区域,各自区域都只会包含一个运动矢量,为此本文会在算法中引入运动矢量方差来辅助预测过程,其定义如下:

其中D(MVx)和D(MVy)是前一帧非帧内编码图像中,当前层所有最优模式为SKIP和2N×2N划分时,对应运动矢量的x和y分量的方差,对前一帧内所有符合条件的运动矢量方差进行求和,然后求取其平均值作为阈值。若运动矢量为0,则不进行累加,其中n对应了运动矢量不为0的SKIP和2N×2N的个数。而对于AMP划分,其运动矢量只需按照下式进行计算,

AMPmv=D(MVx)+D(MVy)

其中D(MVx)和D(MVy)是当前层CU对应H.264中所有宏块,其运动矢量的x和y分量的方差,求得的即为用于判定AMP的阈值。而对于当前块的判定,其求值所需的运动矢量只包括AMP划分结果较大部分所对应的H.264宏块运动信息。

除此之外,2N×2N划分中的特殊模式SKIP模式与其他预测模式相比,其编码所需的码字更少,其平均值通常只占个位数的比特数,而其他模式的最小码字一般与SKIP的最大码字相等,因此通过从H.264码流信息中获得的对应块的运动信息,可以提前预测出当前块的运动矢量分布情况,以此来预测当前块PU可能选择的模式。在本文算法中,编码比特数通过如下公式进行处理:

Skipbit=Max(Avg(SKIPbit),Medium(SKIPbit),0.8×Max(SKIPbit))

其中,Avg(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块平均编码比特数,Medium(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块编码比特数的中值,Max(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块编码比特数的最大值,其中0.8是修正系数,通过经验和实验得到。

步骤S1.2对于运动估计部分的相关阈值公式如下:

首先,对于HEVC的运动搜索过程,我们可以根据获取的运动信息来对搜索范围进行一个限定。首先将当前PU对应到H.264中覆盖的所有宏块,对其中包含的运动矢量根据以下公式求取最大运动矢量长度Lmv

Lmv=Max(MVxi,MVyi)

其中MVxi和MVyi表示了对应宏块中所有运动矢量的x和y分量,i是PU对应范围内所有4×4的H.264宏块个数。由于H.264和HEVC的运动估计过程基本相似,Lmv可以一定程度上指导运动搜索的范围,为此结合H.264的运动搜索范围SR264和HEVC初始设置的运动搜索范围SR来确定新的搜索范围,其中SR264可由Lmv向上取最近的2的幂次获得,新的搜索范围SRnew计算如下,

为了应对HEVC设置的SR大于H.264搜索范围的情况,当Lmv介于SR264及其一半时,新的搜索范围SRnew直接选择HEVC初始运动搜索范围,否则根据第二个式子计算,若求得的SRnew大于HEVC设置的初始范围SR,则搜索范围设置为SR。

除了运动搜索范围外,运动搜索精度也是一个可以优化的部分,根据之前的分析,可以将运动搜索精度分成几个部分,零运动矢量,整像素精度(不包含零运动矢量),二分之一像素精度,四分之一像素精度,由于二分之一像素精度占据的比例不大,因此与四分之一像素精度合并为亚像素精度部分。通过获取的运动信息进行统计计数,具体的公式如下,

该公式用于判断零运动矢量,其中MVi是当前PU范围内对应的H.264运动矢量,若MVi都小于β像素长度,则Cmv0判定为true,当前PU的运动矢量为0。其中QP为22和27时β为0.5,QP为32和37时β为1。以下公式则只适用于深度0和深度1:

其中Countp1为当前PU对应范围内整像素运动矢量的个数,NumPU为当前PU中包含的运动矢量个数,当Countp1占据总运动矢量个数7/8以上时,转码效果相对较好,因此设置0.875为修正系数。当Pmv为true时只需进行整像素搜索,否则进入亚像素搜索。对于深度2和深度3,根据当前CU对应到H.264中宏块的划分来确定。若在深度2对应运动矢量精度为整像素且CBP为0,或在深度3对应运动矢量精度为整像素且像素残差为0,则只需要进行整像素搜索。

步骤S2:对于当前CU,在前一帧是帧间预测编码的情况下,对于深度为0的CU,计算当前2N×2N范围内对应H.264所有宏块运动矢量的方差curFmv与前一帧的Thmv作比较,判断是否只搜索SKIP和2N×2N模式,同时计算四种非对称划分模式各自较大块部分对应H.264的宏块运动矢量方差curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv,判断是否需要搜索相应的非对称划分模式。

步骤S3:如果当前深度为1,计算当前2N×2N范围内对应H.264所有宏块运动矢量的方差curFmv和编码比特数curSkipmv,与前一帧的Thmv和Skipbit作比较,判断是否只搜索SKIP和2N×2N模式,两个条件满足一个就进行模式缩减。同时计算四种非对称划分模式各自较大块部分对应H.264的宏块运动矢量方差curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv,判断是否需要搜索相应的非对称划分模式。

步骤S4:如果当前深度为2,搜索当前层所有模式,然后通过H.264的码流信息进行模式映射。若当前CU对应H.264的宏块为SKIP或Inter_16×16模式,则判定不进入深度3进行编码搜索。若当前CU对应H.264的宏块为Inter_16×8或Inter_8×16模式,则当对应宏块的CBP(Coded Block Pattern)为0时不继续向下一深度搜索。

步骤S5:在PU搜索的RDO过程中,对运动估计过程实施进一步的优化,具体过程如下。

步骤S5.1进入运动估计后,首先对该PU范围内对应的H.264运动矢量进行统计,计算出Cmv0,根据Cmv0可以直接判断当前PU的运动矢量是否为0。若运动矢量判定为0,则运动搜索过程提前中止。

步骤S5.2根据获取的H.264运动信息和HEVC配置信息,计算出当前PU新的搜索范围SRnew,随后按照SRnew进行整像素搜索。对于深度为0和1的CU,根据当前PU范围对应的H.264宏块,获取所有的运动矢量精度,根据统计结果得出Pmv的值,进而判断是否只需要进行整像素搜索。

步骤S5.3对于深度为2和3的CU,根据当前PU所在CU对应的H.264宏块,获取对应宏块运动矢量信息和残差信息,根据该信息来判断是否只需要进行整像素搜索。

本发明的以上技术方案为实现发明任务体现出的贡献性的关键技术要点体现在以下:

(1)、本发明对深度为0和1的CU采取了预测模式选择优化方法,结合H.264解码信息和HEVC编码信息,设置合适的阈值来对2N×2N模式提前判定,同时判断是否需要搜索AMP模式。在深度为2时,通过H.264解码信息的映射,在搜索完当前层所有的预测模式后,判断是否需要划分到下一层,该方案省去了大量的RDO计算,有效的对CU的编码进行优化。

(2)、本发明考虑到HEVC重编码的运动估计过程可以由H.264解码得到的运动信息进行指导,因此根据H.264解码得到的运动矢量,可以限制运动矢量搜索范围,同时进一步精确运动矢量搜索精度,考虑到视频图像通常会包含部分背景,因此也增加了零运动矢量的判定。

由于采用上述技术方案,本发明具有以下有益效果:本发明综合利用了转码中原始码流的可用信息,可以有效地减少深度0和1的PU搜索数量,并预测深度2的CU是否向下划分。除此之外,还对运动矢量的搜索范围和搜索精度进行优化,在保证图像质量的情况下,提高H.264到HEVC帧间转码效率。

附图说明

图1是本发明实例测试HEVC码流中2N×2N(包含SKIP)和AMP模式占比具体情况(QP=22)。

图2是本发明H.264到HEVC的帧间预测模式选择快速决策算法流程图。

图3是本发明H.264到HEVC的帧间预测快速运动估计算法流程图。

具体实施方式

根据H.264码流信息以及HEVC帧间编码信息,对于H.264到HEVC的转码器中的帧间编码部分,采取快速的模式决策和运动估计方法。对于深度为0、1层的CU,结合H.264码流解码得到的信息和HEVC编码信息获取2N×2N提前判定阈值和非对称划分(Asymmetric Motion Partition,AMP)判定阈值,之后确定其PU的搜索情况。首先根据2N×2N判定阈值对CU进行提前2N×2N模式判决,然后预测PU是否直接判定为2N×2N模式,随后根据AMP判定阈值来判断是否需要搜索AMP模式。对于深度为2的CU,根据H.264的码流信息进行映射,判断是否要进入深度3进行编码。对于运动估计部分,将通过H.264解码信息来确定其运动矢量搜索范围和运动矢量搜索精度。将运动矢量搜索精度分为整像素精度、亚像素精度以及零运动矢量三个部分。该方法结合了PU模式分布的统计特征以及H.264的码流信息,可以减少PU模式的搜索数量,降低运动估计过程的计算复杂度,从而对四叉树进行有效的剪枝并跳过不必要的编码分支。该方法可显著减少H.264到HEVC转码过程中帧间编码的计算复杂度。

以下结合附图所示实施例对本发明作进一步的说明。

步骤1:基于H.264通用的测试平台JM,对输入码流进行解码,提取所需码流信息,同时得到解码后的视频序列。随后将解码得到的视频序列送入优化后的HEVC测试平台HM,并在编码过程中获取所需的阈值。

步骤1.1对于模式选择部分的相关阈值公式如下:

首先对于2N×2N划分,可以确定的是,2N×2N大小内的所有区域共享一个运动矢量,因此其内部的运动矢量方差一定为0。同样的,对于非对称分割的模式,其划分出的两个不规则区域,各自区域都只会包含一个运动矢量,为此本文会在算法中引入运动矢量方差来辅助预测过程,其定义如下:

其中D(MVx)和D(MVy)是前一帧非帧内编码图像中,当前层所有最优模式为SKIP和2N×2N划分时,对应运动矢量的x和y分量的方差,对前一帧内所有符合条件的运动矢量方差进行求和,然后求取其平均值作为阈值。若运动矢量为0,则不进行累加,其中n对应了运动矢量不为0的SKIP和2N×2N的个数。而对于AMP划分,其运动矢量只需按照下式进行计算,

AMPmv=D(MVx)+D(MVy) (2)

其中D(MVx)和D(MVy)是当前层CU对应H.264中所有宏块,其运动矢量的x和y分量的方差,求得的即为用于判定AMP的阈值。而对于当前块的判定,其求值所需的运动矢量只包括AMP划分结果较大部分所对应的H.264宏块运动信息。

除此之外,2N×2N划分中的特殊模式SKIP模式与其他预测模式相比,其编码所需的码字更少,其平均值通常只占个位数的比特数,而其他模式的最小码字一般与SKIP的最大码字相等,因此通过从H.264码流信息中获得的对应块的运动信息,可以提前预测出当前块的运动矢量分布情况,以此来预测当前块PU可能选择的模式。在本文算法中,编码比特数通过如下公式进行处理:

Skipbit=Max(Avg(SKIPbit),Medium(SKIPbit),0.8×Max(SKIPbit)) (3)

其中,Avg(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块平均编码比特数,Medium(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块编码比特数的中值,Max(SKIPbit)是上一帧图像所有最优模式为SKIP模式的对应H.264宏块编码比特数的最大值,其中0.8是修正系数,通过经验和实验得到。

步骤1.2对于运动估计部分的相关阈值公式如下:

首先,对于HEVC的运动搜索过程,我们可以根据获取的运动信息来对搜索范围进行一个限定。首先将当前PU对应到H.264中覆盖的所有宏块,对其中包含的运动矢量根据以下公式求取最大运动矢量长度Lmv

Lmv=Max(MVxi,MVyi) (4)

其中MVxi和MVyi表示了对应宏块中所有运动矢量的x和y分量,i是PU对应范围内所有4×4的H.264宏块个数。由于H.264和HEVC的运动估计过程基本相似,Lmv可以一定程度上指导运动搜索的范围,为此结合H.264的运动搜索范围SR264和HEVC初始设置的运动搜索范围SR来确定新的搜索范围,其中SR264可由Lmv向上取最近的2的幂次获得,新的搜索范围SRnew计算如下,

为了应对HEVC设置的SR大于H.264搜索范围的情况,当Lmv介于SR264及其一半时,新的搜索范围SRnew直接选择HEVC初始运动搜索范围,否则根据第二个式子计算,若求得的SRnew大于HEVC设置的初始范围SR,则搜索范围设置为SR。

除了运动搜索范围外,运动搜索精度也是一个可以优化的部分,根据之前的分析,可以将运动搜索精度分成几个部分,零运动矢量,整像素精度(不包含零运动矢量),二分之一像素精度,四分之一像素精度,由于二分之一像素精度占据的比例不大,因此与四分之一像素精度合并为亚像素精度部分。通过获取的运动信息进行统计计数,具体的公式如下,

该公式用于判断零运动矢量,其中MVi是当前PU范围内对应的H.264运动矢量,若MVi都小于β像素长度,则Cmy0判定为true,当前PU的运动矢量为0。其中QP为22和27时β为0.5,QP为32和37时β为1。以下公式则只适用于深度0和深度1:

其中Countp1为当前PU对应范围内整像素运动矢量的个数,NumPU为当前PU中包含的运动矢量个数,当Countp1占据总运动矢量个数7/8以上时,转码效果相对较好,因此设置0.875为修正系数。当Pmv为true时只需进行整像素搜索,否则进入亚像素搜索。对于深度2和深度3,根据当前CU对应到H.264中宏块的划分来确定。若在深度2对应运动矢量精度为整像素且CBP为0,或在深度3对应运动矢量精度为整像素且像素残差为0,则只需要进行整像素搜索。

步骤2:首先判断当前CU的深度是否为0,若当前层的深度为0,则统计当前2N×2N范围内对应H.264所有宏块运动矢量的方差curFmv,以及四种非对称划分模式各自较大块部分对应H.264的宏块运动矢量方差curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv,然后算法进行至下一步;否则,算法跳转至步骤4。

步骤3:根据步骤2得到的curFmv是否不大于前一帧的Thmv,进而判断是否只搜索SKIP和2N×2N模式,根据步骤2得到的curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv是否不大于前一帧的AMPmv,进而判断是否需要搜索相应的非对称划分模式,若模式缩减则算法搜索指定的预测模式,之后划分至下一层CU;否则,搜索当前层所有的PU模式后划分至下一层CU。

步骤4:判断当前CU的深度是否为1,若当前层的深度为1,则统计当前2N×2N范围内对应H.264所有宏块运动矢量的方差curFmv和编码比特数curSkipmv,以及四种非对称划分模式各自较大块部分对应H.264的宏块运动矢量方差curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv,然后算法进行至下一步;否则,算法跳转至步骤6。

步骤5:根据步骤4得到的curFmv是否不大于前一帧的Thmv,或在上一层最优模式是2N×2N划分的情况下,curSkipmv是否不大于前一帧的Skipbit,进而判断是否只搜索SKIP和2N×2N模式,两个条件满足一个就进行模式缩减,根据步骤(2)得到的curAMPUmv、curAMPDmv、curAMPLmv、curAMPRmv是否不大于前一帧的AMPmv,进而判断是否需要搜索相应的非对称划分模式,若模式缩减则算法搜索指定的预测模式,之后划分至下一层CU;否则,搜索当前层所有的PU模式后划分至下一层CU。

步骤6:搜索当前层所有的PU模式,根据率失真优化准测(Rate Distortion Optimized,RDO)获取最优预测模式,然后判断当前层的深度。如果当前深度为2,通过H.264的码流信息进行模式映射。若当前CU对应H.264的宏块为SKIP或Inter_16×16模式,则判定不进入深度3进行编码搜索。若当前CU对应H.264的宏块为Inter_16×8或Inter_8×16模式,则当对应宏块的CBP(Coded Block Pattern)为0时不继续向下一深度搜索。

步骤7对于PU搜索的RDO过程,其中的运动估计将按照如下步骤进行。

步骤7.1进入运动估计后,首先对该PU范围内对应的H.264运动矢量进行统计,计算出Cmv0,根据Cmv0可以直接判断当前PU的运动矢量是否为0。若运动矢量判定为0,则运动搜索过程提前中止。

步骤7.2根据获取的H.264运动信息和HEVC配置信息,计算出当前PU新的搜索范围SRnew,随后按照SRnew进行整像素搜索。随后判断当前层深度,若深度为0或1,则进行至下一步;否则,跳转至步骤7.4。

步骤7.3对于深度为0和1的CU,根据当前PU范围对应的H.264宏块,获取所有的运动矢量精度,根据统计结果得出Pmv的值,进而判断是否只需要进行整像素搜索。

步骤7.4对于深度为2和3的CU,根据当前PU所在CU对应的H.264宏块,获取对应宏块运动矢量信息和残差信息,根据该信息来判断是否只需要进行整像素搜索。

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