一种视频图像编码方法和装置转让专利

申请号 : CN201010527495.5

文献号 : CN102457728B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈航锋

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种视频图像编码方法:按照现有方法对视频图像中的第一个GOP进行编码,判断当前已编码的GOP中的图像质量是否下降,如果是,按照优先跳帧的原则对下一个GOP中的图像进行编码;否则,将当前GOP的实际码率作为下一个GOP的编码码率,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率;根据编码码率与目标码率的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。本发明同时公开了一种视频图像编码装置,应用本发明所述的视频图像编码方法和装置,不仅能够稳定视频图像的质量,而且,在视频图像质量稳定的情况下,目标帧率和目标码率都能够自适应网络。

权利要求 :

1.一种视频图像编码方法,其特征在于,该方法包括:

A1.将视频图像中的第一个图像组GOP作为当前GOP,对当前GOP中的图像进行编码后,执行步骤A2;

A2.判断当前GOP中的图像质量是否下降,如果是,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP中的图像进行编码后,返回执行步骤A2;否则,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;

A3.根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;

A4.判断当前GOP是否是最后一个GOP,如果是,则结束整个工作流程;否则,返回执行步骤A2,直至当前GOP为最后一个GOP;

其中,步骤A3中根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码包括:当Be>(1+A%)*Bs时,清零表征Be和Bs关系的两个统计值S0和S1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;当当前跳帧级别为最高跳帧级别时,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,所述B%表示CBR码率控制允许的最大超标值,5<B≤15且B>A,当Be>(1+B%)*Bs时,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,当Be≤(1+B%)*Bs时,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;

当Be<Bs时,将表征Be和Bs关系的两个统计值S0和S1各加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;

判断S0>T0或S1>T1中的一个是否成立,所述T0和T1分别表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并分别清零S0和S1后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;

当Bs≤Be≤(1+A%)*Bs时,清零表征Be和Bs关系的统计值S0,并将表征Be和Bs关系的统计值S1加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;判断S1>T1是否成立,所述T1表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。

2.根据权利要求1所述的方法,其特征在于,所述对当前GOP中的图像进行编码包括:

预测编码器输出视频码流的可用传输带宽,根据所述预测的可用传输带宽设置编码器的目标帧率的初始值,使得编码器根据所述设置的目标帧率初始值进行视频编码;

根据编码器输入视频图像的复杂度或输出视频码流大小,预测视频图像将要跳帧的数目;

根据所述预测的跳帧数目逐级调整所述编码器的目标帧率,使得编码器根据所述调整后的目标帧率进行视频编码。

3.根据权利要求1所述的方法,其特征在于,所述的跳帧表是根据采集帧率和编码帧率建立的,所述跳帧表中包含了跳帧级别及其对应的编码帧率。

4.根据权利要求3所述的方法,其特征在于,需要编码的第n帧在采集的fc帧图像内的位置In可通过如下公式计算,

In=ceil(Fn*fc/fe),

其中,fc为采集帧率,fe为编码帧率,Fn为需要编码的第n帧,n∈[0,fe-1],所述ceil为向上取整。

5.一种视频图像编码装置,其特征在于,该装置包括:质量检测模块、码率设置模块和编码模块,其中,

所述质量检测模块,用于判断当前图像组GOP中的图像质量是否下降;

所述码率设置模块,用于当质量检测模块判断出当前GOP中的图像质量没有下降时,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;

所述编码模块,用于对视频图像中的第一个GOP进行编码;和,当质量检测模块判断出当前GOP中的图像质量下降时,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP进行编码;和,当质量检测模块判断出当前GOP中的图像质量没有下降时,根据码率设置模块中的编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP进行编码;

其中,所述编码模块,用于:

当Be>(1+A%)*Bs时,清零表征Be和Bs关系的两个统计值S0和S1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且

0<A≤10;当当前跳帧级别为最高跳帧级别时,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,所述B%表示CBR码率控制允许的最大超标值,5<B≤15且B>A,当Be>(1+B%)*Bs时,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块建立的跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,当Be≤(1+B%)*Bs时,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;

