本发明提出了一种H264视频编码码率控制方法,属于视频编码技术领域。所述方法首先根据帧差法表征的图像复杂度因子来确定当前编码帧的目标比特数,然后计算量化参数并进行率失真优化。本发明引入一个量化调整系数,根据缓冲区充盈度计算该量化调整系数,再用该量化调整系数对当前帧的量化参数进行调整。相比现有技术,本发明方法在提高码率控制精度的同时,能够获得更好的视频质量,并保持较低的缓冲区充盈度,避免跳帧现象,从而提高视频图像的连续性和稳定性。本发明算法简单,易于硬件实现,有良好的应用前景。
1.一种H264视频编码码率控制方法,所述方法包括如下步骤:A、根据帧差法表征的图像复杂度因子来确定当前编码帧的目标比特;B、计算量化参数并进行率失真优化;其特征在于,在计算量化参数时,调整当前帧的量化参数,按照如下公式计算并动态调整当前编码的第i个GOP层第j帧的量化参数:
Q P i ( j ) = Q P i ′ ( j ) + 3 adjust _ qp ≥ 1 Q P i ′ ( j ) + 2 0.6 ≤ adjust _ qp < 1 Q P i ′ ( j ) + 1 0.3 ≤ adjust _ qp < 0.6 Q P i ′ ( j ) adjust _ qp < 0.3 ]]> 其中:QP"
i(j)为JVT-G012算法下得到的第i个GOP层第j帧调整前的量化参数;i为视频序列中GOP层的序号,取值范围为1到视频序列中GOP层数;j为第i个GOP层中帧的序号,取值范围为1到第i个GOP中的总帧数;adjust_qp为量化调整系数,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="449"/>B
c(n
i,j)为当前缓冲区的充盈度,T
bl(n
i,j)为目标缓冲区的大小,n
i,j为第i个GOP层第j帧。
技术领域本发明属于视频编码技术领域,具体指的是一种H264视频编码码率控制方法。
背景技术在视频通信中,压缩编码后的信息流常常需要在带宽不衡定的网络上传输。为了使编码后的视频流很好地适应带宽,尤其是适应低带宽信道或时变的无线信道并充分利用有限的网络资源,码率控制成为了视频通信系统中一个必不可少的环节。码率控制的主要任务是采集缓冲区状态和图像活动性等信息,来给每幅图像分配一定的比特数,使得输出码率能控制在给定的标准上,并使图像失真最小。在H264(或H.264)/AVC的码率控制方法中,由于同时在码率控制和率失真优化环节使用了量化参数,导致了“蛋鸡悖论”,即对当前帧的宏块进行率失真优化时,需要先通过当前帧或当前宏块的MAD决定每个宏块的量化参数,而当前帧或宏块的MAD仅在率失真优化后才能得到[Maxa0S.W,Gaoxa0Wxa0andxa0Luxa0Y.Ratexa0controlxa0onxa0JVTxa0standard,docu
mentxa0JVT-D030[S].2002]。为了解决“蛋鸡悖论”问题,很多学者做了大量的研究,文献[Shinxa0Ixa0H,Leexa0Yxa0L,Parkxa0Hxa0W.Ratexa0controlxa0usingxa0linearxa0rate-ρxa0modelxa0forxa0H.264[J].Signalxa0Processxa0Imagexa0Com-munication,2004,19:341-352.]在ρ域模型的基础上作了改进,应用在H.264的码率控制中,文献[Maxa0Siwei,Gaoxa0Wen,Luxa0Yan.Rate-distortionxa0analysisxa0forxa0H.264/AVCxa0videoxa0codingxa0andxa0itsxa0applicationxa0toxa0ratexa0control[J].IEEExa0Transxa0onxa0Circuitxa0Systxa0forxa0Videoxa0Technol,2005,15(12):1533-1544.]提出了码率与量化步长与量化步长间的关系模型及相应的码率控制方法,文献[MaS.W,Gaoxa0W,Wuxa0Fxa0andxa0Luxa0Y.Ratexa0controlxa0forxa0JVTxa0videoxa0codingxa0schemexa0withxa0HRDxa0considerations.Proceedingxa0ofxa0IEEExa0Internationalxa0Conferencexa0onxa0Imagexa0andxa0Processing,2003,vol.3,pp:793-796.]将HRD一致性约束、平均绝对误差比综合考虑,提出了一种新的码率控制方法。Lixa0Zhengguo提出的JVTG012方法利用线性MAD模型来预测当前基本单元的MAD值,这一方法可以获得比较好的编码效果,引起了广泛的关注[Lixa0Zhengguo,Gaoxa0Wen,Panxa0Feng,etxa0al.Adaptivexa0ratexa0controlxa0forxa0H.264[J].Journalxa0ofxa0Visualxa0Communicationxa0andxa0Imagexa0Representation,2006,17(2):376-406.]。JVT-G012方法虽然较好地解决了蛋鸡悖论问题,然而仍然存在很多问题。比如方法中没有明确的讨论帧内的码率-量化(R-Q)模型,因此文献[X.Jing,L.P.Chau,andxa0W.-Cxa0Siu,"f
ramexa0complexity-ba
sedxa0rate-quantizationxa0modelxa0forxa0H.264/AVCxa0intraf
ramexa0ratexa0control,"IEEExa0Signalxa0Processingxa0Letters,vol.15,pp.373-376,2008.]提出了一种自适应的帧内R-Q模型,这种方法通过考虑基于灰度的帧复杂度,自适应的更新模型参数,来更精确地选择帧内编码帧的量化参数。又比如在基于传统变换的视频编码系统中彩色视频信号的率失真(R-D)参数分别为亮度和色度分量模型化,所以文献[Z.Z.Chenxa0andxa0K.N.Ngan,“Towardsxa0rate-distortionxa0tradeoffxa0inxa0real-timexa0colorxa0videoxa0coding”,IEEExa0Trans.Circuitsxa0Syst.Videoxa0Technol.,2007,vol.17,no.2,pp.158-167]提出为彩色视频编码建立独立的R-D模型。JVT-G012方法在帧级码率控制上也存在不足。它根据缓冲区的情况来为各帧平均分配比特,忽略图像复杂度的分布,致使帧层目标比特分配过于均匀;其次计算量化参数时也没有考虑已编码帧的特性对当前帧码率控制的影响。基于帧复杂度的H.264码率控制方法(申请号为201010235061.8)中公开了一种基于帧复杂度的H.264码率控制方法。该方法包括以下步骤:A、根据帧复杂度确定当前编码帧的目标比特数;B、计算量化参数并进行率失真优化;其中,帧复杂度是通过一个复杂度系数来衡量,该复杂度系数定义为图像灰度直方图的平均差值和图像亮度分量的平均绝对误差比率的加权之和,在该复杂度系数基础上,通过经验公式对现有的目标比特公式进行了修正。一种H.264码率控制方法(ZL201010239407.1)提供一种结合图像复杂度并对量化参数进行调整的帧层码率控制方法,提高视频输出序列的平均峰值信噪比,并能够减小视频图像帧间质量波动,从而提高视频图像质量。该方法在量化参数调整时未考虑缓冲区充盈度对当前帧码率控制的影响,调整策略较简单。由于缓冲区充盈度大于目标缓冲区时,缓冲区就会上溢,进而编码过程中会出现跳帧现象,影响编码质量。因此在在编码过程中要考虑缓冲区充盈度的大小对量化参数的调整。
发明内容本发明的目的在于克服现有技术的不足,提出一种新的H264(或H.264)视频编码码率控制方法。本发明考虑了缓冲区充盈度对量化参数的影响,根据缓冲区充盈度定义了量化调整系数,利用量化调整系数对量化参数进行调整和优化,进一步提高码率控制的精度和图像的质量。本发明解决其技术问题所采用的技术方案是:本发明采用量化调整系数来调整每一帧的量化参数。量化调整系数是由当前缓冲区的充盈度和目标缓冲区的大小共同来决定的。具体是指按照如下公式计算调整当前编码的第i个GOP层第j帧的量化参数:
Q P i ( j ) = Q P i ′ ( j ) + 3 adjust _ qp ≥ 1 Q P i ′ ( j ) + 2 0.6 ≤ adjust _ qp < 1 Q P i ′ ( j ) + 1 0.3 ≤ adjust _ qp < 0.6 Q P i ′ ( j ) adjust _ qp < 0.3 ]]> 其中,QP′
i(j)为JVT-G012算法下得到的第i个GOP层第j帧调整前的量化参数;i为视频序列中GOP层的序号,取值范围为1到视频序列中GOP层数;j为第i个GOP层中帧的序号,取值范围为1到第i个GOP中的总帧数;adjust_qp为量化参数调整因子,其表达式为:
adjust _ qp = B c ( n i , j ) T bl ( n i , j ) ]]> 其中,B
c(n
i,j)为当前缓冲区的充盈度,T
bl(n
i,j)为目标缓冲区的大小,n
i,j为第i个GOP层第j帧。本发明的有益效果是:本发明提出了一种H264视频编码码率控制方法,所述方法引入了利用缓冲区充盈度的大小来调整当前编码帧的量化参数的量化调整系数;相比现有技术,本发明方法在提高码率控制精度的同时,能够获得更好的视频质量,并保持较低的缓冲区充盈度,避免跳帧现象,从而提高视频图像的连续性和稳定性。本发明方法算法简单,易于硬件实现,有良好的应用前景。
附图说明图1是本发明方法与JVT-G012方法处理news序列的PSNR比较图。图2是本发明方法与JVT-G012方法处理akiyo序列的PSNR比较图。图3是本发明方法与JVT-G012方法处理foreman序列的缓冲区充盈度大小的比较图。
具体实施方式下面结合附图对本发明提出的一种H264视频编码码率控制方法进行详细说明:一种H264视频编码码率控制方法,具体包括以下步骤:A、根据帧差法表征的图像复杂度因子来确定当前编码帧的目标比特;本步骤包括以下步骤:A1.按照下式计算未编码帧的剩余比特数:
T r ( n i , j ) = u ( n i , 1 ) F r × N gop - [ B s 8 - B c ( n i - 1 , N gop ) ] j = 1 T r ( n i , j - 1 ) - A ( n i , j - 1 ) j = 2,3 · · · N , ]]> 其中,T
r(n
i,j)表示第i个GOP层编码至第j帧时剩余的总比特数,n
i,j为第i个GOP层第j帧,u(n
i,1)表示编码第一帧前的可用信道带宽,F
r为帧率,N
gop表示该GOP层中帧的个数,B
s为缓冲区的大小,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="219"/>表示第i-1个GOP层中该GOP层中最后一帧编码结束后缓冲区实际占有率,A(n
i,j-1)是第i个GOP层第j-1帧实际产生的比特数;A2、利用帧差法来计算图像复杂度因子:
α = min { max { Frm _ diff ( i ) Frm _ diff ( i - 1 ) , β 1 } , β 2 } ]]> 其中,α表示图像复杂度因子;β
1,β
2是经过大量实验来确定的两个系数;
Frm _ diff ( i ) = Σ y = 0 y = H - 1 Σ x = 0 x = W - 1 | Y C ( x , y ) - Y P ( x , y ) | ]]>其中Frm_diff(i)表示第i帧的帧差值;Y
C(x,y)和Y
P(x,y)分别表示当前帧和前一帧的重构帧在位置(x,y)上的亮度值。本具体实施方式中,β
1,β
2的取值为0.8和4。A3、根据下式计算当前编码帧的目标比特数:
f ( n i , j ) = α × T r ( n i , j ) N p + ( 1 - β ) × { ( u ( n i , j ) F r ) - γ × [ Tbl ( n i , j ) - B c ( n i , j ) ] } , ]]> 其中,f(n
i,j)表示第i个GOP中第j帧的目标比特数;T
r(n
i,j)表示第i个GOP层编码至第j帧时剩余的总比特数;α表示图像复杂度因子;F
r表示帧率;N
r表示当前GOP层未编码帧数;u(n
i,j)表示信道可利用的带宽;Tbl(n
i,j)表示目标缓冲级别;B
c(n
i,j)表示缓冲区占用度;β、γ是加权系数,当有B帧时β为0.9,γ为0.25,否则β为0.5,γ为0.5。B、计算量化参数并进行率失真优化;具体包括以下步骤:B1、根据下式计算调整前当前编码帧的量化参数:
f ( n i , j ) = a MAD ( i , j ) Q P i ′ ( j ) + b MAD ( i , j ) Q P i ′ ( j ) 2 ]]> 其中,a、b为模型参数,通过线性回归统计计算得到;QP′
i(j)为未做调整前的当前帧的量化参数;f(n
i,j)表示第i个GOP中第j帧的目标比特数;MAD(i,j)=a1*MAD(i,j-1)+a2,表示表示第i个GOP层中第j帧的图像亮度分量平均绝对误差;a1和a2是一元线性回归系数,在编码完一帧后进行更新,初始值分别为1和0。B2、按照如下公式计算并动态调整当前编码帧的量化参数:
Q P i ( j ) = Q P i ′ ( j ) + 3 adjust _ qp ≥ 1 Q P i ′ ( j ) + 2 0.6 ≤ adjust _ qp < 1 Q P i ′ ( j ) + 1 0.3 ≤ adjust _ qp < 0.6 Q P i ′ ( j ) adjust _ qp < 0.3 ]]> 其中,QP′
i(j)为JVT-G012算法下得到的第i个GOP层第j帧调整前的量化参数;i为视频序列中GOP层的序号,取值范围为1到视频序列中GOP层数;j为第i个GOP层中帧的序号,取值范围为1到第i个GOP中的总帧数;adjust_qp为量化调整系数,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="449"/>其中,B
c(n
i,j)为当前缓冲区的充盈度,T
bl(n
i,j)为目标缓冲区的大小。B3、用拉格朗日优化算法进行率失真优化。本步骤所使用的率失真优化为G012传统算法中的技术。为了验证本发明方法的效果,在JVT的校验JM10.1上实现了本发明提出的码率控制改进方法,并和利用帧差法来分配目标比特的的码率控制方法(郑巧燕,郁梅,彭宗举,等.一种结合人眼视觉特性的H.264/AVC码率控制算法[J].光电子·激光,2011(03):440-445)以及JVT-G012码率控制方法分别进行了对比。实验采用QCIF4:2:0格式的测试序列:akiyo、foreman、carphone、news序列,在48kbps的目标码率下进行测试,所有序列按IPP......PPP编码,GOP长度为20,帧率为30fps,共编码200帧。得到的实验结果如下表1所示(其中,原方法表示利用帧差法来分配目标比特的的码率控制方法)。
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 表1从表中可以看出,与以帧差法表征的图像复杂度因子来确定当前编码帧的目标比特方法的码率控制方法相比,本发明方法提高了码率控制的精度,更能准确地控制码率,同时本发明的码率控制方法还能获得更好的峰值信噪比PSNR,并且能够有效的抑制PSNR的巨大波动,提高了视频序列的稳定和平滑性。图1和图2分别为news、akiyo测试序列分别在JVT-G012和本发明方法下得到的PSNR的比较图,图中Proposed表示本发明方法。从图中可以明显的看到本发明方法得到的PSNR波动较小,不会造成视频质量的突然下降。如第80帧的news测试序列,采用JVT-G012方法得到的PSNR值为28.45dB,本发明方法得到的PSNR值为32.25dB,比JVT-G012提高了3.80dB。图3为JVT-G012和本发明方法处理foreman测试序列时得到的缓冲区充盈度的对比图,图中Proposed表示本发明方法。从图中可以看出,本发明方法得到的缓冲区充盈度更稳定,不会出现较大的波动,能够有效地避免缓冲区的上溢,不会出现跳帧,从而获得更好的视频质量。相比现有技术,本发明方法在提高码率控制精度的同时,能够获得更好的视频质量,并保持较低的缓冲区充盈度,避免跳帧现象,从而提高视频图像的连续性和稳定性。本发明算法简单,易于硬件实现,有良好的应用前景。