一种图像码率控制方法及装置转让专利

申请号 : CN200710161580.2

文献号 : CN101127909B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈方耀

申请人 : 华为技术有限公司

摘要 :

本发明公开了一种图像码率控制方法及装置,用以实现对于每一个图像块都选择合适的量化参数,不仅使经过码率变换后的每一个图像块的实际输出码率与要求输出码率的差值较小,而且可以减小累计误差。该方法包括:确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数;根据确定的所述量化参数对当前图像块进行量化。

权利要求 :

1.一种图像码率控制方法,其特征在于,包括以下步骤:

确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;

当所有量化参数中存在对应比特数误差等于0的量化参数,则选择该量化参数,或者如果所有已变换图像块的累计比特数误差不等于0,则选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;否则,当所有量化参数中存在相邻的两个对应比特数误差分别大于0和小于0的量化参数,则选择能减小所述所有已变换图像块的累计比特数误差的量化参数;其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;

根据确定的所述量化参数对当前图像块进行量化。

2.如权利要求1所述的方法,其特征在于,所述图像块或者为宏块、或者为条带、或者为一帧图像。

3.如权利要求1所述的方法,其特征在于,根据如下公式确定所述当前图像块的目标比特数:

mb_bits=xj×frame_bitsX×mb_no其中,所述mb_bits为所述当前图像块的目标比特数,所述xj为所述当前图像块的复杂度,所述frame_bits为当前帧原始图像的目标比特数,所述X为当前帧原始图像的图像复杂度,所述mb_no为所述当前帧原始图像的图像块总数量。

4.如权利要求1所述的方法,其特征在于,根据如下公式确定所述当前图像块的目标比特数:

mb_bits=B×pmb_no其中,所述mb_bits为所述当前图像块的目标比特数,所述B为每单位时间要求输出比特数,其数值等于所述要求输出码率,所述p为预先设定的当前帧原始图像比例值,所述比例值为当前帧原始图像的目标比特数占每单位时间要求输出比特数的比例值,所述mb_no为所述当前帧原始图像的图像块总数量。

5.如权利要求1所述的方法,其特征在于,当所有量化参数中存在相邻的两个对应比特数误差分别大于0和小于0的量化参数时,所述能减小所有已变换图像块的累计比特数误差的量化参数的选择方法为:如果所述所有已变换图像块的累计比特数误差不等于零,在所述相邻的两个量化参数中选择对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;

如果所述所有已变换图像块的累计比特数误差等于零,在所述相邻的两个量化参数中选择对应比特数误差的绝对值较小的量化参数。

6.一种图像码率控制装置,其特征在于,包括:

码率控制模块,用于确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;

量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;

量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;

所述量化参数确定模块进一步包括:

参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;

量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。

7.如权利要求6所述的装置,其特征在于,所述图像块或者为宏块、或者为条带、或者为一帧图像。

8.如权利要求6所述的装置,其特征在于,所述码率控制模块确定当前图像块的目标比特数时,根据如下公式确定所述当前图像块的目标比特数:mb_bits=xj×frame_bitsX×mb_no其中,所述mb_bits为所述当前图像块的目标比特数,所述xj为所述当前图像块的复杂度,所述frame_bits为当前帧原始图像的目标比特数,所述X为当前帧原始图像的图像复杂度,所述mb_no为所述当前帧原始图像的图像块总数量。

9.如权利要求6所述的装置,其特征在于,所述码率控制模块确定当前图像块的目标比特数时,根据如下公式确定所述当前图像块的目标比特数:mb_bits=B×pmb_no其中,所述mb_bits为所述当前图像块的目标比特数,所述B为每单位时间要求输出比特数,其数值等于所述要求输出码率,所述p为预先设定的当前帧原始图像的目标比特数占每单位时间要求输出比特数的比例值,所述mb_no为所述当前帧原始图像的图像块总数量。

10.如权利要求6所述的装置,其特征在于,所述量化参数确定子模块还用于在所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,如果所述所有已变换图像块的累计比特数误差不等于零,在所述相邻的两个量化参数中选择对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;如果所述所有已变换图像块的累计比特数误差等于零,在所述相邻的两个量化参数中选择对应比特数误差的绝对值较小的量化参数。

11.一种应用于码率变换技术中的图像码率控制装置,其特征在于,包括:

可变长解码模块,用于将当前帧原始图像每个图像块的量化参数和原始比特数、以及当前帧原始图像的图像块总数量信息发送给所述码率控制模块;