当Be<Bs时,将表征Be和Bs关系的两个统计值S0和S1各加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;

判断S0>T0或S1>T1中的一个是否成立,所述T0和T1分别表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并分别清零S0和S1后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;

当Bs≤Be≤(1+A%)*Bs时,清零表征Be和Bs关系的统计值S0,并将表征Be和Bs关系的统计值S1加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;判断S1>T1是否成立,所述T1表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。

6.根据权利要求5所述的装置,其特征在于,该装置还包括跳帧表建立模块,用于根据采集帧率和编码帧率建立跳帧表,所述跳帧表中包含了跳帧级别及其对应的编码帧率。

说明书 :

一种视频图像编码方法和装置

技术领域

[0001] 本发明涉及视频通信技术领域,特别涉及一种视频图像编码方法和装置。

背景技术

[0002] 在视频通信领域,通信信道带宽都是恒定、有限的,而在单纯的视频编码压缩系统中,原始视频数据经过编码压缩后得到的码流,其码率是变化的。码率不断变化的码流在恒定有限带宽的信道中传输时会存在如下问题:当码率较小时,会引起通信信道带宽资源的浪费;当码率过大时,会引起视频图像数据的丢失。
[0003] 目前,在视频编码中,通常通过引入码率控制将压缩编码的码流控制在一定的波动范围之内,图1给出了现有视频图像编码的原理示意图。如图1所示,编码器的码率控制参数包括目标帧率和目标码率,目标帧率和目标码率是编码器实际想要达到的输出帧率和码率,该编码方法主要包括以下步骤:
[0004] 步骤101:预测当前网络可用带宽资源,即编码器输出视频码流的可用传输带宽。
[0005] 步骤102:根据预测的可用的带宽资源,设置编码器的初始码率控制参数,包括目标帧率和目标码率和每帧的目标码流等。
[0006] 本步骤中,可以将目标码率设置成与可用带宽相等,或者小于可用带宽,以预留冗余保证可靠性;而目标帧率则可以综合可用带宽、编码器性能和想要达到的图像质量等因素进行设置,一般可以取经验值。
[0007] 这里每帧的目标码流等于每帧编码所需的比特(bit)数,例如,目标码率为1Mbps,目标帧率为25帧/秒,则每帧的目标码流为(1/25Mbit)/帧。
[0008] 步骤103:预测编码器所编码的视频图像将要跳帧的数目。
[0009] 本步骤中,可根据编码器的输入图像复杂度或编码器输出视频码流的大小等情况预测图像将要跳帧的数目。例如,编码器当前输入的图像比较复杂,用了较多的比特进行编码,那么为了保证实际输出码率不超过目标码率,则需要对下一时刻的帧进行跳帧处理,且当前输入的图像用越多的比特进行编码,则下一时刻跳帧的数目越多。同样,如果编码器输出视频码流较大,则表示当前输出帧用了较多比特进行编码,需要进行跳帧处理。
[0010] 步骤104:根据当前可用网络带宽资源以及跳帧的数目获得需要调整的目标帧率级数,这里目标帧率被分为若干级,便于逐级调整,根据需要调整的帧率级数获取需要更新的目标帧率。
[0011] 本步骤中,设置大小不同的多级目标帧率;其中,所述多级目标帧率中的最大值不超过所述编码器输出视频码流的可用传输带宽所承受的范围,至于分多少级以及各级之间的间隔这里不做限定。然后根据预测的跳帧数对当前的目标帧率进行调整,当跳帧数较大时将目标帧率进行下调,当跳帧数较小时将目标帧率进行上调。
[0012] 步骤105:将更新后的目标帧率反馈给编码器作为码率控制参数。
[0013] 至此,即完成了现有视频图像编码的原理。
[0014] 通过上述分析可以看出,在现有所采用的视频编码方法中,编码器的目标帧率是通过预测的跳帧数目来调整的,而预测的跳帧数目仅仅是根据编码器的输入图像复杂度或编码器输出视频码流的大小来得到的,并没有考虑到输入图像之间的相关度,由此,可能会导致某些图像跳帧不够而导致码率超标,也即现有的视频编码方法仅能够保证目标帧率能够自适应网络,而并没有考虑目标码率是否能够自适应;此外,现有的视频编码方法中,在预测跳帧数目时没有考虑图像质量,可能会导致视频图像质量的下降。

