CN101188752A - 一种基于相关性的自适应码率控制方法 - Google Patents

一种基于相关性的自适应码率控制方法 Download PDF

Info

Publication number
CN101188752A
CN101188752A CN 200710050874 CN200710050874A CN101188752A CN 101188752 A CN101188752 A CN 101188752A CN 200710050874 CN200710050874 CN 200710050874 CN 200710050874 A CN200710050874 A CN 200710050874A CN 101188752 A CN101188752 A CN 101188752A
Authority
CN
China
Prior art keywords
frame
mad
macro block
correlation
model
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200710050874
Other languages
English (en)
Inventor
方春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN 200710050874 priority Critical patent/CN101188752A/zh
Publication of CN101188752A publication Critical patent/CN101188752A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明涉及一种基于H.264/AVC的相关自适应码率控制方法。该方法利用视频帧或宏块之间的相关性,自适应地调整用于模型参数预测的数据量,使得模型计算的平均数据量降低,从而降低了计算复杂度。本发明码率控制方法采用帧层控制和宏块层控制结合,并缩小了视频帧内的宏块量化等级的变动范围,在帧层,建立了新的MAD模型,该模型求解和RD模型求解利用相关性进行加权求解;在宏块层,建立新的MAD预测模型,并依据宏块间的时空相关特性,设计了一种MAD模型和RD模型求解方案。测试表明,本发明与G012标准算法相比算法复杂度低,提高了码率控制精度,平缓了缓冲区,并且编码视频的PSNR值平均提高了0.4dB。

Description

一种基于相关性的自适应码率控制方法
技术领域
本发明涉及视频压缩中的码率控制领域,特别涉及一种基于相关性的自适应新码率控制方法。
技术背景
H.264是由联合视频组(Joint Video Team,JVT)近年来致力开发研究的最新视频压缩国际标准。该标准为广播、存储设备、对话服务以及无线网络等方面的视频技术提供了技术支持,该和以往的标准相比,例如:H.263,H.263+,H.263++和MPEG-4,在视频编码效率取得了很大的提高,相同视频质量下,H.264不仅比H.263和MPEG-4节约了50%的码率,而且对网络传输具有更好的支持功能。随着通信和视频技术的发展,视频信号的传输受到了越来越多的资源限制,对视频压缩和通信而言,主要的限制在于有限的通信带宽和存储空间,而这些决定了视频信号的输出码率。因此码率控制在视频通信中起着至关重要的作用。
码率控制的最终目的是为了在有限的缓冲区容量和信道带宽下传输高质量的视频序列。对一些实时的视频通信服务而言,如视频会议,视频手机,这些系统资源常常非常有限,在这种情况下,码率控制的要求很高,一方面需要满足低的传输时延要求,另一方面又要保证缓冲区中数据的容量不能上溢或下溢,保持在通信过程中缓冲区中数据占有量保持比较恒定。因此就需要精确的码率控制方法。但是在地码率通信时,很多现有的码率控制策略,如MPEG2 TM5、H.263 TMN8、MPEG4 VM8均无法适用。
H.264编码标准采用了李政国提出的JVT-G012码率控制方法。该方法利用线性预测来预测当前宏块的MAD,然后再使用MPEG-2中的二次模型(R-D预测模型)来计算量化等级。在JVT-G012标准中提出,码率控制分为GOP层码率控制,帧层码率控制以及宏块层码率控制。我们可在各层建立不同的模型即算法,通过层层地控制以实现高精度的码率控制方法。
视频压缩主要是利用了视频信号之间的相关性,视频压缩采用了各种预测技术来降低视频信号间的冗余,例如,帧内预测技术,帧间预测技术。码率方法也在一定程度上利用了视频信号之间的相关性,其利用这些相关性来进码率控制参数的预测及量化等级的预测。但是,不同的帧之间的相关性不同,若用相关性小的数据进行码率控制模型参数计算以及量化等级的预测,可能导致得到的结果不准确。视频帧与帧之间相关性随着时间间隔的增加,其不断降低,而对每一帧内的宏块,处于不同时空位置的宏块之间相关性也不相同。  但G012标准中对这些情况并没有作详细的区分,是其码率控制模型精度不够的一个主要原因,并且需要采用较多的数据进行计算,在JM8.6版本中前面需要20组数据,虽然采用的数据量多可以在一定程度上保持码率控制的精度,但是当视频序列发生激烈变化或场景切换时,模型中的参数很难跟上其变化,从而使得量化等级也很难跟上其变化。这时,采用过多的过时数据来进行模型计算反而引起模型精度的下降。
发明内容:
本发明的是鉴于上述问题而完成的,主要目的提供一种基于相关性的自适应码率控制方法。这种方法所需复杂度低,能更准确地控制输出码率变化,并取得较高质量的视频输出。
本发明目的实现主要包括以下步骤:
1)为该GOP分配目标编码比特
编码下一GOP时对该GOP分配目标比特,计算公式如下
T G = u F * N Gop - ( B s 8 - B c )
TG是为编码该GOP分配的目标比特,u信道输出码率,F为编码帧率,NGop为该GOP帧的数目,Bs为缓冲区最大容量,Bc为编码完上一GOP缓冲区占有容量。
2)为下一帧分配目标比特
编码第n+1帧前对该帧分配目标比特,计算公式如下
T F ( n + 1 ) = T F ( n ) - T F ( 2 ) - B S / 8 N GOP - 2
TF(n+1)是为编码第n+1帧分配的目标比特
3)帧之间的相关性计算
在当前图像序列组中,如果编码完第n-1帧的平均绝对误差(MAD)为MADF(n-1),第n-2帧的MAD为MADF(n-2),则定义第n-1帧与第n-2帧之间的相关性系数计算公式为:
λ(n-1)=min(MADF(n-1)/MADF(n-2),MADF(n-2)/MADF(N-1))
定义:第n-1帧与第k帧之间的相关性计算方法为:
r ( n - 1 , k ) = Π j = 1 k λ a ( n - 1 - j ) ≈ Π j = 1 k ( 1 - a ( 1 - λ ( n - 1 - j ) ) )
其中a为一固定常数。
4)预测下一帧与已编码帧相关性并限定用于帧层模型计算的数据量
(41):预测下一帧与已编码帧之间的相关性
在编码第n帧前,需要预测该帧与已编码的各帧之间的相关性,为了降低计算量,算法让第n帧与第i帧之间的相关性大小等于第n-1帧与第i-1帧之间的相关性。
(42):帧层模型可用数据量限定
当视频序列中第n帧与第i之间相关性低于η时,η为一固定常数,认为这两帧之间的已经基本上不相关,此时让r(n,i)为0,则不再使用比该帧时间上更远帧的数据进行计算,因此,前面第k帧的编码数据(已编码各帧实际与预测MAD,编码比特,量化步长(QStep),RD模型中的参数XF1和XF2,MAD模型中的参数Cf)是否用于帧层MAD模型和RD模型计算时,取决于第k帧与当前帧之间的相关性是否大于0,那么编码第n帧最多可用m帧的编码数据,其m满足:
r(n,n-m)>η且r(n,n-m-1)≤η
5)预测下一帧编码后的MAD值和计算下一帧量化参数
(51):预测下一帧编码后的MAD值
在编码第n前,需要预测下一帧编码后的MAD,在本发明中其MAD采用相关加权预测,公式设计如下:
MAD F _ pred ( n ) = ( Σ i = 1 m MAD F ( n - i ) · r ( n , n - i ) ) / R + C
其中 R = Σ i = 1 m r ( n , n - i )
C为修正MAD预测模型的修正参数,当编码完一帧后对C值进行更新。该公式利用了前面已编码帧的实际MAD值和它们与第n帧之间的所预测得到相关性进行加权预测得到。
(52):计算下一帧的量化步长
在帧层,采用二次RD模型来计算第n帧的量化参数,公式如下:
R F ( n ) = MA D F _ pred ( n ) · ( X F 1 _ pred ( n ) QSte p F ( n ) + X F 2 _ pred ( n ) QSte p F 2 ( n ) )
其中RF(n)为分配给编码第n帧分配的目标比特,QStepF(n)为待求的编码第n帧量化步长,XF1_pred(n)和XF2_pred(n)为预测编码第n帧的二次RD模型中的一次和二次参数,其值的计算在编码完一帧后更新。根据帧二次RD模型通过求解关于QStepF(n)的二次方程便可得到编码n帧的量化步长。
(53):计算下一帧的量化参数
根据上一步求得的量化步长QStepF(n),通过查表可求得编码第n帧的量化参数QPF(n)。表由H.264标准提供。
6)为下一宏块分配目标编码比特
在编码第n帧i行j列宏块前为该宏块分配目标编码比特,其公式为:
 TM(n,i,j)=R(n)/Nr
