一种对实时视频信号在AVS编码过程中VBR码率控制的方法转让专利

申请号 : CN200710161158.7

文献号 : CN101188755B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄晁郑从卓徐涛杨文勇王标

申请人 : 宁波中科集成电路设计中心有限公司

摘要 :

本发明公开了一种对实时视频信号在AVS编码过程中VBR码率控制的方法,根据当前图像组的预测复杂度分配当前图像组的目标码率,对当前图像组内的图像采取平均分配目标比特数,再根据率失真模型计算图像的量化参数,当检测到场景切换时,对复杂度突变的图像所处的图像组更新相应剩余比特数,确保了码率控制的准确性,且能较好的逼近限定的码率,提高视频质量,避免因质量波动造成的总体质量下降,使得视频质量的平缓性更好;本发明能够较好的根据当前图像组的预测复杂度来分配当前图像组的目标码率,对信源具有较强的适应性;本发明具有不需要对图像预编码分析,一次编码的特点,计算复杂度低,运算量小,可以降低编码的复杂度,提高实时性。

权利要求 :

1.一种对实时视频信号在AVS编码过程中VBR码率控制的方法,信号采集装置从实际场景获取视频信号并对所述的视频信号在编码器中AVS编码过程中进行VBR码率控制,所述的视频信号包括多个图像组,其特征在于AVS编码的每个图像组包括一个I帧图像和至少一个P帧图像,对实时视频信号在AVS编码过程中VBR码率控制的方法包括以下步骤:a.初始化视频信号的初始量化参数,设定初始目标码率,并获取编码器的帧率、一个图像组包含图像的帧数和图像的高与宽,记图像的高和宽的乘积为图像的大小;

b.判断当前帧图像所处的当前图像组是否为视频信号的第一个图像组,如果是,则当前图像组的目标码率为初始目标码率,当前图像组的目标比特数为当前图像组的目标码率和一个图像组包含图像的帧数与帧率之比的乘积,并执行步骤f;否则,继续执行;

c.根据前一图像组的平均实际复杂度和所有已编码的图像组的平均实际复杂度,用公式计算得到当前图像组的预测复杂度XGopCurEst,其中,XGopPre为前一图像组的平均实际复杂度,XGopAvg为所有已编码的图像组的平均实际复杂度;

d.根据c步计算得到的当前图像组的预测复杂度XGopCurEst,通过式计算得到当前图像组的目标码率GopBitRate,其中,XGopCurEst为当前图像组的预测复杂度,PrePQpAVG为前一图像组的平均量化参数,XGopAvgCurEst为所有已编码的图像组的实际平均复杂度和当前图像组的预测复杂度的加权计算得到的平均复杂度,TotalAvgQp为所有已编码的图像组的平均量化参数,avg_bit_rate为所有已编码的图像组的平均实际码率;

e.根据步骤d中计算得到的当前图像组的目标码率GopBitRate,计算当前图像组的目标比特数,其值为当前图像组的目标码率和一个图像组包含图像的帧数与帧率之比的乘积;

f.判断当前帧图像是否为当前图像组的I帧图像或第一个P帧图像,如果是,则当当前图像组为第一个图像组时,I帧图像或第一个P帧图像的量化参数为初始量化参数,并通过初始量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;当当前图像组不是第一个图像组时,I帧图像或第一个P帧图像的量化参数为前一图像组的平均量化参数,并通过前一图像组的平均量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;否则,继续执行;

g.根据当前图像组的目标比特数,通过式计算得到当前帧图像的目标比特数FrameBits,其中,RemainBits为当前图像组的剩余比特数,其值为当前图像组的目标比特数与当前图像组占用的实际比特数总和之差,picnum_Gop为一个图像组包含图像的帧数,NumberofCodedPFrame为当前图像组的所有已编码的P帧图像的帧数;

