CN102868883A - 一种视频编码的码率控制方法 - Google Patents
一种视频编码的码率控制方法 Download PDFInfo
- Publication number
- CN102868883A CN102868883A CN2012102131215A CN201210213121A CN102868883A CN 102868883 A CN102868883 A CN 102868883A CN 2012102131215 A CN2012102131215 A CN 2012102131215A CN 201210213121 A CN201210213121 A CN 201210213121A CN 102868883 A CN102868883 A CN 102868883A
- Authority
- CN
- China
- Prior art keywords
- picture
- gop
- lambda
- rate control
- target bit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000006467 substitution reaction Methods 0.000 claims 8
- 230000001105 regulatory effect Effects 0.000 claims 7
- 101150092197 Stimate gene Proteins 0.000 claims 1
- YNKFCNRZZPFMEX-XHPDKPNGSA-N desmopressin acetate trihydrate Chemical compound O.O.O.CC(O)=O.C([C@H]1C(=O)N[C@H](C(N[C@@H](CC(N)=O)C(=O)N[C@@H](CSSCCC(=O)N[C@@H](CC=2C=CC(O)=CC=2)C(=O)N1)C(=O)N1[C@@H](CCC1)C(=O)N[C@H](CCCNC(N)=N)C(=O)NCC(N)=O)=O)CCC(=O)N)C1=CC=CC=C1 YNKFCNRZZPFMEX-XHPDKPNGSA-N 0.000 claims 1
- 229940034337 stimate Drugs 0.000 claims 1
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 165
- 230000008569 process Effects 0.000 description 24
- 238000013139 quantization Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 108091026890 Coding region Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种码率控制方法,其通过编码器对视频进行编码并控制视频编码码率,所述方法包括GOP级、图片级以及BU级三个级别的码率控制。GOP级码率控制主要包括GOP级目标比特数的分配以及编码完一个GOP之后的更新;图片级码率控制主要包括图片级目标比特数的分配、如何达到图片的目标比特数以及编码完一个图片之后的更新;BU级码率控制包括BU级目标比特数的分配、如何达到BU的目标比特数以及编码完一个BU之后的更新。本发明能够使得实际码率和目标码率非常接近,并且在给定码率的情况下可以得到很好的视频质量,从而在给定带宽的情况下,为视频观看者提供很好的体验。
Description
技术领域
本发明属于视频编码技术领域,特别涉及一种视频编码的码率控制方法。
背景技术
近年来,随着因特网(Internet)的迅猛发展,在互联网中针对视频的应用需求越来越多,而视频的数据量非常大,要想视频能在带宽有限的互联网中传输,必须首先解决的问题就是视频压缩编码问题。目前,国际上有两个国际组织专门进行视频编码标准的制定工作,即ISO/IEC下的MPEG(Motion Picture Experts Group,运动图像专家组)和ITU-T(International Telecommunication Union-Telecommunication standardization sector,国际电信联盟电信标准化组)的VCEG(Video Coding Experts Group,视频编码专家组)。成立于1986年的MPEG专门负责制定多媒体领域内的相关标准,主要应用于存储、广播电视、因特网或无线网上的流媒体等。ITU-T则主要制定面向实时视频通信领域的视频编码标准,如视频电话、视频会议等应用。在过去的几十年里,国际上已经成功制定了面向各种应用的视频编码标准,主要包括:用于VCD(Video Compact Disc,影音光碟)的MPEG-1(Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to About 1.5Mbit/s—Part 2:Video,ISO/IEC11172-2(MPEG-1Video),ISO/IEC JTC 1,Mar.1993.)标准,用于DVD(Digital Versatic Disc,数字多功能光盘)和DVB(Digital Video Broadcasting,数字广播视频)的MPEG-2(Generic coding of moving pictures and associated audio information—part 2:video,ITU-T Rec.H.262|ISO/IEC13818-2(MPEG-2Video),Nov.1994.)标准,用于视频会议的H.261(Video Codec for Audiovisual Services at p×64kbit/s ITU-T Recommendation H.261,Version 1,ITU-T,ITU-T Recommendation H.261Version 1,1990.)/H.263 (Video coding for low bit rate communication,Version 1:Nov.1995,Version2:Jan.1998,Version3:Nov.2000,ITU-TRec.H.263.)标准,允许对任意形状的对象编码的MPEG-4标准(Coding of audio-visual objects-part 2:visual,Version 1:Apr.1999,Version 2:Feb.2000,Version 3:May2004,ISO/IEC 14492-2(MPEG-4Visual).),以及最近国际上制定的H.264/AVC标准(Advanced video coding for generic audiovisual services,v3:2005,ITU-T Rec.H.264|ISO/IEC IS 14496-10.)以及正在制定的HEVC(ITU-T Q6/16VCEG and ISO/IEC JTC1/SC29/WG11MPEG“Joint Call forProposals on Video Compression Technology,”Document VCEG-AM91.Kyoto,JP,Jan.2010)标准。上述已经制定或正在制定的视频编码标准都属于混合视频编解码框架。所谓混合视频编解码,一般由以下几部分组成,预测(Prediction)、变换(Transform)、量化(Quantization)和熵编码(Entropy Coding)。上述几部分是组成视频编解码最基本的部分,在标准中也对预测、变换、量化以及熵编码的各种细节都做了明确的规定,但是对于仅存在于编码端的工具——码率控制(Rate Control)并没有任何限制。
虽然码率控制只是编码端的一个工具,不是视频编码标准的一部分,但对于性能优越,期待得到广泛应用的视频编码标准而言,码率控制无疑是不可或缺的一部分。在没有码率控制的情况下,我们只能根据给定的QP(Quantization parameter,量化参数)来进行编码,这就会使每一单位时间所产生的比特数随着视频内容的变化会有很大的不同,不能够适应通信信道的带宽。码率控制的目的就是根据通信信道的带宽来调节QP,使视频通信系统在一定数据带宽的限制下能有较稳定的传输码率以及较小的视频时延。当通信信道的带宽较大时,可以以一定的准则调小QP使产生的码流比特数尽量多来适应通信信道的带宽,同样,当通信信道的带宽较小时,可以相应适度调大QP。当然码流的比特率不可能和通信信道的带宽完全一样,所以在编码端和解码端都需要使用先入先出(First In First Out)的缓存器来平滑码流。
正是因为码率控制不是编码标准的一部分,使得码率控制相对于标准规定好的帧内预测(intra prediction)以及帧间预测(inter prediction)等技术有着更大的灵活性,我们可以针对不同的应用场景来调整码率控制的策 略。根据应用场景的不同,需要解决的码率控制问题可以分为如下几种情况。
1、失真:根据失真理论,失真D是随着码率R增加而减小的,所以提高视频质量的码率分配问题可以用数学模型表示为:
这里Di(Ri-a,…,Ri+b)表示第i个图片的率失真函数,i-a,...,i-b为第i个图片的依赖图片的编号;Ri是分配给第i个图片的比特数;Rbudget是总的待分配的比特数。(1)式表示在给定的码率Rbudget下,使得编码的整体失真最小。这样,码率分配的问题就变成数学中的最优化问题。
2、复杂度:不同的应用有不同的计算复杂度要求,对于实时视频系统,过于复杂的码率控制方法,例如二次编码,一般不被使用。因而如何既能尽可能的接近最优解而复杂度又尽量简单成为设计码率控制方法的目的之一。对于公式(1),每一个图片的失真都与前后图片相关,在实时处理中是不实用的,因而可以简化为:
3、满足一定的限制:在视频压缩应用中,可能满足一系列的限制要求。以实时系统为例,必须满足时延限制,缓冲区限制等。
码率控制的整个过程主要可以分为两个部分:比特分配和如何达到所做的比特分配。即先在视频各GOP(连续的多个图片组成的图像组),各图片以至各BU(码率控制的基本单元,Base Unit)间最优地分配码率,然后对于每个GOP,每个图片或BU,通过调整编码参数达到最佳的目标码率。
现有的针对HEVC的基于URQ模型的码率控制方法:
在HEVC中,为了实现码率控制,该方法使用基于像素的URQ(unified Rate quantization)模型的码率控制(Hyomin Choi、Junghak Nam、Jonghun Yoo、Donggyu Sim,“Rate control based on unified RQ model for HEVC”, Document JCTVC-H0213,San CA,USA,February,2012)。在计算得到了目标bpp(bits per pixel,平均每个像素的比特数)的情况下,通过基于像素的URQ模型求得图片或者BU的QP来进行编码。
该方法使用的码率控制算法分为三个级别:GOP级、图片级以及BU级。下面分别对这三个级别做简要的介绍。
GOP级的码率控制:GOP级的主要任务是计算当前GOP的目标比特数以及更新编码完一个GOP之后的码率控制单元(包含多个GOP的连续的M个图片)剩余的目标比特数以及图片数。如果某一个GOP编码实际使用的比特数与分配的目标比特数不相等,该技术将立即在后一个GOP多分或少分一些比特来弥补,而不考虑再后面的GOP。
图片级的码率控制:根据视频的帧率、当前通信信道的带宽、缓冲区的状况以及当前GOP的码率控制结果来决定整个图片的目标比特数Ti(j),然后通过如下二次模型计算整个图片的QP。
其中Npixels,i(j)是指第i个GOP的第j个图片中像素的数目,Ti(j)是指第i个GOP的第j个图片的目标比特数,α以及β是基于像素的URQ模型的系数,MADpred,i(j)是指第i个GOP第j个图片的MAD的预测值,MADpred,i(j)可以通过如下线性预测模型得到:
MADpred,i(j)=a1×MADactual,i(j-1-M)+α2 (4)
其中a1、a2是两个系数,初始值分别设为1和0,MADactual,i(j-1-M)是指编码顺序在当前图片之前的图片实际编码后的最佳预测值与原始值之间的MAD。
BU级的码率控制:BU是由一系列连续的编码基本单元(LCU,Largest Coding Unit)组成的,可以是一个编码基本单元,一行编码基本单元等。
由于在一个图片的最右边或最下边的编码基本单元可能与其他的编码基本单元有不同的像素数目,所以像素数目对于BU级的码率控制是非常重要的参数。BU级的比特分配与该BU本身的复杂度无关,基本按照均匀分配的方式进行分配,分配完比特之后就需要求对应的量化参数,BU级 码率控制求量化参数的过程和图片级求量化参数的过程基本一样,都是根据二次模型公式来计算。
该方法的缺点:
1、该方法的码率控制算法所使用的二次模型并不精确,并不能完全反映出经过变换以后系数的分布,这会很大程度上影响码率控制的精度。
2、无论是图片级的码率控制还是BU级的码率控制,该方法使用的二次模型都是QP与bpp的关系。先利用bpp求QP,再利用QP求lambda,最后根据求得的QP和lambda编码。考虑到QP是离散的,在对QP取整的过程中会一定程度上影响lambda的精度,从而影响码率控制的精度。
3、该方法采用的BU级分配比特的方法与BU本身的复杂度无关,这会导致本身需要消耗较多比特的BU和需要消耗较少比特的BU的目标比特数大致相等,从而用公式(3)计算出来的不同BU之间的量化参数相差很大,而为了不影响视频的主观质量,码率控制过程都会限制量化参数的范围,这就会使相应的BU实际使用的比特数和目标比特数相差较大,从而影响码率控制的精度。
现有的针对H.264的基于域的码率控制方法:
在H.264中,为了实现码率控制,该方法使用基于域的码率控制方法(Guixu Lin,Shibao Zheng,IEEE Member and Jianling Hu,“ATWO-STAGE ρ-DOMAIN RATE CONTROL SCHEME FOR H.264ENCODER”,Multimedia and Expo,2008IEEE International Conference on)。
在计算得到了一个BU的目标比特数的情况下,通过基于域的模型求得BU的QP来进行编码。
该方法使用的码率控制算法的基本过程如下所示:首先使用一个预先给定的QP对整幅图片进行编码,如果编码的实际比特数和目标比特数的上述差值小于一定的阈值,该图片编码结束,如果编码的实际比特数和目标比特数的差值大于一定的阈值,则对每一个BU使用基于域的模型计算该BU的QP,然后对第一步实际编码得到的DCT系数使用新计算出来的QP重新量化和熵编码直至实际比特数和目标比特数的差值小于一定的阈值为止。
在编码的实际比特数和目标比特数大于一定阈值的情况下,计算每一个BU的QP的步骤如下:
第一,为当前图片完成ρ-R模型;
ρ域模型如下式所示:
R=θ(1-ρ) (5)
其中R是编码之后一个图片的实际比特数,ρ是指DCT系数中零的
比例,对于每一个图片是一个常数,也是模型中需要接下来求解的量。
的求解过程如下所示:
其中Rm是指当前图片第一次编码消耗的比特数加上第二次编码编到当前BU为止的总的比特数。ρm是指当前图片第一次编码的DCT系数的零的个数加上第二次编码编到目前BU为止的总的零的个数。N是指当前图片的BU数,Nm是指第二次编码当前BU时已经编码的BU的数目。
第二,计算当前BU第二次编码前的ρ;
ρ的计算公式如下所示:
其中RT是指当前BU的目标比特数,ρr是指当前BU第二次编码前的ρ,N是指当前图片的BU数,Nm是指第二次编码当前BU时已经编码的BU的数目。
第三,根据ρr计算每一个BU的QP;
通过(7)式求出的ρ求解量化步长的公式如下所示:
其中D(x)是指当前BU的DCT系数的分布,是指量化步长。
由于量化步长与QP是一一对应的,接着就可以根据量化步长求QP,根据QP求拉格朗日参数lambda,最后完成对于每一个BU的编码过程。
该方法的缺点:
1、两次编码的方式使得编码端的复杂度较高。虽然该方法没有重新做复杂的运动估计与运动补偿过程,但重复做量化和熵编码过程还是会一定程度上增加编码的复杂度。对于实时编码系统两次编码的方式一般很不可取;
2、在改变QP之后并没有重新做RDO(Rate Distortion Optimization,率失真优化),这会使得对于改变之后的QP并不一定选择到了最优的模式和运动信息,这在一定程度上会影响编码的RD性能,在固定码率的情况下会导致视频的质量偏低。
3、基于域的码率控制方法最终得到的关系也是目标比特数和QP的关系,也即是说编码过程依然是先得到QP再得到拉格朗日参数lambda,最后根据求得的QP和拉格朗日参数lambda编码。考虑到QP是离散的,在对QP取整的过程中会一定程度上影响lambda的精度,从而影响码率控制的精度。
发明内容
(一)要解决的技术问题
本发明所要解决的技术问题是提高视频编码的码率控制精度,以更好地适应各种不同通信信道的带宽,提高视频的传输效率。
(二)技术方案
为解决上述技术问题,本发明提出一种码率控制方法,其通过编码器对视频进行编码并控制视频编码码率,该方法包括如下步骤:
A、向编码器输入码率控制单元和该码率控制单元的目标码率,开始视频编码,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
B、根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数;
C、将上述计算的码率控制单元的目标比特数分配到每个GOP;
D、将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数;
E、把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数;
F、编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码完一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数。
本发明还提出一种码率控制装置,其通过编码器对视频进行编码并控制视频编码码率,该装置包括:
用于向编码器输入码率控制单元和该码率控制单元的目标码率的装置和用于视频编码的装置,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
用于根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数的装置;
用于将上述计算的码率控制单元的目标比特数分配到每个GOP的装置;
用于将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数的装置;
用于把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数的装置;
用于编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码完一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数的装置。
(三)有益效果
本发明所能达到的有益技术效果为实际码率更接近目标码率,而且在给定码率的情况下可以达到更好的视频质量,因而可以更充分利用网络带宽,为视频观看者提供更好的体验。
附图说明
图1是本发明的视频编码的码率控制方法中的GOP级码率控制的流程图;
图2是本发明的视频编码的码率控制方法中的图片级码率控制的流程图;
图3是本发明的视频编码的码率控制方法中的BU级码率控制的流程图;
图4是为处于同一层的图片仅建立一个模型的示意图;
图5是为处于同一层图片的每个BU建立一个模型的示意图;
图6为本发明的该实施例的用于HEVC的码率控制方法流程图;
图7为BQSquare序列分别使用针对HEVC的现有技术和本发明的实施例的每帧码率波动图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
总的来说,为了使视频编码的码率控制更加精确,本发明直接寻找每一个图片或者每一个BU的bpp与拉格朗日参数lambda之间的关系,给定bpp来求lambda,然后通过lambda来求QP,最后根据求得的拉格朗日参数lambda和QP进行编码。与现有技术相比,本发明的方法能更好地控制码率,并且其复杂度也更低。
本发明提供的码率控制方法包括GOP级、图片级以及BU级三个级别的码率控制。
一个码率控制单元可以包含连续若干个GOP的连续M个图片,一个GOP可以包含若干个连续图片,一个图片可以包含若干个BU。本发明提供的码率控制方法包括GOP级、图片级以及BU级,是分层次的逐渐精细的码率控制方法。
GOP级码率控制主要包括GOP级比特的分配以及编码完一个GOP之后的更新;图片级码率控制主要包括图片级比特的分配、如何达到图片的 目标比特数以及编码完一个图片之后的更新;BU级码率控制和图片级码率控制类似,包括BU级比特的分配、如何达到BU的目标比特数以及编码完一个BU之后的更新。下面详述这三个级别的码率控制。
1、GOP级码率控制
GOP级码率控制的主要任务是把码率控制单元的目标比特数分配到每一个GOP,在编码完一个GOP之后更新码率控制单元的参数。
图1为本发明的视频编码的码率控制方法中的GOP级码率控制的流程图。如图1所示,在实际处理时,GOP级码率控制包括如下步骤:
1)计算码率控制单元平均每个图片的目标比特数。
码率控制单元是指包含若干个GOP的连续的M个图片,码率控制单元是本发明做码率控制的最大的一个单元。
码率控制单元的图片数是指码率控制单元图片的数目,即上述定义中M的大小。
GOP的图片数是指一个GOP中的图片的数目。
图片的BU数是指一个图片中的BU的数目。
码率控制单元的目标比特数是指一个码率控制单元在编码之前为其计算的需要达到的比特数。
GOP的目标比特数是指一个GOP在编码之前为其计算的需要达到的比特数。
图片的目标比特数是指一个图片在编码之前为其计算的需要达到的比特数。
BU的目标比特数是指一个BU在编码之前为其计算的需要达到的比特数。
GOP的实际比特数是指一个GOP在编码之后其实际使用的比特数。
图片的实际比特数是指一个图片在编码之后其实际使用的比特数。
BU的实际比特数是指一个BU在编码之后其实际使用的比特数。
根据本发明的一种实施方式,在计算码率控制单元平均每个图片的目标比特数之前,向编码器输入一个GOP,该编码器判断该GOP是否为码 率控制单元的第一个GOP。当判断该GOP是第一个GOP时,则初始化码率控制单元剩余的目标比特数和帧数为码率控制单元的目标比特数和帧数;当判断该GOP不是第一个GOP时,则获取上一个GOP更新得到的码率控制单元剩余的目标比特数和帧数。
根据本发明的一种实施方式,码率控制单元中平均每个图片的目标比特数计算公式为
bitspic=bitsseq/picsseq (9)
其中,bitsseq是指码率控制单元的目标比特数,其与设定的待输出的码率Rout和帧率Fout有关。目标比特数bitsseq的计算公式为Rout/Fout×picsseq;picsseq是指码率控制单元的图片数,bitspic是指平均每个图片的目标比特数。
2)根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数。
根据本发明的一个具体实施方式,一个GOP平均每个图片的目标比特数的计算公式为
rBitspic=(BLseq-bitspic×(FLseq-wSize))/wSize (10)
其中,
wSize=min(wSizemax,FLseq) (11)
其中BLseq是指编码完前一个GOP之后码率控制单元剩余的目标比特数。如前所述,如果当前GOP为第一个GOP,BLseq是指码率控制单元的目标比特数。bitspic是指(9)式计算出来的码率控制单元每个图片平均的目标比特数,FLseq是指码率控制单元没有进行编码的图片数。在实际编码过程中,一个GOP的目标比特数和实际比特数不可能完全相等,必须由编码顺序在该GOP之后的图片来补偿,wSize是指实际由编码顺序在当前GOP之后的多少个图片进行补偿,由(11)式决定,其中wSizemax是指最多可由编码顺序在当前GOP之后的多少个图片进行补偿,rBitspic是指一个GOP中平均每个图片的目标比特数。
3)根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数。
根据本发明的一个具体实施方式,该GOP的目标比特数的计算公式为
rBitsGOP=rBitspic×sizeGOP (12)
其中rBitspic是指(10)式计算出来的一个GOP中的平均每个图片的目标比特数,sizeGOP是指一个GOP的图片数,rBitsGOP是指一个GOP的目标比特数。
4)编码每个GOP。
编码一个GOP包括对GOP中的每一个图片做图片级的码率控制、对图片中的每一个BU做BU级的码率控制,以及对每一个图片编码。图片级码率控制以及BU级码率控制会在图片级码率控制以及BU级码率控制部分详细说明。
5)在对该每个GOP编码完成之后,更新码率控制单元的参数。
在本发明的上述实施方式中,码率控制单元的参数包括整个码率控制单元剩余的目标比特数以及整个码率控制单元剩余的图片数,其计算公式分别为
BLseq=BLseq-BitsGOP (13)
FLseq=FLseq-sizeGOP (14)
其中BLseq是指码率控制单元剩余的目标比特数,BitsGOP是指整个GOP编码实际使用的比特数(实际比特数),FLseq是指码率控制单元没进行编码的图片数,sizeGOP是指整个GOP的图片数。
2、图片级码率控制
主要任务是把一个GOP的目标比特数分配给每个图片,并且根据该目标比特数调节每个图片的lambda和QP,使实际比特数和目标比特数尽量相等,以达到较好地控制码率的目的。
图2为本发明的视频编码的码率控制方法中的图片级码率控制的流程图。如图2所示,图片级码率控制包括如下步骤:
1)首先,计算GOP中每个图片的目标比特数和目标bpp。
根据本发明的一种实施方式,在计算GOP中一个图片的目标比特数之前,编码器需要判断该图片是否为GOP的第一个图片。当判断该图片 是GOP的第一个图片时,则初始化该GOP剩余的目标比特数和帧数为GOP的目标比特数和帧数;当判断该GOP不是第一个GOP时,则获取GOP中上一个图片更新得到的GOP剩余的目标比特数和帧数。
本发明提供两种方式来计算每一个图片的目标比特数。
第一种方式是均匀分配。均匀分配的计算公式如下所示:
Tbitspic=BLGOP/FLGOP (15)
其中BLGOP是指一个GOP剩余的目标比特数,FLGOP是指一个GOP剩余的图片数,Tbitspic是指GOP中一个图片的目标比特数。
第二种方式是按分层结构计算每个图片的目标比特数。在一个GOP中,为了尽量提高PSNR(Peak Signal-to-Noise Ratio,峰值信噪比),不同的图片被设置在不同的层,在把一个GOP的比特分配给每一个图片时,该方式对处在不同层的图片分配不同比例的比特数而不是简单的让每一个图片分到的比特数尽量相等。由于用不同QP对不同序列进行编码时性质可能千差万别,处于不同层的图片的目标比特数占整个GOP目标比特数的比例由码率控制单元的目标bpp(与设定的待输出的码率Rout和帧率Four有关,码率控制单元的目标bpp计算公式为Rout/Fout)来确定。
Tbitspic=ratio×BLGOP (16)
其中,ratio是指分配给一个图片的目标比特数占整个GOP剩余目标比特数的比例,BLGOP是指一个GOP剩余的目标比特数,Tbitspic是指GOP中一个图片的目标比特数。
在得到一个图片的目标比特数之后,就可以求出该图片的目标bpp。
Tbpppic=Tbitspic/pixelspic (17)
其中Tbitspic是指(15)式或(16)式求得的一个图片的目标比特数,pixelspic是指一个图片的像素数,Tbpppic是指一个图片的目标bpp。
2)按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda。
对于I图片,若其是码率控制单元的第一个图片且初始QP给定,本发明的拉格朗日参数lambda根据初始QP使用下述公式(18)计算;
lambda=0.57*(1-0.05*BFnumGOP)*2(QP-12)/3 (18)
其中QP是指给定的初始QP,BFnumGOP是指一个GOP中B图片的数目。
若其不是码率控制单元的第一个图片或初始QP没有给定,本发明采用公式(19)来计算参数lambda:
lambda=8.9816×pow(ITbpppic,-2.114) (19)
其中ITbpppic是指(17)式求得的Tbpppic的6倍。
对于B图片,本发明采用如下模型来确定lambda:
lambda=α×pow(Tbpppic,b) (20)
其中Tbpppic是指(17)式计算得到的一个图片的目标bpp,α、b是两个需要更新的参数。
为了不影响主观质量,拉格朗日参数lambda有两个限制,首先,lambda必须限制在最近的处于同一层的图片的一定范围里,其次,lambda必须限制在相邻图片的一定范围内。在保证主观质量的情况下具体范围可以根据实际的需要进行调节。
3)根据每个图片的拉格朗日参数lambda计算每个图片的QP。
对于I图片,若其是码率控制单元的第一个图片且初始QP给定,本发明使用该初始QP作为第一个图片的QP;否则,在没有设置初始QP时,本发明使用公式(21)计算I图片的QP。对于B图片,其QP计算公式也如(21)式所示。
QP=4.2005×log(lambda)+13.7122 (21)
其中,lambda是指根据(19)式或(20)式计算得到的I图片或者B图片的lambda。
为了不影响主观质量,上述QP和lambda一样,需要限制在处于同一个层的图片的QP以及相邻图片的QP的一定范围内,除此之外,上述QP还必须限制在0到51之间。
4)对一个图片进行编码。
编码一个图片包括对图片中的每一个BU做BU级的码率控制,以及对图片中的每一个BU编码。BU级的码率控制会在BU级码率控制部分详细说明。
5)在编码完一个图片之后更新参数。
主要需要更新的量就是整个GOP剩余的目标比特数、剩余的图片数以及公式(20)中的参数a、b。
GOP中剩余的目标比特数更新方式如下:
BLGOP=BLGOP-Rbitspic (22)
其中BLGOP是指整个GOP剩余的目标比特数,Rbitspic是指一个图片编码完之后的实际比特数。
GOP中剩余的图片数更新方式如下:
FLGOP=FLGOP-1 (23)
其中FLGOP是指GOP中剩余的图片数。
参数a、b的更新方式如下:
a=a+0.1×(log(lambdareal)-log(lambdaestimate))×a (24)
b=b+0.05×(log(lambdareal)-log(lambdaestmaimate))×log(Rbpppic) (25)
其中lambdareal是该图片所有BU实际编码使用的lambda的几何平均,lambdaestimate是指编码一个图片实际的bpp代入公式(20)计算出的lambda,Rbpppic是编码一个图片实际的bpp。
3、BU级码率控制
BU是由一系列连续的编码基本单元组成的,BU最大可以是完整的一个图片,这样就相当于是图片级的码率控制,BU最小可以是一个编码基本单元。BU级码率控制的主要任务是把一个图片的所有的比特分配给该图片的每一个BU,并且根据目标比特数来调节每个BU的lambda和QP,使编码实际使用的比特数和目标比特数尽量相等,以达到较好地控制码率的目的。
图3为本发明的视频编码的码率控制方法中的BU级码率控制的流程图。如图3所示,BU级码率控制包括如下步骤:
1)计算图片中每个BU的目标比特数和目标bpp。
根据本发明的一种实施方式,在计算图片中一个BU的目标比特数之前,编码器需要判断该BU是否为图片的第一个BU。当判断该BU是图片的第一个BU时,则初始化该图片剩余的目标比特数和BU数为图片的 目标比特数和BU数;当判断该BU不是第一个BU时,则获取图片中上一个BU更新得到的图片剩余的目标比特数和BU数。
在把一个图片的比特分配给每一个BU时,采用如下方式计算BU的目标比特数。
其中BLpic是指整个图片剩余的目标比特数,MADi,pred是指第i个BU的MAD的预测值,i为自然数,由前一个图片相同位置BU的每一个编码基本单元做完能做的最大的块的运动估计得到的最佳预测块和原始块之间的MAD的和来估计,N是指一个图片中BU的数目。TbitsBU是指每个BU的目标比特数。
得到一个BU的目标比特数之后计算该BU的目标bpp。
TbppBU=TbitsBU/pixelsBU (27)
其中TbitsBU是(26)式计算到的BU的目标比特数,pixelsBU是指一个BU中的像素数目,TbppBU是指一个BU的目标bpp。
2)按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda。
对于I图片,每个BU的拉格朗日参数lambda直接使用在图片级计算出的图片的拉格朗日参数lambda,并不单独对每一个BU进行调节。
对于B图片,每一个图片可能包含多个BU,每一个BU都使用如下公式来计算拉格朗日参数lambda。
lambda=c×pow(TbppBU,d) (28)
其中TbppBU是指(27)式计算得到的一个BU的目标bpp,c、d是两个需要更新的参数。
本发明提供两种模型,通过两种模型中的任一种来得到不同BU的参数c和d:
第一种是为处于同一个层的图片仅建立一个模型,如图4所示。方框中的数字是指每个BU的编号,所有的BU共用一个模型,也就是说第一个BU编码完之后更新参数c和d用于第二个BU的拉格朗日参数lambda的计算,第二个BU编码完之后更新参数c和d用于第三个BU的拉格朗 日参数lambda的计算,以此类推,第n个BU编码完之后更新参数c和d并将其用于第n+1个BU。
第二种是为处于同一层的图片的每一个BU各建立一个模型,如图5所示。图中的两个大方框指的是处于同一层的两个图片,小方框中的数字是指每个BU的编号,不同的BU使用不同的模型,也就是说第一个BU编码完之后更新参数c和d用于处于同一层图片的第一个BU,第二个BU编码完之后更新参数c和d用于处于同一层图片的第二个BU,以此类推,第n个BU编码完之后更新参数c和d并将其用于处于同一层图片的第n个BU。
为了不影响主观质量,当前BU的拉格朗日参数lambda有两个限制,首先拉格朗日参数lambda必须限制在图片级的拉格朗日参数lambda一定范围内,其次拉格朗日参数lambda必须限制在相邻BU的拉格朗日参数lambda的一定范围内。
3)根据每个BU的拉格朗日参数lambda计算每个BU的QP。
对于I图片,每个BU的QP直接使用在图片级计算出的图片的QP,并不单独对每一个BU进行调节。
对于B图片,本专利使用如下公式来计算每个BU的QP。
QP=4.2005*log(lambda)+13.7122 (29)
其中拉格朗日参数lambda是指根据(28)式计算得到BU的拉格朗日参数lambda。
为了不影响主观质量,QP和拉格朗日参数lambda一样需要限制到一定范围,除了限制在当前图片和相邻BU的QP的一定范围之内,QP还必须限制在0到51之间。
4)根据BU的目标比特数计算BU中每个编码基本单元的目标比特数。
根据BU的目标比特数计算每一个编码基本单元的目标比特数的公式如下所示:
TbitsLCU=TbitsBU×pixelsLCU/pixelsBU (30)
其中TbitsBU是指BU的目标比特数,pixelsLCU是指一个编码基本单元的像素数目,pixelsBU是指一个BU的像素数目,TbitsLCU是指编码基本单元的目标比特数。
5)对BU的每个编码基本单元微调拉格朗日参数lambda。
对于最右边的或最下边的大小小于最大的编码基本单元的编码基本单元,在这一步骤不做任何操作。
否则,在编码完一个分层编码结构的最大编码单元之后,如果编码该块所使用的比特数和编码基本单元的目标比特数差异很大,本发明适当的调整拉格朗日参数lambda值,然后利用调整后的拉格朗日参数lambda值重新计算分层编码结构的最大编码单元的RD cost(率失真代价),最后使用调整过的拉格朗日参数lambda完成模式选择过程。根据本发明的一个实施方式,拉格朗日参数lambda的调整方式如下:
如果0.45×Rbits64<0.2×TbitsLCU (31)
其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数。
则把该编码基本单元的拉格朗日参数lambda调节为
lambdaLCU=lambdaBU×pow(2.0,-1/3) (32)
其中lambdaBU是指(28)式计算出来的BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda。
反之,如果
0.75×Rbits64>5×TbitsLCU (33)
其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数。
则把该编码基本单元的拉格朗日参数lambda调节为
lambdaLCU=lambdaBU×pow(2.0,1/3) (34)
其中lambdaBU是指使用(28)式计算出来的BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda。
6)在修正拉格朗日参数lambda之后完成一个编码基本单元的剩下编码过程。
该过程与一般的一个编码基本单元的编码过程没有任何区别。如果该编码基本单元是该BU的最后一个编码基本单元,转到第7)步,如果该编码基本单元不是该BU的最后一个编码基本单元,转到第4)步。
7)编码完一个BU之后更新参数。
需要更新的参数包括每一个图片剩余的目标比特数,每个图片的剩余像素数目,以及每个BU的模型参数c和d。
整个图片剩余的目标比特数更新方式如下:
BLpic=BLpic-bitsBU (35)
其中BLpic表示的是整个图片剩余的目标比特数,bitsBU是编码之后该BU实际所用的比特数。
剩余的像素数目更新方式如下:
PLpic=PLpic-PixelBU (36)
其中PLpic是指一个图片中剩余的像素数,PixelBU是指每个BU的像素数。
参数c、d的更新公式如下所示:
c=c+0.1×(log(lambdareal)-log(lambdaestimate))*c (37)
d=d+0.05×(log(lambdareal)-log(lambdaestimate))×log(RbppBU) (38)
其中lambdareal是指一个BU中的所有编码基本单元实际使用的拉格朗日参数lambda的几何平均,lambdaestimate是指编码一个BU实际的bpp代入公式(28)计算出的拉格朗日参数lambda,RbppBU是编码一个BU实际的bpp。
以上说明了各级目标比特分配方法,以下对上述目标比特分配方法进行总的概括与合并,本发明的用于视频编码的码率控制方法具体来说包括如下步骤:
A、向编码器输入码率控制单元和该码率控制单元的目标码率,开始视频编码,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
B、根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数;
C、将上述计算的码率控制单元的目标比特数分配到每个GOP;
D、将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数;
E、把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数;
F、编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码完一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数。
下面通过一个具体实施例来说明本发明的用于视频编码的码率控制方法。在该实施例中,视频编码为HEVC(高性能视频编码,High Efficiency Video Coding)。但是,本领域技术人员应当理解的是,本发明的码率控制方法同样也适就用于其它标准的视频编码方法中。
图6为本发明的该实施例的用于HEVC的码率控制方法流程图。如图6所示,其具体步骤如下:
1)向编码器输入码率控制单元的该码率控制单元的目标码率,开始视频编码。
2)根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化一个GOP中每一个图片的目标比特数占一个GOP剩余目标比特数的比例,初始化一个GOP中不同的图片所在的层,初始化图片级码率控制公式(20)中的a和b为3.2003和-1.367,初始化BU级码率控制公式(28)中的c和d为3.2003和-1.367,初始化(11)式中的wSizemax为40。
如GOP级码率分配方法中的第1)步所述,码率控制单元的目标比特数与设定的待输出的码率Rout和帧率Fout有关。目标比特数bitsseq的计算公式为Rout/Fout×picsseq;picsseq是指码率控制单元的图片数。
3)对码率控制单元的一个GOP进行GOP级的比特分配,具体流程如具体实施方式中GOP级码率控制的比特分配所示。
4)对上述GOP中的一个图片进行图片级的比特分配及lambda和QP的计算,具体流程如具体实施方式中图片级码率控制的比特分配及lambda和QP的计算所示。
5)对上述图片中的一个BU进行BU级的比特分配及lambda和QP的计算,具体流程如具体实施方式中BU级码率控制的比特分配以及lambda和QP的计算所示。
6)根据步骤5)中决定的lambda和QP对每一个BU进行编码,具体流程如具体实施方式中BU级码率控制对每一个LCU(Larget Coding Unit,HEVC的编码基本单元)的lambda进行微调以及编码每一个LCU。
7)编码完一个BU,更新该BU所在图片的剩余目标比特数,该BU所在图片剩余的BU数以及BU级的模型参数c和d,具体流程如具体实施方式中BU级码率控制的参数更新所示。如果该BU不是图片的最后一个BU,转到第5)步对下一个BU做码率控制。如果该BU是图片的最后一个BU,转到第8)步。
8)编码完一个图片中的所有BU,更新该图片所在GOP的剩余目标比特数,该图片所在GOP的剩余图片数以及图片级的模型参数a和b,具体流程如具体实施方式中图片级码率控制的参数更新所示。如果该图片不是所在GOP的最后一个图片,转到第4)步对当前GOP的下一个图片做码率控制。如果该图片是所在GOP的最后一个图片,转到第9)步。
9)编码完一个GOP中的所有图片,更新该GOP所在码率控制单元的剩余目标比特数以及剩余GOP数,具体流程如具体实施方式中GOP级码率控制的参数更新所示。如果该GOP不是码率控制单元的最后一个GOP,转到第3)步对码率控制单元的下一个GOP做码率控制。如果该GOP是码率控制单元的最后一个GOP,转到第10)步。
10)在编码完码率控制单元的所有GOP之后,视频编码结束。
下面通过对此实验来说明本发明的优点和有益技术效果。
在实验中,我们编码给定码率的HEVC码流,编码结构采用低延时的IBBB…,测试平台为HM6.1,测试序列为HEVC标准测试序列中Class D的BQSquare,给定码率为764kbps,给定初始QP为27。
我们以上述实施例为例,将现有技术和本发明进行对比试验。其中,实验使用的图片级比特分配方式是均匀分配的方式,实验使用的BU级计 算lambda的模型是第二种,也就是为处于同一层图片的每一个BU各建立一个模型。
图7为BQSquare序列分别使用针对HEVC的现有技术和本发明的实施例的每帧码率波动图,其中截取了第100帧到200帧的每帧的码率波动实验结果。其中,以三角形为数据标记的折线表示本发明实施例的每帧的码率波动,以正方形为数据标记的折线表示现有技术的每帧的码率波动。
从图7中可以明显看出,本发明实施例的每帧的码率波动明显小于现有技术的每帧的码率波动。由此可见,本发明提供的码率控制算法可以有效提升码率控制的精度。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种码率控制方法,其通过编码器对视频进行编码并控制视频编码码率,其特征在于,该方法包括如下步骤:
A、向编码器输入码率控制单元和该码率控制单元的目标码率,开始视频编码,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
B、根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数;
C、将上述计算的码率控制单元的目标比特数分配到每个GOP;
D、将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数;
E、把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数;
F、编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数。
2.如权利要求1所述的码率控制方法,其特征在于,
在步骤B中,计算码率控制单元的目标比特数的计算公式为bitsseq=Rout/Fout×picsseq,其中,bitsseq是指码率控制单元的目标比特数,picsseq是指码率控制单元的图片数,Rout是指待输出的码率,Fout是指待输出的帧率。
3.如权利要求1所述的码率控制方法,其特征在于,步骤C包括如下步骤:
C1、计算所述码率控制单元的平均每个图片的目标比特数;
C2、根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数;
C3、根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数。
4.如权利要求3所述的码率控制方法,其特征在于,
步骤C1的计算公式为bitspic=bitsseq/picsseq,bitspic是指码率控制单元的平均每个图片的目标比特数;
步骤C2的计算公式为
rBitspic=(BLseq-bitspic×(FLseq-wSize))/wSize,其中,rBitspic是指一个GOP中平均每个图片的目标比特数,BLseq是指编码完前一个GOP之后码率控制单元剩余的目标比特数,如果当前GOP为第一个GOP,BLseq是指码率控制单元的目标比特数,FLseq是指码率控制单元没有进行编码的图片数,wSize是指实际由编码顺序在当前图片之后的多少个图片进行补偿,且wSize=min(wSizemax,FLseq),wSizemax是指最多可由编码顺序在当前图片之后的多少个图片进行补偿;
步骤C3的计算公式为rBitsGOP=rBitspic×sizeGOP,其中rBitsGOP是指一个GOP的目标比特数,sizeGOP是指一个GOP的图片数。
5.如权利要求1所述的码率控制方法,其特征在于,步骤D包括如下步骤:
D1、计算GOP中每个图片的目标比特数和目标bpp;
D2、按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda;
D3、根据每个图片的拉格朗日参数lambda计算每个图片的QP。
6.如权利要求5所述的码率控制方法,其特征在于,
步骤D1中每个图片的目标比特数Tbitspic的计算公式为:
Tbitspic=BLGOP/FLGOP,其中,BLGOP是指一个GOP中剩余的目标比特数,FLGOP是指一个GOP中剩余的图片数;或者,
Tbitspic=ratio×BLGOP,其中,ratio是指分配给一个图片的目标比特数占整个GOP剩余目标比特数的比例,BLGOP是指一个GOP剩余的目标比特数;
步骤D1中每个图片的目标bpp的计算公式为
Tbpppic=Tbitspic/pixelspic,其中Tbpppic是指一个图片的目标bpp,pixelspic是指一个图片的像素数;
步骤D2中每个图片的拉格朗日参数lambda的计算方式为:
对于I图片:
若其是码率控制单元的第一个图片且初始QP给定,则根据初始QP使用下述公式计算:
lambda=0.57*(1-0.05*BFnumGOP)*2(QP-12)/3,其中QP是指给定的初始QP,BFnumGOP是指一个GOP中B图片的数目;
若该图片不是码率控制单元的第一个图片或没有指定初始QP,则采用下述公式计算:
lambda=8.9816×pow(ITbpppic,-2.114),其中ITbpppic是Tbpppic的6倍;
对于B图片:
lambda=a×pow(Tbpppic,b),其中Tbpppic是指一个图片的目标bpp,a、b是两个需要更新的参数;
步骤D3中每个图片的QP的计算方式为:
对于I图片:
若该图片是码率控制单元的第一个图片且初始QP给定,则直接使用该初始QP作为第一个图片的QP;
若该图片不是码率控制单元的第一个图片或没有给定初始QP,则采用下式计算:
QP=4.2005×log(lambda)+13.7122;
对于B图片:
也采用公式QP=4.2005×log(lambda)+13.7122计算。
7.如权利要求1所述的码率控制方法,其特征在于,步骤E包括如下步骤:
步骤E1、计算图片中每个BU的目标比特数和目标bpp;
步骤E2、按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda;
步骤E3、根据每个BU的拉格朗日参数lambda计算每个BU的QP;
步骤E4、根据BU的目标比特数计算BU中每个编码基本单元的目标比特数;
步骤E5、对BU的每个编码基本单元微调拉格朗日参数lambda。
8.如权利要求7所述的码率控制方法,其特征在于,
在步骤E1中,每个BU的目标比特数TbitsBU的计算公式为:
在步骤E1中,每个BU的目标bpp的计算公式为
TbppBU=TbitsBU/pixelsBU,其中TbitsBU是一个BU的目标比特数,pixelsBU是一个BU的像素数目,TbppBU是一个BU的目标bpp;
在步骤E2中,每个BU的拉格朗日参数lambda的计算方式为:
对于I图片:
每个BU的拉格朗日参数lambda直接使用图片的拉格朗日参数lambda;
对于B图片:
采用如下公式来计算:
lambda=c×pow(TbppBU,d),其中TbppBU是一个BU的目标bpp,c、d是两个需要更新的参数;
在步骤E3中,每个BU的QP的计算方式为:
对于I图片:
每个BU的QP直接使用该BU所在图片的QP;
对于B图片:
使用如下公式来计算:
QP=4.2005*log(lambda)+13.7122;
在步骤E4中,每个编码基本单元的目标比特数TbitsLCU的计算公式为:
TbiLCU=TbitsBU×pixeLCU/pixelsBU,其中TbitsBU是BU的目标比特数,pixelsLCU是指一个编码基本单元的像素数目,pixelsBU是一个BU的像素数目;
在步骤E5中,对BU的每个编码基本单元微调拉格朗日参数lambda的计算方式为:
如果0.45×Rbits64<0.2×TbitsLCU,其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,-1/3),其中lambdaBU是指BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda;
如果0.75×Rbits64>5×TbitsLCU,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,1/3)。
9.如权利要求8所述的码率控制方法,其特征在于,在步骤E2中,通过以下两种模型中的任一种来得到不同BU的c和d:
第一种是为处于同一层的图片仅建立一个模型,所有的BU共用一个模型,第一个BU编码完之后更新参数c和d,并将其用于第二个BU的拉格朗日参数lambda的计算,第二个BU编码完之后更新参数c和d,并将其用于第三个BU的拉格朗日参数lambda的计算,以此类推,第n个BU编码完之后更新参数c和d并将其用于第n+1个BU;
第二种是为处于同一层的图片的每一个BU各建立一个模型,不同的BU使用不同的模型,第一个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第一个BU,第二个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第二个BU,以此类推,第n个BU编码完之后更新参数c和d并将其用于处于同一层的图片的第n个BU。
10.如权利要求1、4、6、8中任一项所述的码率控制方法,其特征在于,
在步骤F中,编码完每个GOP后更新码率控制单元的参数的方式为:
BLseq=BLseq-BitsGOP,FLseq=FLseq-sizeGOP,其中BLseq是指码率控制单元剩余的目标比特数,BitsGOP是指整个GOP编码实际使用的比特数,FLseq是指码率控制单元没进行编码的图片数,sizeGOP是指整个GOP的图片数;
在步骤F中,编码完每个图片后更新该图片的参数和该图片所在GOP的参数的方式为:
GOP中剩余的目标比特数BLGOP的更新方式如下:
BLGOP=BLGOP-Rbitspic,其中Rbitspic是一个图片编码完之后的实际比特数;
GOP中剩余的图片数FLGOP的更新方式如下:
FLGOP=FLGOP-1;
参数a、b的更新方式如下:
a=a+0.1×(log(lambdareal)-log(lambdaestimate))×a,
b=b+0.05×(log(lambdareal)-log(lambdaestimate))×log(Rbpppic),其中lambdareal是该图片所有BU实际编码使用的lambda的几何平均,lambdaestimate是编码一个图片实际的bpp代入公式lambda=a×pow(Tbpppic,b)计算出的拉格朗日参数lambda,Rbpppic是编码一个图片实际的bpp;
在步骤F中,编码完每个BU后更新该BU的参数和该BU所在图片的参数的方式为:
整个图片剩余的目标比特数BLpic的更新方式如下:
BLpic=BLpic-bitsBU,其中bitsBU是编码之后该BU实际所用的比特数;
每个图片的剩余像素的数目PLpic更新方式如下:
PLpic=PLpic-PixelBU,其中PixelBU是指每个BU的像素数。
参数c、d的更新方式如下:
c=c+0.1×(log(lambdareal)-log(lambdaestmate))*c
d=d+0.05×(log(lambdareal)-log(lambdaestimate))×log(RbppBU)
其中lambdareal是指一个BU中的所有编码基本单元实际使用的拉格朗日参数lambda的几何平均,lambdaestimaate是指编码一个BU实际的bpp代入公式lambda=c×pow(TbppBU,d)中计算出的拉格朗日参数lambda,RbppBU是编码一个BU实际的bpp。
11.一种码率控制方法,其通过编码器对视频进行编码并控制视频编码码率,其特征在于,该方法包括如下步骤:
A、向编码器输入码率控制单元和该码率控制单元的目标码率,开始视频编码,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
B、根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数,其中,计算码率控制单元的目标比特数的计算公式为bitsseq=Rout/Fout×picsseq,bitsseq是指码率控制单元的目标比特数,picsseq是指码率控制单元的图片数,Rout是指待输出的码率,Fout是指待输出的帧率;
C、将上述计算的码率控制单元的目标比特数分配到每个GOP,其包括如下步骤:
C1、计算所述码率控制单元的平均每个图片的目标比特数,其计算公式为bitspic=bitsseq/picsseq,bitspic是指码率控制单元的平均每个图片的目标比特数;
C2、根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数,其计算公式为rBitspic=(BLseq-bitspic×(FLseq-wSize))/wSize,其中,rBitspic是指一个GOP中平均每个图片的目标比特数,BLseq是指编码完前一个GOP之后码率控制单元剩余的目标比特数,如果当前GOP为第一个GOP,BLseq是指码率控制单元的目标比特数,FLseq是指码率控制单元没有进行编码的图片数,wSize是指实际由编码顺序在当前图片之后的多少个图片进行补偿,且wSize=min(wSizemax,FLseq),wSizemax是指最多可由编码顺序在当前图片之后的多少个图片进行补偿;
C3、根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数,其计算公式为rBitsGOP=rBitspic×sizeGOP,其中rBitsGOP是指一个GOP的目标比特数,sizeGOP是指一个GOP的图片数;
D、将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数,其包括如下步骤:
D1、计算GOP中每个图片的目标比特数和目标bpp,其中每个图片的目标比特数Tbitspic的计算公式为Tbitspic=BLGOP/FLGOP,BLGOP是指一个GOP中剩余的目标比特数,FLGOP是指一个GOP中剩余的图片数,或者
每个图片的目标比特数Tbitspic的计算公式为Tbitspic=ratio×BLGOP,ratio是指分配给一个图片的目标比特数占整个GOP剩余目标比特数的比例,BLGOP是指一个GOP剩余的目标比特数,以及
每个图片的目标bpp的计算公式为Tbpppic=Tbitspic/pixelspic,其中Tbpppic是指一个图片的目标bpp,pixelspic是指一个图片的像素数;
D2、按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda,其中
对于I图片:
若其是码率控制单元的第一个图片且初始QP给定,则根据初始QP使用下述公式计算:
lambda=0.57*(1-0.05*BFnumGOP)*2(QP-12)/3,其中QP是指给定的初始QP,BFnumGOP是指一个GOP中B图片的数目;
若该图片不是码率控制单元的第一个图片或没有指定初始QP,则采用下述公式计算:
lambda=8.9816×pow(ITbpppic,-2.114),其中ITbpppic是Tbpppic的6倍;
对于B图片:
lambda=a×pow(Tbpppic,b),其中Tbpppic是指一个图片的目标bpp,a、b是两个需要更新的参数;
D3、根据每个图片的拉格朗日参数lambda计算每个图片的QP,其中
对于I图片:
若该图片是码率控制单元的第一个图片且初始QP给定,则直接使用该初始QP作为第一个图片的QP;
若该图片不是码率控制单元的第一个图片或没有给定初始QP,则采用下式计算:
QP=4.2005×log(lambda)+13.7122;
对于B图片:
也采用公式QP=4.2005×log(lambda)+13.7122计算;
E、把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数,其包括如下步骤:
步骤E1、计算图片中每个BU的目标比特数和目标bpp,其中
每个BU的目标bpp的计算公式为TbppBU=TbitsBU/pixelsBU,其中TbitsBU是一个BU的目标比特数,pixelsBU是一个BU的像素数目,TbppBU是一个BU的目标bpp;
步骤E2、按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda,其中
对于I图片:
每个BU的拉格朗日参数lambda直接使用图片的拉格朗日参数lambda;
对于B图片:
采用如下公式来计算:lambda=c×pow(TbppBU,d),其中TbppBU是一个BU的目标bpp,c、d是两个需要更新的参数,其中通过以下两种模型中的任一种来得到不同BU的c和d:
第一种是为处于同一层的图片仅建立一个模型,所有的BU共用一个模型,第一个BU编码完之后更新参数c和d,并将其用于第二个BU的拉格朗日参数lambda的计算,第二个BU编码完之后更新参数c和d,并将其用于第三个BU的拉格朗日参数lambda的计算,以此类推,第n个BU编码完之后更新参数c和d并将其用于第n+1个BU;
第二种是为处于同一层的图片的每一个BU各建立一个模型,不同的BU使用不同的模型,第一个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第一个BU,第二个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第二个BU,以此类推,第n个BU编码完之后更新参数c和d并将其用于处于同一层图片的第n个BU;
步骤E3、根据每个BU的拉格朗日参数lambda计算每个BU的QP,其中
对于I图片:
每个BU的QP直接使用该BU所在图片的QP;
对于B图片:
使用如下公式来计算:QP=4.2005*log(lambda)+13.7122;
步骤E4、根据BU的目标比特数计算BU中每个编码基本单元的目标比特数,该目标比特数TbitsLCU的计算公式为TbitsLCU=TbitsBU×pixelsLCU/pixelsBU,其中TbitsBU是BU的目标比特数,pixelsLCU是指一个编码基本单元的像素数目,pixelsBU是一个BU的像素数目;
步骤E5、对BU的每个编码基本单元微调拉格朗日参数lambda,其计算方式为:
如果0.45×Rbits64<0.2×TbitsLCU,其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,-1/3),其中lambdaBU是指BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda;
如果0.75×Rbits64>5×TbitsLCU,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,1/3);
F、编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数,其中
编码完每个GOP后更新码率控制单元的参数的方式为:
BLseq=BLseq-BitsGOP,FLseq=FLseq-sizeGOP,其中BLseq是指码率控制单元剩余的目标比特数,BitsGOP是指整个GOP编码实际使用的比特数,FLseq是指码率控制单元没进行编码的图片数,sizeGOP是指整个GOP的图片数;
编码完每个图片后更新该图片的参数和该图片所在GOP的参数的方式为:
GOP中剩余的目标比特数BLGOP的更新方式如下:
BLGOP=BLGOP-Rbitspic,其中Rbitspic是一个图片编码完之后实际比特数;
GOP中剩余的图片数FLGOP的更新方式如下:
FLGOP=FLGOP-1;
参数a、b的更新方式如下:
a=a+0.1×(log(lambdareal)-log(lambdaestimate))×a,
b=b+0.05×(log(lambdareal)-log(lambdaestimate))×log(Rbpppic),其中lambdareal是该图片所有BU实际编码使用的lambda的几何平均,lambdaestimate是编码一个图片实际的bpp代入公式lambda=a×pow(Tbpppic,b)计算出的拉格朗日参数lambda,Rbpppic是编码一个图片实际的bpp;
编码完每个BU后更新该BU的参数和该BU所在图片的参数的方式为:
整个图片剩余的目标比特数BLpic的更新方式如下:
BLpic=BLpic-bitsBU,其中bitsBU是编码之后该BU实际所用的比特数;
每个图片的剩余像素的数目PLpic更新方式如下:
PLpic=PLpic-PixelBU,其中PixelBU是指每个BU的像素数。
参数c、d的更新方式如下:
c=c+0.1×(log(lambdareal)-log(lambdaestimate))*c
d=d+0.05×(log(lambdareal)-log(lambdaestimate))×log(RbppBU)
其中lambdareal是指一个BU中的所有编码基本单元实际使用的拉格朗日参数lambda的几何平均,lambdaestimate是指编码一个BU实际的bpp代入公式lambda=c×pow(TbppBU,d)中计算出的拉格朗日参数lambda,RbppBU是编码一个BU实际的bpp。
12.一种码率控制装置,其通过编码器对视频进行编码并控制视频编码码率,其特征在于,该装置包括:
用于向编码器输入码率控制单元和该码率控制单元的目标码率的装置和用于视频编码的装置,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU;
用于根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数的装置;
用于将上述计算的码率控制单元的目标比特数分配到每个GOP的装置;
用于将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数的装置;
用于把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数的装置;
用于编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码完一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数的装置。
13.如权利要求12所述的码率控制装置,其特征在于,
在用于根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数的装置中,计算码率控制单元的目标比特数的计算公式为bitsseq=Rout/Fout×picsseq,其中,bitsseq是指码率控制单元的目标比特数,picsseq是指码率控制单元的图片数,Rout是指待输出的码率,Fout是指待输出的帧率。
14.如权利要求12所述的码率控制装置,其特征在于,用于将所计算的码率控制单元的目标比特数分配到每个GOP的装置包括:
用于计算所述码率控制单元的平均每个图片的目标比特数的装置;
用于根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数的装置;
用于根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数的装置。
15.如权利要求14所述的码率控制装置,其特征在于,
在用于计算所述码率控制单元的平均每个图片的目标比特数的装置中,计算公式为bitspic=bitsseq/picsseq,bitspic是指码率控制单元的平均每个图片的目标比特数;
在用于根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数的装置中的计算公式为rBitspic=(BLseq-bitspic×(FLseq-wSize))/wSize,其中,rBitspic是指一个GOP中平均每个图片的目标比特数,BLseq是指编码完前一个GOP之后码率控制单元剩余的目标比特数,如果当前GOP为第一个GOP,BLseq是指码率控制单元的目标比特数,FLseq是指码率控制单元没有进行编码的图片数,wSize是指实际由编码顺序在当前图片之后的多少个图片进行补偿,且wSize=min(wSizemax,FLseq),wSizemax是指最多可由编码顺序在当前图片之后的多少个图片进行补偿;
在用于根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数的装置中的计算公式为rBitsGOP=rBitspic×sizeGOP,其中rBitsGOP是指一个GOP的目标比特数,sizeGOP是指一个GOP的图片数。
16.如权利要求12所述的码率控制装置,其特征在于,用于将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数的装置包括:
用于计算GOP中每个图片的目标比特数和目标bpp的装置;
用于按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda的装置;
用于根据每个图片的拉格朗日参数lambda计算每个图片的QP的装置。
17.如权利要求16所述的码率控制装置,其特征在于,
在用于计算GOP中每个图片的目标比特数和目标bpp的装置中:
每个图片的目标比特数Tbitspic的计算公式为:
Tbitspic=BLGOP/FLGOP,其中,BLGOP是指一个GOP中剩余的目标比特数,FLGOP是指一个GOP中剩余的图片数;或者,
Tbitspic=ratio×BLGOP,其中,ratio是指分配给一个图片的目标比特数占整个GOP剩余目标比特数的比例,BLGOP是指一个GOP剩余的目标比特数;
每个图片的目标bpp的计算公式为Tbpppic=Tbitspic/pixelspic,其中Tbpppic是指一个图片的目标bpp,pixelspic是指一个图片的像素数;
在用于按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda的装置中,每个图片的拉格朗日参数lambda的计算方式为:
对于I图片:
若其是码率控制单元的第一个图片且初始QP给定,则根据初始QP使用下述公式计算:
lambda=0.57*(1-0.05*BFnumGOP)*2(QP-12)/3,其中QP是指给定的初始QP,BFnumGOP是指一个GOP中B图片的数目;
若该图片不是码率控制单元的第一个图片或没有指定初始QP,则采用下述公式计算:
lambda=8.9816×pow(ITbpppic,-2.114),其中ITbpppic是Tbpppic的6倍;
对于B图片:
lambda=a×pow(Tbpppic,b),其中Tbpppic是指一个图片的目标bpp,a、b是两个需要更新的参数;
在用于根据每个图片的拉格朗日参数lambda计算每个图片的QP的装置中:
对于I图片:
若该图片是码率控制单元的第一个图片且初始QP给定,则直接使用该初始QP作为第一个图片的QP;
若该图片不是码率控制单元的第一个图片或没有给定初始QP,则采用下式计算:
QP=4.2005×log(lambda)+13.7122;
对于B图片:
也采用公式QP=4.2005×log(lambda)+13.7122计算。
18.如权利要求12所述的码率控制装置,其特征在于,用于把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU,并且根据该目标比特数调节每个BU的参数的装置包括:
用于计算图片中每个BU的目标比特数和目标bpp的装置;
用于按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda的装置;
用于根据每个BU的拉格朗日参数lambda计算每个BU的QP的装置;
用于根据BU的目标比特数计算BU中每个编码基本单元的目标比特数的装置;
用于对BU的每个编码基本单元微调拉格朗日参数lambda的装置。
19.如权利要求18所述的码率控制装置,其特征在于,
在用于计算图片中每个BU的目标比特数和目标bpp的装置中,每个BU的目标比特数TbitsBU的计算公式为:
在用于计算图片中每个BU的目标比特数和目标bpp的装置中,每个BU的目标bpp的计算公式为
TbppBU=TbitsBU/pixelsBU,其中TbitsBU是一个BU的目标比特数,pixelsBU是一个BU的像素数目,TbppBU是一个BU的目标bpp;
在用于按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda的装置中,每个BU的拉格朗日参数lambda的计算方式为:
对于I图片:
每个BU的拉格朗日参数lambda直接使用图片的拉格朗日参数lambda;
对于B图片:
采用如下公式来计算:
lambda=c×pow(TbppBU,d),其中TbppBU是一个BU的目标bpp,c、d是两个需要更新的参数;
在用于根据每个BU的拉格朗日参数lambda计算每个BU的QP的装置中,每个BU的QP的计算方式为:
对于I图片:
每个BU的QP直接使用该BU所在图片的QP;
对于B图片:
使用如下公式来计算:
QP=4.2005*log(lambda)+13.7122;
在用于根据BU的目标比特数计算BU中每个编码基本单元的目标比特数的装置中,每个编码基本单元的目标比特数TbitsLCU的计算公式为:
TbitsLCU=TbitsBU×pixelsLCU/pixelsBU,其中TbitsBU是BU的目标比特数,pixelsLCU是指一个编码基本单元的像素数目,pixelsBU是一个BU的像素数目;
在用于对BU的每个编码基本单元微调拉格朗日参数lambda的装置中,对BU的每个编码基本单元微调拉格朗日参数lambda的计算方式为:
如果0.45×Rbits64<0.2×TbitsLCU,其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,-1/3),其中lambdaBU是指BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda;
如果0.75×Rbits64>5×TbitsLCU,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,1/3)。
20.如权利要求19所述的码率控制装置,其特征在于,在用于按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda的装置中,通过以下两种模型中的任一种来得到不同BU的c和d:
第一种是为处于同一层的图片仅建立一个模型,所有的BU共用一个模型,第一个BU编码完之后更新参数c和d,并将其用于第二个BU的拉格朗日参数lambda的计算,第二个BU编码完之后更新参数c和d,并将其用于第三个BU的拉格朗日参数lambda的计算,以此类推,第n个BU编码完之后更新参数c和d并将其用于第n+1个BU;
第二种是为处于同一层的图片的每一个BU各建立一个模型,不同的BU使用不同的模型,第一个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第一个BU,第二个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第二个BU,以此类推,第n个BU编码完之后更新参数c和d并将其用于同一层图片的第n个BU。
21.如权利要求12、15、17、19中任一项所述的码率控制装置,其特征在于,
在用于编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数的装置中,编码完每个GOP后更新码率控制单元的参数的方式为:
BLseq=BLseq-BitsGOP,FLseq=FLseq-sizeGOP,其中BLseq是指码率控制单元剩余的目标比特数,BitsGOP是指整个GOP编码实际使用的比特数,FLseq是指码率控制单元没进行编码的图片数,sizeGOP是指整个GOP的图片数;
编码完每个图片后更新该图片的参数和该图片所在GOP的参数的方式为:
GOP中剩余的目标比特数BLGOP的更新方式如下:
BLGOP=BLGOP-Rbitspic,其中Rbitspic是一个图片编码完之后的实际比特数;
GOP中剩余的图片数FLGOP的更新方式如下:
FLGOP=FLGOP-1;
参数a、b的更新方式如下:
a=a+0.1×(log(lambdareal)-log(lambdaestimate))×a,
b=b+0.05×(log(lambdareal)-log(lambdaestimate))×log(Rbpppic),其中lambdareal是该图片所有BU实际编码使用的lambda的几何平均,lambdaestimate是编码一个图片实际的bpp代入公式lambda=a×pow(Tbpppic,b)计算出的拉格朗日参数lambda,Rbpppic是编码一个图片实际的bpp;
编码完每个BU后更新该BU的参数和该BU所在图片的参数的方式为:
整个图片剩余的目标比特数BLpic的更新方式如下:
BLpic=BLpic-bitsBU,其中bitsBU是编码之后该BU实际所用的比特数;
每个图片的剩余像素的数目PLpic更新方式如下:
PLpic=PLpic-PixelBU,其中PixelBU是指每个BU的像素数。
参数c、d的更新方式如下:
c=c+0.1×(log(lambdareal)-log(lambdaestimate))*c
d=d+0.05×(log(lambdaredl)-log(lambdaestimate))×log(RbppBU)
其中lambdareal是指一个BU中的所有编码基本单元实际使用的拉格朗日参数lambda的几何平均,lambdaestimate是指编码一个BU实际的bpp代入公式lambda=c×pow(TbppBU,d)中计算出的拉格朗日参数lambda,RbppBU是编码一个BU实际的bpp。
22.一种码率控制装置,其通过编码器对视频进行编码并控制视频编码码率,其特征在于,该装置包括:
用于向编码器输入码率控制单元和该码率控制单元的目标码率的装置和用于视频编码的装置,所述码率控制单元是指包含若干个GOP的连续多个图片,每个图片包括若干个BU,其中计算码率控制单元的目标比特数的计算公式为bitssea=Rout/Fout×picsseq,其中,bitsseq是指码率控制单元的目标比特数,picsseq是指码率控制单元的图片数,Rout是指待输出的码率,Fout是指待输出的帧率;
用于将上述计算的码率控制单元的目标比特数分配到每个GOP的装置,其包括:
用于计算所述码率控制单元的平均每个图片的目标比特数的装置,其计算公式为bitspic=bitsseq/picsseq,bitspic是指码率控制单元的平均每个图片的目标比特数;
用于根据码率控制单元的平均每个图片的目标比特数计算一个GOP的平均每个图片的目标比特数的装置,其计算公式为rBitspic=(BLseq-bitspic×(FLseq-wSize))/wSize,其中,rBitspic是指一个GOP中平均每个图片的目标比特数,BLseq是指编码完前一个GOP之后码率控制单元剩余的目标比特数,如果当前GOP为第一个GOP,BLseq是指码率控制单元的目标比特数,FLseq是指码率控制单元没有进行编码的图片数,wSize是指实际由编码顺序在当前图片之后的多少个图片进行补偿,且wSize=min(wSizemax,FLseq),wSizemax是指最多可由编码顺序在当前图片之后的多少个图片进行补偿;
用于根据一个GOP的平均每个图片的目标比特数计算输入的一个GOP的目标比特数的装置,其计算公式为rBitsGOP=rBitspic×sizeGOP,其中rBitsGOP是指一个GOP的目标比特数,sizeGOP是指一个GOP的图片数;
用于将分配到每个GOP的目标比特数分配给该GOP的每个图片,并且根据该目标比特数调节每个图片的参数的装置,其包括:
用于计算GOP中每个图片的目标比特数和目标bpp的装置,其中每个图片的目标比特数Tbitspic的计算公式为Tbitspic=BLGOP/FLGOP,BLGOP是指一个GOP中剩余的目标比特数,FLGOP是指一个GOP中剩余的图片数,或者
每个图片的目标比特数Tbitspic的计算公式为Tbitspic=ratio×BLGOP,ratio是指分配给一个图片的目标比特数占整个GOP剩余目标比特数的比例,BLGOP是指一个GOP剩余的目标比特数,以及
每个图片的目标bpp的计算公式为Tbpppic=Tbitspic/pixelspic,其中Tbpppic是指一个图片的目标bpp,pixelspic是指一个图片的像素数;
用于按照图片类型并根据GOP中每个图片的目标比特数和目标bpp分别计算每个图片的拉格朗日参数lambda的装置,其中
对于I图片:
若其是码率控制单元的第一个图片且初始QP给定,则根据初始QP使用下述公式计算:
lambda=0.57*(1-0.05*BFnumGOP)*2(QP-12)/3,其中QP是指给定的初始QP,BFnumGOP是指一个GOP中B图片的数目;
若该图片不是码率控制单元的第一个图片或没有指定初始QP,则采用下述公式计算:
lambda=8.9816×pow(ITbpppic,-2.114),其中ITbpppic是Tbpppic的6倍;
对于B图片:
lambda=a×pow(Tbpppic,b),其中Tbpppic是指一个图片的目标bpp,a、b是两个需要更新的参数;
用于根据每个图片的拉格朗日参数lambda计算每个图片的QP的装置,其中
对于I图片:
若该图片是码率控制单元的第一个图片且初始QP给定,则直接使用该初始QP作为第一个图片的QP;
若该图片不是码率控制单元的第一个图片或没有给定初始QP,则采用下式计算:
QP=4.2005×log(lambda)+13.7122;
对于B图片:
也采用公式QP=4.2005×log(lambda)+13.7122计算;
用于把分配到每个GOP的每个图片的目标比特数分配给该图片的每个BU以及根据该目标比特数调节每个BU的参数的装置,其包括:
用于计算图片中每个BU的目标比特数和目标bpp的装置,其中
每个BU的目标bpp的计算公式为TbppBU=TbitsBU/pixelsBU,其中TbitsBU是一个BU的目标比特数,pixelsBU是一个BU的像素数目,TbppBU是一个BU的目标bpp;
用于按照图片的类型并根据每个BU的目标比特数和目标bpp计算每个BU的拉格朗日参数lambda的装置,其中
对于I图片:
每个BU的拉格朗日参数lambda直接使用图片的拉格朗日参数lambda;
对于B图片:
采用如下公式来计算:lambda=c×pow(TbppBU,d),其中TbppBU是一个BU的目标bpp,c、d是两个需要更新的参数,其中通过以下两种模型中的任一种来得到不同BU的c和d:
第一种是为处于同一层的图片仅建立一个模型,所有的BU共用一个模型,第一个BU编码完之后更新参数c和d,并将其用于第二个BU的拉格朗日参数lambda的计算,第二个BU编码完之后更新参数c和d,并将其用于第三个BU的拉格朗日参数lambda的计算,以此类推,第n个BU编码完之后更新参数c和d并将其用于第n+1个BU;
第二种是为处于同一层的图片的每一个BU各建立一个模型,不同的BU使用不同的模型,第一个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第一个BU,第二个BU编码完之后更新参数c和d,并将其用于处于同一层图片的第二个BU,以此类推,第n个BU编码完之后更新参数c和d并将其用于处于同一层图片的第n个BU;
用于根据每个BU的拉格朗日参数lambda计算每个BU的QP的装置,其中
对于I图片:
每个BU的QP直接使用该BU所在图片的QP;
对于B图片:
使用如下公式来计算:QP=4.2005*log(lambda)+13.7122;
用于根据BU的目标比特数计算BU中每个编码基本单元的目标比特数的装置,该目标比特数TbitsLCU的计算公式为TbitsLCU=TbitsBU×pixelsLCU/pixelsBU,其中TbitsBU是BU的目标比特数,pixelsLCU是指一个编码基本单元的像素数目,pixelsBU是一个BU的像素数目;
用于对BU的每个编码基本单元微调拉格朗日参数lambda的装置,其计算方式为算方式为:
如果0.45×Rbits64<0.2×TbitsLCU,其中Rbits64是指编码分层编码结构的最大编码单元实际使用的比特数,TbitsLCU是指该编码基本单元的目标比特数,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,-1/3),其中lambdaBU是指BU的拉格朗日参数lambda,lambdaLCU是指修正后的编码基本单元的拉格朗日参数lambda;
如果0.75×Rbits64>5×TbitsLCU,则把该编码基本单元的拉格朗日参数lambda调节为:
lambdaLCU=lambdaBU×pow(2.0,1/3);
用于编码一个图片的每个BU以完成对一个图片的编码,编码一个GOP的每个图片以完成对一个GOP的编码,编码一个码率控制单元的每个GOP以完成对一个码率控制单元的编码,编码完每个BU后更新该BU的参数和该BU所在图片的参数,编码完每个图片后更新该图片的参数和该图片所在GOP的参数,编码完每个GOP后更新码率控制单元的参数的装置,其中
编码完每个GOP后更新码率控制单元的参数的方式为:
BLseq=BLseq-BitsGOP,FLseq=FLseq-sizeGOP,其中BLseq是指码率控制单元剩余的目标比特数,BitsGOP是指整个GOP编码实际使用的比特数,FLseq是指码率控制单元没进行编码的图片数,sizeGOP是指整个GOP的图片数;
编码完每个图片后更新该图片的参数和该图片所在GOP的参数的方式为:
GOP中剩余的目标比特数BLGOP的更新方式如下:
BLGOP=BLGOP-Rbitspic,其中Rbitspic是一个图片编码完之后的实际比特数;
GOP中剩余的图片数FLGOP的更新方式如下:
FLGOP=FLGOP-1;
参数a、b的更新方式如下:
a=a+0.1×(log(lambdareal)-log(lambdaestimate))×a,
b=b+0.05×(log(lambdareal)-log(lambdaestimate))×log(Rbpppic),其中lambdareal是该图片所有BU实际编码使用的lambda的几何平均,lambdaestimate是编码一个图片实际的bpp代入公式lambda=a×pow(Tbpppic,b)计算出的拉格朗日参数lambda,Rbpppic是编码一个图片实际的bpp;
编码完每个BU后更新该BU的参数和该BU所在图片的参数的方式为:
整个图片剩余的目标比特数BLpic的更新方式如下:
BLpic=BLpic-bitsBU,其中bitsBU是编码之后该BU实际所用的比特数;
每个图片的剩余像素的数目PLpic更新方式如下:
PLpic=PLpic-PixelBU,其中PixelBU是指每个BU的像素数。
参数c、d的更新方式如下:
c=c+0.1×(log(lambdareal)-log(lambdaestimate))*c
d=d+0.05×(log(lambdareal)-log(lambdaestimate))×log(RbppBU)
其中lambdareal是指一个BU中的所有编码基本单元实际使用的拉格朗日参数lambda的几何平均,lambdaestimate是指编码一个BU实际的bpp代入公式lambda=c×pow(TbppBU,d)中计算出的拉格朗日参数lambda,RbppBU是编码一个BU实际的bpp。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102131215A CN102868883B (zh) | 2012-06-26 | 2012-06-26 | 一种视频编码的码率控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102131215A CN102868883B (zh) | 2012-06-26 | 2012-06-26 | 一种视频编码的码率控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102868883A true CN102868883A (zh) | 2013-01-09 |
CN102868883B CN102868883B (zh) | 2013-11-13 |
Family
ID=47447452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102131215A Active CN102868883B (zh) | 2012-06-26 | 2012-06-26 | 一种视频编码的码率控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102868883B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103237210A (zh) * | 2013-04-03 | 2013-08-07 | 中国科学技术大学 | 一种视频编码中比特分配的方法及系统 |
CN103561266A (zh) * | 2013-11-06 | 2014-02-05 | 北京牡丹电子集团有限责任公司数字电视技术中心 | 基于对数r-q模型和层次化比特分配的码率控制方法 |
CN103945222A (zh) * | 2014-04-21 | 2014-07-23 | 福州大学 | 一种基于hevc视频编码标准的码率控制模型更新方法 |
CN104767999A (zh) * | 2015-04-22 | 2015-07-08 | 福州大学 | 一种基于失真测量的hevc码率控制模型参数更新算法 |
CN105227955A (zh) * | 2015-09-28 | 2016-01-06 | 成都金本华电子有限公司 | 超高清低延时视频编码系统及超高清低延时码率控制方法 |
CN106961604A (zh) * | 2017-03-07 | 2017-07-18 | 腾讯科技(深圳)有限公司 | 视频编码的码率分配、编码单元码率分配方法及装置 |
CN109996076A (zh) * | 2016-10-12 | 2019-07-09 | 深圳市大疆创新科技有限公司 | 码率控制的方法、计算机系统和装置 |
CN110800298A (zh) * | 2018-08-21 | 2020-02-14 | 深圳市大疆创新科技有限公司 | 码率分配方法、码率控制方法、编码器和记录介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617590A (zh) * | 2003-08-12 | 2005-05-18 | 三星电子株式会社 | 视频数据传输系统 |
CN101188752A (zh) * | 2007-12-18 | 2008-05-28 | 方春 | 一种基于相关性的自适应码率控制方法 |
CN101287112A (zh) * | 2008-06-03 | 2008-10-15 | 方春 | 快速高效应码率控制的优化方法 |
CN102104778A (zh) * | 2009-12-17 | 2011-06-22 | 北京三星通信技术研究有限公司 | 一种图像编码中码率控制的方法和装置 |
-
2012
- 2012-06-26 CN CN2012102131215A patent/CN102868883B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617590A (zh) * | 2003-08-12 | 2005-05-18 | 三星电子株式会社 | 视频数据传输系统 |
CN101188752A (zh) * | 2007-12-18 | 2008-05-28 | 方春 | 一种基于相关性的自适应码率控制方法 |
CN101287112A (zh) * | 2008-06-03 | 2008-10-15 | 方春 | 快速高效应码率控制的优化方法 |
CN102104778A (zh) * | 2009-12-17 | 2011-06-22 | 北京三星通信技术研究有限公司 | 一种图像编码中码率控制的方法和装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103237210B (zh) * | 2013-04-03 | 2015-03-18 | 中国科学技术大学 | 一种视频编码中比特分配的方法及系统 |
CN103237210A (zh) * | 2013-04-03 | 2013-08-07 | 中国科学技术大学 | 一种视频编码中比特分配的方法及系统 |
CN103561266A (zh) * | 2013-11-06 | 2014-02-05 | 北京牡丹电子集团有限责任公司数字电视技术中心 | 基于对数r-q模型和层次化比特分配的码率控制方法 |
CN103561266B (zh) * | 2013-11-06 | 2016-11-02 | 北京牡丹电子集团有限责任公司数字电视技术中心 | 基于对数r-q模型和层次化比特分配的码率控制方法 |
CN103945222A (zh) * | 2014-04-21 | 2014-07-23 | 福州大学 | 一种基于hevc视频编码标准的码率控制模型更新方法 |
CN103945222B (zh) * | 2014-04-21 | 2017-01-25 | 福州大学 | 一种基于hevc视频编码标准的码率控制模型更新方法 |
CN104767999A (zh) * | 2015-04-22 | 2015-07-08 | 福州大学 | 一种基于失真测量的hevc码率控制模型参数更新算法 |
CN104767999B (zh) * | 2015-04-22 | 2017-11-17 | 福州大学 | 一种基于失真测量的hevc码率控制模型参数更新算法 |
CN105227955A (zh) * | 2015-09-28 | 2016-01-06 | 成都金本华电子有限公司 | 超高清低延时视频编码系统及超高清低延时码率控制方法 |
US10917652B2 (en) | 2016-10-12 | 2021-02-09 | SZ DJI Technology Co., Ltd. | Data rate control method, computer system, and device |
CN109996076B (zh) * | 2016-10-12 | 2021-08-06 | 深圳市大疆创新科技有限公司 | 码率控制的方法、计算机系统和装置 |
CN109996076A (zh) * | 2016-10-12 | 2019-07-09 | 深圳市大疆创新科技有限公司 | 码率控制的方法、计算机系统和装置 |
CN106961604A (zh) * | 2017-03-07 | 2017-07-18 | 腾讯科技(深圳)有限公司 | 视频编码的码率分配、编码单元码率分配方法及装置 |
US10764586B2 (en) | 2017-03-07 | 2020-09-01 | Tencent Technology (Shenzhen) Company Limited | Bit rate allocation method, apparatus, and storage medium for code units in video coding |
WO2018161845A1 (zh) * | 2017-03-07 | 2018-09-13 | 腾讯科技(深圳)有限公司 | 视频编码的码率分配、编码单元码率分配方法及计算机设备 |
CN110800298A (zh) * | 2018-08-21 | 2020-02-14 | 深圳市大疆创新科技有限公司 | 码率分配方法、码率控制方法、编码器和记录介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102868883B (zh) | 2013-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102868883B (zh) | 一种视频编码的码率控制方法 | |
Chen et al. | Recent advances in rate control for video coding | |
US8824546B2 (en) | Buffer based rate control in video coding | |
KR101418950B1 (ko) | 비디오 코딩 표준에 대한 개선된 비디오율 제어 | |
JP5474569B2 (ja) | 3dビデオの符号化 | |
Gao et al. | DCT coefficient distribution modeling and quality dependency analysis based frame-level bit allocation for HEVC | |
CN101395923B (zh) | 用于在图像信号编码中为图像中的像素块组确定比特分配的方法及设备 | |
CN102932641B (zh) | 一种恒定质量码率控制方法 | |
KR20140042845A (ko) | 지각적 비디오 코딩을 위한 구조적 유사성 기반의 레이트-왜곡 최적화 방법 및 시스템 | |
CN102761741B (zh) | 基于编解码端缓存的视频编码码率控制系统和方法 | |
CN108200431B (zh) | 一种视频编码码率控制帧层比特分配方法 | |
US9560386B2 (en) | Pyramid vector quantization for video coding | |
WO2009091548A1 (en) | Method and apparatus for rate control accuracy in video encoding | |
Xu et al. | Window-level rate control for smooth picture quality and smooth buffer occupancy | |
CN103237210B (zh) | 一种视频编码中比特分配的方法及系统 | |
Zhang et al. | A two-pass rate control algorithm for H. 264/AVC high definition video coding | |
CN117956160A (zh) | 码率控制方法、码率控制装置以及计算机存储介质 | |
Tsai | Rate control for low-delay video using a dynamic rate table | |
Li et al. | Window-based rate control for video quality optimization with a novel INTER-dependent rate-distortion model | |
Wang et al. | MPEG motion picture coding with long-term constraint on distortion variation | |
Pai et al. | MPEG-4 constant-quality constant-bit-rate control algorithms | |
Li et al. | Low-delay window-based rate control scheme for video quality optimization in video encoder | |
KR20070076166A (ko) | 영상의 변화율에 따른 적응적 비트율 제어 장치 및 방법 | |
Park | PSNR-based initial QP determination for low bit rate video coding | |
Chang et al. | A two-layer characteristic-based rate control framework for low delay video transmission |
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 |