专利名称:一种视频编码的码率控制方法
技术领域:
本发明涉及数字视频处理领域,尤其涉及一种视频编码的码率控制(Rate control)方法。
背景技术:
随着多媒体通信业务的快速增长和互联网的迅速发展,对视频编码技术的要求日益提高。现有的国际视频编码标准包括MPEG-1、MPEG-2、MPEG-4、H.263和H.264/AVC等。其中,码率控制方法是视频编码的核心技术之一,所述方法的目的是在给定目标比特率及缓存容量的条件下,尽可能提高压缩视频流的视频质量,有效抑制视频序列的质量波动并减少跳帧次数。因此,码率控制方法需根据已编码图像信息,对当前(当前帧或当前场)图像分配合理的量化系数,使输出图像符合编码要求的目标码率并尽可能保持图像的质量。
现有的码率控制方法,例如,MPEG-2标准的测试模型5(TM5,TestModel 5)、H.263标准的测试模型8(TMN8,Test Model Near 8)、MPEG-4标准的验证模型8(VM8,Verification Model Version 8)、H.264标准的的码率控制模型(JVT-G012),都能对编码器的输出码率较好地进行控制。但是,现有的码率控制方法的不足之处在于
1)需使用已编码的视频图像信息,估计当前视频图像的复杂度。而当视频序列运动非常剧烈,场景切换频繁或图像特征发生明显变化时,估计模型所引起的较大误差会导致码率分配的不合理,使编码器的编码性能急剧下降,从而导致视频质量恶化;2)需占用较多缓存空间,同时,采用的复杂度估计模型和率失真(Rate-distortion)估计模型包含大量的浮点计算,从而给编码器增加了极大的计算负荷,不利于硬件实现,不适用于实时编码领域。
发明内容
有鉴于此,本发明的主要目的在于提供了一种复杂度较低,利用编码器进行预编码的码率控制方法。
本发明是通过以下技术方案实现的一种视频编码的码率控制方法,包括如下步骤A)、判断当前视频图像的类型,如类型为单向帧间预测编码图像(P),执行步骤B),如类型为帧内预测编码图像(I)或双向帧间预测编码图像(B),执行步骤C);B)、对视频图像进行预编码,计算出当前视频图像的复杂度;C)、根据复杂度和目标码率,计算当前视频图像的量化系数;D)、根据调整后的量化系数对视频图像进行正常编码,编码完成后,更新码率控制模型的参数。
进一步地,所述步骤B)中预编码的编码参数至少包括图像编码范围、搜索范围、参考图像数目、熵编码模式。
进一步地,所述步骤B)中预编码的配置包括1)、只对图像的中心部分进行预编码,所述中心部分约为图像全幅面的1/9;2)、对于帧间预测模式,只考虑单参考图像;3)、使用更小的搜索范围,如为正常编码搜索范围的1/4;4)、在运动搜索时,决定子块分割模式;5)、当为帧间预测(Inter prediction)模式时,选择最小的绝对变换差值,决定帧间预测宏块的最佳块类型和分割模式;6)、不进行运动补偿或者只进行1/2像素精度的运动补偿;7)、对于帧内预测(Intra prediction)模式,只考虑16×16块分割模式,不考虑平面预测模式;8)、当为帧内预测模式时,选择最小的绝对变换差值,决定帧内预测宏块的最佳分割模式;并通过配置5)和配置8)的最佳分割模式结果,决定采用帧内预测模式或者帧间预测模式;9)、累加预编码过程中的每个宏块的最小的绝对变换差值,计算出复杂度,并返回给码率控制器;10)、编码器将不对运动补偿和帧内预测结果进行熵编码,编码系统无输出。
进一步地,所述步骤C)进一步包括如下步骤C1)、判断当前视频图像的类型,如类型为单向帧间预测编码图像,执行步骤C2),如类型为帧内预测编码图像或双向帧间预测编码图像,直接计算得出该图像的量化系数即可;
C2)、对平均复杂度进行估计;C3)、计算拉格朗日系数;C4)、根据已编码比特数调节拉格朗日系数;C5)、据拉格朗日系数计算出对应的量化系数。
进一步地,所述步骤C1)的当前视频图像的类型为帧内预测编码图像时,计算量化系数的公式是QPI=QPavg-Δ,其中,QPavg为已编码的参考图像的量化系数的均值,Δ为2;当前视频图像的类型为双向帧间预测编码图像时,计算量化系数的公式是if((TYPEref0==I_slice)&&(TYPEref1==I_slice))QPB=QPref1+QPref02+5;]]>else if(TYPEref0==I_slice)QPB=QPref1+2;else if(TYPEref1==I_slice)QPB=QPref0+2;elseQPB=QPref0+QPref12+2;]]>end if其中,TYPEref0、TYOPEref1分别为当前待编码图像的前向和后向两个相邻参考图像的类型;I_slice表示类型为帧内预测编码图像图像;QPref0和QPref1分别为前向和后向两个相邻参考图像的量化系数。
进一步地,所述步骤D)的更新码率控制模型的参数进一步包括如下步骤
D1)、更新图像复杂度系数;D2)、计算所有已编码图像的平均量化系数;D3)、更新已编码总比特数。
为验证本发明的实际性能,将本发明的码率控制方法与H.264/AVC标准现有的码率控制方法进行对比。如视频序列采用Akiyo.yuv(业界通用的视频测试序列),两种方法皆采用相同的编码参数和目标码率,编码结果分别参见表1、表2。所述编码参数包括图像编码范围、搜索范围、参考图像数目、熵编码模式等。在本实验中,四次测试的目标码率分别设定为1200Kbps、800Kbps、500Kbps、200Kbps。
表1本发明的码率控制方法的编码结果
表2 JVT-G012的码率控制方法的编码结果
如表1、表2所示,码率为实际的编码码率,平均PSNR(Peak Signalto Noise Ratio,峰值信噪比)为所有已编码重建帧(Reconstructed frame)的平均峰值信噪比,PSNR标准方差为所有已编码图像的PSNR的标准方差值。由表1、表2的编码结果进行比对,可得出以下结论1)、本发明的码率控制方法可使平均PSNR提高0.3~0.6dB,同时随着编码码率的提高,采用本发明的码率控制方法的平均PSNR也随之提升;2)、本发明的码率控制方法可使PSNR标准方差减小,也即PSNR的波动减小,从而提高使编码图像的均一性;另外,本发明的码率控制方法的计算量约为现有的码率控制方法的计算量的1/50。如果将预编码的配置采用1)~10)配置(具体请见下文的步骤202),可使预编码所耗费的时间只占正常编码时间的2%;此外,本发明的码率控制方法具有更强的适应性,在视频图像运动剧烈、场景切换频繁或图像特征发生明显变化时仍能保持均匀的视频图像和稳定的输出码率;进一步地,与本发明相配合的编码器可采用软件实现,也可用硬件实现,采用本发明的码率控制方法的码率控制器只占用整个编码系统的极少的计算资源。
图1是编码系统的结构框图;图2是本发明的码率控制方法的流程图。
具体实施例方式
以下结合附图和具体实施例对本发明作详细说明。
图1是编码系统的结构框图。所述编码系统1包括编码器12和码率控制器11。所述编码器12可采用软件实现,也可采用集成电路的硬件实现。所述编码器12用于运动搜索(motion estimation),运动补偿(motioncompensation),帧内预测,变换/量化和熵编码等运算。码率控制器11应用本发明的码率控制方法,通过配置编码参数,控制编码器12输出符合目标码率的码流,并可设置编码器12输出码率的波动范围。当视频序列的一帧(frame)或一场(field)视频图像输入至编码系统1后,由码率控制器11根据当前图像的类型判断是否需要进行预编码。在预编码时,码率控制器11驱动编码器12对图像进行预编码。预编码结果返回至码率控制器11后,再根据当前图像的复杂度和目标码率进行量化系数QP的计算。计算得出量化系数QP后,码率控制器11将更新后的量化系数QP传输至编码器12,编码器12应用新的量化系数QP对视频图像进行正常编码,并输出码流。图1中的编码控制指码率控制器11控制编码器12作预编码或正常编码。
图2是本发明的码率控制方法的流程图。
一种视频编码的码率控制方法,包括以下步骤(以下步骤适用于视频图像单位为帧或场图像的情况,现针对视频图像的单位为帧的情况,进行举例说明)步骤201、判断当前帧视频图像的类型;如当前待编码图像为单向帧间预测编码图像(P)时,执行步骤202,对图像的中心部分进行预编码;如当前待编码帧为帧内预测编码图像(I)或双向帧间预测编码图像(B),则执行步骤203。
步骤202、对视频图像进行预编码,计算出当前视频图像的复杂度;采用本发明的码率控制方法的码率控制器通过控制编码参数(包括图像编码范围、搜索范围、参考帧数目、熵编码模式等),使预编码符合以下配置1)、只对图像的中心部分进行预编码,所述中心部分约为图像全幅面的1/9;
2)、对于帧间预测模式,只考虑单参考帧;3)、使用更小的搜索范围,如为正常编码搜索范围的1/4;4)、在运动搜索时,决定子块分割模式;5)、当为帧间预测模式时,选择最小的绝对变换差值(SATD),决定帧间预测宏块的最佳分割模式;6)、不进行运动补偿或者只进行1/2像素精度的运动补偿;7)、对于帧内预测模式,只考虑16×16块分割模式,不考虑平面预测模式;8)、当为帧内预测模式时,选择最小的SATD值,决定帧内预测宏块的最佳分割模式;并通过配置5)和配置8)的最佳分割模式结果,决定采用帧内预测模式或者帧间预测模式;9)、累加预编码过程中的每个宏块的最小SATD值,计算出复杂度satd_pict,并返回给码率控制器;10)、编码器将不对运动补偿和帧内预测结果进行熵编码,编码系统无输出。
如配置1)、2)、3),可使运动预搜索的计算量减少至1/36以下;如配置4)、5)、6),可使运动补偿的计算量减少至1/8以下;如配置7)、8),可使帧内预测计算减少到1/16以下。
如配置9),可使编码器只返回少量的数据,也即复杂度satd_pict至码率控制器,减少传输带宽。
如配置10),可使编码器不进行熵编码,节省功耗。
通过以上配置1)~10),预编码一帧或一场的计算量大约为正常编码的2%。
步骤203、根据复杂度和目标码率,计算当前视频图像的量化系数;需根据帧类型计算调整当前帧的量化系数。
1)、若当前待编码帧为帧内预测编码图像,量化系数QPI通过公式(1)进行计算QPI=QPavg-Δ(1)如公式(1)所示,QPavg为已编码的参考帧的量化系数的均值,在完成当前帧的编码后,需对其进行更新。Δ为偏移常量,在本发明中,取值为2。由于偏移常量的参与,为帧内预测编码图像分配了较多比特数,有利于提高视频的整体质量。
2)、若当前待编码帧为双向帧间预测编码图像,量化系数QPB通过公式(2)进行计算if((TYPEref0==I_slice)&&(TYPEref1==I_slice))QPB=QPref1+Qpref02+5;]]>else if(TYPEref0==I_slice)QPB=QPref1+2;else if(TYPEref1==I_slice)QPB=QPref0+2;elseQPB=QPref0+QPref12+2;---(2)]]>end if如公式(2)所示,TYPEref0、TYPEref1分别为当前待编码帧的前向和后向两个相邻参考帧的类型;I_slice表示类型为I帧;QPref0和QPref1分别为前向和后向两个相邻参考帧的量化系数。在本发明中,B帧的量化系数值比相邻的P帧的量化系数值大2,比相邻的I帧的量化系数值大5。
3)、若当前待编码帧为单向帧间预测编码图像,量化系数QPP的计算方法如下A)、通过公式(3)对现有帧(包括已编码帧和当前待编码帧)的平均复杂度C[n]进行估计;C[n]=Csatd[n]/α(3)其中,Csatd[n]=Csatd[n-1]/α+satd_pict(4)在公式(4)中,Csatd[n-1]为已编码帧(不包括当前待编码帧)的复杂度之和;Csatd[n]为现有帧(包括已编码帧和当前待编码帧)的复杂度之和;satd_pict为步骤202的预编码的返回结果,也即当前帧的复杂度;α为模型更新系数,在本发明中,取值为2。
B)、通过公式(5)计算拉格朗日系数λn;λn=C[n]ω---(5)]]>其中,λn为拉格朗日系数;ω为模型调整系数。通过公式(6)计算ω。
ωn=BR*nfps*cplx_pictn---(6)]]>其中,BR为目标码率,fps为帧率,n为当前编码图像序号,cplx_pict为已编码的图像的复杂度(其初始值为目标BR/fps,具体计算过程参见步骤204)。
C)、通过公式(7),根据已编码比特数调节拉格朗日系数λn;
λn=λn*βk(7)其中,βk为码率调节比例系数,通过公式(8)对其进行计算。
βk=tot_bit-k*BRfpsθ*BR---(8)]]>如公式(8)所示,θ为码率调节精度系数(初始值为1);tot_bit为已编码比特数;k为已编码帧数。
为避免量化系数的变化过大,而导致图像质量波动太大,β应限定于
的区间内,经调节后的拉格朗日系数λn也应限定于
的区间内。
D)、通过公式(9),根据拉格朗日系数λn计算出对应的量化系数。
QP=6*log2(λn0.85)+12---(9)]]>通过公式(9),即可计算得出经修正后的量化系数值。码率控制器将此量化系数值QP传送至编码器进行正常编码。
步骤204、根据调整后的量化系数对视频图像进行正常编码,编码完成后,更新码率控制模型的参数。
当一帧图像编码完毕后,按照如下步骤对码率控制模型的参数进行更新。
A)、更新图像复杂度系数cplx_pictn;如已编码的图像为非双向帧间预测编码图像时,计算公式如下cpl_pictn=cplx_pictn-1+bitsn*λnC[n]---(10)]]>
如已编码的图像为双向帧间预测编码图像时,计算公式如下cplx_pictn=cplx_pictn-1+bitsn*λnη*C[n]---(11)]]>如公式(10)、(11)所示,bitsn为当前帧的已编码比特数;η为常数,在本发明中,取值为1.3。
B)、计算所有已编码图像的平均量化系数QPavg;QPavg=γ*QPavg+(1-γ)*QPn(12)如公式(12)所示,γ为模型更新比例系数,在本发明中,取值为0.9。
C)、更新已编码总比特数tot_bit,计算公式(13)如下。
tot_bit=tot_bit+bitsn(13)本发明的码率控制方法可控制编码器实时计算出当前图像的编码复杂度,使编码控制更加准确合理。同时,采用本发明的码率控制方法的码率控制器只占用整个编码系统极少的计算资源,极大地减少了额外计算量。所述计算量约为现有的H.264标准的恒定码率控制模型计算量的1/50。如将预编码的配置采用步骤202的1)~10)配置,可使预编码所耗费的时间只占正常编码时间的2%。
另外,本发明的码率控制方法采用一阶线性控制模型,降低了现有的H.264标准采用二次方程控制算法的复杂度。预编码还可解决现有的码率控制方法因估计不准所带来的误差累积,可使编码的平均PSNR提高0.3~0.6dB。同时,随着编码码率的提高,采用本发明的平均PSNR的提升将更加明显,从而使编码图像的质量更加均匀。
此外,本发明的码率控制方法与现有的码率控制方法相比,具有更强的适应性。在视频图像运动剧烈、场景切换频繁或图像特征发生明显变化时,仍能保持均匀的视频质量和稳定的输出码率。
本发明的码率控制方法可广泛应用于H.264和AVS等实时编码系统中。当然,本发明并不限于此,对于其他类似的视频编码标准,也同样适用。
以上所述仅为本发明的较佳实施例而已,并不用于限制本发明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种视频编码的码率控制方法,其特征在于,包括如下步骤A)、判断当前视频图像的类型,如类型为单向帧间预测编码图像,执行步骤B),如类型为帧内预测编码图像或双向帧间预测编码图像,执行步骤C);B)、对视频图像进行预编码,计算出当前视频图像的复杂度;C)、根据复杂度和目标码率,计算当前视频图像的量化系数;D)、根据调整后的量化系数对视频图像进行正常编码,编码完成后,更新码率控制模型的参数。
2.如权利要求1所述的视频编码的码率控制方法,其特征在于,所述步骤B)中预编码的编码参数至少包括图像编码范围、搜索范围、参考图像数目、熵编码模式。
3.如权利要求1或2所述的视频编码的码率控制方法,其特征在于,所述步骤B)中预编码的配置包括1)、只对图像的中心部分进行预编码,所述中心部分约为图像全幅面的1/9;2)、对于帧间预测模式,只考虑单参考图像;3)、使用更小的搜索范围,如为正常编码搜索范围的1/4;4)、在运动搜索时,决定子块分割模式;5)、当为帧间预测模式时,选择最小的绝对变换差值,决定帧间预测宏块的最佳分割模式;6)、不进行运动补偿或者只进行1/2像素精度的运动补偿;7)、对于帧内预测模式,只考虑16×16块分割模式,不考虑平面预测模式;8)、当为帧内预测模式时,选择最小的绝对变换差值,决定帧内预测宏块的最佳分割模式;并通过配置5)和配置8)的最佳分割模式结果,决定采用帧内预测模式或者帧间预测模式;9)、累加预编码过程中的每个宏块的最小的绝对变换差值,计算出复杂度,并返回给码率控制器;10)、编码器将不对运动补偿和帧内预测结果进行熵编码,编码系统无输出。
4.如权利要求1所述的视频编码的码率控制方法,其特征在于,所述步骤C)进一步包括如下步骤C1)、判断当前视频图像的类型,如类型为单向帧间预测编码图像,执行步骤C2),如类型为帧内预测编码图像或双向帧间预测编码图像,直接计算得出该图像的量化系数即可;C2)、对平均复杂度进行估计;C3)、计算拉格朗日系数;C4)、根据已编码比特数调节拉格朗日系数;C5)、据拉格朗日系数计算出对应的量化系数。
5.如权利要求4所述的视频编码的码率控制方法,其特征在于,所述步骤C1)的当前视频图像的类型为帧内预测编码图像时,计算量化系数的公式是QPI=QPavg-Δ,其中,QPavg为已编码的参考图像的量化系数的均值,Δ为2;当前视频图像的类型为双向帧间预测编码图像时,计算量化系数的公式是if〔(TYPEref0==I_slice)&&(TYPEref1==I_slice)〕QPB=QPref1+Qpref02+5;]]>else if〔TYPEref0==I_slice〕QPB=QPref1+2;else if〔TYPEref1==I_slice〕QPB=QPref0+2;elseQPB=QPref0+QPref12+2;]]>end if其中,TYPEref0、TYPEref1分别为当前待编码图像的前向和后向两个相邻参考图像的类型;I_slice表示类型为帧内预测编码图像;QPref0和QPref1分别为前向和后向两个相邻参考图像的量化系数。
6.如权利要求1所述的视频编码的码率控制方法,其特征在于,所述步骤D)的更新码率控制模型的参数进一步包括如下步骤D1)、更新图像复杂度系数;D2)、计算所有已编码图像的平均量化系数;D3)、更新已编码总比特数。
全文摘要
本发明公开了一种视频编码的码率控制方法,包括如下步骤A)判断当前视频图像的类型,如类型为单向帧间预测编码图像,执行步骤B),如类型为帧内预测编码图像或双向帧间预测编码图像,执行步骤C);B)对视频图像进行预编码,计算出当前视频图像的复杂度;C)根据复杂度和目标码率,计算当前视频图像的量化系数;D)根据调整后的量化系数对视频图像进行正常编码,编码完成后,更新码率控制模型的参数。本发明的码率控制方法可广泛应用于H.264和AVS等编码系统中。
文档编号H04N7/26GK101094411SQ20071004338
公开日2007年12月26日 申请日期2007年7月3日 优先权日2007年7月3日
发明者欧阳超, 何辉, 黄为 申请人:芯瀚电子技术(上海)有限公司