h.根据步骤g中计算得到的当前帧图像的目标比特数,先通过率失真模型计算得到模型参数C,其中R为前一P帧图像占用的实际比特数,X为前一P帧图像的实际复杂度,QP为前一P帧图像的量化参数;再通过计算得到当前帧图像的量化参数QP’,其中X’为当前帧图像的预测复杂度,其值为前一帧图像的实际复杂度,R’为当前帧图像的目标比特数;然后通过当前帧图像的量化参数对当前帧图像进行编码;

i.i-①如果当前编码完的图像是I帧图像,则统计当前帧图像占用的实际比特数,当前图像组的剩余比特数为当前图像组的目标比特数与当前帧图像占用的实际比特数之差,当前图像组占用的实际比特数总和的初值为当前帧图像占用的实际比特数;i-②如果当前编码完的图像是P帧图像,则统计当前帧图像占用的实际比特数,计算当前帧图像的实际复杂度,其值为当前帧图像占用的实际比特数与当前帧图像对应其参考图像的差值平方和的乘积除以图像的大小,当当前帧图像为当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和的初值为当前帧图像的实际复杂度,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和的初值为当前帧图像的量化参数;当当前帧图像不是当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和为当前帧图像编码前的当前图像组的实际复杂度总和与当前帧图像的实际复杂度之和,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和为当前帧图像编码前的当前图像组的量化参数总和与当前帧图像的量化参数之和;

j.如果当前图像组不是第一个图像组且当前帧图像是P帧图像,所有已编码的图像组每帧图像占用的平均实际比特数为所有已编码的图像组的平均实际码率和帧率的商,并判断当前帧图像占用的实际比特数和当前帧图像的量化参数的乘积是否大于所有已编码的图像组每帧占用的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的2~3倍或小于所有已编码的图像组的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的0.4~0.5倍,如果是,则确定检测到场景切换,通过式更新当前图像组的剩余比特数,式中RemainBits为当前图像组的剩余比特数,FrameReallyBits为当前帧图像占用的实际比特数,avg_bit_rate为所有已编码的图像组的平均实际码率,FRAMERATE为帧率;

k.判断是否存在后续的视频信号,如果存在,则再判断编码后的图像是否为当前图像组的最后一个图像,如果是,则根据步骤i得到的当前图像组的实际复杂度总和、量化参数总和及占用的实际比特数总和,计算当前图像组的平均量化参数和平均实际复杂度、所有已编码的图像组的平均实际复杂度、平均量化参数和平均实际码率,然后跳转至步骤b,否则,执行步骤f;如果不存在,则结束。

说明书 :

技术领域

本发明涉及一种视频信号处理方法,尤其是涉及一种对实时视频信号在AVS编码过程中VBR码率控制的方法。

背景技术