其中TM(n,i,j)是为编码第n帧i行j列分配的目标比特,R(n)为编码当前帧还剩下的比特,Nr为当前帧中还未编码的宏块数目。
7)宏块间相关性系数计算
宏块与其周围相邻有在同一帧中有水平相邻的宏块,垂直相邻的宏块,与上一帧之间有同位置相邻的宏块,第n帧i行j列宏块与它周围宏块的相关系数计算公式分别定义如下:
λr(n,i,j)=min(MADM(n,i,j-1)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i,j-1))
λl(n,i,j)=min(MADM(n,i-1,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i-1,j))
λc(n,i,j)=min(MADM(n-1,i,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n-1,i,j))
其中λr(n,i,j)表示第n帧的i行、j列的宏块与n帧的i行、j-1列宏块之间的相关性系数,为水平相关系数;λl(n,i,j)表示第n帧的i行、j列的宏块与n帧的i-1行、j列宏块之间的相关系数,为垂直相关系数;λc(n,i,j)表示第n帧的i行、j列的宏块与n-1帧的i行、j列宏块之间的相关系数,为同位置相关系数。
8)预测下一宏块与已编码宏块之间的相关性并限定可用于宏块层模型计算的数据量
(81):预测下一宏块与已它周围已编码宏块之间的相关性系数
编码第n帧,i行,j列的宏块前,首先需要预测该宏块与它周围已编码宏块之间的相关系数,该宏块与其相邻宏块之间的相关系数预测公式分别为:
λr(n,i,j)=MAX(λr(n,i,j-1),λr(n,i-1,j),λr(n-1,i,j))
λl(n,i,j)=MAX(λl(n,i,j-1),λl(n,i-1,j),λl(n-1,i,j))
λc(n,i,j)=MAX(λc(n,i,j-1),λc(n,i-1,j),λc(n-1,i,j))
若公式中两宏块之间的相关性不存在,则令其等于0。
(82):预测下一宏块与已编码宏块之间的相关性
编码第n帧的i行、j列的宏块前,需要预测该宏块与已编码的各宏块之间的相关性,其与第m帧的u行、v列的宏块之间的相关性计算公式为:
r M ( n , i , j , m , u , v ) = Π z = m n λc a 1 ( z , i , j ) * Π y = i u λ l a 2 ( m , y , j ) * v Π x = j n λr a 3 ( m , i , x )
≈ Π z = m n ( 1 - a 1 ( 1 - λc ( z , i , j ) ) * Π y = i u ( 1 - a 2 ( 1 - λl ( l , y , j ) ) * Π x = j n ( 1 - a 3 ( 1 - λr ( m , i , x ) )
其中a1,a2,a3为固定系数,用于控制在水平,垂直的数目以及控制不同帧之间相关宏块的数目。
(83):限定可用于宏块层模型计算的数据量
在本发明中,当预测得到的当两宏块间相关性低于ηM时,则令它们之间的相关性为0。此时不将相关性为0的宏块编码数据代入宏块层MAD模型和RD模型的计算中。并且,限制所有用于计算的相关宏块总数不大于M,若总数大于M时,取相关性最大的M个宏块。
9)预测下一宏块编码后的MAD和计算下一宏块的量化参数
(91):预测下一宏块编码后的MAD
编码第n帧的i行、j列的宏块前,需要预测该宏块编码后MAD值,在本发明中MAD的预测采用相关加权预测,其公式为:
MAD M _ pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MAD M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中 R M = Σ k = 0 N Σ u = 0 H Σ v = 0 L r M ( n , i , j , n - k , u , v ) ,
其中N为在时间上,已编码同位置宏块离当前宏块最远的距离,N值为一固定整数,若时间上距离比N更远的宏块则认为与当前宏块不相关。L为视频图像的水平宏块数目,H为视频图像垂直方向的宏块数目。CM为宏块层MAD预测模型的修正参数,其值的计算在编码完该宏块以后完成。该公式利用了前面已编码宏块的MAD值和它们与当前宏块之间的所预测得到相关性进行加权预测得到。
(92):计算下一宏块的量化步长
在宏块层,采用二次模型为:
R M ( n , i , j ) = MAD M _ pred ( n , i , j ) · ( X M 1 QSte p M ( n , i , j ) + X M 2 QSte p M 2 ( n , i , j ) )
其中RM(n,i,j)为编码第n帧,第i行j列的宏块时,为其分配的目标比特大小;QStepM(n,i,j)为待求的该宏块的量化步长;XM1和XM2为该宏块二次RD模型中的一次和二次参数,其值的求解在编码完该宏块后完成。根据宏块层二次RD模型通过求解关于QStepM(n,i,j)的二次方程便可得到编码第n帧,第i行j列宏块的量化步长。
(93):计算下一宏块的量化参数
根据上一步求得的量化步长QStepM(n,i,j),通过查表可求得编码第n帧,i行j列宏块的的量化参数QPM(n,i,j)。表由H.264标准提供。
(94):下一宏块的量化参数修正
在编码第n帧的i行、j列的宏块前,需要对宏块层二次模型求得该宏块量化参数QPM(n,i,j)进行修整。其修整的方法是将其取值范围限制在QPF(n)-D和QPF(n)+D之间范围内,其中QPF(n)为在编码n帧前,由帧层二次模型求得的量化参数,D为一固定常数。
10)编码一个宏块
在编码第n帧的i行、j列宏块时,根据计算得到的QPM(n,i,j),由编码器编码该宏块。编码完该宏块后,编码器将输出编码该宏块的编码信息以及编码比特大小,其编码信息送入缓冲区,以待输出信道,编码比特的大小送到码率控制模块中,用于计算模型参数以及后续宏块和帧的量化参数的预测。
11)更新宏块层的RD模型参数和MAD模型参数
(111):计算已编码宏块的MAD值。
编码完第n帧的第i行j列的宏块后,该宏块的实际MAD值计算公式如下:
MAD M ( n , i , j ) = Σ u = 0 16 Σ v = 0 16 | x ~ n , i , j ( u , v ) - x n , i , j ( u , v ) |
其中
Figure S2007100508748D00072
为编码该宏块后重建的宏块内第u行v列的像素值,xn,i,j(u,v)
为实际的像素值。
(112):更新宏块层的二次RD模型参数
编码完第n帧的第i行j列的宏块后,需要对宏块层的二次RD模型中的参数XM1和XM2进行更新,宏块层的二次RD模型为:
R M ( n , i , j ) = MAD M _ pred ( n , i , j ) · ( X M 1 QSte p M ( n , i , j ) + X M 2 QSte p M 2 ( n , i , j ) )
其中参数XM1和XM2可根据前面已编码宏块的数据建立超维方程组求得,建立方程组所需要已编码宏块的数据为:
MADM(n-k,u,v),R′M(n-k,u,v),QStepM(n-k,u,v),rM(n,i,j,n-k,u,v)。
其中MADM(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际的MAD值,R′M(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际编码比特数,QStepM(n-k,u,v)为编码第n-k帧,第u行v列宏块时的量化步长,rM(n,i,j,n-k,u,v)为当前第n帧,i行,j列宏块与第n-k帧,第u行v列宏块相关性。其中的k∈[0,N],u∈[0,H],v∈[0,L]。在本发明中,用与当前宏块相关性大于0的宏块的编码数据组成超维方程组求参数XM1和XM2
(113):更新宏块层MAD模型参数。
编码完第n帧的第i行j列的宏块后,需要对宏块层的MAD预测模型中的参数CM进行更新,宏块层的的MAD预测公式为:
MAD M - pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MAD M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中的参数CM的更新公式为:
C M = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L ( MAD M _ pred ( n , i , j ) - MAD M ( n - k , u , v ) ) · r M ( n , i , j , n - k , u , v ) ) / R M
其中 R M = Σ k = 0 N Σ u = 0 H Σ v = 0 L r M ( n , i , j , n - k , u , v )
12)若编码完当前帧,则更新帧层的RD模型参数和帧层MAD模型参数,否则转6)编码下一宏块
(121):若编码完第n帧最后一个宏块,执行下面的步骤,否则转4)
(122):计算已编码帧的MAD。
编码完第n帧后,该帧的实际MAD值计算公式如下:
MAD F ( n ) = Σ u = 0 H Σ v = 0 L | x ~ n ( u , v ) - x n ( u , v ) |
其中
Figure S2007100508748D00084
为编码该帧后重建的第u行v列的像素值,xn(u,v)为实际的像素值。
(123):计算帧层的二次RD模型参数
编码完第n帧后,需要计算帧层二次RD模型中的参数XF1(n)和XF2(n)进行更新,帧层的二次RD模型为:
R F ( n ) = MAD F _ pred ( n ) · ( X F 1 ( n ) QSte p F ( n ) + X F 2 ( n ) QSte p F 2 ( n ) )
其中参数XF1(n)和XF2(n)可根据前面已编码帧的数据建立超维方程组求得,建立方程组所需要已编码帧的数据为:
MADF(n-k),R′F(n-k),QStepF(n-k),r(n,n-k)
其中,MADF(n-k)为编码第n-k帧实际的MAD值,R′F(n-k)为编码第n-k帧实际产生的编码比特大小,QStepF(n-k)为编码第n-k帧时的量化步长。r(n,n-k)为第n帧与第n-k帧之间的相关性。其中k∈[0,m],m为编码第n帧时,在限定用于帧层模型计算的数据量求得。在本发明中,用第n,n-1,n-2...n-m帧的已编码数据组成超维方程组求参数XF1(n)和XF2(n)。
(124):帧层的二次RD模型参数相关预测
在本发明中,编码第n+1帧前,对该帧的RD模型中参数进行预测,其预测公式为:
X F 1 _ pred ( n + 1 ) = ( Σ i = 0 m - 1 X F 1 ( n - 1 ) · r ( n + 1 , n + 1 - i ) ) / R + B
X F 2 _ pred ( n + 1 ) = ( Σ i = 0 m - 1 X F 2 ( n - i ) · r ( n + 1 , n + 1 - i ) ) / R + D
其中B和D分别为一次和二次参数修正参数,在编码完第n帧时进行计算,公式为:
B = ( Σ i = 0 m - 1 ( X F 1 ( n - i ) - X F 1 _ pred ( n - i ) r ( n + 1 , n + 1 - i ) i ) ) / R
D = ( Σ i = 0 m - 1 ( X F 2 ( n - i ) - X F 2 _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) ) / R
其中 R = Σ i = 1 m r ( n + 1 , n + 1 - i )
(125):更新帧层MAD模型参数。
编码完第n帧后,需要对对帧层MAD预测模型中的参数C进行更新,帧层的的MAD预测公式为::
MAD F _ pred ( n + 1 ) = ( Σ i = 1 m MAD F ( n - i + 1 ) · r ( n + 1 , n + 1 - i ) ) / R + C
其中的参数C的更新公式为:
C = Σ i = 0 m - 1 ( MAD F ( n - i ) - MAD F _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) / R
13)若编码完当前GOP,判断是否视频序列已经变完,若编码完成,步骤结束,如果没有编完则转(1)
附图说明
图1是本发明实施对一组视频序列进行码率控制的实例,其中白色块表示视频中的一个宏块,同时进行宏块层码率控制,灰色块表示视频中的一个宏块,但不进行宏块层码率控制。
图2是视频编码系统框图
图3是本发明方法实现过程的主要步骤流程图
具体实施方式
以下结合附图进一步描述本发明实施的方法
根据码率控制的对象的不同,其可分为对视频序列(GOP)的码率控制,对视频帧的码率控制以及对宏块的码率控制,图1所示的是对一个GOP长度为N的QCIF大小的视频序列进行码率控制的实例,它结合了GOP层码率控制,帧层码率控制和宏块层码率控制。编码一个GOP前需要对该GOP进行码率控制,目的是为了让编码完该GOP产生的编码比特与期望的目标比特相同以使得缓冲区容量保持一个相对平稳,其所期望目标比特由信道输出码率和缓冲区容量决定。帧层码率控制是对视频的每一帧进行控制,它根据缓冲区容量和信道输出码率预先为每一帧分配一目标比特,目的是让编码完该帧后的实际编码比特接近目标比特以使得缓冲区容量保持平稳,在本实例中,帧层码率控制不对第0帧,I帧,和第一帧P帧进行码率控制,其编码使用的量化参数预先设定好。宏块层码率控制对帧中每一个宏块进行码率控制,目的是为了实现编码完该帧后总的编码比特尽可能地接近为该帧分配的目标比特,在本实例中,宏块层码率控制不对视频帧的第一个宏块进行码率控制,编码第一个宏块时,其量化参数为在该帧的帧层码率控制方法求得的量化参数。
图2所示是传统视频编码框图结构,输入编码器的视频信号是没有经过压缩的原始信号,根据码率控制的对象不同,可以是GOP信号,帧信号以及宏块信号。在图2中所示的编码器可以是视频编码芯片或者视频编码程序,它根据码率控制模块提供的量化等级对视频帧信号进行压缩编码,并将编码后的编码信号输入到缓冲区以待输出到信道,同时将编码比特的大小以及编码图像的平均绝对误差值(MAD)送到码率控制模块。在图2中所示的码率控制模块根据编码其送来的编码比特信息和MAD值,并结合缓冲区容量为编码器提供压缩编码所需要的量化等级。
图3所示是本发明的码率控制流程图,它不仅适用于传统的MEPG-2,MEPG-4,H.263编码器,同样适用于最新的H.264/AVC和中国的AVS编码器。针对图1所示实例,其操作步骤如下:
1)为该GOP分配目标编码比特
编码下一GOP时对该GOP分配目标比特,计算公式如下
T G = u F * N Gop - ( B S 8 - B C )
TG是为编码该GOP分配的目标比特,u信道输出码率,F为编码帧率,NGop为该GOP帧的数目,Bs为缓冲区最大容量,Bs为编码完上一GOP缓冲区占有容量。由于GOP的第一帧为I帧,为帧内编码帧,算法不对改帧进行码率控制,其量化等级采用初始设定的量化等级,并且对第一个P帧也不进行码率控制。在后续的码率控制中,编码将从第2个P帧开始进行码率,即编码帧n为2开始。
2)为下一帧分配目标比特
编码第n+1帧前对该帧分配目标比特,计算公式如下
T F ( n + 1 ) = T F ( n ) - T F ( 2 ) B s / 8 N Gop - 2
TF(n+1)是为编码第n+1帧分配的目标比特
3)帧之间的相关性计算
由于视频帧之间存在很大的相关性,因此可以利用它们之间的相关性进行压缩编码,如果两帧之间的相关性较大,那么用帧间预测产生的误差往往很小既MAD会很小,反之,当视频序列发生变化时,其两帧之间的相关性降低,则MAD会增加。通过比较相邻两帧之间的相关性,可反映帧之间的相关性变化。
在当前图像序列组中,如果编码完第n-1帧的平均绝对误差(MAD)为MADF(n-1),第n-2帧的MAD为MADF(n-2),则定义第n-1帧与第n-2帧之间的相关性系数计算公式为:
λ(n-1)=min(MADF(n-1)/MADF(n-2),MADF(n-2)/MADF(n-1))
定义:第n-1帧与第k帧之间的相关性计算方法为:
r ( n - 1 , k ) = Π j = 1 k λ a ( n - 1 - j ) ≈ Π j = 1 k ( 1 - a ( 1 - λ ( n - 1 - j ) ) )
其中a为一固定常数。
4)预测下一帧与已编码帧相关性并限定用于帧层模型计算的数据量
(41):预测下一帧与已编码帧之间的相关性
在编码第n帧前,需要预测该帧与已编码的各帧之间的相关性,为了降低计算量,算法让第n帧与第i帧之间的相关性大小等于第n-1帧与第i-1帧之间的相关性。
(42):帧层模型可用数据量限定
当视频序列中第n帧与第i之间相关性低于η时,η为一固定常数,认为这两帧之间的已经基本上不相关,此时让r(n,i)为0,则不再使用比该帧时间上更远帧的数据进行计算,因此,前面第k帧的编码数据(已编码各帧实际与预测MAD,编码比特,量化步长(QStep),RD模型中的参数XF1和XF2,MAD模型中的参数Cf)是否用于帧层MAD模型和RD模型计算时,取决于第k帧与当前帧之间的相关性是否大于0,那么编码第n帧最多可用m帧的编码数据,其m满足:
r(n,n-m)>η,r(n,n-m-1)≤η
5)预测下一帧编码后的MAD值和计算下一帧量化参数
(51):预测下一帧编码后的MAD值
在编码第n前,需要预测下一帧编码后的MAD,在本发明中其MAD预测公式设计如下:
MAD F _ pred ( n ) = ( Σ i = 1 m MAD F ( n - 1 ) · r ( n , n - i ) ) / R + C
其中 R = Σ i = 1 m r ( n , n - i )
C为修正MAD预测模型的修正参数,当编码完一帧后对C值进行更新。该公式利用了前面已编码帧的实际MAD值和它们与第n帧之间的所预测得到相关性进行加权预测得到。
(52):计算下一帧的量化步长
在帧层,采用二次RD模型来计算第n帧的量化参数,公式如下:
R F ( n ) = MA D F _ pred ( n ) · ( X F 1 _ pred ( n ) QSte p F ( n ) + X F 2 _ pred ( n ) QSte p F 2 ( n ) )
其中RF(n)为分配给编码第n帧分配的目标比特,QStepF(n)为待求的编码第n帧量化步长,XF1_pred(n)和XF2_pred(n)为预测编码第n帧的二次RD模型中的一次和二次参数,其值的计算在编码完一帧后更新。根据帧二次RD模型通过求解关于QStepF(n)的二次方程便可得到编码n帧的量化步长。
(53):计算下一帧的量化参数
根据上一步求得的量化步长QStepF(n),通过查表可求得编码第n帧的量化参数QPF(n)。表由H.264标准提供。
到此,帧层码率控制在编码该帧前的工作完成,后面将编码该帧内的每一个宏块,编码顺序是安宏块在帧中的排列顺序从左到右,从上到下的次序进行。在编码第一个宏块时,宏块层码率控制不对视频帧的第一个宏块进行码率控制,编码第一个宏块时,其量化参数为在该帧的帧层码率控制方法求得的量化参数。即前面求得的QPF(n+1)。
6)为下一宏块分配目标编码比特
在编码第n帧i行j列宏块前为该宏块分配目标编码比特,其公式为:
TM(n,i,j)=R(n)/Nr
其中TM(n,i,j)是为编码第n帧i行j列分配的目标比特,R(n)为编码当前帧还剩下的比特,Nr为当前帧中还未编码的宏块数目。
7)宏块间相关性系数计算
宏块与其周围相邻有在同一帧中有水平相邻的宏块,垂直相邻的宏块,与上一帧之间有同位置相邻的宏块,第n帧i行j列的宏块与它周围宏块的相关系数计算公式分别定义如下:
λr(n,i,j)=min(MADM(n,i,j-1)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i,j-1))
λl(n,i,j)=min(MADM(n,i-1,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i-1,j))
λc(n,i,j)=min(MADM(n-1,i,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n-1,i,j))
其中λr(n,i,j)表示第n帧的i行、j列的宏块与n帧的i行、j-1列宏块之间的相关性系数,为水平相关系数;λl(n,i,j)表示第n帧的i行、j列的宏块与n帧的i-1行、j列宏块之间的相关系数,为垂直相关系数;λc(n,i,j)表示第n帧的i行、j列的宏块与n-1帧的i行、j列宏块之间的相关系数,为同位置相关系数。
8)预测下一宏块与已编码宏块之间的相关性并限定可用于宏块层模型计算的数据量
(81):预测下一宏块与已它周围已编码宏块之间的相关性系数
编码第n帧,i行,j列的宏块前,首先需要预测该宏块与它周围已编码宏块之间的相关系数,该宏块与其相邻宏块之间的相关系数预测公式分别为:
λr(n,i,j)=MAX(λr(n,i,j-1),λr(n,i-1,j),λr(n-1,i,j))
λl(n,i,j)=MAX(λl(n,i,j-1),λl(n,i-1,j),λl(n-1,i,j))
λc(n,i,j)=MAX(λc(n,i,j-1),λc(n,i-1,j),λc(n-1,i,j))
若公式中两宏块之间的相关性不存在,则令其等于0。
(82):预测下一宏块与已编码宏块之间的相关性
编码第n帧的i行、j列的宏块前,需要预测该宏块与已编码的各宏块之间的相关性,其与第m帧的u行、v列的宏块之间的相关性计算公式为:
r M ( n , i , j , m , u , v ) = Π z = m n λc a 1 ( z , i , j ) * Π y = 1 u λl a 2 ( m , y , j ) * v Π x = j n λr a 3 ( m , i , x )
≈ Π z = m n ( 1 - a 1 ( 1 - λc ( z , i , j ) ) * Π y = i u ( 1 - a 2 ( 1 - λl ( l , y , j ) ) * Π x = j n ( 1 - a 3 ( 1 - λr ( m , i , x ) )
其中a1,a2,a3为固定系数,用于控制在水平,垂直的数目以及控制不同帧之间相关宏块的数目。
(83):限定可用于宏块层模型计算的数据量
在本发明中,当预测得到的当两宏块间相关性低于ηM时,则令它们之间的相关性为0。此时不将相关性为0的宏块编码数据代入宏块层MAD模型和RD模型的计算中。并且,限制所有用于计算的相关宏块总数不大于M,若总数大于M时,取相关性最大的M个宏块。
9)预测下一宏块编码后的MAD和计算下一宏块的量化参数
(91):预测下一宏块编码后的MAD
编码第n帧的i行、j列的宏块前,需要预测该宏块编码后MAD值,在本发明中MAD的预测公式为:
MA D M _ pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MAD M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中 R M = Σ k = 0 N Σ u = 0 H Σ v = 0 L r M ( n , i , j , n - k , u , v ) ,
其中N为在时间上,已编码同位置宏块离当前宏块最远的距离,N值为一固定整数,若时间上距离比N更远的宏块则认为与当前宏块不相关。L为视频图像的水平宏块数目,H为视频图像垂直方向的宏块数目。CM为宏块层MAD预测模型的修正参数,其值的计算在编码完该宏块以后完成。该公式利用了前面已编码宏块的MAD值和它们与当前宏块之间的所预测得到相关性进行加权预测得到。
(92):计算下一宏块的量化步长
在宏块层,采用二次模型为:
R M ( n , i , j ) = MAD M _ pred ( n , i , j ) · ( X M 1 QStep M ( n , i , j ) + X M 2 QSte p M 2 ( n , i , j ) )
其中RM(n,i,j)为编码第n帧,第i行j列的宏块时,为其分配的目标比特大小;QStepM(n,i,j)为待求的该宏块的量化步长;XM1和XM2为该宏块二次RD模型中的一次和二次参数,其值的求解在编码完该宏块后完成。根据宏块层二次RD模型通过求解关于QStepM(n,i,j)的二次方程便可得到编码第n帧,第i行j列宏块的量化步长。
(93):计算下一宏块的量化参数
根据上一步求得的量化步长QStepM(n,i,j),通过查表可求得编码第n帧,i行j列宏块的的量化参数QPM(n,i,j)。表由H.264标准提供。
(94):下一宏块的量化参数修正
在编码第n帧的i行、j列宏块前,需要对宏块层二次模型求得该宏块量化参数QPM(n,i,J)进行修整。其修整的方法是将其取值范围限制在QPF(n)-D和QPF(n)+D之间范围内,其中QPF(n)为在编码n帧前,由帧层二次模型求得的量化参数,D为一固定常数。
到此,宏块层码率控制在编码第n帧的i行、j列宏块前的工作完成,下面编码起就根据计算得到的QPM(n,i,j)对该宏块进行压缩编码。
10)编码一个宏块
在编码第n帧的i行、j列宏块时,根据计算得到的QPM(n,i,j),由编码器编码该宏块。编码完该宏块后,编码器将输出编码该宏块的编码信息以及编码比特大小,其编码信息送入缓冲区,以待输出信道,编码比特的大小送到码率控制模块中,用于计算模型参数以及后续宏块和帧的量化参数的预测。
编码完一个宏块后,就进行后续步骤对模型参数进行更新。
11)更新宏块层的RD模型参数和MAD模型参数
(111):计算已编码宏块的MAD值。
编码完第n帧的第i行j列的宏块后,该宏块的实际MAD值计算公式如下:
MA D M ( n , i , j ) = Σ u = 0 16 Σ v = 0 16 | x ~ n , i , j ( u , v ) - x n , i , j ( u , v ) |
其中
Figure S2007100508748D00161
为编码该宏块后重建的宏块内第u行v列的像素值,xn,i,j(n,v)为实际的像素值。
(112):更新宏块层的二次RD模型参数
编码完第n帧的第i行j列的宏块后,需要对宏块层的二次RD模型中的参数XM1和XM2进行更新,宏块层的二次RD模型为:
R M ( n , i , j ) = MAD M _ pred ( n , i , j ) · ( X M 1 QStep M ( n , i , j ) X M 2 QStep M 2 ( n . i . j ) )
其中参数XM1和XM2可根据前面已编码宏块的数据建立超维方程组求得,建立方程组所需要已编码宏块的数据为:
MADM(n-k,u,v),R′M(n-k,u,v),QStepM(n-k,u,v),rM(n,i,j,n-k,u,v)。
其中MADM(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际的MAD值,R′M(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际编码比特数,QStepM(n-k,u,v)为编码第n-k帧,第u行v列宏块时的量化步长,rM(n,i,j,n-k,u,v)为当前第n帧,i行,j列宏块与第n-k帧,第u行v列宏块相关性。其中的k∈[0,N],u∈[0,H]v∈[0,L]。在本发明中,用与当前宏块相关性大于0的宏块的编码数据组成超维方程组求参数XM1和XM2
(113):更新宏块层MAD模型参数。
编码完第n帧的第i行j列的宏块后,需要对宏块层的MAD预测模型中的参数CM进行更新,宏块层的的MAD预测公式为:
MAD M _ pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MAD M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中的参数CM的更新公式为:
C M = ( Σ k = 0 N Σ v = 0 L Σ k = 0 H ( MAD M _ pred ( n , i , j ) - MAD M ( n - k , u , v ) ) · r M ( n , i , j , n - k , u , v ) ) / R M
其中 R M = Σ k = 0 N Σ u = 0 H Σ v = 0 L r M ( n , i , j , n - k , u , v )
到这步,宏块层的模型参数已经更新。若当前帧中还有宏块没有进行压缩编码就跳到6),否则执行步骤12).
12)更新帧层的RD模型参数和帧层MAD模型参数
(121):若编码完第n帧最后一个宏块,执行下面的步骤,否则转4)
(122):计算已编码帧的MAD。
编码完第n帧后,该帧的实际MAD值计算公式如下:
MAD F ( n ) = Σ u = 0 H Σ v = 0 L | x ~ n ( u , v ) - x n ( u , v ) |
其中
Figure S2007100508748D00172
为编码该帧后重建的第u行v列的像素值,xn(u,v)为实际的像素值。
(123):计算帧层的二次RD模型参数
编码完第n帧后,需要计算帧层二次RD模型中的参数XF1(n)和XF2(n)进行更新,帧层的二次RD模型为:
R F ( n ) = MAD F _ pred ( n ) · ( X F 1 ( n ) QSte p F ( n ) + X F 2 ( n ) QSte p F 2 ( n ) )
其中参数XF1(n)和XF2(n)可根据前面已编码帧的数据建立超维方程组求得,建立方程组所需要已编码帧的数据为:
MADF(n-k),R′F(n-k),QStepF(n-k),r(n,n-k)
其中,MADF(n-k)为编码第n-k帧实际的MAD值,R′F(n-k)为编码第n-k帧实际产生的编码比特大小,QStepF(n-k)为编码第n-k帧时的量化步长。r(n′,n-k)为第n帧与第n-k帧之间的相关性。其中k∈[0,m],m为编码第n帧时,在限定用于帧层模型计算的数据量求得。在本发明中,用第n,n-1,n-2...n-m帧的已编码数据组成超维方程组求参数XF1(n)和XF2(n)。
(124):帧层的二次RD模型参数相关预测
在本发明中,编码第1+1帧前,对该帧的RD模型中参数进行预测,其预测公式为:
X F 1 _ pred ( n + 1 ) = ( Σ i = 0 m - 1 X F 1 ( n - i ) · r ( n + 1 , n + 1 - i ) ) / R + B
X F 2 _ pred ( n + 1 ) = ( Σ i = 0 m - 1 X F 2 ( n - i ) · r ( n + 1 , n + 1 - i ) ) / R + D
其中B和D分别为一次和二次参数修正参数,在编码完第n帧时进行计算,公式为:
B = ( Σ i = 0 m - 1 ( X F 1 ( n - i ) - X F 1 _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) i ) / R
D = ( Σ i = 0 m - 1 ( X F 2 ( n - i ) - X F 2 _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) ) / R
其中 R = Σ i = 1 m r ( n + 1 , n + 1 - i )
(125):更新帧层MAD模型参数。
编码完第n帧后,需要对对帧层MAD预测模型中的参数C进行更新,帧层的的MAD预测公式为:
MAD F _ pred ( n + 1 ) = ( Σ i = 1 m MAD F ( n - i + 1 ) · r ( n + 1 , n + 1 - i ) ) / R + C
其中的参数C的更新公式为:
C = Σ i = 0 m - 1 ( MAD F ( n - i ) - MAD F _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) / R
13)若编码完当前GOP,判断是否视频序列已经变完,若编码完成,步骤结束,如果没有编完则转(1)
为了说明本发明的算法性能,作了以下对比试验,  将发明与JM8.6的码率标准作对比,仿真设置为:Hadamard变换,CABAC和RDO设置为打开模式,编码150帧,其中第一帧为I帧,其余全为P帧。用不同类型的QCIF视频序列作测试:“Foreman”,“News”,“Salesman”,“Carphone”,不同的CIF序列:“Foreman”,“Container”。从表1数据,可以看出,本文算法与JM.86算法相比,PSNR提高了平均0.4dB左右,而实际编码比特比JM.86少,且更接近于目标比特,并能随目标码率的变化而变化。同时本发明提出的码率控制方法能够把让缓冲区的满度维持在一个适度的水平,保证了缓冲区既不上溢也不下溢,也保证了缓冲区中的数据占有量的相对稳定。
表1仿真结果数据
  测试序列   PSNR(dB) PSNR提高 实际编码比特(kbps)
  Foreman_QCIF55kbps,30fps)   JM.86     31.87     0     55.24
  本发明     32.27     0.4     55.01
  News_QCIF(20kbps,20fps)   JM.86     31.23     0     20.12
  本发明     31.92     0.69     20.03
  Salesman_QCIF(20kbps,20fps)   JM.86     31.63     0     20.07
  本发明     32.06     043     20.00
  Carphone_QCIF(50kbps,30fps)   JM.86     34.23     0     50.19
  本发明     34.66     0.43     49.92
  Foreman_CIF(128kbps,0fps)   JM.86     32.31     0     128.50
  本发明     32.59     0.28     127.76
  Container_CIF(60kbps,20fps)   JM.86     33.30     0     60.05
  本发明     33.76     0.46     60.03