发明内容

[0015] 有鉴于此,本发明提供了一种视频图像编码方法,不仅能够稳定视频图像的质量,而且,在视频图像质量稳定的情况下,目标帧率和目标码率都能够自适应网络。
[0016] 本发明还提供了一种视频图像编码装置,不仅能够稳定视频图像的质量,而且,在视频图像质量稳定的情况下,目标帧率和目标码率都能够自适应网络。
[0017] 为了达到上述目的,本发明提出的技术方案为:
[0018] 一种视频图像编码方法,该方法包括:
[0019] A1.将视频图像中的第一个图像组GOP作为当前GOP,按照现有方法对当前GOP中的图像进行编码后,执行步骤A2;
[0020] A2.判断当前GOP中的图像质量是否下降,如果是,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP中的图像进行编码后,返回执行步骤A2;否则,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;
[0021] A3.根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;
[0022] A4.判断当前GOP是否是最后一个GOP,如果是,则结束整个工作流程;否则,返回执行步骤A2,直至当前GOP为最后一个GOP。
[0023] 所述按照现有方法对当前GOP中的图像进行编码包括:
[0024] 预测编码器输出视频码流的可用传输带宽,根据所述预测的可用传输带宽设置编码器的目标帧率的初始值,使得编码器根据所述设置的目标帧率初始值进行视频编码;
[0025] 根据编码器输入视频图像的复杂度或输出视频码流大小,预测视频图像将要跳帧的数目;
[0026] 根据所述预测的跳帧数目逐级调整所述编码器的目标帧率,使得编码器根据所述调整后的目标帧率进行视频编码。
[0027] 所述的跳帧表是根据采集帧率和编码帧率建立的,所述跳帧表中包含了跳帧级别及其对应的编码帧率。
[0028] 需要编码的第n帧在采集的fc帧图像内的位置In可通过如下公式计算,[0029] In=ceil(Fn*fc/fe),
[0030] 其中,fc为采集帧率,fe为编码帧率,Fn为需要编码的第n帧,n∈[0,fe-1],所述ceil为向上取整。
[0031] 步骤A3中根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码包括:
[0032] 当Be>(1+A%)*Bs时,清零表征Be和Bs关系的两个统计值S0和S1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0033] 当当前跳帧级别为最高跳帧级别时,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,所述B%表示CBR码率控制允许的最大超标值,5<B≤15且B>A,当Be>(1+B%)*Bs时,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,当Be≤(1+B%)*Bs时,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0034] 步骤A3中根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码包括:
[0035] 当Be<Bs时,将表征Be和Bs关系的两个统计值S0和S1各加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0036] 判断S0>T0或S1>T1中的一个是否成立,所述T0和T1分别表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并分别清零S0和S1后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0037] 步骤A3中根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码包括:
[0038] 当Bs≤Be≤(1+A%)*Bs时,清零表征Be和Bs关系的统计值S0,并将表征Be和Bs关系的统计值S1加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0039] 判断S1>T1是否成立,所述T1表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0040] 一种视频图像编码装置,该装置包括:质量检测模块、码率设置模块和编码模块,其中,
[0041] 所述质量检测模块,用于判断当前图像组GOP中的图像质量是否下降;
[0042] 所述码率设置模块,用于当质量检测模块判断出当前GOP中的图像质量没有下降时,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;
[0043] 所述编码模块,用于按照现有方法对视频图像中的第一个GOP进行编码;和,当质量检测模块判断出当前GOP中的图像质量下降时,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP进行编码;和,当质量检测模块判断出当前GOP中的图像质量没有下降时,根据码率设置模块中的编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP中进行编码。
[0044] 该装置还包括跳帧表建立模块,用于根据采集帧率和编码帧率建立跳帧表,所述跳帧表中包含了跳帧级别及其对应的编码帧率。
[0045] 所述编码模块,用于
[0046] 当Be>(1+A%)*Bs时,清零表征Be和Bs关系的两个统计值S0和S1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0047] 当当前跳帧级别为最高跳帧级别时,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,所述B%表示CBR码率控制允许的最大超标值,5<B≤15且B>A,当Be>(1+B%)*Bs时,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块建立的跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,当Be≤(1+B%)*Bs时,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0048] 所述编码模块,用于
[0049] 当Be<Bs时,将表征Be和Bs关系的两个统计值S0和S1各加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0050] 判断S0>T0或S1>T1中的一个是否成立,所述T0和T1分别表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并分别清零S0和S1后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0051] 所述编码模块,用于
[0052] 当Bs≤Be≤(1+A%)*Bs时,清零表征Be和Bs关系的统计值S0,并将表征Be和Bs关系的统计值S1加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0053] 判断S1>T1是否成立,所述T1表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0054] 综上所述,本发明所采用的视频图像编码方法和装置,是通过对已编码的当前GOP中的图像质量进行判断,当判断出图像质量下降时,按照优先跳帧、即将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,反之,则将已编码的当前GOP的实际码率作为下一个GOP的编码码率,并设置下一个GOP的目标码率,进而根据编码码率和目标码率的关系确定出当前GOP的当前跳帧级别后,再根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。也即,在对视频图像进行编码时,不仅能够稳定视频图像质量,而且,当视频图像质量稳定的情况下,既考虑到了目标帧率,又考虑到了目标码率,使得目标帧率和目标码率都能够自适应网络。