AVS(Audio Video coding Standard,数字音视频编解码技术标准)是中国第一个具有自主知识产权的第二代数字音视频编解码标准,全称是《信息技术先进音视频编码标准》,它的编码效率和竞争性与国际标准MPEG-4/H.264相当,代表了当前国际先进水平。
码率控制是视频编码的重要技术之一,无论是在视频传输、视频存储以及硬件设计过程中都起着极为重要的作用。VBR(Variable Bit Rate,可变码率)码率控制编码在理想状态下是根据视频序列的信源特性,动态地分配编码比特数,使得编码产生视频质量恒定。各个国际视频编解码标准都有其各自的典型码率控制方法,如:MPEG-2的TM5、H.263的TMN8、MPEG-4的VM8及H.264的JVT-H017,由于AVS和H.264有很大的相似性,因此AVS在参考代码rm52j里采取的码率控制方法也采用JVT-H017。
JVT-H017码率控制方法的主要过程如下:
(1)根据流体流动阻塞模型计算当前帧图像的目标比特数;
(2)为当前帧图像中未编码的基本单元平均分配剩余的比特数;
(3)根据MAD(Mean Absolute Difference,差值的平方和)线性预测模型和前一帧图像中相同位置基本单元的MAD预测当前帧图像中未编码的基本单元的MAD;
(4)根据二次率失真模型计算当前帧图像中未编码的基本单元的量化参数;
(5)根据计算得到的量化参数对当前帧图像中所有的基本单元中的每个MB(Macro-block,宏块)做RDO(Rate distortion optimization,率失真优化)运算。
该方法采用了基于泰勒级数展开的二次率失真模型和MAD线性预测模型,在实现过程中通过对可变大小的窗口内的样点进行函数拟和,更新二次R-D(Rate Distortion,率失真)模型和MAD线性预测模型参数,接着去除窗口内的坏点,再次更新二次R-D模型和MAD线性预测模型参数。其中,函数拟和一般采用最小二乘法,要进行多次的矩阵相乘运算,矩阵的大小由窗口的大小决定。该方法由于引入了二次R-D模型和MAD线性预测模型,使得码率控制更加准确,而且能够很好的逼近限定的目标码率;此外,利用该方法能够产生相对平缓的视频质量。但该方法同时存在明显的缺点:
1)二次R-D模型和MAD线性预测模型的引入同时增加了计算复杂度,对于嵌入式处理器,乘运算占有的循环运算要远大于一般的加减、移位运算,对实时的视频编码应用,对嵌入式处理器是个很大挑战;
2)视频编码本身运算量就比较高,再加上运算过程中采用的高运算量的基于宏块,结合RDO的码率控制方法,这将成为编码器实时应用的瓶颈;
3)由于该算法GOP(Group of Picture,图像组)的码率的分配方法和假设参考解码器缓冲机制,限制了前后质量平缓度的进一步提高。

发明内容