码率控制模块,用于根据所述可变长解码模块提供的信息、要求输出码率、以及当前帧原始图像的原始输入码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;

量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;

量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;

所述量化参数确定模块进一步包括:

参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;

量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。

12.如权利要求11所述的装置,其特征在于,所述装置进一步包括:

输入码率确定模块,用于确定所述当前帧原始图像的原始输入码率,并将确定的原始输入码率发送给所述码率控制模块;

输出码率确定模块,用于确定所述当前帧原始图像的要求输出码率,并将确定的要求输出码率发送给所述码率控制模块。

13.一种应用于图像编码技术中的图像码率控制装置,其特征在于,包括:

图像分析模块,用于将当前帧原始图像的每一个图像块的复杂度、当前帧原始图像的总比特数、当前帧原始图像的原始输入码率、以及当前帧原始图像的图像块总数量信息发送给所述码率控制模块;

码率控制模块,用于根据所述图像分析模块提供的信息、及要求输出码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;

量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;

量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;

所述量化参数确定模块进一步包括:

参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;

量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。

14.如权利要求13所述的装置,其特征在于,所述装置进一步包括:

输出码率确定模块,用于确定所述当前帧原始图像的要求输出码率,并将确定的要求输出码率发送给所述码率控制模块。

说明书 :

技术领域

本发明涉及数字图像处理技术领域,特别涉及数字图像码率控制技术。

背景技术

现有技术中,对于压缩的图像信号,如mpeg2,mepg4以及H.264图像信号,经常会根据应用场合和传输信道要求的不同来使用相应的图像变换技术对其进行变换。比如为适应信道的传输带宽要求,使用码率变换方法来调整图像的码率;为适应终端和信道带宽的要求,使用图像格式变换方法和帧率变换方法来调整图像的大小和帧率。所有这些图像变换过程都需要对输出码率进行码率控制,以最终达到适应信道和降低带宽的要求。而且在图像编码技术中,图像经过编码压缩输出码流时,也需要对输出码流进行码率控制,以使输出码率达到指定要求。因此对图像码率的控制是非常重要的。
参阅图1所示,现有码率变换技术中的图像码率控制装置包括VLD(Variable Length Decoding,可变长解码)模块、IQ1(Inverse Quantization,反量化)模块、Q2(Quantization,量化)模块、VLC(Variable Length Coding,可变长编码)模块和码率控制(码率控制)模块;假设Rate1为输入的图像码率,Rate2为要求输出的图像码率,该装置控制图像码率的大致工作原理如下所述:
压缩的图像数据经过VLD模块解压缩后输出非压缩的DCT域图像数据,该DCT域图像数据经过IQ1模块进行反量化处理,再经过Q2模块重新量化,最后经过VLC模块压缩输出,最终实现原始图像码率从Rate1到Rate2的变换过程。其中,Q2模块重新量化所需的量化参数由码率控制模块确定并提供给Q2模块。码率控制模块确定Q2模块重新量化所需的量化参数的方法为:
码率控制模块接收反馈的原始的输入图像码率Rate1、要求输出的图像码率Rate2、以及原始图像的每个宏块的量化参数(表示为Qpi)和每个宏块的原始比特数(表示为mb_bitsi);
码率控制模块根据反馈的Qpi和mb_bitsi,采用如下公式(1)计算当前一帧图像的复杂度X:
X=ΣQpi×mb_bitsi…………………………(1)
采用如下公式(2)计算当前一帧图像的每个宏块的复杂度xi:
xi=Qpi×mb_bitsi……………………………(2)
采用如下公式(3)计算出转换量化参数参考值Qt:
Qt=R×Q/T……………………………………(3)
其中,Qt为当前一帧图像变换后的量化参数参考值,R为当前一帧图像的原始比特数,Q为当前一帧图像的原始量化参数平均值,T为当前一帧图像变换后的目标比特数。
采用如下公式(4),根据当前一帧图像中已变换宏块的复杂度与当前一帧图像的复杂度来计算已变换宏块的目标使用比特数:
R_target_used=X_org*T/X……………………(4)
其中,X_org为已变换宏块的复杂度估计值之和,R_target_used为已变换宏块的目标比特数。
将已变换宏块的目标比特数R_targetused与已变换宏块的实际使用比特数R_act_used进行比较,当两者差距大于定义的误差范围threshold,即R_target_used-R_act_used>threshold时,增大量化参数得到Q2模块重新量化所需的量化参数OUT_Qp,将该OUT_Qp送给Q2模块变换后续的宏块;当两者差距小于定义的误差范围threshold,即R_target_used-R_act_used<threshold时,减小量化参数得到Q2模块重新量化所需的量化参数OUT_Qp,将该OUT_Qp送给Q2模块变换后续的宏块。
在当前宏块变换完成后更新X_org和R_act_used的值,继续由码率控制模块按照上述方法确定Q2模块重新量化所需的量化参数,继续由Q2模块根据码率控制模块确定的量化参数变换后续的宏块。
但是,本发明人发现现有这种图像码率控制方法在确定当前宏块的量化参数时,需借助预先定义的误差范围:当已变换宏块的目标比特数与实际使用比特数的差值大于该误差范围时增大量化参数,当已变换宏块的目标比特数与实际使用比特数的差值小于该误差范围时减小量化参数,这样得到的量化参数只是一个预测值,其并不能完全符合量化当前宏块的实际要求,因此利用该量化参数量化当前宏块后的输出码率就不一定完全符合要求,如果输出过高或者过低也只能通过控制后续宏块码率使平均码率达到要求水平,码率控制具有滞后性。当要求输出码率均匀时,由于每个宏块的输出码率不精确,所以需要采用多个宏块的平均来平滑输出,使输出码率在要求范围之内,因此需要较大的输出缓冲区。为了保证平均输出码率,部分宏块的量化较大,从而导致图像质量较差。并且输出码流在小时间范围内存在波动,不能完全满足对码率要求比较高的场合。