附图说明

[0055] 图1为现有视频图像编码的原理示意图;
[0056] 图2为本发明视频图像编码方法实施例的工作流程图;
[0057] 图3为本发明视频图像编码装置实施例的结构示意图。

具体实施方式

[0058] 为了解决现有技术中存在的问题,本发明提出了一种新的视频图像编码方法,即通过对已编码的当前GOP中的图像质量进行判断,当判断出图像质量下降时,按照优先跳帧、即将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,反之,则将已编码的当前GOP的实际码率作为下一个GOP的编码码率,并设置下一个GOP的目标码率,进而根据编码码率和目标码率的关系确定出当前GOP的当前跳帧级别后,再根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0059] 基于上述介绍,本发明所述方案的具体实现包括:
[0060] A1.将视频图像中的第一个图像组GOP作为当前GOP,按照现有方法对当前GOP中的图像进行编码后,执行步骤A2;
[0061] A2.判断当前GOP中的图像质量是否下降,如果是,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP中的图像进行编码后,返回执行步骤A2;否则,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;
[0062] A3.根据编码码率Be与目标码率Bs的关系,确定出当前GOP的当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;
[0063] A4.判断当前GOP是否是最后一个GOP,如果是,则结束整个工作流程;否则,返回执行步骤A2,直至当前GOP为最后一个GOP。
[0064] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
[0065] 图2为本发明视频图像编码方法实施例的工作流程图。如图2所示,该流程包括以下步骤:
[0066] 步骤201:建立包含跳帧级别及其对应的编码帧率的跳帧表。
[0067] 需要说明的是,摄像机在采集视频图像时必须设定一种采集制式,比如标清的NTSC制、PAL制,或者高清的1080P60、1080I50、720P60等。每一种采集制式都有其固定的采集帧率,比如NTSC制为30帧每秒,PAL制为25帧每秒,对于采集帧率为30帧每秒的NTSC制,编码帧率可以是1~29帧,可以列举这29个跳帧表值。而对于采集帧率为25帧每秒的PAL制,可以列举编码帧率为1~24的跳帧表值,由此,在本步骤中,跳帧表是根据采集帧率和编码帧率建立的。比如采集帧率为30帧,编码帧率为20帧时的跳帧表中的值为0x1B6DB6DB,其中0x1B6DB6DB的二进制表示为01 10110110 1101 1011 0110 1101 1011,二进制的第0位到第29位分别代表采集帧率的第0帧到第29帧,二进制每一位上的值:0代表该帧不编码,即跳帧;1代表该帧编码,即不跳帧。由于编码帧率为20帧时的跳帧表值二进制数中需要跳帧的10帧图像的位置是均匀地分布在采集的30帧图像内的,从而能够达到均匀跳帧的效果,使得编码后的运动图像连贯。
[0068] 在本步骤中跳帧表的建立可采用穷举法或公式法两种方法,以下分别介绍。
[0069] 穷举法:即根据不同的采集帧率和编码帧率,穷举跳帧表值。将所有制式的跳帧表值都列举出来,即可穷举跳帧表值,跳帧表值列举以均匀跳帧为原则:比如采集帧率为30帧,编码帧率为20帧,跳帧表值为0x1B6DB6DB;采集帧率为30帧,编码帧率为15帧,跳帧表值为0x15555555;采集帧率为25帧,编码帧率为15帧,跳帧表值为0x15AD6B5,以此类推。
[0070] 公式法:该方法根据采集帧率、编码帧率直接计算跳帧表值。假设采集帧率为fc,编码帧率为fe,Fn代表需要编码的第n帧,In代表需要编码的第n帧在采集的fc帧图像内的位置,其中n∈[0,fe-1],则有,
[0071] In=ceil(Fn*fc/fe),其中,ceil为向上取整。
[0072] 还需说明的是,在跳帧表中,每一个跳帧表中的值不仅包含了编码帧率,而且还包含了该编码帧率下的跳帧级别,跳帧级别越高,跳帧数越多,编码帧率越小,反之,则编码帧率越大。具体如何设置编码帧率的跳帧级别可依实际情况而定,以不影响本发明实施例的实现为准。
[0073] 步骤202:设置用于表征编码码率和目标码率关系的两个统计值S0和S1。
[0074] 在本步骤中,S0表示的是编码码率连续小于目标码率的GOP个数;S1表示的是编码码率连续小于(1+A%)倍的目标码率的GOP个数。其中,所述A%表示CBR码率控制允许的最大超标值,且0<A≤10。
[0075] 步骤203:将视频图像中的第一个GOP作为当前GOP。
[0076] 需要说明的是,这里是以GOP为单位来对图像进行编码的,在实际实现时,可采用1s、2s、或其它单位内的图像帧数来对图像进行编码,具体实现过程类同,故不再对其进行赘述。
[0077] 步骤204:按照现有方法对当前GOP中的图像进行编码。
[0078] 需要说明的是,对于视频图像中的第一个GOP,都是通过现有视频图像编码方法对其进行编码的,具体的现有编码方法在前面已论述过,这里不再赘述。
[0079] 步骤205:判断当前GOP中的图像质量是否有下降,如果是,执行步骤206;否则,执行步骤207。
[0080] 在本步骤中,是通过QP是否增大过多来判断图像质量是否有下降的。在进行跳帧之前,都需要通过增大QP来抑制码流超标,而增大QP也就意味着图像细节的丢失,图像质量变差,当QP增大到一定程度时,认为图像质量变差,具体增大到何值可依据具体情况而定,这里不再赘述。
[0081] 步骤206:将下一个GOP作为当前GOP,并将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,直接执行步骤220。
[0082] 需要说明的是,在本步骤中,当判断出刚编码完的GOP中的视频图像质量有下降时,需要按照优先跳帧的原则确定出下一个要编码的GOP的跳帧级别,具体选取高于当前跳帧级别的数目可依据图像质量而定,以不影响本发明实施例的实现为准。
[0083] 还需说明的是,在本步骤中,当前跳帧级别也是根据步骤201中建立的跳帧表来确定的。
[0084] 步骤207:将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP。
[0085] 当判断出刚编码完的GOP中的视频图像质量没有下降时,需要将刚编码完的GOP的实际编码码率作为下一个要编码的GOP的编码码率。
[0086] 步骤208:设置当前GOP的目标码率Bs。
[0087] 需要说明的是,在本步骤中,目标码率Bs是依据为当前GOP所分配的通信信道带宽来设置的,具体如何依据通信信道带宽设置码率已为现有技术,这里不再赘述。
[0088] 步骤209:判断编码码率Be与目标码率Bs的关系,当判断出Be>(1+A%)*Bs时,执行步骤210-213;当判断出Be<Bs时,执行步骤214-216;否则,即当判断出Bs≤Be≤(1+A%)*Bs时,执行步骤217-219。
[0089] 需要说明的是,步骤210-213、步骤214-216、以及步骤217-219是三个不同的处理过程,它们之间并没有先后顺序之分,下面分别介绍其具体处理过程。
[0090] 步骤210-213的处理过程为:
[0091] 步骤210:清零统计值S0和S1。
[0092] 由于S0和S1分别表示的是编码码率连续小于目标码率的GOP个数和编码码率连续小于(1+A%)倍的目标码率的GOP个数,在本步骤中,Be>(1+A%)*Bs,即编码码率大于(1+A%)倍的目标码率,因此,需要将S0和S1清零。
[0093] 步骤211:判断当前跳帧级别,当当前跳帧级别为最高跳帧级别时,执行步骤220;当当前跳帧级别为次高跳帧级别时,执行步骤212;否则,执行步骤213。
[0094] 步骤212:当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,当Be>(1+B%)*Bs时,执行步骤213;否则,执行步骤220。
[0095] 需要说明的是,所述B%也表示CBR码率控制允许的最大超标值,5<B≤15,且B>A。
[0096] 由于最高跳帧级别所对应的编码帧率很小,对视频图像影响比较大,因此,当采用最小编码帧率进行编码时需要相对更加严格的条件,即这里的Be>(1+B%)*Bs。
[0097] 步骤213:将高一级跳帧级别作为当前跳帧级别后,执行步骤220。
[0098] 至此,即完成了步骤210-213的具体处理过程。
[0099] 步骤214-216的处理过程为:
[0100] 步骤214:将统计值S0和S1各加1。
[0101] 在本步骤中,由于Be<Bs,且S0和S1分别表示的是编码码率连续小于目标码率的GOP个数和编码码率连续小于(1+A%)倍的目标码率的GOP个数,则需要将S0和S1分别加1。
[0102] 步骤215:判断S0>T0或S1>T1中的一个是否成立,如果是,执行步骤216;否则,执行步骤220。
[0103] T0和T1分别表示S0和S1两个统计值能够达到的最大值,且T0>T1,具体取值可依据实际情况而定。
[0104] 步骤216:将低一级跳帧级别作为当前跳帧级别,并分别清零统计值S0和S1后,执行步骤220。
[0105] 在本步骤中,当S0或S1中有一个超过能够达到的最大值时,则需将跳帧级别降低,从而避免了编码帧率波动频繁而导致的图像质量稳定性的下降。
[0106] 至此,即完成了步骤214-216的具体处理过程。
[0107] 步骤217-219的处理过程为:
[0108] 步骤217:清零统计值S0,并将统计值S1加1。
[0109] 在本步骤中,由于Bs≤Be≤(1+A%)*Bs,而S0和S1分别表示的是编码码率连续小于目标码率的GOP个数和编码码率连续小于(1+A%)倍的目标码率的GOP个数,因此,需要将S0清零,将S1加1。
[0110] 步骤218:判断S1>T1是否成立,如果是,执行步骤219;否则,执行步骤220。
[0111] 步骤219:将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,执行步骤220。
[0112] 在本步骤中,当Bs≤Be≤(1+A%)*Bs的次数连续超过T1时,则需将跳帧级别降低,从而避免了跳帧级别长期处于某一级别而不能恢复的问题。
[0113] 至此,即完成了步骤214-216的具体处理过程。
[0114] 步骤220:根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0115] 步骤221:判断当前GOP是否为视频图像中的最后一个GOP,如果是,则结束整个工作流程;否则,返回执行步骤205,直至当前GOP为视频图像中的最后一个GOP。
[0116] 至此,即完成了本发明视频图像编码方法实施例的整个工作流程。
[0117] 基于上述方法,图3为本发明视频图像编码装置实施例的结构示意图。如图3所示,该装置包括:质量检测模块31、码率设置模块32和编码模块33,其中,[0118] 所述质量检测模块31,用于判断当前GOP中的图像质量是否下降;
[0119] 所述码率设置模块32,用于当质量检测模块31判断出当前GOP中的图像质量没有下降时,将当前GOP的实际码率作为下一个GOP的编码码率Be,并将下一个GOP作为当前GOP后,设置当前GOP的目标码率Bs;
[0120] 所述编码模块33,用于按照现有方法对视频图像中的第一个GOP进行编码;和,当质量检测模块31判断出当前GOP中的图像质量下降时,将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对下一个GOP进行编码;和,当质量检测模块31判断出当前GOP中的图像质量没有下降时,根据码率设置模块32中的编码码率Be与目标码率Bs的关系,确定出当前跳帧级别后,根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP的下一个GOP进行编码。
[0121] 进一步地,该装置还包括跳帧表建立模块34,用于根据采集帧率和编码帧率建立跳帧表,所述跳帧表中包含了跳帧级别及其对应的编码帧率,则,
[0122] 当质量检测模块31判断出当前GOP中的图像质量没有下降,且Be>(1+A%)*Bs时,所述编码模块33,用于清零表征Be和Bs关系的两个统计值S0和S1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0123] 当当前跳帧级别为最高跳帧级别时,根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;当当前跳帧级别为次高跳帧级别时,判断Be与(1+B%)*Bs的大小,所述B%表示CBR码率控制允许的最大超标值,5<B≤15且B>A,当Be>(1+B%)*Bs时,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,当Be≤(1+B%)*Bs时,直接根据跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,将高一级跳帧级别作为当前跳帧级别后,根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0124] 或,当质量检测模块31判断出当前GOP中的图像质量没有下降,且Be<Bs时,所述编码模块33,用于将表征Be和Bs关系的两个统计值S0和S1各加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0125] 判断S0>T0或S1>T1中的一个是否成立,所述T0和T1分别表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并分别清零S0和S1后,根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0126] 或,当质量检测模块31判断出当前GOP中的图像质量没有下降,且Bs≤Be≤(1+A%)*Bs时,所述编码模块33,用于清零表征Be和Bs关系的统计值S0,并将表征Be和Bs关系的统计值S1加1,所述S0表示编码码率Be连续小于目标码率Bs的GOP个数,所述S1表示编码码率Be连续小于(1+A%)倍的目标码率Bs的GOP个数,所述A%表示恒定比特率CBR码率控制允许的最大超标值,且0<A≤10;
[0127] 判断S1>T1是否成立,所述T1表示S0和S1两个统计值能够达到的最大值,如果是,将低一级跳帧级别作为当前跳帧级别,并清零统计值S1后,根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码;否则,直接根据跳帧表建立模块34建立的跳帧表中与当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。
[0128] 至此,即得到了本发明所采用的视频图像编码装置。图3所示装置的具体实现流程可参见图2,这里不再赘述。
[0129] 总之,本发明所采用的视频图像编码方法和装置,通过对已编码的当前GOP中的图像质量进行判断,当判断出图像质量下降时,按照优先跳帧、即将高于当前跳帧级别一级以上的跳帧级别作为当前跳帧级别后,根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码,反之,则将已编码的当前GOP的实际码率作为下一个GOP的编码码率,并设置下一个GOP的目标码率,进而根据编码码率和目标码率的关系确定出当前GOP的当前跳帧级别后,再根据跳帧表中当前跳帧级别对应的编码帧率对当前GOP中的图像进行编码。也即,在对视频图像进行编码时,不仅能够稳定视频图像质量,而且,当视频图像质量稳定的情况下,既考虑到了目标帧率,又考虑到了目标码率,使得目标帧率和目标码率都能够自适应网络。
[0130] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。