本发明所要解决的技术问题是提供一种能够保证产生的视频质量更加平缓、且简单易行、计算复杂度低的对实时视频信号在AVS编码过程中VBR码率控制的方法。
本发明解决上述技术问题所采用的技术方案是:一种对实时视频信号在AVS编码过程中VBR码率控制的方法,信号采集装置从实际场景获取视频信号并对所述的视频信号在AVS编码过程中进行VBR码率控制,所述的视频信号包括多个图像组,每个图像组包括一个I帧图像和至少一个P帧图像,对实时视频信号在AVS编码过程中VBR码率控制的方法包括以下步骤:
a.初始化视频信号的初始量化参数,设定初始目标码率,并获取编码器的帧率、一个图像组包含图像的帧数和图像的高与宽,记图像的高和宽的乘积为图像的大小;
b.判断当前帧图像所处的当前图像组是否为视频信号的第一个图像组,如果是,则当前图像组的目标码率为初始目标码率,当前图像组的目标比特数为当前图像组的目标码率和一个图像组包含图像的帧数与帧率之比的乘积,并执行步骤f;否则,继续执行;
c.根据前一图像组的平均实际复杂度和所有已编码的图像组的平均实际复杂度,通过式计算得到当前图像组的预测复杂度XGopCurEst,其中,XGopPre为前一图像组的平均实际复杂度,XGopAvg为所有已编码的图像组的平均实际复杂度;
d.根据c步计算得到的当前图像组的预测复杂度XGopCurEst,用公式计算得到当前图像组的目标码率GopBitRate,其中,XGopCurEst为当前图像组的预测复杂度,PrePQpAVG为前一图像组的平均量化参数,XGopAvgCurEst为所有已编码的图像组的实际平均复杂度和当前图像组的预测复杂度的加权计算得到的平均复杂度,TotalAvgQp为所有已编码的图像组的平均量化参数,avg_bit_rate为所有已编码的图像组的平均实际码率;
e.根据步骤d中计算得到的当前图像组的目标码率GopBitRate,计算当前图像组的目标比特数,其值为当前图像组的目标码率和一个图像组包含图像的帧数与帧率之比的乘积;
f.判断当前帧图像是否为当前图像组的I帧图像或第一个P帧图像,如果是,则当当前图像组为第一个图像组时,I帧图像或第一个P帧图像的量化参数为初始量化参数,并通过初始量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;当当前图像组不是第一个图像组时,I帧图像或第一个P帧图像的量化参数为前一图像组的平均量化参数,并通过前一图像组的平均量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;否则,继续执行;
g.根据当前图像组的目标比特数,通过式计算得到当前帧图像的目标比特数FrameBits,其中,RemainBits为当前图像组的剩余比特数,其值为当前图像组的目标比特数与当前图像组占用的实际比特数总和之差,picnum_Gop为一个图像组包含图像的帧数,NumberofCodedPFrame为当前图像组的所有已编码的P帧图像的帧数;
h.根据步骤g中计算得到的当前帧图像的目标比特数,先通过率失真模型计算得到模型参数C,其中R为前一P帧图像占用的实际比特数,X为前一P帧图像的实际复杂度,QP为前一P帧图像的量化参数;再通过计算得到当前帧图像的量化参数QP’,其中X’为当前帧图像的预测复杂度,其值为前一帧图像的实际复杂度,R’为当前帧图像的目标比特数;然后通过当前帧图像的量化参数对当前帧图像进行编码;
i.i-①如果当前编码完的图像是I帧图像,则统计当前帧图像占用的实际比特数,当前图像组的剩余比特数为当前图像组的目标比特数与当前帧图像占用的实际比特数之差,当前图像组占用的实际比特数总和的初值为当前帧图像占用的实际比特数;i-②如果当前编码完的图像是P帧图像,则统计当前帧图像占用的实际比特数,计算当前帧图像的实际复杂度,其值为当前帧图像占用的实际比特数与当前帧图像对应其参考图像的差值平方和的乘积除以图像的大小,当当前帧图像为当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和的初值为当前帧图像的实际复杂度,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和的初值为当前帧图像的量化参数;当当前帧图像不是当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和为当前帧图像编码前的当前图像组的实际复杂度总和与当前帧图像的实际复杂度之和,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和为当前帧图像编码前的当前图像组的量化参数总和与当前帧图像的量化参数之和;
j.如果当前图像组不是第一个图像组且当前帧图像是P帧图像,所有已编码的图像组每帧图像占用的平均实际比特数为所有已编码的图像组的平均实际码率和帧率的商,并判断当前帧图像占用的实际比特数和当前帧图像的量化参数的乘积是否大于所有已编码的图像组每帧占用的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的2~3倍或小于所有已编码的图像组的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的0.4~0.5倍,如果是,则确定检测到场景切换,通过式更新当前图像组的剩余比特数,式中RemainBits为当前图像组的剩余比特数,FrameReallyBits为当前帧图像占用的实际比特数,avg_bit_rate为所有已编码的图像组的平均实际码率,FRAMERATE为帧率;
k.判断是否存在后续的视频信号,如果存在,则再判断编码后的图像是否为当前图像组的最后一个图像,如果是,则根据步骤i得到的当前图像组的实际复杂度总和、量化参数总和及占用的实际比特数总和,计算当前图像组的平均量化参数和平均实际复杂度、所有已编码的图像组的平均实际复杂度、平均量化参数和平均实际码率,然后跳转至步骤b,否则,执行步骤f;如果不存在,则结束。
与现有技术相比,本发明的优点在于通过当前图像组的预测复杂度动态自适应分配当前图像组的目标码率,对当前图像组内的图像采取平均分配目标比特数,再根据简单的率失真模型计算图像的量化参数,当图像实际复杂度发生突变的时候,对该图像所处的图像组追减或追加相应剩余比特数。它不仅确保了码率控制的准确性,且能较好的逼近限定的码率,提高视频质量,避免了因质量波动造成的总体质量下降,使得视频平缓性更好;本发明能够较好的根据当前图像组的预测复杂度来分配当前图像组的目标码率,对信源具有较强的适应性;本发明具有一次编码的特点,不需要对图像预编码分析,可以降低编码的复杂度,便于硬件实现,提高实时性;此外,本发明计算复杂度低,运算量小,可广泛应用于高实时要求的视频监控等领域,较好的解决了视频质量、实时性和码率之间矛盾。

附图说明

