CN101917614B - 一种基于h.264分层b帧编码结构的码率控制方法 - Google Patents

一种基于h.264分层b帧编码结构的码率控制方法 Download PDF

Info

Publication number
CN101917614B
CN101917614B CN 201010190719 CN201010190719A CN101917614B CN 101917614 B CN101917614 B CN 101917614B CN 201010190719 CN201010190719 CN 201010190719 CN 201010190719 A CN201010190719 A CN 201010190719A CN 101917614 B CN101917614 B CN 101917614B
Authority
CN
China
Prior art keywords
frame
gop
time domain
coding
layer
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.)
Expired - Fee Related
Application number
CN 201010190719
Other languages
English (en)
Other versions
CN101917614A (zh
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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN 201010190719 priority Critical patent/CN101917614B/zh
Publication of CN101917614A publication Critical patent/CN101917614A/zh
Application granted granted Critical
Publication of CN101917614B publication Critical patent/CN101917614B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种基于H.264分层B帧编码结构的码率控制方法,用于依次对当前GOP中的每个编码帧进行码率控制,包括步骤:(1)根据信道带宽、帧率和之前一个GOP的目标比特数和实际编码比特数之差计算为每个GOP分配的比特数;(2)利用之前一个GOP的时域层编码信息计算为当前GOP中的时域层分配的比特数;(3)在对时域层完成编码之后根据其编码结果对剩余未编码时域层分配的比特数进行调整;(4)对每个编码帧分配编码比特数;(5)计算当前编码帧量化步长,在将该量化步长转换成QP之后,做进一步的调整得到码率控制模块的输出。本发明充分利用了分层B帧编码结构的特点,克服了JVT-G012码率控制算法及其改进算法在性能上的缺陷,实现对分层B帧编码结构更有效的码率控制。

Description

一种基于H.264分层B帧编码结构的码率控制方法
技术领域
本发明涉及视频压缩技术,特别涉及视频压缩技术中的一种基于H.264分层B帧编码结构的码率控制方法。
背景技术
码率控制在视频压缩技术中起着至关重要的作用,其最终目的是在给定的目标比特率及缓存容量的条件下,使得传输的视频质量最优化。
H.264是由联合视频组(JVT)推出的最新视频编码标准,在对其进行码率控制的时候,由于压缩过程中产生的量化参数(QP)既用于码率控制过程,又用于率失真优化过程,因此会产生“蛋鸡悖论”的问题:一方面,为了计算当前宏块的率失真优化(RDO),需要利用当前宏块的QP作为输入;另一方面,当前宏块的QP的计算则需要利用该宏块的平均绝对差(MAD)来揭示其编码复杂度,然而,每个当前宏块的MAD只有在得知其RDO后才能计算出。因此,如何解决“蛋鸡悖论”成了H.264码率控制过程中的难题。
目前,应用较为广泛的H.264码率控制算法是JVT-G012,其要点是:为保证码率控制精度,分为图像组(GOP)级别、帧级别、基本单元(BU)级别的比特数分配,并通过流量模型计算某个时刻的缓冲器占用量以辅助调整分配的比特数大小;通过线性MAD预测模型来预测当前编码单元的MAD值,以解决“蛋鸡悖论”;使用MPEG-2中经典的二次码率—量化步长(R-Q)模型来计算量化步长(Q),从而得到最后的QP。虽然JVT-G012码率控制算法解决了“蛋鸡悖论”的问题并在多数情况下取得较好的编码效果,但是该算法并不能很好地支持分层B帧这种特殊的编码结构。
在分层B帧编码结构中,关键帧直接或者间接地作为二个连续的GOP之间的分层B帧的参考帧;较低层的B帧作为较高层的B帧的参考帧。换句话说,越低层的编码帧对整体的编码效率贡献越大。在这种编码结构中,应当给低层编码帧分配较多的编码比特数,以保证整体的编码效率。但是,在JVT-G012中,B帧的QP值是对两个相邻P帧的QP值进行插值计算得到,没有考虑属于不同时域编码层的编码帧的重要性。因此,若仍沿用JVT-G012中的算法,就会由于没有很好地利用分层B帧的编码特性而导致最终码率控制不准确以及编码视频质量下降。
为了提高JVT-G012算法在分层B帧编码结构下的码率控制性能,可以采用如下的改进的算法:
1、采用层叠量化(Cascading QP)的方法:首先利用相邻P帧的QP插值得到低层B帧的QP值,其次对其上层B帧逐层加大QP值,以此保证低层编码帧分配到较多比特数。这种方法存在的问题是:控制结果较为粗糙,并且不同编码帧之间的峰值信噪比(PSNR)波动很大。
2、通过预先定义不同层B帧与P帧编码比特数的目标比例来分配编码比特数,并伸缩(Scale)由P帧的统计结果得到的二次R-Q模型用于不同时域层的B帧。该方法虽然可以获得较为精确的码率控制结果,但是,由于不同层B帧与P帧编码比特数的目标比例、二次R-Q模型的伸缩比例都需要预先设定,并不能自适应于不同的编码序列。
综上所述,针对分层B帧编码结构的码率控制,目前的JVT-G012算法及其改进算法在性能上都存在缺陷。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于H.264分层B帧编码结构的码率控制方法,能够克服JVT-G012码率控制算法及其改进算法在性能上存在的缺陷,实现对分层B帧编码结构最有效的码率控制。
本发明解决其技术问题是采取以下技术方案实现的:
一种基于H.264分层B帧编码结构的码率控制方法,用于依次对当前图像组GOP中的每个编码帧进行码率控制,包括如下步骤:
(1)在编码第i个GOP的初始阶段,利用可用信道带宽、第i-1个GOP的目标比特数和实际编码比特数之差计算为每个GOP分配的目标比特数;
(2)在为第i个GOP分配目标比特数之后,进行时域层级比特分配,利用第i-1个GOP的编码结果计算第i个GOP的所有时域层的权重系数,并以此计算为每个时域层分配的目标比特数;
(3)在完成第k个时域层编码之后根据其编码结果对剩余未编码时域层分配的目标比特数进行调整;
(4)在编码当前时域层第l个编码帧的初始阶段,通过利用目标缓冲器水平、实际的缓冲器占用量、可用信道带宽、帧率和当前时域层剩余比特数计算给当前编码帧分配的比特数;
(5)在计算出为当前编码帧分配的比特数之后,采用多平均绝对差MAD预测模型来预测当前编码帧MAD,采用多二次R-Q模型计算当前编码帧量化步长并转换为量化参数QP,最后将QP值经过调整得到码率控制模块的输出。
而且,在步骤(2)中,第i个(i=2,3...)GOP第k个时域层的权重系数按如下公式计算:
α ( i , k ) = n ( k ) γ ( k ) Σ m = 0 L TL n ( m ) γ ( m ) if i = 2 0.5 × X TL ( i - 1 , k ) Σ m = 0 L TL X TL ( i - 1 , m ) + 0.5 × α ( i - 1 , k ) else
其中,XTL(i-1,k)是第i-1个GOP中第k层的编码复杂度,n(k)是第k层的编码帧数目,LTL代表GOP中最高的时域层号,γ(k)是第k层编码帧的初始权重系数。
而且,所述的第k层编码帧的初始权重系数γ(k)是通过实验得到的,其取值如下:
γ ( k ) = 1 if k = 0 0.5 if k = 1 0.4 if k = 2 0.3 if k = 3 0.2 if k = 4
而且,在步骤(3)中,在完成第k个时域层编码之后根据其编码结果对剩余未编码时域层分配的比特数进行调整的方法为:对时域层为第k+j层(j=1...LTL-k)按如下公式计算:
T ′ ( i , k + j ) = α ( i , k + j ) Σ m = 1 L TL - k α ( i , k + m ) × ΔBits ( i , k ) + T ( i , k + j )
其中,T(i,k+j)是调整前的第i个GOP的第k+j个时域层分配的比特数,T′(i,k+j)是调整后的第i个GOP的第k+j个时域层分配的比特数,ΔBits(i,k)是第k层的目标编码比特数与实际编码比特数之差,α(i,k+j)是第i个GOP第k+j个时域层的权重系数,α(i,k+m)是第i个GOP第k+m个时域层的权重系数,LTL代表GOP中最高的时域层号。
而且,在步骤(4)中,在计算给当前编码帧分配的比特数过程中所涉及的第i个GOP第k个时域层的目标缓冲区水平下降幅度按如下公式计算:
ΔB TBL ( i , k ) = α ( i , k ) × ( B TBL ( i - 1 ) - B TBL ( i ) ) n ( k )
其中,α(i,k)是第i个GOP第k个时域层的权重系数,n(k)是第k层的编码帧数目,BTBL(i)表示第i个GOP的目标缓冲器水平,其计算如下:
B TBL ( i ) = B Buffer ( 2,0,0 ) if i = 2 B TBL ( 2 ) - B Buffer ( 2,0,0 ) N P - 1 × ( i - 1 ) else
其中Np是二个I帧之间的P帧总数,BBuffer(i,k,l)是在完成第i个GOP第k层中的第l帧编码后的缓冲器占用量。
而且,在步骤(5)中,对于当前编码帧是关键帧的QP值按如下公式进行调整:
Q ^ P ( i , 0,0 ) = min { Q ^ P ( i - 1,0,0 ) + v 1 , max { Q ^ P ( i - 1,0 , 0 ) - v 1 , QP ( i , 0,0 ) } }
其中QP(i,k,l)和
Figure GSB00000689410400045
分别是调整前及调整后的QP值,v1取值如下:
v 1 = 6 if L TL = 4 5 if L TL = 3 4 if L TL = 2 3 if L TL = 1
其中,LTL代表GOP中最高的时域层号;
对于当前编码帧是B帧的QP值按如下公式进行调整:
Q ^ P ( i , k , l ) = min { Q P R ( i , k , l ) + v 2 , max { Q P R ( i , k , l ) , QP ( i , k , l ) } }
其中v2=3;QPR(i,k,l)是QP(i,k,l)的参考值,其定义如下:
QPR(i,k,l)=max{QP1,QP2}
其中,QP1和QP2分别是当前编码帧的二个最邻近参考帧的QP值。
本发明的优点和积极效果是:
本发明码在对当前编码帧进行码率控制时,首先计算为GOP分配的编码比特数,然后计算为当前时域层分配的编码比特数,再计算帧级别编码比特数,最后计算出QP。相对于现有的码率控制算法,本发明充分地利用分层B帧编码结构的特点,可以更精确合理地控制属于不同时域层的编码帧比特数,克服了JVT-G012码率控制算法及其改进算法在性能上存在的缺陷,提高了码率控制的准确性和编码制质量,避免了不同编码帧之间的峰值信噪比(PSNR)的波动,能够自适应不同的编码序列,实现了对分层B帧编码结构更有效的码率控制。
附图说明
图1为本发明所采用的码率控制方法的流程图;
图2为对QCIF的“Container”序列采用本实施例方法与JVT-G012算法及其它改进算法仿真后的编码性能比较示意图;
图3为对QCIF的“Foreman”序列采用本实施例方法与JVT-G012算法及其它改进算法仿真后的编码性能比较示意图;
图4为对CIF的“Bus”序列采用本实施例方法与JVT-G012算法及其它改进算法仿真后的编码性能比较示意图;
图5为对CIF的“Football”序列采用本实施例方法与JVT-G012算法及其它改进算法仿真后的编码性能比较示意图;
图6为对QCIF的“Foreman”序列在196kbps下采用本实施例方法与JVT-G012改进算法仿真后的逐帧PSNR比较示意图;
图7为对CIF的“Bus”序列在1500kbps下采用本实施例方法与JVT-G012改进算法仿真后的逐帧PSNR比较示意图。
具体实施方式
以下结合实例对本发明做进一步描述。
为解决现有技术中存在的问题,本发明提出一种全新的基于H.264分层B帧编码结构的码率控制方法。由于低层编码帧对整体编码效率有相对更高的贡献,所以应该给低层的编码帧分配更多的比特数,以提高高层编码帧在进行运动估计时的效率;相反,应该给高层编码帧分配较少的比特数,因为高层编码帧影响到的编码帧相对低层而言要少。本发明提出的方法充分利用了这些编码结构特性,针对每个GOP,根据信道带宽、帧率和缓冲器状态计算分配的目标比特数;采用了时域层级的比特数分配,保证不同的时域层分配到合理的目标比特数;在此之后,在帧级别给关键帧以及分层B帧分配相应的目标比特数;最后,根据目标比特数计算相应的QP并进行调整。相对于现有JVT-G012算法及其改进算法,本控制方法对分层B帧编码结构下的码率控制更加有效。
基于上述介绍,本发明所述方案的具体实现包括以下步骤:
(1)在编码第i个GOP的初始阶段,利用可用信道带宽、第i-1个GOP的目标比特数和实际编码比特数之差计算为每个GOP分配的目标比特数;
(2)在为第i个GOP分配目标比特数之后,进行时域层级比特分配,利用第i-1个GOP的编码结果计算第i个GOP的所有时域层的权重系数,并以此计算为每个时域层分配的目标比特数;
(3)在完成第k个时域层编码之后根据其编码结果对剩余未编码时域层分配的目标比特数进行调整;
(4)在编码当前时域层第l个编码帧的初始阶段,通过利用目标缓冲器水平、实际的缓冲器占用量、可用信道带宽、帧率和当前时域层剩余比特数计算给当前编码帧分配的比特数;
(5)在计算出为当前编码帧分配的比特数之后,采用多MAD预测模型来预测当前编码帧MAD,采用多二次R-Q模型计算当前编码帧量化步长并转换为QP,最后将QP值经过调整得到码率控制模块的输出。
为使本发明的目的、技术方案及优点更加清楚明白,以下举实施例,对本发明进一步详细说明。
如图1所示,本发明所采用的码率控制方法包括以下步骤:
步骤101:序列的第1帧为立即刷新帧(IDR),该帧独立构成第1个GOP,采用JVT-G012中的方法分配初始QP,直接编码该帧。
步骤102:在编码第i个GOP的初始阶段,计算给整个GOP分配的目标比特数。考虑了可用信道带宽、帧率以及缓冲器状态,其计算如下:
T GOP ( i ) = u ( i , 0,0 ) F × N GOP + ΔB ( i - 1 ) - - - ( 1 )
其中TGOP(i)表示分配给第i个GOP的比特数,u(i,0,0)是第i个GOP初始时刻可用信道带宽,F是帧率,NGOP是一个GOP里总的帧数,ΔB(i-1)是第i-1个GOP的目标比特数与实际编码比特数之差。从该公式可以看到,后续GOP的编码结果取决于之前的GOP——如果上一个GOP目标编码比特数大于实际值,那么当前GOP就可以多分配一些比特数,反之少分配一些。换句话说,如果上一个GOP的实际编码比特数超支,那么为本GOP分配的比特数就要“承受”这种超支;如果上一个GOP的实际编码比特数比目标值少,那么剩余的比特数就可以留给本GOP使用,这样就可以保证总体码率控制的精度。需要注意的是,若当前GOP是第二个GOP,由于第1个GOP只包含一个IDR帧,故公式(1)中的后半部分不考虑,采用下式计算:
T GOP ( 2 ) = u ( 2,0,0 ) F × N GOP - - - ( 2 )
步骤103:在为第i个GOP分配目标比特数之后,进行时域层级比特分配,利用第i-1个GOP的编码结果计算第i个GOP的所有时域层的权重系数。一方面,属于不同层的编码帧有不同的R-D特性,另一方面,不同层包含的编码帧数目也各不相同。考虑以上两点因素,第k个时域层的目标比特数计算如下:
T(i,k)=α(i,k)×TGOP(i)    (3)
其中α(i,k)是第i个GOP(第1个GOP只含一个IDR帧,不予以计算)中第k层的权重系数,在本发明中,其计算如下:
α ( i , k ) = n ( k ) γ ( k ) Σ m = 0 L TL n ( m ) γ ( m ) if i = 2 0.5 × X TL ( i - 1 , k ) Σ m = 0 L TL X TL ( i - 1 , m ) + 0.5 × α ( i - 1 , k ) else - - - ( 4 )
其中LTL代表GOP中最高的时域层号,γ(k)是第k层编码帧的初始权重系数,其值通过实验得到,在本发明中,取值如下:
γ ( k ) = 1 if k = 0 0.5 if k = 1 0.4 if k = 2 0.3 if k = 3 0.2 if k = 4 - - - ( 5 )
公式(3)中的XTL(i-1,k)是第i-1个GOP中第k层的编码复杂度,其计算如下:
X TL ( i - 1 , k ) = Σ l = 0 n ( k ) - 1 Q ( i - 1 , k , l ) B ( i - 1 , k , l ) - - - ( 6 )
其中Q(i,k,l)是第i个GOP第k层第l帧的QP值,B(i,k,l)是编码该帧产生的实际比特数。公式(3)和(6)中的n(k)是第k层的编码帧数。
采用公式(3)进行计算的原因是:首先,若当前GOP为编码序列中的第二个GOP中(i=2),通过实验设定合适的权重系数初始值,使前几个GOP的编码性能有所保证;其次,若当前GOP非编码序列中的第二个GOP,其权重系数计算依赖于为之前一个GOP分配的权重系数及该权重系数下的编码结果(编码复杂度),使得当前GOP的权重系数计算更为准确。
步骤104:在完成第k个时域层编码后,进行时域层级比特调整。与GOP级比特分配相似,假如某层有剩余比特,余下的比特将被按比例分配给未编码的时域层,以保证编码质量的最大化;假如该层实际的编码比特数比预期多,那么余下的未编码层将共同承受该层比特数超支的影响。根据以上分析,在完成第k个时域层编码之后,本发明采用如下公式来对高于其的剩余未编码时域层分配比特数进行更新:
T ′ ( i , k + j ) = α ( i , k + j ) Σ m = 1 L TL - k α ( i , k + m ) × ΔBits ( i , k ) + T ( i , k + j ) - - - ( 7 )
其中,T(i,k+j)是调整前的第i个GOP的第k+j个时域层分配的比特数,T′(i,k+j)是调整后的第i个GOP的第k+j个时域层分配的比特数,ΔBits(i,k)是第k层的目标编码比特数与实际编码比特数之差,α(i,k+j)是第i个GOP第k+j个时域层的权重系数,α(i,k+m)是第i个GOP第k+m个时域层的权重系数,LTL代表GOP中最高的时域层号,j=1,2...LTL-k。
步骤105:在编码第i个GOP的第k层的第l帧初始阶段,进行帧级比特分配。与JVT-G012相似,通过预先为每个编码帧定义目标缓冲器占用量来实现比特分配。分配给i个GOP第k层的第l帧的比特数通过目标缓冲器水平、帧率、可用信道带宽以及实际的缓冲器占用量计算如下:
T ~ Frame ( i , k , l ) = u ( i , k , l ) F + γ × ( B TBL ( i , k , l ) - B Buffer ( i , k , l ) ) - - - ( 8 )
其中γ是常数,其典型值为0.25。F是帧率,u(i,k,l)是编码第i个GOP第k层的第l帧时的信道带宽,BBuffer(i,k,l)是在完成第i个GOP第k层中的第l帧编码后的缓冲器占用量,BTBL(i,k,l)表示目标缓冲器水平,其更新如下:
BTBL(i,k,l)=BTBL(i,k,l-1)-ΔBTBL(i,k)    (9)
不同于JVT-G012,本发明中,目标缓冲区水平下降幅度ΔBTBL(i,k)计算如下:
ΔB TBL ( i , k ) = α ( i , k ) × ( B TBL ( i - 1 ) - B TBL ( i ) ) n ( k ) - - - ( 10 )
其中BTBL(i)表示第i个GOP的目标缓冲器水平,其计算如下:
B TBL ( i ) = B Buffer ( 2,0,0 ) if i = 2 B TBL ( 2 ) - B Buffer ( 2,0,0 ) N P - 1 × ( i - 1 ) else - - - ( 11 )
其中Np是二个I帧之间的P帧总数。
从公式(10)可以看到,与JVT-G012不同,由于不同时域层的B帧编码产生出的比特数各不相同,因此本发明中的缓冲器控制方法并不是控制整个缓冲器占用量在完成每帧编码后以相同的幅度下降。不同层的缓冲器下降幅度根据各层权重系数决定,在相同层内的下降幅度相同。
同时,分配给每帧的比特数必须考虑时域层的目标比特数:
T ^ Frame ( i , k , l ) = T ~ ( i , k , l ) n ~ ( i , k , l ) - - - ( 12 )
其中
Figure GSB00000689410400104
Figure GSB00000689410400105
分别代表编码第i个GOP第k层中第l帧前的剩余比特数及剩余未编码帧数目。
最终分配给每帧的目标比特数是
Figure GSB00000689410400106
Figure GSB00000689410400107
的一个加权和:
T Frame ( i , k , l ) = β × T ^ Frame ( i , k , l ) + ( 1 - β ) × T ~ Frame ( i , k , l ) - - - ( 13 )
其中β是常数且典型值为0.9,该值的选取与JVT-G012一致。
步骤106:在第i个GOP的第k层的第l个编码帧比特数分配完成之后,进行QP计算。采用经典的二次R-Q模型计算量化参数:
R ′ - H M F = X 1 × Q - 1 + X 2 × Q - 2 - - - ( 14 )
其中R′是分配给当前编码帧的总比特数,H代表头信息,MF是当前帧MAD的预测值,X1和X2是两个模型参数。计算得到的量化步长Q经过转化得到QP。
因为不同时域层内的编码帧具有不同的R-D特性,因此针对不同层,采用不同的R-Q模型。也就是说,模型参数是将与当前编码帧相同层内的已编码帧的实际编码比特数及量化步长作为历史数据,使用线性回归方法更新得到。
头信息采用相同层内前一个编码帧的实际头信息值作为预测值。MAD预测方法采用的是JVT-G012中提出的线性预测模型。为了获得准确的预测结果,编码帧在各自层上使用各自的线性预测模型进行更新。
为获得较为平滑的编码质量,通过R-Q模型计算得到的QP还要进行调整。如果当前编码帧是关键帧,调整过程如下:
Q ^ P ( i , 0,0 ) = min { Q ^ P ( i - 1,0,0 ) + v 1 , max { Q ^ P ( i - 1,0 , 0 ) - v 1 , QP ( i , 0,0 ) } } - - - ( 15 )
其中QP(i,k,l)和
Figure GSB00000689410400112
分别是调整前及调整后的QP值。在JVT-G012中,v1设置为2。对于分层B帧编码结构,在两个关键帧之间插入的B帧数越多,意味着两个关键帧之间的距离就越远,两者间的相关度就越低,故v1的值就应该越大。本发明通过实验得到以下经验值:
v 1 = 6 if L TL = 4 5 if L TL = 3 4 if L TL = 2 3 if L TL = 1 - - - ( 16 )
如果当前编码帧是B帧,其调整流程如下:
Q ^ P ( i , k , l ) = min { Q P R ( i , k , l ) + v 2 , max { Q P R ( i , k , l ) , QP ( i , k , l ) } } - - - ( 17 )
其中v2为经验值,在本发明中取值为3;QPR(i,k,l)是QP(i,k,l)的参考值,其定义如下:
QPR(i,k,l)=max{QP1,QP2}    (18)
其中QP1和QP2是当前编码帧的二个最邻近参考帧的QP值。由公式(17)及(18)可以看到,处于上层的B帧分配到的QP值必须大于或者等于较低的时域层,这是因为越上层的B帧对整个序列的编码效率贡献越小,所以应该给它们分配更大的QP。
步骤107:采用分配到的QP值编码当前帧。
步骤108:判断序列是否结束,是则结束码率控制流程,否则进入步骤109。
步骤109:判断当前GOP是否编码完毕,是则转入步骤102,否则进入步骤110。
步骤110:判断当前时域层是否编码完毕,是则转入步骤104,否则转入步骤105。
至此,即完成了本发明所述的分层B帧码率控制方法的过程。
以H.264参考软件JM14.2作为平台,仿真了所提出的码率控制算法。为了验证该算法的性能,本发明还与码率控制算法JVT-G012、针对分层B帧编码结构的码率控制改进算法JVT-W042中的模式3以及JVT-P014中所提出的Cascading QP算法性能进行比较。
实验的编码帧率为30fps,两个关键帧之间插入的B帧数目为7;运动估计的精度设置为1/4,搜索范围为16,参考帧的个数为1。开启CABAC编码模式以及RDO。实验选择的测试序列为QCIF序列“Container”和“Foreman”以及CIF序列“Bus”和“Football”。
图2~图5展示了4个测试序列的R-D性能曲线。其中,JVT-G012、JVT-P014中的Cascading QP的方法、JVT-W042中的模式3以及本发明所提出的码率控制算法在图中分别标识为“G012”,“P014”,“W042”以及“本发明算法”。从图中可以看出,针对分层B帧编码结构,与传统码率控制JVT-G012相比,本发明所提出的码率控制算法可以获得相当可观的编码增益,例如2000kbps下的“Football”序列PSNR增益达到1.4dB。与Cascading QP的方法以及JVT-W042里的模式3比较,本发明提出的算法也获得了更高的编码质量。
图6及图7分别展示了“Foreman”序列在目标码率为196kbps下以及“Bus”序列在1500kbps下前16个GOP的逐帧亮度PSNR比较图。图中给出了W042模式3、Cascading QP的算法以及本发明算法的测试结果。从图中可以看出,绝大部分情况下,本发明算法的PSNR都要高于另外两种算法。同时可以观察到,在同一个GOP内,Cascading QP算法PSNR波动很大,W042次之,而本发明算法获得的结果相对稳定。
表1~表4分别列出了4个序列的具体编码结果,从中可以看到,本发明所提出的码率控制方法可以得到比其它方法更精确的控制结果,目标码率与实际码率之间的误差在2%以内;同时,针对不同序列的不同目标码率值,本发明算法都可以获得比另外3种算法更高的亮度PSNR值。
表1“Container”序列编码结果
Figure GSB00000689410400131
表2“Foreman”序列编码结果
Figure GSB00000689410400132
表3“Bus”序列编码结果
Figure GSB00000689410400141
表4“Football”序列编码结果
Figure GSB00000689410400142
总之,本发明码率控制方法在对分层B帧编码结构进行码率控制时,首先,利用缓冲器状态、信道带宽、帧率计算为每个GOP分配的比特数;其次,利用之前一个GOP的编码信息计算为当前GOP中的每个时域层分配的比特数,并在完成每个时域层编码之后根据该时域层的编码结果对剩余未编码时域层分配的比特数进行调整;接着,根据目标缓冲器水平以及实际缓冲器充溢状态、信道带宽、帧率,对每个编码帧分配编码比特数;最后,采用线性MAD预测模型及二次R-Q模型计算当前编码帧量化步长,在将该量化步长转换成QP之后,做进一步的调整。采用本发明所述的方法,相对于现有的码率控制方法,可以更有效地利用分层B帧编码结构特点,克服了JVT-G012码率控制算法应用于分层B帧编码结构时存在的缺陷,实现最有效的码率控制。
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。

Claims (6)

1.一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:用于依次对当前图像组GOP中的每个编码帧进行码率控制,包括如下步骤:
(1)在编码第i个GOP的初始阶段,利用可用信道带宽、第i-1个GOP的目标比特数和实际编码比特数之差计算为每个GOP分配的目标比特数;
(2)在为第i个GOP分配目标比特数之后,进行时域层级比特分配,利用第i-1个GOP的编码结果计算第i个GOP的所有时域层的权重系数,并以此计算为每个时域层分配的目标比特数;
(3)在完成第k个时域层编码之后根据其编码结果对剩余未编码时域层分配的目标比特数进行调整;
(4)在编码当前时域层第l个编码帧的初始阶段,通过利用目标缓冲器水平、实际的缓冲器占用量、可用信道带宽、帧率和当前时域层剩余比特数计算给当前编码帧分配的比特数;
(5)在计算出为当前编码帧分配的比特数之后,采用多平均绝对差MAD预测模型来预测当前编码帧MAD,采用多二次R-Q模型计算当前编码帧量化步长并转换为量化参数QP,最后将QP值经过调整得到码率控制模块的输出。
2.根据权利要求1所述的一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:在步骤(2)中,第i个i=2,3... GOP第k个时域层的权重系数按如下公式计算:
Figure FSB00000689410300011
其中,XTL(i-1,k)是第i-1个GOP中第k层的编码复杂度,n(k)是第k层的编码帧数目,LTL代表GOP中最高的时域层号,γ(k)是第k层编码帧的 初始权重系数。
3.根据权利要求2所述的一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:所述的第k层编码帧的初始权重系数γ(k)是通过实验得到的,其取值如下:
Figure FSB00000689410300021
4.根据权利要求1所述的一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:在步骤(3)中,在完成第k个时域层编码之后根据其编码结果对剩余未编码时域层分配的比特数进行调整的方法为:对时域层为第k+j层j=1...LTL-k按如下公式计算:
Figure FSB00000689410300022
其中,T(i,k+j)是调整前的第i个GOP的第k+j个时域层分配的比特数,T′(i,k+j)是调整后的第i个GOP的第k+j个时域层分配的比特数,ΔBits(i,k)是第k层的目标编码比特数与实际编码比特数之差,α(i,k+j)是第i个GOP第k+j个时域层的权重系数,α(i,k+m)是第i个GOP第k+m个时域层的权重系数,LTL代表GOP中最高的时域层号。
5.根据权利要求1所述的一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:在步骤(4)中,在计算给当前编码帧分配的比特数过程中所涉及的第i个GOP第k个时域层的目标缓冲区水平下降幅度按如下公式计算:
Figure FSB00000689410300023
其中,α(i,k)是第i个GOP第k个时域层的权重系数,n(k)是第k层的 编码帧数目,BTBL(i)表示第i个GOP的目标缓冲器水平,其计算如下:
其中Np是二个I帧之间的P帧总数,BBuffer(i,k,l)是在完成第i个GOP第k层中的第l帧编码后的缓冲器占用量。
6.根据权利要求1所述的一种基于H.264分层B帧编码结构的码率控制方法,其特征在于:在步骤(5)中,对于当前编码帧是关键帧的QP值按如下公式进行调整:
其中QP(i,k,l)和 
Figure FSB00000689410300033
分别是调整前及调整后的QP值,v1取值如下:
Figure FSB00000689410300034
其中,LTL代表GOP中最高的时域层号;
对于当前编码帧是B帧的QP值按如下公式进行调整:
Figure FSB00000689410300035
其中v2=3;QPR(i,k,l)是QP(i,k,l)的参考值,其定义如下:
QPR(i,k,l)=max{QP1,QP2}
其中,QP1和QP2分别是当前编码帧的二个最邻近参考帧的QP值。 
CN 201010190719 2010-06-03 2010-06-03 一种基于h.264分层b帧编码结构的码率控制方法 Expired - Fee Related CN101917614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010190719 CN101917614B (zh) 2010-06-03 2010-06-03 一种基于h.264分层b帧编码结构的码率控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010190719 CN101917614B (zh) 2010-06-03 2010-06-03 一种基于h.264分层b帧编码结构的码率控制方法

Publications (2)

Publication Number Publication Date
CN101917614A CN101917614A (zh) 2010-12-15
CN101917614B true CN101917614B (zh) 2012-07-04

Family

ID=43324982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010190719 Expired - Fee Related CN101917614B (zh) 2010-06-03 2010-06-03 一种基于h.264分层b帧编码结构的码率控制方法

Country Status (1)

Country Link
CN (1) CN101917614B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2597469C2 (ru) 2011-01-14 2016-09-10 Сан Пэтент Траст Способ кодирования изображений, способ декодирования изображений, способ управления памятью, устройство кодирования изображений, устройство декодирования изображений, устройство управления памятью и устройство кодирования и декодирования изображений
CN102647586B (zh) * 2011-02-16 2015-07-08 富士通株式会社 用在视频编码系统中的码率控制方法和装置
CN102186084B (zh) * 2011-06-07 2013-07-31 东莞电子科技大学电子信息工程研究院 一种可伸缩视频编码svc的空间增强层码率控制实现方法
CN102420987A (zh) * 2011-12-01 2012-04-18 上海大学 基于分层b帧结构的码率控制的自适应比特分配方法
CN104079933B (zh) * 2014-07-09 2018-07-27 上海君观信息技术有限公司 适用于hevc的低延时码率控制方法及比特数分配方法
CN105898307A (zh) * 2015-12-22 2016-08-24 乐视云计算有限公司 一种b帧位置决策方法及装置
CN105847796A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种用于视频编码的比特分配方法及装置
CN108401159B (zh) * 2017-02-07 2022-07-08 腾讯科技(深圳)有限公司 一种目标码率控制的方法以及电子设备
CN109819253B (zh) * 2017-11-21 2022-04-22 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质
CN108093257A (zh) * 2017-12-05 2018-05-29 北京小米移动软件有限公司 视频编码的码率控制方法、电子设备及存储介质
CN109862359B (zh) * 2018-12-29 2021-01-08 北京数码视讯软件技术发展有限公司 基于分层b帧的码率控制方法、装置和电子设备
CN112752103B (zh) * 2019-10-31 2023-01-31 Oppo广东移动通信有限公司 码率控制的方法与装置
CN110971900A (zh) * 2019-11-14 2020-04-07 杭州当虹科技股份有限公司 一种适用于4k、8k超高清运动平缓视频的码率控制方法
CN111447445B (zh) * 2020-03-16 2022-09-09 西安万像电子科技有限公司 数据传输方法及装置
CN114422783B (zh) * 2021-12-07 2024-04-12 网宿科技股份有限公司 视频编码方法、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6028639A (en) * 1997-12-19 2000-02-22 Thomson Consumer Electronics, Inc. Process and apparatus for converting an MPEG-2 bitstream into SMPTE-259 compatible bitstream
CN101159867A (zh) * 2007-03-31 2008-04-09 红杉树(杭州)信息技术有限公司 一种基于片的自适应码率控制方法
CN101340576A (zh) * 2007-07-06 2009-01-07 北京大学软件与微电子学院 利用变换和运动补偿的场景转换图像增强处理方法及系统
CN101466035A (zh) * 2007-12-21 2009-06-24 深圳市融合视讯科技有限公司 一种基于h.264的视频图像组比特分配方法
CN101572806A (zh) * 2009-06-01 2009-11-04 北京邮电大学 一种基于h.264的i帧码率控制方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6028639A (en) * 1997-12-19 2000-02-22 Thomson Consumer Electronics, Inc. Process and apparatus for converting an MPEG-2 bitstream into SMPTE-259 compatible bitstream
CN101159867A (zh) * 2007-03-31 2008-04-09 红杉树(杭州)信息技术有限公司 一种基于片的自适应码率控制方法
CN101340576A (zh) * 2007-07-06 2009-01-07 北京大学软件与微电子学院 利用变换和运动补偿的场景转换图像增强处理方法及系统
CN101466035A (zh) * 2007-12-21 2009-06-24 深圳市融合视讯科技有限公司 一种基于h.264的视频图像组比特分配方法
CN101572806A (zh) * 2009-06-01 2009-11-04 北京邮电大学 一种基于h.264的i帧码率控制方法

Also Published As

Publication number Publication date
CN101917614A (zh) 2010-12-15

Similar Documents

Publication Publication Date Title
CN101917614B (zh) 一种基于h.264分层b帧编码结构的码率控制方法
CN101572806B (zh) 一种基于h.264的i帧码率控制方法
CN103561266B (zh) 基于对数r-q模型和层次化比特分配的码率控制方法
CN101547349B (zh) 一种对视频信号的二次avs编码码率控制的方法
CN103533365B (zh) 比特率控制方法与比特率控制系统
CN101895759B (zh) 一种h.264码率控制方法
CN103281530B (zh) 基于率失真优化的hevc码率控制方法
CN101562741B (zh) 多层编码的码率控制方法及装置
CN101287112B (zh) 一种自适应码率控制方法
CN101895758B (zh) 基于帧复杂度的h.264码率控制方法
CN105120282B (zh) 一种时域依赖的码率控制比特分配方法
CN104320657B (zh) Hevc无损视频编码的预测模式选择方法及相应的编码方法
CN102186077B (zh) 基于Wyner-Ziv视频编码的Wyner-Ziv帧码率控制系统和方法
CN102186084B (zh) 一种可伸缩视频编码svc的空间增强层码率控制实现方法
Liu et al. Low-complexity rate control based on ρ-domain model for scalable video coding
CN108200431A (zh) 一种视频编码码率控制帧层比特分配方法
CN101335891B (zh) 视频速率控制方法及视频速率控制器
CN107707918A (zh) 基于hevc/h.265平均码率控制的优化算法
CN102148973A (zh) 基于拉格朗日乘数因子的3层码率控制方法
CN104796703B (zh) 基于预测模式率失真分析的可伸缩视频编码的码率控制方法
CN1992898A (zh) 一种低复杂度的视频码率控制方法
CN110139101B (zh) 一种基于λ域码率控制的帧级比特分配方法
US20040146103A1 (en) Bit rate control method and apparatus for MPEG-4 video coding
CN102752591A (zh) 基于综合因子的h.264码率控制方法
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
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120704

Termination date: 20130603