发明内容

本发明提供一种图像码率控制方法及其装置,用以实现对于每一个图像块都选择合适的量化参数,不仅使经过码率变换后的每一个图像块的实际输出码率与要求输出码率的差值较小,而且可以减小累计误差。
为解决上述技术问题,本发明提供如下技术方案:
本发明实施例提供了一种图像码率控制方法,包括以下步骤:
确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
当所有量化参数中存在对应比特数误差等于0的量化参数,则选择该量化参数,或者如果所有已变换图像块的累计比特数误差不等于0,则选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;否则,当所有量化参数中存在相邻的两个对应比特数误差分别大于0和小于0的量化参数,则选择能减小所述所有已变换图像块的累计比特数误差的量化参数;其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;根据确定的所述量化参数对当前图像块进行量化。
本发明实施例提供了一种图像码率控制装置,包括:
码率控制模块,用于确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;
所述量化参数确定模块进一步包括:
参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;
量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。
本发明实施例提供了一种应用于码率变换技术中的图像码率控制装置,包括:
可变长解码模块,用于将当前帧原始图像每个图像块的量化参数和原始比特数、以及当前帧原始图像的图像块总数量信息发送给所述码率控制模块;
码率控制模块,用于根据所述可变长解码模块提供的信息、要求输出码率、以及当前帧原始图像的原始输入码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;
所述量化参数确定模块进一步包括:
参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;
量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。
本发明实施例提供了一种应用于图像编码技术中的图像码率控制装置,包括:
图像分析模块,用于将当前帧原始图像的每一个图像块的复杂度、当前帧原始图像的总比特数、当前帧原始图像的原始输入码率、以及当前帧原始图像的图像块总数量信息发送给所述码率控制模块;
码率控制模块,用于根据所述图像分析模块提供的信息、及要求输出码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择一个量化参数,该量化参数对应的实际比特数最接近所述目标比特数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块,用于根据所述量化参数确定模块确定的量化参数对所述当前图像块进行量化;
所述量化参数确定模块进一步包括:
参考量化参数确定子模块,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;
量化参数确定子模块,用于在所述参考量化参数确定子模块确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者在确定所有已变换图像块的累计比特数误差不等于0时选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当所述参考量化参数确定子模块确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。
本发明实施例提供的图像码率控制方法及其装置,通过在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,根据该量化参数对当前图像块进行量化,不仅使输出的每一个图像块的实际输出码率与要求输出码率误差较小,而且不增大所有已变换图像块的实际比特数与对应目标比特数的累计误差,使多个图像块或整个一帧图像数据的累计误差趋近于零,使输出图像质量保持较高的质量。

附图说明