图1为本发明方法的流程图;
图2为视频信号的结构示意图;
图3为在初始目标码率为1.5Mbps时采用本发明方法与采用JVT-H017方法产生的视频质量的统计比较图。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。
如图1和图2所示,一种对实时视频信号在AVS编码过程中VBR码率控制的方法,信号采集装置从实际场景获取视频信号并对视频信号在编码器中AVS编码过程中进行VBR码率控制,视频信号包括多个图像组,AVS编码后的每个图像组包括一个I帧图像和至少一个P帧图像,不包括B帧图像。
本发明方法给复杂度较高的图像分配较多的比特数,给复杂度较低的图像分配较少的比特数,根据所有已编码的图像组的实际复杂度来预测当前图像组的预测复杂度(除第一个图像组以外),结合所有已编码的图像组的实际平均码率,根据当前图像组预测复杂度动态自适应的分配当前图像组的目标码率;再根据当前图像组的目标码率计算当前图像组的目标比特数;然后根据当前图像组的目标比特数,有效的给图像组内的每个图像平均分配它们的目标比特数;然后根据一个简单的率失真R-D模型来计算当前图像的量化参数,在编码完当前图像之后,计算当前图像占用的实际比特数,再场景切换检测,如果确定检测到场景切换,则更新当前图像组的剩余比特数,以便更好的适应真实信源特征。本发明方法流程如图1所示,它包括以下具体步骤:
a.初始化视频信号的初始量化参数,设定初始目标码率,并获取编码器的帧率、一个图像组包含图像的帧数和图像的高与宽,记图像的高和宽的乘积为图像的大小;
b.判断当前帧图像所处的当前图像组是否为视频信号的第一个图像组,如果是,则当前图像组的目标码率为初始目标码率,当前图像组的目标比特数为当前图像组的目标码率(也就是初始目标码率)和一个图像组包含图像的帧数与帧率之比的乘积,并执行步骤f;否则,继续执行;
c.根据前一图像组的平均实际复杂度和所有已编码的图像组的平均实际复杂度,通过式计算得到当前图像组的预测复杂度XGopCurEst,结合图2,式中,XGopPre为前一图像组(即图2中编号为N-1的图像组)的平均实际复杂度,前一图像组与当前图像组相关性最强,XGopAvg为所有已编码的图像组的平均实际复杂度(即图2中编号0~N-1所有已经编码图像组的平均实际复杂度);
d.根据c步计算得到的当前图像组的预测复杂度XGopCurEst,通过式计算得到当前图像组的目标码率GopBitRate,结合图2,式中,XGopCurEst为当前图像组的预测复杂度,PrePQpAVG为前一图像组(即图2中编号为N-1的图像组)的平均量化参数,TotalAvgQp为所有已编码的图像组(即图2中编号0~N-1所有的图像组)的平均量化参数,avg_bit_rate为所有已编码的图像组(即图2中编号0~N-1所有的图像组)的平均实际码率,XGopAvgCurEst为所有已编码的图像组(即图2中编号0~N-1所有的图像组)的实际平均复杂度和当前图像组的预测复杂度的加权计算得到的平均复杂度,XGopAvgCurEst具体计算方法为XGopAvgCurEst=(XGopAVG*(NumberofGOP-1)+XGopCurEst)/NumberofGOP,XGopAVG为图2中编号0~N-1所有图像组的平均实际复杂度,NumberofGOP为包括当前图像组和已经编码图像组的总数;
为了保证视频信号平均码率的收敛性,对当前图像组的目标码率需限定在最开始用户设定的初始目标码率上下波动范围内,波动幅度一般为设定的初始目标码率的±20%,即:GopBitRate=MIN(MAX(GopBitRate,bit_rate_down),bit_rate_up),其中bit_rate_down的值为初始目标码率×(1-20%),bit_rate_up的值为初始目标码率×(1+20%);
e.根据步骤d中计算得到的当前图像组的目标码率GopBitRate,计算当前图像组的目标比特数,其值为当前图像组的目标码率和一个图像组包含图像的帧数与帧率之比的乘积;
f.判断当前帧图像是否为当前图像组的I帧图像或第一个P帧图像,如果是,则当当前图像组为第一个图像组时,I帧图像或第一个P帧图像的量化参数为初始量化参数,并通过初始量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;当当前图像组不是第一个图像组时,I帧图像或第一个P帧图像的量化参数为前一图像组的平均量化参数,并通过前一图像组的平均量化参数对I帧图像或第一个P帧图像进行编码,然后执行步骤i;否则,继续执行;
g.根据当前图像组的目标比特数,通过式计算得到当前帧图像的目标比特数FrameBits,其中,RemainBits为当前图像组的剩余比特数,其值为当前图像组的目标比特数与当前图像组占用的实际比特数总和之差,picnum_Gop为一个图像组包含图像的帧数,NumberofCodedPFrame为当前图像组的所有已编码的P帧图像的帧数;
h.根据步骤g中计算得到的当前帧图像的目标比特数,先通过率失真模型计算得到模型参数C,其中R为前一P帧图像占用的实际比特数,X为前一P帧图像的实际复杂度,QP为前一P帧图像的量化参数;再通过计算得到当前帧图像的量化参数QP’,其中X’为当前帧图像的预测复杂度,其值为前一帧图像的实际复杂度,R’为当前帧图像的目标比特数;然后通过当前帧图像的量化参数对当前帧图像进行编码;
为了保持视频质量的平缓,前后帧图像的量化参数的变化小于等于2,即量化参数的变化值ΔQP只能为0、1、2、-1、-2;在当前帧图像的预测复杂度下,对应于每个ΔQP,存在相应的ΔR,ΔR为前一帧图像的量化参数增加或减少时对应的图像目标比特数的变化值;通过得到ΔQP为-2、-1、0、1、2时对应的ΔR值分别记为ΔR-2、ΔR-1、ΔR0、ΔR1、ΔR2。由于ΔR-2>ΔR-1>ΔR0>ΔR1>ΔR2,再通过计算point1=(ΔR2+ΔR1+1)>>1;point2=(ΔR0+ΔR1+1)>>1;point3=(ΔR0+ΔR-1+1)>>1;point4=(ΔR-1+ΔR-2+1)>>1作为比较参照点,符号“>>”为向右移位运算符,为了得到较精确的量化参数QP,对参照点做恰当的调整,具体可用以下代码来实现:
if(DiffBits<β1*point1)
    {QP=Pre1PFrameQp+2;}
