发明内容
本发明的目的旨在至少解决现有技术中的上述问题之一。
为此,本发明的实施例提出一种能够大幅降低编码复杂度的视频编码方法及装置。
根据本发明的一个方面,本发明实施例提出了一种帧类型自适应选择的视频编码方法,所述视频编码方法包括以下步骤:a)根据编码控制参数和编码帧序号,判断输入视频的待编码帧类型为I帧或P帧;b)对于P帧类型,根据当前帧的运动矢量参数及最终模式比例参数,判断所述当前帧的后续待编码帧为传统P帧编码类型或下采样P帧编码类型;以及c)根据待编码帧的类型为I帧、传统P帧或下采样P帧相应地进行I帧编码、传统P帧编码或者下采样P帧编码。
根据本发明进一步的实施例,所述步骤b包括:将所述当前帧的运动矢量参数MVCp与第一运动矢量参考阈值,以及将所述当前帧的最终模式比例参数ModeCp与预定模式比例参考阈值分别进行比较,以判断所述当前帧对应视频内容的纹理复杂程度及运动剧烈程度;以及根据比较结果确定采用所述下采样P帧的个数。
根据本发明再一步的实施例,所述第一运动矢量参考阈值包括运动矢量高参考阈值MVβ与运动矢量低参考阈值MVα,所述预定模式比例参考阈值包括模式高参考阈值Modeβ与模式低参考阈值Modeα,其中所述步骤b1包括:判断是否满足MVCp>MVβ且ModeCp>Modeβ;或者判断是否满足MVβ>MVCp>MVα且Modeβ>ModeCp>Modeα。
其中MVα的取值为40%~50%,MVβ的取值为75%~85%,Modeα的取值为45%~55%,及/或Modeβ的取值为75%~85%。
根据本发明进一步的实施例,通过将所述当前帧内存在的运动矢量与第二预定矢量参考阈值进行比较,统计所述当前帧中运动矢量满足条件(MVx<MVth)&&(MVy<MVth)的运动矢量占所述当前帧总运动矢量的比例,得到所述当前待编码P帧的运动矢量参数MVCp,其中MVx表示所述当前帧中运动矢量的x分量,MVy表示所述当前帧中运动矢量的y分量。并且,通过统计所述当前帧采用的skip模式编码和16×16模式编码的宏块数与总编码宏块数之比,以得到所述当前帧的最终模式比例参数ModeCp。
根据本发明的另一方面,本发明的实施例提出一种帧类型自适应选择的视频编码装置,包括帧类型判断模块,所述帧类型判断模块根据编码控制参数和编码帧序号判断输入视频的待编码帧类型为I帧或P帧;以及对于P帧类型,根据当前帧的运动矢量参数及最终模式比例参数,确定所述当前帧的后续待编码帧为传统P帧编码类型或下采样P帧编码类型;以及编码模块,所述编码模块根据待编码帧的类型为I帧、传统P帧或下采样P帧相应地进行I帧编码、传统P帧编码或者下采样P帧编码。
根据本发明进一步的实施例,所述帧类型判断模块包括:比较单元,所述比较单元将所述当前帧的运动矢量参数MVCp与第一运动矢量参考阈值,以及将所述当前帧的最终模式比例参数与预定模式比例参考阈值进行比较,以判断所述当前帧对应视频内容的复杂程度及运动剧烈程度;以及判决单元,所述判决单元根据所述比较单元的比较结果确定所述当前帧的后续待编码帧采用所述下采样P帧的个数。
根据本发明进一步的实施例,所述第一运动矢量参考阈值包括运动矢量高参考阈值MVβ与运动矢量低参考阈值MVα,所述预定模式比例参考阈值包括模式高参考阈值Modeβ与模式低参考阈值Modeα,其中所述比较单元判断是否满足MVCp>MVβ且ModeCp>Modeβ,或者是否满足MVβ>MVCp>MVα且Modeβ>ModeCp>Modeα。其中MVα的取值为40%~50%,MVβ的取值为75%~85%,Modeα的取值为45%~55%,及/或Modeβ的取值为75%~85%。
所述帧类型判断模块通过将所述当前帧内存在的运动矢量与第二运动矢量参考阈值MVth进行比较,统计所述当前帧中运动矢量满足条件(MVx<MVth)&&(MVy<MVth)的运动矢量占该帧总运动矢量的比例,得到所述当前帧的运动矢量参数MVCp,其中MVx表示所述当前帧中运动矢量的x分量,MVy表示所述当前帧中运动矢量的y分量。
根据本发明进一步的实施例,所述帧类型判断模块通过统计所述当前帧采用的skip模式编码和16×16模式编码的宏块数与总编码宏块数之比,以得到所述当前待编码P帧的最终模式比例参数ModeCp。
与现有方法相比,本发明在编码前直接将原视频图像分辨率降低,并在降低分辨率子帧的基础上进行预测重建编码。因此,对于后面最耗时的帧内预测、运动估计、模式选择等模块的操作大幅降低,显著降低了视频编码的计算复杂度,在低位率情况下编码效率还有所提高。
并且,本发明还从P帧之间的时域相关性出发,根据视频内容确定对视频编码序列中的P帧采用下采样P帧编码还是传统P帧编码,以提高编码的效率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
参考图2,该图为本发明实施例的视频编码装置总体架构示意图。如图所示,该视频编码装置包括帧类型判断模块51和编码模块49。
其中帧类型判断模块51根据编码控制参数和编码帧序号判断输入视频的待编码帧类型为I帧或P帧;以及对于P帧类型,帧类型判断模块51根据当前待编码P帧的运动矢量参数及模式比例参数,进一步确定当前待编码P帧之后的后续待编码帧为对应P帧编码的P帧类型,还是为对应下采样P帧编码的后续待编码P帧(下文中,可以称作为R帧)类型。
编码模块49用于根据待编码帧的类型为I帧、P帧或R帧进行相应的传统I帧编码、传统P帧编码或者下采样P帧编码。
如图所示,编码模块49包括I帧编码单元53、下采样P帧编码单元55和传统P帧编码单元57,其中I帧编码单元53是对于为I类型的待编码I帧,执行传统的I帧编码,并且已编码的I帧可以作为下一待编码帧的参考帧。传统P帧编码单元57对于为P类型的待编码P帧,执行传统的P帧编码,并且已编码的P帧可以作为下一待编码帧的参考帧。下采样P帧编码单元55对应的编码是本发明提出的一种新的编码方式。
编码模块53包括的下采样P帧编码单元55是针对现有主流编码标准的P帧编码存在的问题,提出的一种涉及新型P帧编码的视频编码,以解决现有P帧编码技术中计算复杂度高、编码耗时过大等问题。
下采样P帧编码单元55用来将待编码P帧进行下采样,以得到输入视频的原始分辨率降低为预定倍数,例如1/4倍大小的下采样帧。并且,在该下采样帧的基础上进行重建,得到对应的原始分辨率的重建P帧,即R帧。
为了避免视频信息丢失太多,更好地保证图像质量和编码效率,R帧可以不作为下一待编码帧的参考帧。
这样,为了防止过多插入R帧而影响后续待编码帧与前一参考帧之间的相关性,本发明由帧类型判断模块51根据视频内容,选择在传统P帧之间插入R帧的数量,以提高编码效率。
具体来说,帧类型判断模块51包括比较单元(图中未显示),比较单元将当前帧的运动矢量参数MVCp与预定运动矢量参考阈值(这里称作为第一运动矢量参考阈值),以及将当前帧的及最终模式比例参数ModeCp分别对应与第一预定运动矢量参考阈值及与预定模式比例参考阈值进行比较,以判断当前帧对应视频内容的复杂程度及运动剧烈程度。
运动矢量参数MVCp用来表示视频运动剧烈程度。在传统P帧编码时,设定运动矢量参数MVC=0,运动矢量参考阈值MVth(这里,可以称作为第二运动矢量参考阈值),其中根据经验值,MVth的取值范围可以在2.5~3.5之间。
若该帧存在一个块的运动矢量(MVx<MVth)&&(MVy<MVth),则MVC+1,从而统计得到该帧MVC占总MV个数的比例MVCp。即,帧类型判断模块通过将当前待编码P帧内存在的运动矢量MVCp与预定矢量参考阈值MVth进行比较,统计得到当前待编码P帧的运动矢量参数MVCp。
帧类型判断模块51通过统计当前待编码P帧采用的skip模式编码和16×16模式编码的宏块数与总编码宏块数之比,以得到当前待编码P帧的模式比例参数ModeCp。
在一个实施例中,第一预定运动矢量参考阈值包括运动矢量高参考阈值MVβ与运动矢量低参考阈值MVα,预定模式比例参考阈值包括模式高参考阈值Modeβ与模式低参考阈值Modeα。根据经验值,上述所用到的阈值可以设定如下:MVβ的取值为75%~85%,MVα的取值为40%~50%,ModeαMVβ的取值为75%~85%,及/或Modeα的取值为45%~55%。优选地,设置MVth=3,Modeα=50%,Modeβ=80%,MVα=45%,MVβ=80%。
其中比较单元判断是否满足阈值条件1:MVCp>MVβ且ModeCp>Modeβ,即判断该帧对应视频内容是否很平滑且运动比较简单;或者是否满足阈值条件2:MVβ>MVCp>MVα且Modeβ>ModeCp>Modeα,即判断该视频内容纹理是否存在一定的复杂度,并且运动较为剧烈。若不满足上述阈值条件,表明该视频内容纹理非常复杂,运动也非常剧烈。
帧类型判断模块51还包括判决单元(图中未显示),判决单元根据比较结果对应的阈值条件,对应地确定当前待编码P帧之后采用的R帧个数。
具体来说,若满足阈值条件1即MVCp>MVβ并且ModeCp>Modeβ,则在该P帧编码之后采用下采样P帧编码的帧(R帧)数为2。令R帧数R_num=2;若满足阈值条件2,即MVβ>MVCp>MVα并且Modeβ>ModeCp>Modeα,则在该P帧编码之后采用下采样P帧编码的R帧数为1,令R_num=1;若不满足上述两条件,则该P帧编码之后采用下采样P帧编码的R帧数为0,令R_num=0,该P帧编码之后的待编码P帧采用传统P帧进行编码。
这样,通过帧类型判断模块51,判断并选择例如图1所示编码序列对应的各帧对应的编码方式。根据编码参数,对每个序列组开始时的I帧,采用传统I帧编码。在传统P帧之间,根据视频内容,自适应的决定插入下采样P帧编码的帧数。
例如可以得到如图3所示实施例的视频编码序列。其中I0为I帧编码单元53得到的重建帧,P1、P3及P6为传统P帧编码单元57按照传统P编码得到的重建帧,R2、R4及R5为下采样P帧编码单元55进行下采样编码得到的重建帧,其中在传统P帧之间插入的R帧的数量由帧类型判断模块51确定。
下面,参考图4,该图给出了本发明实施例的视频编码方法。如图所示,该方法包括以下步骤:首先,输入视频的编码序列(步骤302)。然后,在步骤304中,根据编码控制参数和编码帧序号判断输入视频的当前待编码帧类型为I帧还是P帧(包括R帧和P帧)。
其中对于P帧,进一步根据当前待编码P帧的运动矢量参数及模式比例参数,判断当前待编码P帧之后的后续待编码P帧为对应P帧编码的P帧类型或对应下采样P帧编码的R帧类型。
并且相应地,根据编码帧类型对输入视频的待编码帧进行相应的编码,即I帧编码(步骤306)、传统P帧编码(步骤308)以及下采样P帧编码(步骤310)。
其中,下采样P帧编码是本发明提出的一种新的编码方式,是针对现有P帧编码存在的问题,提出的一种涉及新型P帧编码的视频编码,以解决现有P帧编码技术中计算复杂度高、编码耗时过大等问题。
下采样P帧编码步骤用来将待编码P帧进行下采样,以得到输入视频的原始分辨率降低为预定倍数,例如1/4倍大小的下采样帧。并且,在该下采样帧的基础上进行重建,得到对应的原始分辨率的重建P帧,即R帧。
为了避免视频原始信息丢失太多,更好地保证重建图像质量和编码效率,R帧可以不作为下一待编码帧的参考帧。
传统P帧编码步骤是对于为P类型的待编码P帧,执行传统的P帧编码,并且已编码的P帧可以作为下一待编码帧的参考帧。
在各种编码步骤完成后,输出码流(步骤316),并判断是否所有的视频帧编码已经完成(步骤318)。若是则结束,否则重复步骤304到318。
为了防止在下采样P帧编码时过多插入R帧而影响后续待编码帧与前一参考帧之间的时域相关性,本发明在帧类型判断步骤304中,根据视频内容选择在传统P帧之间插入R帧的数量,以提高编码效率。
关于步骤304中如何具体实现对应编码帧类型的判决方法,可以参考图5。
首先输入待编码帧(步骤602),判断下采样P帧编码对应的R帧个数R_num是否为0(该R_num在编码程序初始时设为0,后续由对应步骤修改得到),若为0,跳转到步骤606;否则,跳转到步骤620。
在步骤604之后,根据编码时提供的编码参数和帧序号确定是否选择对当前待编码帧进行I帧编码。若确定为I帧编码,即对该帧进行传统I帧编码(步骤626);否则转到步骤608,即继续判断待编码帧的前一帧是否为I帧编码或者下采样P帧编码。
若待编码帧的前一帧为I帧,或者前一帧为R帧,即对该帧进行传统P帧编码(步骤624);否则转到步骤610。
在步骤610中,获取当前帧的前一P帧中统计的运动矢量参数MVCp和模式比例参数ModeCp。
然后,与设定的模式比例参考阈值Modeα、Modeβ,运动矢量参考阈值MVα、MVβ进行比较。通过结合步骤610和步骤612来判断是否满足阈值条件1和阈值条件2。
即判断是否满足阈值条件1:MVCp>MVβ并且ModeCp>Modeβ,若满足则在该P帧编码之后采用下采样R帧编码帧数为2,令R_num=2(步骤616);以及是否满足阈值条件2,即MVβ>MVCp>MVα并且Modeβ>ModeCp>Modeα,若满足则在该P帧编码之后采用下采样R帧编码帧数为1,令R_num=1(步骤618);若不满足上述两个条件,则该P帧编码之后采用下采样R帧编码帧数为0,令R_num=0,即表示对当前待编码帧执行传统P帧编码(步骤624)。
若上述步骤中得到的R_num>0,则对当前待编码帧采用下采样P帧编码(步骤620),并且R_num-=1(步骤622);否则对当前待编码帧采用传统P帧编码。
在上述步骤中,运动矢量参数MVCp用来表示视频内部运动大小。在传统P帧编码时,设定运动矢量参数MVC=0,运动矢量参考阈值MVth,若该帧存在一个块的运动矢量(MVx<MVth)&&(MVy<MVth),则MVC+1,统计得到该帧MVC占总MV个数的比例MVCp。
模式比例参数ModeCp通过统计该P帧采用的skip和16x16模式编码的宏块数占该帧总编码宏块数的比例得到。其中,根据经验值,所用到的阈值分别可设为MVα的取值为40%~50%,MVβ的取值为75%~85%,Modeα的取值为45%~55%,及/或Modeβ的取值为75%~85%。优选地,设置MVth=3,Modeα=50%,Modeβ=80%,MVα=45%,MVβ=80%。
满足阈值条件1,表明该视频内容很平滑并且运动比较简单;满足阈值条件2,表明该视频内容纹理有一定的复杂度,并且运动较为剧烈;若不满足上述阈值条件,表明该视频内容纹理非常复杂,运动也非常剧烈。
通过上述步骤,根据编码参数,在每个序列组开始时采用I帧编码,在传统P帧之间,根据视频内容自适应的决定插入下采样P帧编码的R帧数。
本发明采用传统I帧、下采样P帧和传统P帧的编码能有效降低计算复杂度,同时,编码性能几无损失。
本发明直接在编码前将原视频图像分辨率降低,这样,对于后面最耗时的帧内预测、运动估计、模式选择等模块的操作大幅降低,显著降低了视频编码的计算复杂度,在低位率情况下编码效率还有所提高。
此外,本发明根据编码参数,对每个序列组开始时的I帧采用传统I帧编码。在传统P帧之间,根据视频内容例如纹理复杂度和运动的程度等,自适应的决定插入下采样P帧编码的R帧数。这样,能够在保证编码后视频的质量和失真度前提下,显著降低计算复杂度。
本发明思想与现有的快速算法不存在冲突,可以在现有快速算法的基础上再次大幅降低编码复杂度,同时保持编码质量不降低。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。