图1为现有图像码率控制方式示意图;
图2为本发明实施例一中图像码率控制方法示意图;
图3为本发明实施例一中图像码率控制方法流程图;
图4为本发明实施例一中确定当前宏块的目标比特数方法流程图;
图5为本发明实施例一中确定量化当前宏块需用的量化参数的方法流程图;
图6为本发明实施例二中图像码率控制方法示意图;
图7为本发明实施例中图像码率控制装置结构示意图;
图8为本发明实施例中量化参数确定模块结构示意图;
图9为本发明实施例中应用于码率变换技术中的图像码率控制装置结构示意图;
图10为本发明实施例中应用于图像编码技术中的图像码率控制装置结构示意图。

具体实施方式

为了解决现有图像码率控制方法存在的问题,本发明实施例提出一种图像码率控制方法,可应用于码率变换技术、图像编码技术等技术中,该方法确定当前图像块的目标比特数,该目标比特数为当前图像块按要求输出码率输出时的比特数;在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;根据确定的量化参数对当前图像块进行量化。其中,适用于该方法的图像块可以是宏块、条带或者一帧图像。利用本发明实施例提供的图像码率控制方法,不仅不增大所有已变换图像块的实际比特数与对应目标比特数的累计误差,进而可以减小多个图像块或整个一帧图像数据的累计误差,使累计误差逐渐趋近于零,而且输出的每一个图像块的实际输出码率与要求输出码率误差较小,输出图像质量较高。
下面结合附图和具体实施例对本发明实施例提供的图像码率控制方法进行详细描述:
实施例一
参阅图2所示为本发明实施例提供的码率控制方法应用于码率变换技术中时,对宏块的码率变换进行码率控制的示意图。输入码率为Rate1的图像数据经过VLD模块解压缩后输出非压缩的DCT域图像数据,该数据经过IQ模块进行反量化处理,再经过Q模块重新量化,最后经过VLC模块压缩输出,实现原始图像码率从Rate1到Rate2的变换。其中,Q模块重新量化所需的量化参数按照图3所示的本发明实施例提供的图像码率控制方法确定:
S301、向码率控制模块发送确定当前宏块的目标比特数需用的信息。
输入码率确定模块确定原始输入码率Rate1,并将确定的原始输入码率Rate1发送给码率控制模块,VLD模块将当前帧原始图像每个宏块的量化参数和原始比特数、当前帧原始图像的总比特数、以及当前帧原始图像的宏块总数量信息发送给码率控制模块,输出码率确定模块确定要求输出码率Rate2,并将要求输出码率Rate2发送给码率控制模块。
S302、码率控制模块确定当前宏块的目标比特数。
码率控制模块根据输入码率确定模块、VLD模块、及输出码率确定模块发送来的信息确定当前宏块的目标比特数,该目标比特数为当前宏块按要求输出码率Rate2输出时的比特数。
S303、码率控制模块将其确定的当前宏块的目标比特数发送给量化参数确定模块。
S304、量化参数确定模块确定量化参数。
量化参数确定模块在不增大所有已变换宏块的累计比特数误差的所有量化参数中,选择使当前宏块的实际比特数最接近其目标比特数的量化参数。
S305、量化模块和可变长编码模块对当前宏块进行变换。
量化模块根据量化参数确定模块确定的量化参数对当前宏块进行量化,可变长编码模块对量化模块量化后的当前宏块数据进行变长编码,输出码流,实现图像码率从Rate1到Rate2的变换。
其中,在上述步骤S301中,原始输入码率Rate1也可以由码率控制模块自己确定而不需输入码率确定模块提供;也可以将要求输出码率Rate2直接配置于码率控制模块内存储,也可以由码率控制模块自己确定要求输出码率Rate2,而不需由输出码率确定模块提供,这样可以避免另外设置输入码率确定模块和输出码率确定模块,节省设备成本。
另外,在上述步骤S301中,在码率控制模块确定当前宏块的目标比特数时,也可以根据要求输出码率、预先设定的当前帧原始图像比例值、以及当前帧原始图像的宏块总数量,确定当前宏块的目标比特数,上述当前帧原始图像比例值为当前帧原始图像的目标比特数占每单位时间要求输出比特数的比例值。
并且,VLD模块也可以不将当前帧原始图像的总比特数信息发送给码率控制模块,而由码率控制模块根据VLD模块发送来的当前帧原始图像每个宏块的原始比特数信息确定当前帧原始图像的总比特数,其确定方法为:当前帧原始图像每个宏块的原始比特数之和。
其中,参阅图4所示,步骤S302进一步包括以下步骤:
S401、确定当前帧原始图像的目标比特数。
码率控制模块根据原始输入码率Rate1、要求输出码率Rate2和当前帧原始图像的总比特数,计算当前帧原始图像的目标比特数,其计算方法为:当前帧原始图像的总比特数和要求输出码率的乘积除以原始输入码率,其计算公式(1)表示为:
frame_bits=frame_bits1×rate2rate1...(1)
其中,frame_bits为当前帧原始图像的目标比特数,frame_bits1为当前帧原始图像的总比特数,Rate1为原始输入码率,Rate2为要求输出码率。
S402、确定当前帧原始图像的图像复杂度。
码率控制模块根据当前帧原始图像的每一个宏块的量化参数和原始比特数,计算当前帧原始图像的图像复杂度,其计算方法为:每一个宏块的量化参数与原始比特数的乘积之和,其计算公式(2)表示为:
X=Σi=1mb_no(Qpi×mb_bitsi)...(2)
其中,X为当前帧原始图像的图像复杂度,mb_no为当前帧原始图像的宏块总数量,Qpi为第i个宏块的量化参数,mb_bitsi为第i个宏块的原始比特数。
S403、确定当前宏块的复杂度。
码率控制模块根据当前宏块的量化参数和原始比特数,计算当前宏块的复杂度,其计算方法为:当前宏块的量化参数与原始比特数的乘积,其计算公式(3)表示为:
xj=Qpj×mb_bitsj  ………………………………(3)
其中,xj为当前宏块的复杂度,Qpj为当前宏块的量化参数,mb_bitsj为当前宏块的原始比特数。
S404、确定当前宏块的目标比特数。
码率控制模块根据当前帧原始图像的目标比特数frame_bits、当前帧原始图像的图像复杂度X、当前帧原始图像的宏块总数量mb_no、及当前宏块的复杂度xj,计算当前宏块的目标比特数,其计算方法为:当前宏块的复杂度与当前帧原始图像的目标比特数的乘积再除以当前帧原始图像的图像复杂度与当前帧原始图像的宏块总数量的乘积,其计算公式(4)表示为:
mb_bits=xj×frame_bitsX×mb_no...(4)
其中,mb_bits为当前宏块的目标比特数。
至此,码率控制模块计算出了当前宏块的目标比特数。
另外,在码率控制模块确定当前宏块的目标比特数时,也可以不执行上述步骤S401-S404,而根据要求输出码率、预先设定的当前帧原始图像比例值、以及当前帧原始图像的宏块总数量,确定当前宏块的目标比特数;其确定公式表示为:
mb_bits=B*pmb_no...(5)
其中,mb_bits为当前宏块的目标比特数,B为每单位时间要求输出比特数,其数值等于要求输出码率Rate2,p为预先设定的当前帧原始图像比例值;mb_no为当前帧原始图像的宏块总数量。
例如采用彩色电视制式中的PAL制输出图像时,每秒要求输出25帧图像,预先设定每秒依序输出的25帧中,每一帧图像的目标比特数占每秒要求输出比特数的比例值分别为p1%、p2%、、、、、、p25%;假如要求输出码率是5Mb/s,当前帧原始图像变换后的图像是当前单位时间内输出的第15帧图像,且p15%=5%,当前帧原始图像的宏块总数量为1620,则当前宏块的p=p15%=5%,B=5Mb,mb_mo=1620,根据公式(5)可知,当前宏块的目标比特数mb_bits≈154.3b。而当每一帧图像的目标比特数占每秒要求输出比特数的比例值均相等,即都为4%时,则每一帧图像的目标比特数都相等。这种确定方法可以更加方便快速地确定当前宏块的目标比特数,进而能更方便快速地确定出当前宏块的量化参数。
在步骤S304中,由于量化参数的个数有限,一般为31/51/64个数值,且量化参数值越大,其对应的当前宏块的实际比特数就越小,故量化参数确定模块可以采用快速搜索算法来确定量化当前宏块需用的量化参数。为方便描述,当采用快速搜索算法中的二分法确定量化当前宏块需用的量化参数时,将量化参数对应的实际比特数与当前宏块的目标比特数的差值简称为比特数误差,参阅图5所示,步骤S304具体包括以下几个步骤:
S501、量化参数确定模块将所有量化参数按一定大小顺序组成量化参数排列。
S502、量化参数确定模块选择处于量化参数排列中间位置的第一量化参数,并计算第一量化参数对应的实际比特数。
计算第一量化参数对应的实际比特数时,可以采用MPEG-2标准、MPEG-FOR标准、H.264标准等来计算。
S503、量化参数确定模块计算第一量化参数对应的比特数误差。
S504、确定该比特数误差与0的大小关系,当该比特数误差大于0时,继续执行步骤S505;
当该比特数误差小于0时,继续执行步骤S506;
当该比特数误差等于0时,继续执行步骤S507。
S505、当第一量化参数对应的比特数误差大于0时,继续在大于第一量化参数的半组量化参数排列中选择处于中间位置的第二量化参数并计算第二量化参数的比特数误差,如果第二量化参数对应的比特数误差依然大于0,则继续在大于第二量化参数的量化参数排列中选择处于中间位置的量化参数并计算该量化参数对应的比特数误差,依次例推,当找到相邻的两个量化参数,一个量化参数对应的比特数误差大于0、另一个量化参数对应的比特数误差小于0时,继续执行步骤S508;当找到的量化参数对应的比特数误差恰好等于0时,执行步骤S509。
S506、当第一量化参数对应的比特数误差小于0时,继续在小于第一量化参数的半组量化参数排列中选择处于中间位置的第二量化参数并计算第二量化参数对应的比特数误差,如果第二量化参数对应的比特数误差依然小于0,则继续在小于第二量化参数的量化参数排列中选择处于中间位置的量化参数并计算该量化参数对应的比特数误差,依次例推,当找到相邻的两个量化参数,一个量化参数对应的比特数误差大于0、另一个量化参数对应的比特数误差小于0时,继续执行步骤S508;当找到的量化参数对应的比特数误差恰好等于0时,执行步骤S509。
S507、当第一量化参数对应的比特数误差等于0时,选择第一量化参数为量化当前宏块需用的量化参数,继续执行步骤S512。
S508、判断当前宏块是否是当前帧原始图像的第一个宏块;
如果是,则执行步骤S510;
否则,继续执行步骤S511。
S509、选择对应比特数误差等于0的该量化参数,继续执行步骤S512。
S510、在上述相邻的两个量化参数中,选择对应的比特数误差的绝对值较小的量化参数,继续执行步骤S512。
S511、在上述相邻的两个量化参数中,选择能减小所有已变换宏块的累计比特数误差的量化参数,其选择方法为:
当所有已变换宏块的累计比特数误差不等于零时,在上述相邻的两个量化参数中,选择对应比特数误差的正负号与所有已变换宏块的累计比特数误差的正负号相反的量化参数,继续执行步骤S512;
当所有已变换宏块的累计比特数误差等于零时,在上述相邻的两个量化参数中,选择对应的比特数误差的绝对值较小的量化参数,继续执行步骤S512。
例如,当所有已变换宏块的累计比特数误差为大于0时,则在上述相邻的两个量化参数中,选择对应比特数误差为小于0的量化参数;当所有已变换宏块的累计比特数误差为小于0时,则在上述相邻的两个量化参数中,选择对应比特数误差为大于0的量化参数;当所有已变换宏块的累计比特数误差等于0时,则在上述相邻的两个量化参数中,选择对应的比特数误差的绝对值较小的量化参数作为量化当前宏块需用的量化参数。
S512、量化参数确定模块将选择的量化参数发送给量化模块,将当前宏块的比特数误差与所有已变换宏块的累计比特数误差相加,得到新的累计比特数误差。
其中,除步骤S501-S512中描述的二分法之外,也可以利用其他方法在不增大所有已变换宏块的累计比特数误差的所有量化参数中,选择使当前宏块的实际比特数最接近所述目标比特数的量化参数,例如采用黄金分割点法;或者计算每一个量化参数对应的比特数误差,然后确定比特数误差的正负号与所有已变换宏块的累计比特数误差的正负号相反的所有量化参数,再在确定的这些量化参数中,选择对应比特数误差的绝对值最小的量化参数;或者在步骤S505中,当第一量化参数对应的比特数误差大于0时,继续在除第一量化参数之外的所有量化参数中选择量化参数,当找到相邻的两个对应比特数误差分别大于0和小于0的量化参数时,继续执行步骤S508;当找到对应比特数误差恰好等于0的量化参数时,执行步骤S509;同样的在步骤S506中,当第一量化参数对应的比特数误差小于0时,继续在除第一量化参数之外的所有量化参数中选择量化参数,当找到相邻的两个对应比特数误差分别大于0和小于0的量化参数时,继续执行步骤S508;当找到对应比特数误差恰好等于0的量化参数时,执行步骤S509。当然还会有很多其他基于本发明实施例量化参数确定思想的方法,这里不再一一详述。
另外,在步骤S501-S512中,当确定了对应比特数误差等于0的量化参数时,如果所有已变换宏块的累计比特数误差不等于0,则也可以选择与该对应比特数误差等于0的量化参数相邻的、且对应比特数误差与所有已变换宏块的累计比特数误差的正负号相反的量化参数,这样便可以减小所有已变换宏块的累计比特数误差。
并且,在步骤S501-S512中,在确定了上述相邻的两个量化参数后,也可以不管当前图像块是否为当前帧原始图像的第一个图像块(即不执行步骤S508和S510),而将第一个图像块对应的所有已变换宏块的累计比特数误差看成0,这样便可以按照步骤S511所述的方法确定任何一个当前图像块对应的量化参数。
本发明实施例一仅说明了对宏块的码率变换进行码率控制的方法流程,对其他图像块的码率变换进行码率控制的方法流程与本发明实施例一所述流程一样,这里不再叙述。
本发明实施例一利用本发明实施例提供的图像码率控制方法为量化模块选择量化参数,不仅使输出的每一个宏块的实际输出码率与要求输出码率误差较小,而且不增大所有已变换宏块的累计比特数误差,使多个宏块或整个一帧图像数据的实际比特数与对应目标比特数的累计误差趋近于零,使输出图像质量保持较高的质量,不会使累计误差随着已变换宏块数目的增多而增大进而出现部分宏块量化较大、图像质量较差的现象。而且,由于输出的每一个宏块的实际输出码率与要求输出码率误差较小,每一个宏块的输出码率较均匀,因此不需要较大的输出缓冲区,且与要求输出码率的差值最小,符合要求度较高。并且输出码流在小时间范围内不存在波动,能满足对码率要求比较高的场合。
实施例二
参阅图6所示为本发明实施例提供的码率控制方法应用于图像编码技术中时,对宏块的码率变换进行码率控制的示意图。
在图像编码技术中应用本发明实施例提供的方法控制图像码率时,由图像分析模块对输入的原始图像进行分析,并将分析得到的当前帧原始图像的每一个宏块的复杂度、当前帧原始图像的总比特数、当前帧原始图像的原始输入码率Rate1、以及当前帧原始图像的宏块总数量信息发送给码率控制模块;输出码率确定模块将要求输出码率Rate2发送给码率控制模块;
码率控制模块根据图像分析模块和输出码率确定模块发送来的信息,通过公式(1)确定当前帧原始图像的目标比特数;通过以下公式(6)计算当前帧原始图像的图像复杂度:
X=Σi=1mb_noxi...(6)
其中,X为当前帧原始图像的图像复杂度,mb_no为当前帧原始图像的宏块总数量;通过公式(4)或(5)确定当前宏块的目标比特数;
码率控制模块将确定的当前宏块的目标比特数发送给量化参数确定模块;
量化参数确定模块按前述步骤S501-S512,在不增大所有已变换宏块的累计比特数误差的所有量化参数中,选择使当前宏块的实际比特数最接近所述目标比特数的量化参数,并将确定的量化参数发送给量化模块;量化模块根据量化参数确定模块确定的量化参数对当前宏块进行量化,可变长编码模块对量化模块量化后的当前宏块数据进行变长编码,输出码流,实现图像码率从Rate1到Rate2的变换。
至此,完成了对当前宏块的变换。
其中,原始输入码率Rate1也可以由码率控制模块自己统计而不需图像分析模块提供;也可以将要求输出码率Rate2直接配置于码率控制模块内存储,也可以由码率控制模块自己确定要求输出码率Rate2,而不需由输出码率确定模块提供,这样可以避免另外设置输出码率确定模块,节省设备成本;
另外,在码率控制模块确定当前宏块的目标比特数时,也可以根据要求输出码率、预先设定的当前帧原始图像比例值、以及当前帧原始图像的宏块总数量,确定当前宏块的目标比特数;其具体确定方法见前述公式(5)。
本发明实施例二仅说明了对宏块的码率变换进行码率控制的方法流程,对其他图像块的码率变换进行码率控制的方法流程与本发明实施例二所述流程一样,这里不再叙述。
本发明实施例二利用本发明实施例提供的图像码率控制方法为量化模块选择量化参数,不仅使输出的每一个宏块的实际输出码率与要求输出码率误差较小,而且不增大所有已变换宏块的累计比特数误差,使多个宏块或整个一帧图像数据的实际比特数与对应目标比特数的累计误差趋近于零,使输出图像质量保持较高的质量,不会使累计误差随着已变换宏块数目的增多而增大进而出现部分宏块量化较大、图像质量较差的现象。而且,由于输出的每一个宏块的实际输出码率与要求输出码率误差较小,每一个宏块的输出码率较均匀,因此不需要较大的输出缓冲区,且与要求输出码率的差值最小,符合要求度较高。并且输出码流在小时间范围内不存在波动,能满足对码率要求比较高的场合。
参阅图7所示,本发明实施例提供了一种图像码率控制装置,包括:
码率控制模块71,用于确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块72,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块73,用于根据量化参数确定模块72确定的量化参数对所述当前图像块进行量化。
其中,适用于该装置的图像块可以是宏块、条带或者一帧图像;量化参数确定模块72可以设置于码率控制模块71内,或者设置于量化模块73内。
其中,码率控制模块71根据前述公式(4)或(5)确定所述当前图像块的目标比特数。
参阅图8所示,量化参数确定模块72进一步包括:
参考量化参数确定子模块81,用于确定对应比特数误差等于0的量化参数,或者确定相邻的两个对应比特数误差分别大于0和小于0的量化参数;
量化参数确定子模块82,用于在参考量化参数确定子模块81确定了对应比特数误差等于0的量化参数时,选择该量化参数,或者选择与该量化参数相邻的、对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;当参考量化参数确定子模块81确定了所述相邻的两个量化参数时,选择能减小所述所有已变换图像块的累计比特数误差的量化参数。
其中,量化参数确定子模块82还用于在参考量化参数确定子模块81确定了所述相邻的两个量化参数时,如果所述所有已变换图像块的累计比特数误差不等于零,在所述相邻的两个量化参数中选择对应比特数误差的正负号与所述累计比特数误差的正负号相反的量化参数;如果所述所有已变换图像块的累计比特数误差等于零,在所述相邻的两个量化参数中选择对应比特数误差的绝对值较小的量化参数。
参阅图9所示,本发明实施例提供一种应用于码率变换技术中的图像码率控制装置,包括:
可变长解码模块91,用于将当前帧原始图像每个图像块的量化参数和原始比特数、以及当前帧原始图像的图像块总数量信息发送给码率控制模块92;
码率控制模块92,用于根据可变长解码模块91发送来的信息、要求输出码率、以及当前帧原始图像的原始输入码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块93,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块94,用于根据量化参数确定模块93确定的量化参数对所述当前图像块进行量化。
其中,上述应用于码率变换技术中的图像码率控制装置还可以包括:
输入码率确定模块95,用于确定当前帧原始图像的原始输入码率,并将确定的原始输入码率发送给码率控制模块92;
输出码率确定模块96,用于确定当前帧原始图像的要求输出码率,并将确定的要求输出码率发送给码率控制模块92。
参阅图10所示,本发明实施例提供一种应用于图像编码技术中的图像码率控制装置,包括:
图像分析模块101,用于将当前帧原始图像的每一个图像块的复杂度、当前帧原始图像的总比特数、当前帧原始图像的原始输入码率、以及当前帧原始图像的图像块总数量信息发送给码率控制模块102;
码率控制模块102,用于根据图像分析模块101提供的信息、及要求输出码率确定当前图像块的目标比特数,所述目标比特数为所述当前图像块按要求输出码率输出时的比特数;
量化参数确定模块103,用于在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,其中,每一个图像块的比特数误差为图像块的实际比特数与对应目标比特数之间的差值;
量化模块104,用于根据量化参数确定模块103确定的量化参数对所述当前图像块进行量化。
其中,上述应用于图像编码技术中的图像码率控制装置还可以包括:
输出码率确定模块105,用于确定当前帧原始图像的要求输出码率,并将确定的要求输出码率发送给码率控制模块102。
本发明实施例提供的图像码率控制方法及其装置,通过在不增大所有已变换图像块的累计比特数误差的所有量化参数中,选择使当前图像块的实际比特数最接近所述目标比特数的量化参数,根据该量化参数对当前图像块进行量化,不仅使输出的每一个图像块的实际输出码率与要求输出码率误差较小,而且不增大所有已变换图像块的实际比特数与对应目标比特数的累计误差,使多个图像块或整个一帧图像数据的累计误差趋近于零,使输出图像质量保持较高的质量。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。