else if(DiffBits<β2*point2)
    {QP=Pre1PFrameQp+1;}
else if(DiffBits<β3*point3)
    {QP=Pre1PFrameQp;}
else if(DiffBits<β4*point4)
    {QP=Pre1PFrameQp-1;}
else
    {QP=Pre1PFrameQp-2;}
QP=MAX(1,QP=MIN(63,QP));
以上代码中,DiffBits为当前帧图像的目标比特数FrameBits与前一帧图像的实际比特数的差值,β1、β2、β3、β4为调整参数,一般取值为{4,3,2,4},代码中QP为当前帧图像的量化参数,Pre1PFrameQp为前一帧图像的量化参数,Pre1PFramebits为前一帧图像占用的实际比特数;
i.i-①如果当前编码完的图像是I帧图像,则统计当前帧图像占用的实际比特数,当前图像组的剩余比特数为当前图像组的目标比特数与当前帧图像占用的实际比特数之差,当前图像组占用的实际比特数总和的初值为当前帧图像占用的实际比特数;i-②如果当前编码完的图像是P帧图像,则统计当前帧图像占用的实际比特数,计算当前帧图像的实际复杂度,其值为当前帧图像占用的实际比特数与当前帧图像对应其参考图像的差值平方和的乘积除以图像的大小,当当前帧图像为当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和的初值为当前帧图像的实际复杂度,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和的初值为当前帧图像的量化参数;当当前帧图像不是当前图像组的第一个P帧图像时,当前图像组的剩余比特数为当前帧图像编码前的当前图像组的剩余比特数与当前帧图像占用的实际比特数之差,当前图像组的实际复杂度总和为当前帧图像编码前的当前图像组的实际复杂度总和与当前帧图像的实际复杂度之和,当前图像组占用的实际比特数总和为当前帧图像编码前的当前图像组占用的实际比特数总和与当前帧图像占用的实际比特数之和,当前图像组的量化参数总和为当前帧图像编码前的当前图像组的量化参数总和与当前帧图像的量化参数之和;
j.如果当前图像组不是第一个图像组且当前帧图像是P帧图像,所有已编码的图像组每帧图像占用的平均实际比特数为所有已编码的图像组的平均实际码率和帧率的商,并判断当前帧图像占用的实际比特数和当前帧图像的量化参数的乘积是否大于所有已编码的图像组每帧占用的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的2~3倍或小于所有已编码的图像组的平均实际比特数和所有已编码的图像组的平均量化参数的乘积的0.4~0.5倍,如果是,则确定检测到场景切换,通过式更新当前图像组的剩余比特数,式中RemainBits为当前图像组的剩余比特数,FrameReallyBits为当前帧图像占用的实际比特数,avg_bit_rate为所有已编码的图像组的平均实际码率,FRAMERATE为帧率;
k.判断是否存在后续的视频信号,如果存在,则再判断编码后的图像是否为当前图像组的最后一个图像,如果是,则根据步骤i得到的当前图像组的实际复杂度总和、量化参数总和及占用的实际比特数总和,计算当前图像组的平均量化参数和平均实际复杂度、所有已编码的图像组的平均实际复杂度、平均量化参数和平均实际码率,然后跳转至步骤b,否则,执行步骤f;如果不存在,则结束。
通过步骤j能够很好地解决以下两种特殊情况,第一种情况是:当前图像组的复杂度突然上升到很大,如果不追加相应的比特数,那么当前图像组的前面编码的图像几乎会消耗掉当前图像组的大部分目标比特数,那么当前图像组的未编码图像将因目标比特数不足而造成质量急剧下降;第二种情况则是:当前图像的复杂度突然下降很多,如果不追减相应的比特数,那么当前图像组的前面编码的图像只消耗掉当前图像组的目标比特数的很小一部分,那么当前图像组的未编码的图像将分配的目标比特数就会大大增加,造成这些图像的质量急剧上升,这两种情况都将造成视频质量的不稳定。通过实验表明:经场景切换检测处理后,能够获得的很好视频质量的平缓性。
对采用本发明方法与采用JVT-H017方法在AVS的平台上,在相同的实验条件下进行对比实验。
由coastguard_cif、container_cif、flower_cif、hall_cif、mobile_cif、news_cif、Sign_Irene_cif、waterfall_cif八个测试序列各300帧循环拼接组成测试序列,取这样的CIF格式测试序列9000帧在不同初始目标码率,帧率为30f/s条件下进行测试,结果数据如表1所示:
表1采用本发明方法与JVT-H017方法的综合客观性能比较表

分析表1中的实验数据,表明:本发明方法产生的实际平均码率虽然没有JVT-H017那样接近目标码率,但是也能较好的满足码率限制要求,在相同目标码率的条件下,实际消耗的比特数只占JVT-H017方法实际消耗比特数的98%左右,但是采用本发明方法的视频质量比JVT-H017方法的亮度峰值信噪比PSNR(Peak Signal to Noise Ratio)平均提高了0.2dB左右,其值越大表示图像质量越好,平缓度用样本方差VAR()函数值来表示,其值越小说明质量波动性小,本发明方法的样本方差值只有JVT-H017方法的40%左右,说明本发明方法是可行有效地。
此外,图3示出了在初始目标码率为1.5Mbps时采用本发明方法与采用JVT-H017方法产生的视频质量亮度峰值信噪比PSNR的统计比较,从图3中可以看出采用本发明方法的视频视觉的平缓性较好,波动性较小。