Claims (10)

1.一种基于H.264/AVC的相关自适应码率控制方法,其特征在于:利用了视频帧及宏块之间的相关性,自适应地调整用于计算平均绝对误差(MAD)模型及RD模型的数据量;  帧层控制和宏块层控制相结合策略,降低了视频帧内宏块量化等级的波动范围;建立新的帧层MAD模型,采用相关加权计算方法进行求解,RD模型的参数计算也采用相关加权计算求得;建立新的宏块层MAD模型,并依据宏块在时空上的相关性特点,利用其相关性,设计了一种MAD和RD模型计算方法;该方法主要包括以下步骤:
(1)为该GOP分配目标编码比特
(2)为下一帧分配目标比特
(3)帧之间的相关性计算
(4)预测下一帧与已编码帧相关性并限定用于帧层模型计算的数据量
(5)预测下一帧编码后的MAD值和计算下一帧量化参数
(6)为下一宏块分配目标编码比特
(7)宏块间相关性系数计算
(8)预测下一宏块与已编码宏块之间的相关性并限定可用于宏块层模型计算的数据量
(9)预测下一宏块编码后的MAD值和计算下一宏块的量化参数
(10)编码一个宏块
(11)更新宏块层的RD模型参数和MAD模型参数
(12)若编码完当前帧,则更新帧层的RD模型参数和帧层MAD模型参数,否则转(6)编码下一宏块
(13)若编码完当前GOP,判断是否视频序列已经变完,若编码完成,步骤结束,如果没有编完则转(1)
2.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(3)采用了下面的方法:
在当前图像序列组中,如果编码完第n-1帧的平均绝对误差(MAD)为MADF(n-1),第n-2帧的MAD为MADF(n-2),第n-1帧与第n-2帧之间的相关性系数计算公式为:
λ(n-1)=min(MADF(n-1)/MADF(n-2),MADF(n-2)/MADF(n-1))第n-1帧与第k帧之间的相关性计算方法为:
r ( n - 1 , k ) = Π j = 1 k λ a ( n - 1 - j ) ≈ Π j = 1 k ( 1 - a ( 1 - λ ( n - 1 - j ) ) )
其中a为一固定常数。
3.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(4)采用了下面的步骤:
步骤(31):预测下一帧与已编码帧之间的相关性
在编码第n帧前,需要预测该帧与已编码的各帧之间的相关性,其预测方法是根据前面已编码帧相互之间的相关性进行预测。
步骤(32):限定用于帧层模型计算的数据量
当视频序列中第n帧与第i之间相关性低于η时,η为一固定常数,认为这两帧之间的已经基本上不相关,此时让r(n,i)为0,则不再使用比该帧时间上更远帧的数据进行计算,因此,前面第k帧的编码数据(已编码各帧实际与预测MAD,编码比特,量化步长(QStep),RD模型中的参数XF1和XF2,MAD模型中的参数Cf)是否用于帧层MAD模型和RD模型计算时,取决于第k帧与当前帧之间的相关性是否大于0,那么编码第n帧最多可用m帧的编码数据,其m满足:
r(n,n-m)>η,r(n,n-m-1)≤η
4.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(5)采用了下面的步骤:
步骤(41):预测下一帧编码后的MAD值
在编码第n前,需要预测下一帧编码后的MAD,在本发明中其MAD预测公式设计如下:
MAD F _ pred ( n ) = ( Σ i = 1 m MAD F ( n - i ) · r ( n , n - i ) ) / R + C
其中 R = Σ i = 1 m r ( n , n - i )
C为修正MAD预测模型的修正参数,当编码完一帧后对C值进行更新。该公式利用了前面已编码帧的实际MAD值和它们与第n帧之间的所预测得到相关性进行加权预测得到;
步骤(42):计算下一帧的量化步长
在帧层,采用二次RD模型来计算第n帧的量化参数,公式如下:
R F ( n ) = MA D F _ pred ( n ) · ( X F 1 _ pred ( n ) QSte p F ( n ) + X F 2 _ pred ( n ) QSte p F 2 ( n ) )
其中RF(n)为分配给编码第n帧分配的目标比特,QStepF(n)为待求的编码第n帧量化步长,XF1_pred(n)和XF2_pred(n)为预测编码第n帧的二次RD模型中的一次和二次参数,其值的计算在编码完一帧后更新,根据帧二次RD模型通过求解关于QStepF(n)的二次方程便可得到编码n帧的量化步长;
步骤(43):根据上一步求得的量化步长计算下一帧的量化参数
5.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所
述步骤(7)采用了下面的方法:
宏块与其周围相邻有在同一帧中有水平相邻的宏块,垂直相邻的宏块,与上一帧之间有同位置相邻的宏块,第n帧i行j列的宏块与它周围宏块的相关系数计算公式分别如下:
λr(n,i,j)=min(MADM(n,i,j-1)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i,j-1))
λl(n,i,j)=min(MADM(n,i-1,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n,i-1,j))
λc(n,i,j)=min(MADM(n-1,i,j)/MADM(n,i,j),MADM(n,i,j)/MADM(n-1,i,j))
其中λr(n,i,j)表示第n帧的i行、j列的宏块与n帧的i行、j-1列宏块之间的相关性系数,为水平相关系数;λl(n,i,j)表示第n帧的i行、j列的宏块与n帧的i-1行、j列宏块之间的相关系数,为垂直相关系数;λc(n,i,j)表示第n帧的i行、j列的宏块与n-1帧的i行、j列宏块之间的相关系数,为同位置相关系数。
6.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(8)采用了下面的步骤:
步骤(61):预测下一宏块与已它周围已编码宏块之间的相关性系数
编码第n帧,i行,j列的宏块前,首先需要预测该宏块与它周围已编码宏块之间的相关系数,预测方法根据前面已编码宏块相互之间的相关系数进行预测。
步骤(62):预测下一宏块与已编码宏块之间的相关性
编码第n帧的i行、j列的宏块前,需要预测该宏块与已编码的各宏块之间的相关性,其与第m帧的u行、v列的宏块之间的相关性计算公式为:
r M ( n , i , j , m , u , v ) = Π z = m n λc a 1 ( z , i , j ) * Π y = i u λl a 2 ( m , y , j ) * v Π x = j n λr a 3 ( m , i . x )
≈ Π z = m n ( 1 - a 1 ( 1 - λc ( z , i , j ) ) * Π y = i u ( 1 - a 2 ( 1 - λl ( l , y , j ) ) * Π x = j n ( 1 - a 3 ( 1 - λr ( m , i , x ) )
其中a1,a2,a3为固定系数,用于控制在水平,垂直的数目以及控制不同帧之间相关宏块的数目。
步骤(63):限定可用于宏块层模型计算的数据量
在本发明中,当预测得到的当两宏块间相关性低于ηM时,则令它们之间的相关性为0,此时不将相关性为0的宏块编码数据代入宏块层MAD模型和RD模型的计算中,并且,限制所有用于计算的相关宏块总数不大于M,若总数大于M时,取相关性最大的M个宏块。
7.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(9)采用了下面的步骤:
步骤(71):预测下一宏块编码后的MAD
编码第n帧的i行、j列的宏块前,需要预测该宏块编码后MAD值,在本发明中MAD的预测公式为:
MAD M _ pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MAD M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中 R M = ∑ k = 0 N ∑ u = 0 H ∑ v = 0 L r M ( n , i , j , n - k , u , v ) ,
其中N为在时间上,已编码同位置宏块离当前宏块最远的距离,N值为一固定整数,若时间上距离比N更远的宏块则认为与当前宏块不相关。L为视频图像的水平宏块数目,H为视频图像垂直方向的宏块数目,CM为宏块层MAD预测模型的修正参数,其值的计算在编码完该宏块以后完成,该公式利用了前面已编码宏块的MAD值和它们与当前宏块之间的所预测得到相关性进行加权预测得到;
步骤(72):计算下一宏块的量化步长
在宏块层,采用二次模型为:
R M ( n , i , j ) = MA D M _ pred ( n , i , j ) · ( X M 1 QStep M ( n , i , j ) + X M 2 QSte p M 2 ( n , i , j ) )
其中RM(n,i,j)为编码第n帧,第i行j列的宏块时,为其分配的目标比特大小;QStepM(n,i,j)为待求的该宏块的量化步长,XM1和XM2为该宏块二次RD模型中的一次和二次参数,其值的求解在编码完该宏块后完成。根据宏块层二次RD模型通过求解关于QStepM(n,i,j)的二次方程便可得到编码第n帧,第i行j列宏块的量化步长;
步骤(73):根据上一步求得的量化步长计算下一宏块的量化参数
步骤(74):修正下一宏块的量化参数
在编码第n帧的i行、j列的宏块前,需要对宏块层二次模型求得该宏块量化参数QPM(n,i,j)进行修整。其修整的方法是将其取值范围限制在QPF(n)-D和QPF(n)+D之间范围内,其中QPF(n)为在编码n帧前,由帧层二次模型求得的量化参数,D为一固定常数。
8.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(11)采用了下面的步骤:
步骤(81):计算已编码宏块的MAD值。
编码完第n帧的第i行j列的宏块后,该宏块的实际MAD值计算公式如下:
MA D M ( n , i , j ) = Σ u = 0 16 Σ v = 0 16 | x ~ n , i , j ( u , v ) - x n , i , j ( u , v ) |
其中为编码该宏块后重建的宏块内第u行v列的像素值,xn,i,j(u,v)为实际的像素值。
步骤(82):更新宏块层的二次RD模型参数
编码完第n帧的第i行j列的宏块后,需要对宏块层的二次RD模型中的参数XM1和XM2进行更新,宏块层的二次RD模型为:
R M ( n , i , j ) = MA D M _ pred ( n , i , j ) · ( X M 1 QSte p M ( n , i , j ) + X M 2 QStep M 2 ( n , i , j ) )
其中参数XM1和XM2可根据前面已编码宏块的数据建立超维方程组求得,建立方程组所需要已编码宏块的数据为:
MADM(n-k,u,v),R′M(n-k,u,v),QStepM(n-k,u,v),rM(n,i,j,n-k,u,v)。
其中MADM(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际的MAD值,R′M(n-k,u,v)为编码第n-k帧,第u行v列宏块的实际编码比特数,QStepM(n-k,u,v)为编码第n-k帧,第u行v列宏块时的量化步长,rM(n,i,j,n-k,u,v)为当前第n帧,i行,j列宏块与第n-k帧,第u行v列宏块相关性。其中的k∈[0,N],u∈[0,H],v∈[0,L],在本发明中,用与当前宏块相关性大于0的宏块的编码数据组成超维方程组求参数XM1和XM2
步骤(83):更新宏块层MAD模型参数。
编码完第n帧的第i行j列的宏块后,需要对宏块层的MAD预测模型中的参数CM进行更新,宏块层的的MAD预测公式为:
MAD M _ pred ( n , i , j ) = ( Σ k = 0 N Σ v = 0 H Σ k = 0 L MA D M ( u , v , k ) · r M ( n , i , j , n - k , u , v ) ) / R M + C M
其中的参数CM的更新公式为:
C M = ( ∑ k = 0 N ∑ v = 0 L ∑ k = 0 H ( MA D M _ pred ( n , i , j ) - MA D M ( n - k , u , v ) ) · r M ( n , i , j , n - k , u , v ) ) / R M
其中 R M = Σ k = 0 N Σ u = 0 H Σ v = 0 L r M ( n , i , j , n - k , u , v )
9.根据权利要求1所述基于相关性的自适应码率控制方法,其特征在于所述步骤(12)采用了下面的步骤:
步骤(91):若编码完第n帧最后一个宏块,执行下面的步骤,否则转(6)
步骤(92):计算已编码帧的MAD。
编码完第n帧后,该帧的实际MAD值计算公式如下:
MAD F ( n ) = ∑ u = 0 H ∑ v = 0 L | x ~ n ( u , v ) - x n ( u , v ) |
其中
Figure S2007100508748C00065
为编码该帧后重建的第u行v列的像素值,xn(u,v)为实际的像素值。
步骤(93):计算帧层的二次RD模型参数
编码完第n帧后,需要计算帧层二次RD模型中的参数XF1(n)和XF2(n)进行更新,帧层的二次RD模型为:
R F ( n ) = MA D F _ pred ( n ) · ( X F 1 ( n ) QStep F ( n ) + X F 2 ( n ) QSte p F 2 ( n ) )
其中参数XF1(n)和XF2(n)可根据前面已编码帧的数据建立超维方程组求得,建立方程组所需要已编码帧的数据为:
MADF(n-k),R′F(n-k),QStepF(n-k),r(n,n-k)
其中,MADF(n-k)为编码第n-k帧实际的MAD值,R′F(n-k)为编码第n-k帧实际产生的编码比特大小,QStepF(n-k)为编码第n-k帧时的量化步长。r(n,n-k)为第n帧与第n-k帧之间的相关性,其中k∈[0,m],m为编码第n帧时,在限定用于帧层模型计算的数据量求得,在本发明中,用第n,n-1,n-2...n-m帧的已编码数据组成超维方程组求参数XF1(n)和XF2(n);
步骤(94):帧层的二次RD模型参数相关预测
在本发明中,编码第n+1帧前,对该帧的RD模型中参数进行预测,其预测
公式为:
X F 1 _ pred ( n + 1 ) = ( ∑ i = 0 m - 1 X F 1 ( n + i ) · r ( n + 1 , n + 1 - i ) ) / R + B
X F 2 _ pred ( n + 1 ) = ( Σ i = 0 m - 1 X F 2 ( n - i ) · r ( n + 1 , n + 1 - i ) ) / R + D
其中B和D分别为一次和二次参数修正参数,在编码完第n帧时进行计算,
公式为:
B = ( ∑ i = 0 m - 1 ( X F 1 ( n - i ) - X F 1 _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) i ) / R
D = ( Σ i = 0 m - 1 ( X F 2 ( n - i ) - X F 2 _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) i ) / R
其中 R = Σ i = 1 m r ( n + 1 , n + 1 - i )
步骤(95):更新帧层MAD模型参数
编码完第n帧后,需要对对帧层MAD预测模型中的参数C进行更新,帧层的的MAD预测公式为:
MAD F _ pred ( n + 1 ) = ( Σ i = 1 m MA D F ( n - i + 1 ) · r ( n + 1 , n + 1 - i ) ) / R + C
其中的参数C的更新公式为:
C = Σ i = 0 m - 1 ( MA D F ( n - i ) - MA D F _ pred ( n - i ) ) · r ( n + 1 , n + 1 - i ) / R
10.根据权利要求2所述基于相关性的自适应码率控制方法,其特征在于,所述a取值范围为1-8;η取值范围为0.3-0.7;求解出第n帧的QPF(n)限制了该帧内宏块的QPM(n,i,j)取值范围在QPF(n)-D与QPF(n)+D,其中D为一固定常数,取值范围1或2或3;固定系数的a1,a2,a3取值范围在0.1-5之间;N的取值范围为1-20的整数。
CN 200710050874 2007-12-18 2007-12-18 一种基于相关性的自适应码率控制方法 Pending CN101188752A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200710050874 CN101188752A (zh) 2007-12-18 2007-12-18 一种基于相关性的自适应码率控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710050874 CN101188752A (zh) 2007-12-18 2007-12-18 一种基于相关性的自适应码率控制方法

Publications (1)

Publication Number Publication Date
CN101188752A true CN101188752A (zh) 2008-05-28

Family

ID=39480902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200710050874 Pending CN101188752A (zh) 2007-12-18 2007-12-18 一种基于相关性的自适应码率控制方法

Country Status (1)

Country Link
CN (1) CN101188752A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873497A (zh) * 2010-05-26 2010-10-27 杭州海康威视软件有限公司 宏块信息存储方法及装置
CN102158702A (zh) * 2011-04-25 2011-08-17 南京信息工程大学 自适应h.264码率控制方法
CN102868883A (zh) * 2012-06-26 2013-01-09 中国科学技术大学 一种视频编码的码率控制方法
CN105872536A (zh) * 2016-04-25 2016-08-17 电子科技大学 一种基于双编码模式的图像压缩方法
CN107872669A (zh) * 2016-09-27 2018-04-03 腾讯科技(深圳)有限公司 视频码率处理方法和装置
CN108737826A (zh) * 2017-04-18 2018-11-02 中兴通讯股份有限公司 一种视频编码的方法和装置
CN108810530A (zh) * 2018-07-12 2018-11-13 珠海亿智电子科技有限公司 一种基于人眼视觉系统的avc码率控制方法
CN109743572A (zh) * 2019-01-08 2019-05-10 深圳市优微视觉科技有限公司 一种码率模型更新方法及装置
CN112188208A (zh) * 2020-09-18 2021-01-05 浙江大华技术股份有限公司 一种宏块级码率控制方法及相关装置
WO2021143344A1 (zh) * 2020-01-16 2021-07-22 北京达佳互联信息技术有限公司 码率决策模型训练方法以及电子设备
CN113505801A (zh) * 2021-09-13 2021-10-15 拓小拓科技(天津)有限公司 用于超维计算的强度值向量表生成方法和图像编码方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873497A (zh) * 2010-05-26 2010-10-27 杭州海康威视软件有限公司 宏块信息存储方法及装置
CN102158702A (zh) * 2011-04-25 2011-08-17 南京信息工程大学 自适应h.264码率控制方法
CN102158702B (zh) * 2011-04-25 2013-01-30 南京信息工程大学 自适应h.264码率控制方法
CN102868883A (zh) * 2012-06-26 2013-01-09 中国科学技术大学 一种视频编码的码率控制方法
CN102868883B (zh) * 2012-06-26 2013-11-13 中国科学技术大学 一种视频编码的码率控制方法
CN105872536B (zh) * 2016-04-25 2018-05-18 电子科技大学 一种基于双编码模式的图像压缩方法
CN105872536A (zh) * 2016-04-25 2016-08-17 电子科技大学 一种基于双编码模式的图像压缩方法
CN107872669A (zh) * 2016-09-27 2018-04-03 腾讯科技(深圳)有限公司 视频码率处理方法和装置
WO2018059175A1 (zh) * 2016-09-27 2018-04-05 腾讯科技(深圳)有限公司 视频码率处理方法和装置、存储介质及电子设备
US10666939B2 (en) 2016-09-27 2020-05-26 Tencent Technology (Shenzhen) Company Limited Method and apparatus for processing video bitrate, storage medium, and electronic device
CN107872669B (zh) * 2016-09-27 2019-05-24 腾讯科技(深圳)有限公司 视频码率处理方法和装置
CN108737826A (zh) * 2017-04-18 2018-11-02 中兴通讯股份有限公司 一种视频编码的方法和装置
CN108737826B (zh) * 2017-04-18 2023-06-30 中兴通讯股份有限公司 一种视频编码的方法和装置
CN108810530A (zh) * 2018-07-12 2018-11-13 珠海亿智电子科技有限公司 一种基于人眼视觉系统的avc码率控制方法
CN109743572B (zh) * 2019-01-08 2019-12-03 深圳市优微视觉科技有限公司 一种码率模型更新方法及装置
CN109743572A (zh) * 2019-01-08 2019-05-10 深圳市优微视觉科技有限公司 一种码率模型更新方法及装置
WO2021143344A1 (zh) * 2020-01-16 2021-07-22 北京达佳互联信息技术有限公司 码率决策模型训练方法以及电子设备
CN112188208A (zh) * 2020-09-18 2021-01-05 浙江大华技术股份有限公司 一种宏块级码率控制方法及相关装置
CN112188208B (zh) * 2020-09-18 2022-08-09 浙江大华技术股份有限公司 一种宏块级码率控制方法及相关装置
CN113505801A (zh) * 2021-09-13 2021-10-15 拓小拓科技(天津)有限公司 用于超维计算的强度值向量表生成方法和图像编码方法
CN113505801B (zh) * 2021-09-13 2021-11-30 拓小拓科技(天津)有限公司 一种用于超维计算的图像编码方法

Similar Documents

Publication Publication Date Title
CN101188752A (zh) 一种基于相关性的自适应码率控制方法
CN101287112B (zh) 一种自适应码率控制方法
CN101262603B (zh) 一种自适应码率控制方法
CN100562118C (zh) 一种视频编码的码率控制方法
CN102067610B (zh) 基于视频编码的切片依赖性的码率控制模型适配
CN102186084B (zh) 一种可伸缩视频编码svc的空间增强层码率控制实现方法
CN100481943C (zh) 一种视频编码码率控制方法
CN100464585C (zh) 一种视频压缩方法
CN105049850A (zh) 基于感兴趣区域的hevc码率控制方法
CN101159871B (zh) 宏块组级视频码率控制方法
CN101895758B (zh) 基于帧复杂度的h.264码率控制方法
CN101233757A (zh) 用于为能够可变比特速率编码的视频编码器提供速率控制的方法、模块、设备和系统
CN105306939A (zh) 用于对视频进行解码的方法和装置
CN102868883B (zh) 一种视频编码的码率控制方法
CN103533359A (zh) 一种h.264码率控制方法
CN101888561B (zh) 一种率失真优化动态调整的多视点视频传输差错控制方法
CN102932641A (zh) 一种恒定质量码率控制方法
CN101877784B (zh) 一种适用于实时应用的h.264码率控制方法
CN101854526A (zh) 码率控制方法和编码控制器
CN104038769A (zh) 帧内编码的码率控制方法
CN108989818A (zh) 一种图像编码参数调整方法及装置
US20050254576A1 (en) Method and apparatus for compressing video data
CN105187832B (zh) 基于2.5g无线网络移动视频码率控制方法
CN100574442C (zh) 基于图像直方图的码率控制方法
CN100448295C (zh) 一种低复杂度的积分码率控制方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20080528

C20 Patent right or utility model deemed to be abandoned or is abandoned