CN101572806A - 一种基于h.264的i帧码率控制方法 - Google Patents
一种基于h.264的i帧码率控制方法 Download PDFInfo
- Publication number
- CN101572806A CN101572806A CNA2009100858187A CN200910085818A CN101572806A CN 101572806 A CN101572806 A CN 101572806A CN A2009100858187 A CNA2009100858187 A CN A2009100858187A CN 200910085818 A CN200910085818 A CN 200910085818A CN 101572806 A CN101572806 A CN 101572806A
- Authority
- CN
- China
- Prior art keywords
- frame
- gop
- coded bits
- current
- rate control
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于H.264的I帧码率控制方法,用于依次对当前图像序列中除第一个图像组(GOP)外的其它GOP中的I帧进行码率控制,包括:预先建立I帧的R-QP模型,用于表示I帧的码率与量化参数QP以及图像梯度之间的对应关系,在为当前帧进行码率控制时,计算为当前帧分配的编码比特数R,并将所述R分别代入所述R-QP模型的三个区域,根据当前帧的梯度和所述R计算在每个区域中的QP,在计算得到的QP中,选择与相应区域的QP取值范围一致的QP,作为当前帧的QP。采用本发明所述的I帧码率控制方法,能够实现对I帧进行更有效的码率控制。
Description
技术领域
本发明涉及视频压缩技术,特别涉及视频压缩技术中一种基于H.264的I帧码率控制方法。
背景技术
码率控制在视频压缩技术中起着至关重要的作用,它的最终目的是在给定的目标比特率及缓存容量的条件下,能够有效地抑制视频序列的质量波动并减少跳帧次数,从而使得传输的视频质量最优化。
H.264是联合视频组(JVT)近年来致力开发研究的最新视频压缩国际标准,采用H.264的视频压缩标准对图像进行码率控制其实是通过选择量化参数(QP)来控制所述图像的编码比特数的,为了更精确地揭示QP和编码比特数之间的关系,引入了图像复杂度的概念。图像复杂度指的就是图像的细节信息,细节信息越多,图像复杂度也就越高,并且,对于相同的图像来说,所选的QP越小,编码比特数越大;对于不同的图像来说,在相同的QP下,图像复杂度越高,编码比特数越大。通常,采用编码比特数-量化参数(R-QP)模型就可以揭示QP、编码比特数以及图像复杂度之间的关系。
目前,H.264采用了JVT-H017码率控制算法,该算法针对P帧采用了经典的二次R-QP模型,但是,对于I帧,该算法并没有采用明确的R-QP模型,而是采用了如下的计算方式:
对图像序列第一个GOP中的I帧来说,将其QP根据第一个GOP中的I帧的可用信道带宽和第一个GOP的长度预先定义为QP0,可用信道带宽越大,QP0越小,反之,则QP0越大;并且,在相同的可用信道带宽条件下,GOP的长度每增加30,QP0减1,具体计算公式如下:
其中,所述bpp为每个像素的编码比特数,u(ni,j)为第i个GOP中第j帧的可用信道带宽,所述u(n1,1)为第一个GOP中I帧的可用信道带宽,所述Fr为帧率,所述Npixel一帧中像素的总个数,所述l1,l2,l3为参数,对于QCIF/CIF格式大小的图像来说,较佳的l1,l2,l3的取值分别为l1=0.15,l2=0.45,l3=0.9,而对大于CIF格式大小的图像来说,较佳的l1,l2,l3的取值分别为l1=0.6,l2=1.4,l3=2.4。
对图像序列其它GOP中的I帧来说,其QP可按照如下公式进行计算:
其中,所述QPI(i)为第i个GOP中的I帧的QP,所述NP为一个GOP中P帧的总个数,所述SumPQP(i-1)为第i-1个GOP中所有P帧的QP之和,所述Tr(ni,0)为在第i个GOP的起始阶段为第i个GOP分配的编码比特数,所述为第i-1个GOP编码完后的剩余的编码比特数,所述NGOP为一个GOP中所有帧的总个数,所述i为整数,且i≥2。
由上述分析可以看出,在对当前图像序列的当前GOP中的I帧进行编码时,并没有考虑I帧的图像复杂度,因而也就无法准确地选取I帧的QP。如果I帧消耗了过多的编码比特数,留给当前GOP中余下未编码P帧或B帧的编码比特数就可能不足,从而导致当前GOP的视频质量严重下降,同时,由于I帧消耗了过多的编码比特数,也可能导致在当前GOP的开始阶段,缓冲区占用量激增,从而不可避免地出现跳帧现象;相反,如果分配给I帧的编码比特数过少,不仅I帧的编码质量会下降,而且,由于I帧还会作为当前GOP中余下未编码P帧或B帧的参考帧,从而使得当前GOP的编码效率下降、视频质量也随之下降。
由于目前的JVT-H017码率控制算法在上述方面的不足,因而导致了计算得到的QP不合理,使得最终码率控制结果不准确以及编码视频质量的下降。
为了提高JVT-H017码率控制算法的性能,现有针对I帧码率控制的改进算法有以下几种:
在一些研究中,提出了一些针对I帧的帧内R-QP模型,这些模型都需要利用编码完当前I帧后的实际信息来选取正确的QP,而实际信息只有在率失真优化(RDO)之后才能得到,故很难将这些模型直接应用到I帧码率控制中;
有的研究采用熵作为I帧的复杂度衡量标准,提出了基于熵的帧内R-QP模型,但是熵并不是最适合I帧的复杂度衡量标准,因而基于熵的帧内R-QP模型并不是最合适的;进而有些研究采用了对I帧的复杂度衡量标准较好的梯度,并提出了基于梯度的帧内R-QP模型,但是,在这些基于梯度的R-QP模型中,均假设图像复杂度与编码比特数之间为线性关系,而这种假设并不准确。
因此,目前的JVT-H017码率控制算法及现有改进算法在性能上都存在缺陷,以至于不能实现对I帧进行有效地码率控制。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于H.264的I帧码率控制方法,能够实现对I帧进行有效地码率控制。
为达到上述目的,本发明的技术方案具体是这样实现的:
预先建立I帧的R-QP模型,用于表示I帧的码率与量化参数QP以及图像梯度之间的对应关系,其中,根据QP的取值范围将所述R-QP模型分为三个区域:
当QP≤15时,R=a1×QP+b1+c1×Grad+d1;
当15<QP<32时,
其中,所述Grad为I帧的梯度值,所述a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,a4,b4,c4,a5,b5,c5,c6,d3,a6,b6,c7,a7,b7,c8,a8,b8,c9,a9,b9,c10均为参数;
在为当前帧进行码率控制时,计算为当前帧分配的编码比特数R,并将所述R分别代入所述R-QP模型的三个区域,根据当前帧的梯度和所述R计算在每个区域中的QP,在计算得到的QP中,选择与相应区域的QP取值范围一致的QP,作为当前帧的QP。
由上述的技术方案可见,本发明所提出的I帧码率控制方法,预先针对I帧建立帧内R-QP模型,在该模型中,一方面采用梯度表示图像复杂度,另一方面将QP的取值分为三个区域,并在这三个区域内采用不同的函数作为R-QP模型,以用来逼近梯度、QP和编码比特数间的真实对应关系。在具体进行码率控制时,对不属于当前图像序列的第一个GOP中的I帧来说,首先计算为其预分配的编码比特数,之后将计算出的编码比特数代入预先提出的帧内R-QP模型中,从而得到其QP,并根据所述QP对所述I帧进行编码。由于采用了梯度表示图像复杂度,因此能够更准确地反映码率与图像复杂度间的关系;而且还利用分段函数尽量逼近梯度、QP和编码比特数间的真实对应关系,从而能够更有效地实现对I帧的码率控制。
附图说明
图1为拥有不同视频内容特征的图像序列的编码比特数与QP之间的关系图。
图1(a)为拥有不同视频内容特征的图像序列的编码比特数与QP(QP≤15)之间的关系图。
图1(b)为拥有不同视频内容特征的图像序列的编码比特数与QP(15<QP<32)之间的关系图。
图1(c)为为拥有不同视频内容特征的图像序列的编码比特数与QP(QP≥32)之间的关系图。
图2为对“Bus”图像序列采用本实施例帧内R-QP模型进行编码与实际编码的编码比特数比较示意图。
图3为对“Football”图像序列采用本实施例帧内R-QP模型进行编码与实际编码的编码比特数比较示意图。
图4为本发明所采用的码率控制方法的流程图。
图5为对“Carphone”图像序列采用本实施例方法与JVT-H017算法仿真后的逐帧PSNR比较示意图。
图6为对“Foreman”图像序列采用本实施例方法与JVT-H017算法仿真后的逐帧PSNR比较示意图。
图7为对“Carphone”图像序列采用本实施例方法与JVT-H017算法仿真后的缓冲区状态比较示意图。
图8为对“Foreman”图像序列采用本实施例方法与JVT-H017算法仿真后的缓冲区状态比较示意图。
具体实施方式
为解决现有技术中存在的问题,本发明提出一种全新的I帧码率控制方法,即采用帧内R-QP模型的I帧码率控制方法,对不属于当前图像序列的第一个GOP中的I帧来说,首先计算为其预分配的编码比特数,之后将计算出的编码比特数代入预先提出的帧内R-QP模型中,从而得到其QP。利用本方法得到的QP对I帧进行编码即可对I帧实现更有效的码率控制。
基于上述介绍,本发明所述方案的具体实现包括:
预先建立I帧的R-QP模型,用于表示I帧的码率与量化参数QP以及图像梯度之间的对应关系,其中,根据QP的取值范围将所述R-QP模型分为三个区域:
当QP≤15时,R=a1×QP+b1+c1×Grad+d1;
当15<QP<32时,
其中,所述Grad为I帧的梯度值,所述a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,a4,b4,c4,a5,b5,c5,c6,d3,a6,b6,c7,a7,b7,c8,a8,b8,c9,a9,b9,c10均为参数;
在为当前帧进行码率控制时,计算为当前帧分配的编码比特数R,并将所述R分别代入所述R-QP模型的三个区域,根据当前帧的梯度和所述R计算在每个区域中的QP,在计算得到的QP中,选择与相应区域的QP取值范围一致的QP,作为当前帧的QP。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
首先详细地论述帧内R-QP模型的建立过程。前面已经指出,采用R-QP模型可以揭示QP、编码比特数以及图像复杂度之间的关系,而基于梯度的方法又是衡量图像复杂度的一种可靠的标准,梯度值越大,图像复杂度越高;梯度值越小,图像复杂度越低。因此,在本实施例中,通过梯度值、QP和编码比特数之间的关系来建立帧内R-QP模型。
为了揭示梯度值、QP和编码比特数之间的关系,对拥有不同视频内容特征的图像序列进行仿真,图1即为对拥有不同视频内容特征的图像序列仿真后的编码比特数与QP之间的关系图。如图1所示,每一条曲线分别表示了不同梯度值图像的编码比特数与QP之间的关系,将每一条曲线均称为R-QP曲线,水平坐标表示的是QP,垂直坐标表示的是每个像素的编码比特数,同时给出了拥有不同视频内容特征的图像序列的梯度值,也即R-QP曲线分别表示了“Bike”,“Bus”,“Football”,“Bridge Close”,“Tennis”,“Foreman”以及“Akiyo”这7个不同梯度值图像序列的编码比特数与QP之间的关系。
从图1中可以看出,在相同的QP下,梯度值越大的图像,需要的编码比特数也就越多,而且,QP≤15区域内的R-QP曲线、15<QP<32区域内的R-QP曲线以及QP≥32区域内的R-QP曲线分别呈现不同的特点,为了保证得到更加准确的R-QP模型,对这三个区域内的R-QP曲线分别采用不同的函数来进行分段拟合,下面分别对这三个区域进行详细分析。
图1(a)为图1中QP≤15区域内的编码比特数与QP之间的关系图,为了更加准确地对曲线进行拟合,在图1(a)中给出了更多拥有不同视频内容特征的图像序列的R-QP曲线,从图1(a)中可以看出,每一条曲线上的编码比特数与QP之间的关系都接近于线性,且每一条曲线的斜率基本上都相同,曲线之间的差异仅仅在于梯度值的不同。综合上述分析,并通过大量仿真,得出以下公式:
R=a1×QP+b1+c1×Grad+d1,且
其中所述a1,b1,c1,d1均为参数,所述Grad为当前图像的梯度,所述M×N为图像的大小,所述Ii,j表示横坐标为i、纵坐标为j位置上的像素值。
从公式中可以看出,QP不仅与编码比特数有关,还与当前图像的Grad有关,同时,根据大量仿真结果,得到了一组较佳的参数,即当a1=-0.2713,b1=5.5182,c1=0.1191,d1=0.6673时,可以对所有QP≤15的曲线得到最佳的拟合结果。
图1(b)为图2中15<QP<32区域内编码比特数与QP之间的关系图,同图1(a)一样,在图1(b)中也给出了更多拥有不同视频内容特征的图像序列的R-QP曲线,从图1(b)中可以看出,依据每一条曲线上编码比特数与QP关系的不同,将曲线划分为4个类别,并分别用正方形曲线、星形曲线、圆形曲线和加号形状曲线表示。
其中,梯度值大于20的图像的R-QP曲线用正方形曲线示出在图1(b)中,这部分曲线上的编码比特数与QP之间的关系和图1(a)中的类似,故用线性函数表示;梯度值小于10的图像的R-QP曲线是用加号形状曲线示出的,这部分可以拟合为二次曲线,并且,正方形曲线与加号形状曲线这两种不同曲线之间的差异由梯度值的线性函数来表示;用星形曲线和圆形曲线分别表示的是梯度值大于15小于等于20和梯度值大于10小于等于15的图像的R-QP之间的关系,这两种曲线之间的差异很小,所以分别用固定的二次函数进行拟合即可,本区域内的R-QP曲线的拟合结果如下式所示:
其中,所述a2,a3,a4,a5,b2,b3,b4,b5,c2,c3,c4,c5,c6,d2,d3均为参数。
同样地,根据大量仿真结果,得到了一组较佳的参数,即当a2=-0.2112,a3=0.0047,a4=0.0039,a5=0.0036,b2=7.4371,b3=-0.3782,b4=0.3111,b5=-0.2451,c2=0.0511,c3=7.8952,c4=6.3933,c5=4.468,c6=0.0867,d2=-0.9852,d3=-0.4242时,每个梯度值范围内的曲线都可以得到最佳的拟合结果。
图1(c)为图2中QP≥32区域内的编码比特数与QP之间的关系图,同样地,为了使得拟合结果更加准确,给出了更多拥有不同视频内容特征的图像序列的R-QP曲线,并且根据曲线上编码比特数与QP之间的关系的不同,图1(c)中的曲线也被划分为4种类别,即正方形曲线、星形曲线、圆形曲线和加号形状曲线,且相同曲线上的R-QP规律几乎相同,随着QP的增大,不同曲线间的编码比特数与QP之间的差异变小,经过大量的仿真得出该QP区域内的拟合公式:
其中,所述a6,a7,a8,a9,b6,b7,b8,b9,c7,c8,c9,c10均为参数。
同前两个拟合公式一样,根据大量的仿真结果,得到了一组较佳的参数,即当a6=0.00356,a7=0.00202,a8=0.00102,a9=0.00063,b6=-0.38325,b7=-0.2042,b8=-0.11024,b9=-0.06388,c7=10.309,c8=5.16,c9=3.025,c 10=1.716时,每个梯度值范围内的曲线都可以得到最佳的拟合结果。
至此,即得到了本实施例所述的帧内R-QP模型。
图2为对“Bus”图像序列采用本实施例帧内R-QP模型进行编码与实际编码的编码比特数比较示意图。图3为对“Football”图像序列采用本实施例帧内R-QP模型进行编码与实际编码的编码比特数比较示意图。其中,在这两个图中,均假设的是每个GOP中只有一帧,该帧为I帧的情况,且每个I帧均采用了QP值为20的固定QP,测试序列为QCIF格式,图中的水平坐标均为帧序号,垂直坐标均为每一个I帧的编码比特数,从图2和图3中都可以看出,总的编码比特数估计值与实际值之间的差异很小,从而验证了本实施例所提出的帧内R-QP模型的准确性。
图4为本发明所采用的码率控制方法的流程图。如图4所示,该方法包括以下步骤:
步骤401:将当前GOP中的第一帧作为当前帧,并判断当前GOP是否是图像序列中的第一个GOP,如果是,则执行步骤415;否则,执行步骤402。
在本实施例中,对I帧进行码率控制并不适用于图像序列第一个GOP中的I帧,因此,需要对当前GOP是否是图像序列中的第一个GOP进行判断。
步骤402:判断当前帧是否是I帧,如果是,执行步骤403;否则,执行步骤411。
由于本实施例所采用的码率控制方法只适用于I帧,因此,需要对当前帧是否是I帧进行判断。
接下来,计算为当前I帧分配的编码比特数。具体计算编码比特数的方式可以采用现有的实现方式,另外,本发明中提供一种编码比特数的计算方式,依据前一GOP的码率控制结果来确定当前I帧的编码比特数,具体计算编码比特数的方式如下:
步骤403:计算当前GOP的前一个GOP中I帧编码比特数与P帧平均编码比特数之比W。
在本实施例中,当前GOP的前一个GOP中I帧编码比特数和P帧平均编码比特数之比W是按照如下公式进行计算的:
其中,所述QPI前为当前GOP的前一个GOP中I帧的QP值,所述RI前为当前GOP的前一个GOP中I帧的编码比特数,所述QPP前(i)为当前GOP的前一个GOP中第i个P帧的QP值,所述RP前(i)为当前GOP的前一个GOP中第i个P帧的编码比特数,所述N为当前GOP的前一个GOP中包含的帧的总个数,所述N-1为当前GOP的前一个GOP中包含的P帧的总个数。
由于一帧的QP与该帧的编码比特数的乘积代表了该帧的复杂度,而复杂度又决定了编码比特数,因此,本实施例的W实质上表征了当前GOP的前一个GOP中I帧的实际编码比特数与P帧的平均实际编码比特数之比。
需要说明的是,由于本实施例码率控制方法采用了前一个GOP码率控制的结果,因此,该方法不适用于图像序列的第一个GOP,并且,本实施例所采用的码率控制方法仅适合于不存在B帧的GOP中。
最基本的,可以利用本步骤中得到的W进行当前I帧的编码比特数计算。或者,还可以继续通过下述步骤对W做进一步调整,以得到更有效的码率控制结果。
步骤404:根据当前GOP的前一个GOP中的QP值对W进行调整。
在步骤403中对W计算时仅仅是根据所述当前GOP的前一个GOP中的I帧编码比特数和P帧编码比特数来进行的,而计算结果则是运用到所述当前GOP中的,由于当前GOP的前一个GOP为I帧所分配的编码比特数可能不合理的,因此,利用该不太合理的W计算得到的当前I帧的编码比特数也就不太合理,影响最终的码率控制结果,因此,优选地,可以通过本步骤对计算得到的W进行调整。
通常在同一GOP的不同帧中,要求QP的变化是缓慢的,因此,如果在同一GOP的不同帧中,若QP之间的取值差距过大,则认为为该GOP中的I帧所分配的编码比特数是不合理的。
基于上述考虑,在本实施例中,根据当前GOP的前一个GOP中不同帧间的QP值变化程度,确定是否需要对W进行调整。选取这种依据的目的是为了保证每个GOP中的QP之间的变化都是缓慢的。
如果当前GOP的前一个GOP中I帧的QP值与后续各个P帧的QP值差距过大,也即该I帧的QP设置不合理,因此需要对步骤403中得到的W进行调整,具体调整过程如下:
当满足QPI前-MinQPP前≥m时,
W′=W+{(QPI前-MinQPP前)/m-1};
当不满足QPI前-MinQPP前≥m,但满足MaxQPP前-QPI前≥m时,
W′=W-{(MaxQPP前-QPI前)/m-1},
其中,所述W′为对所述W调整后的值,所述MinQPP前所述当前GOP的前一个GOP中P帧的最小QP值,所述MaxQPP前所述当前GOP的前一个GOP中P帧的最大QP值,所述m为大于零的整数。
需要说明的是,m的不同取值限定了同一GOP中不同帧间QP值变化的允许范围,一方面,m取值过大,则可能会造成不同帧之间QP值之间的差距很大,但也有可能没对W进行调整;另一方面,如果m取值过小,而不同帧之间的QP虽然存在差距但却不需要调整的情况下,也对W进行了调整。因此,m值的大小是很重要的,它决定了最终码率控制的结果。
通过大量仿真结果,得出当m=4是决定是否对W进行调整的最佳值,此时,能够得到最佳的码率控制结果。
步骤405:对调整后的W进行限定。
在对W进行调整后,为了进一步保证后续分配给当前GOP中的I帧的编码比特数不会过大或者不会过小,需要对调整后的W作进一步地限定,具体限定可按照如下公式进行:
W″=max{p,min{W′,q}},
其中,所述W″为对所述W′限定后的值,所述p、q为大于零的整数。同样地,如果p、q值过大,则会使得分配给当前GOP中的I帧编码比特数过大;如果p、q过小,会使得分配给当前GOP中的I帧编码比特数过小,编码比特数过大或者过小都会影响最终的码率控制结果,因此,根据大量的仿真结果,得到了一组较佳的参数,即当p=1.5,q=8.5时,能够保证给当前GOP中的I帧分配到较佳的比特数,也即能够保证分配给I帧的编码比特数既不会过大也不会过小,从而得到较佳的码率控制结果。
步骤406:根据限定后的W计算为I帧分配的编码比特数R。
根据限定后的W为所述当前GOP中的I帧分配的编码比特数RI是按照如下公式进行的:
其中,所述RGOP为给所述当前GOP分配的编码比特数,所述N为所述当前GOP中包含的帧的总个数,所述N-1为所述当前GOP中P帧的总个数,所述Fr为帧率。
前面已经说明,本实施例所采用的码率控制方法仅适用于不存在B帧、只有I帧和P帧的GOP中。
需要说明的是,在计算为I帧分配的编码比特数R时可直接将W或调整后得到的W′代入公式,
即 或
步骤403~406即为本实施例所采用的计算编码比特数R的方法,在本发明中采用其它方法得到编码比特数R也是可以的,并不影响本发明实施例的实现。
步骤407:根据内存缓冲区状态对R进行限制。
需要说明的是,在为当前GOP中的I帧分配好编码比特数R之后,如果分配的R值过大,则会导致内存缓冲区上溢,因此,为了保证给I帧分配的编码比特数不会导致内存缓冲区上溢,优选地,还可以对R作如下形式的限制:
R′=min{R,(BS×t-CBF)},
其中,所述R′为对所述R限制后给I帧分配的编码比特数,所述BS为当前缓冲区的容量,所述CBF为当前缓冲区占用量,所述t为大于零的整数。通过大量仿真结果证明,t=0.8是能够保证所得到的R′不会导致内存缓冲区上溢的较佳的值。
步骤408:基于假设基准解码器(HRD)对限制后的RI作进一步限制。
对RI进行步骤407操作的限制得到R′后,进一步地,基于HRD的考虑,将R′作进一步地限制如下:
R″=max{LB,min{R′,UB}},
其中,所述R″为对所述R′进一步限制后给I帧分配的编码比特数,所述LB和UB分别为给所述当前GOP中的I帧分配的编码比特数的上限值和下限值,令R′为所述当前GOP的前一个GOP中剩余编码比特数,则有,
LB=R′+目标比特率/Fr,
UB=BS×t+R′,
其中,所述t为大于零的整数,且通过大量仿真结果证明,t=0.8是能够保证得到较佳的R″的较佳值。
步骤409:将进一步限制后得到的R″代入帧内R-QP模型中,得到当前GOP中I帧的QP。
将上述进一步限制后的RI代入本发明所提出的帧内R-QP模型中,即可得到I帧的QP。
将步骤408中进一步限定后的R″分别代入不同QP区域的R-QP模型中,如果得到的QP值位于该公式所规定范围的QP中,则该QP值即为最终所需QP,代入公式的顺序并不影响本发明实施例的实现。一般情况下,由于大多数QP值都位于15<QP<32范围内,因此,为了节省时间,可以先采用该区域所对应的公式进行计算。
在本实施例中,将得到的编码比特数R直接代入帧内R-QP模型中来进行码率控制也是可以的,只是码率控制效果可能不如对R进行限制后好。
步骤410:对得到的QP进行调整。
在本实施例中,为了保证码率控制结果更加准确、进而得到平滑的视觉效果,需要对得到的QP按照如下公式进行调整,得到调整后的QP,
QP=max{1,QPI前-s,min{t,QPI前+s,QP}},
其中,所述s,t为大于零的整数。经过大量仿真实验,得到一组较佳的s,t值,即当s=3,t=51时,可以得到最佳的调整结果。
步骤411:根据现有JVT-H017算法计算当前帧的QP。
由于本实施例只是针对I帧提出的帧内R-QP模型,从而实现对I帧进行码率控制的,如果当前帧不是I帧,则应当按照现有JVT-H017算法对当前帧进行计算。如何对当前帧进行计算以得到其QP为现有技术,这里不再赘述。
步骤412:根据QP对当前帧进行编码。
得到QP后,即可根据所述QP对当前帧进行编码,具体如何编码已为现有技术,这里不再赘述。
步骤413:对编码完后的当前帧的QP以及当前帧的编码比特数进行存储。
本实施例对I帧进行码率控制时,需要用到当前GOP的前一个GOP中所有帧的QP以及它们的编码比特数,因此,在对一帧编码完后,需要对该帧的QP以及编码比特数进行存储,以便后续操作时使用。
步骤414:判断当前GOP编码是否结束,如果是,则结束当前GOP的码率控制过程;否则,返回执行步骤402,直至当前GOP编码结束。
步骤415:按照现有JVT-H017算法计算当前帧的QP。
需要说明的是,本实施例并不适用于一个图像序列中第一个GOP中的I帧,如果当前帧是第一个GOP,则只需按照现有JVT-H017的算法对该GOP进行处理即可。
步骤416~步骤417:其具体操作同步骤412~步骤413,这里不再赘述。
步骤418:判断当前GOP编码是否结束,如果是,则结束当前GOP的码率控制过程;否则,返回执行步骤415,直至当前GOP编码结束。
至此,即完成了本发明所述码率控制过程。
需要说明的是,本发明只是针对图像序列非第一个GOP中的I帧进行码率控制的,除了上述这些I帧外,本发明实施例对其他帧的操作均采用的是现有JVT-H017中的码率控制算法。
以H.264相关软件JM9.8作为测试平台,分别采用本实施例中的I帧码率控制方法与JVT-H017算法对图像序列进行仿真,表1示出了本发明码率控制方法与JVT-H017算法的仿真结果。
表1本发明码率控制方法与JVT-H017算法的仿真结果
其中,图像序列为QCIF格式,每个序列测试150帧,GOP的长度为30,编码结构为IPPP,帧率为15fps,参考帧的数目为1,搜索范围为16,运动估计的精度为1/4像素,开启RDO和CABAC,试验考虑跳帧,用FS来表示,将BS设置为码率*0.5且缓冲区的上溢门限设置为0.8*BS。表1中的测试序列“Flower Garden”、“Mobile”、“Coastguard”、“Foreman”、“Carphone”以及“MissAmerican”分别代表了内容不同的图像,且它们的初始QP都是固定的,分别为33,33,29,29,29和26。从表1中可以看出,采用本实施例方法时所有测试序列的平均PSNR都比采用JVT-H017算法时高,并且码率控制的结果也更加准确,同时,在采用本实施例的方法进行码率控制时不会发生跳帧。
图5为对“Carphone”图像序列采用本实施例方法与JVT-H017算法仿真后的逐帧PSNR比较示意图。图6为对“Foreman”图像序列采用本实施例方法与JVT-H017算法仿真后的逐帧PSNR比较示意图。从图5及图6中可以得出与表1同样的结论,即采用本实施例方法时的PSNR要明显高于采用JVT-H017算法时的PSNR。
图7为对“Carphone”图像序列采用本实施例方法与JVT-H017算法仿真后的缓冲区状态比较示意图。图8为对“Foreman”图像序列采用本实施例方法与JVT-H017算法仿真后的缓冲区状态比较示意图。从图7与图8中可以看出,采用JVT-H017算法会产生较多的跳帧,并且缓冲区状态很不稳定,而采用本实施例的方法后缓冲区状态得到了很好地改善,从而采用本实施例方法可以更精确地控制码率。
总之,本发明所提出的I帧码率控制方法,预先针对I帧建立帧内R-QP模型,在该模型中,一方面采用梯度表示图像复杂度,另一方面将QP的取值分为三个区域,并在这三个区域内采用不同的函数作为R-QP模型,以用来逼近梯度、QP和编码比特数间的真实对应关系。在具体进行码率控制时,对不属于当前图像序列的第一个GOP中的I帧来说,首先计算为其预分配的编码比特数,之后将计算出的编码比特数代入预先提出的帧内R-QP模型中,从而得到其QP,并根据所述QP对所述I帧进行编码。由于采用了梯度表示图像复杂度,因此能够更准确地反映码率与图像复杂度间的关系;而且还利用分段函数尽量逼近梯度、QP和编码比特数间的真实对应关系,从而能够更有效地实现对I帧的码率控制。
同时,本发明所采用的帧内R-QP模型是采用分段拟合的方法得到的,从而保证了拟合结果的准确性和可靠性。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1、一种基于H.264的I帧码率控制方法,用于依次对当前图像序列中除第一个图像组(GOP)外的其它GOP中的I帧进行码率控制,其特征在于,该方法包括:
预先建立I帧的R-QP模型,用于表示I帧的码率与量化参数QP以及图像梯度之间的对应关系,其中,根据QP的取值范围将所述R-QP模型分为三个区域:
当QP≤15时,R=a1×QP+b1+c1×Grad+d1;
当15<QP<32时,
其中,所述Grad为I帧的梯度值,所述a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,a4,b4,c4,a5,b5,c5,c6,d3,a6,b6,c7,a7,b7,c8,a8,b8,c9,a9,b9,c10均为参数;
在为当前帧进行码率控制时,计算为当前帧分配的编码比特数R,并将所述R分别代入所述R-QP模型的三个区域,根据当前帧的梯度和所述R计算在每个区域中的QP,在计算得到的QP中,选择与相应区域的QP取值范围一致的QP,作为当前帧的QP。
2、如权利要求1所述的方法,其特征在于,所述编码比特数R是按照如下公式进行计算得到的:
其中,所述RGOP为给所述当前GOP分配的编码比特数,所述W为当前GOP的前一个GOP中I帧编码比特数与P帧平均编码比特数之比,所述N为所述当前GOP中包含的帧的总个数,所述N-1为所述当前GOP中P帧的总个数,所述Fr为帧率。
4、如权利要求3所述的方法,其特征在于,所述计算为当前帧分配的编码比特数R之前该方法还包括对所述计算出的W进行如下形式的调整:
当满足QPI前-MinQPP前≥m时,
W′=W+{(QPI前-MinQPP前)/m-1};
当不满足QPI前-MinQPP前≥m,但满足MaxQPP前-QPI前≥m时,
W′=W-{(MaxQPP前-QPI前)/m-1},
其中,所述W′为对所述W调整后的值,所述MinQPP前所述当前GOP的前一个GOP中P帧的最小QP值,所述MaxQPP前所述当前GOP的前一个GOP中P帧的最大QP值,所述m为大于零的整数;
则所述编码比特数R的计算如下:
5、如权利要求4所述的方法,其特征在于,所述计算为当前帧分配的编码比特数R之前该方法还包括对所述调整后的W进行如下形式的限定:
W″=max{p,min{W′,q}},
其中,所述W″为对所述W′限定后的值,所述p、q为大于零的整数;
则所述编码比特数R的计算如下:
6、如权利要求1所述的方法,其特征在于,所述将所述R分别代入所述R-QP模型的三个区域之前该方法还包括对所述计算出的R进行如下形式的限制:
R′=min{R,(BS×t-CBF)},
其中,所述R′为对所述R限制后给I帧分配的编码比特数,所述BS为当前缓冲区的容量,所述CBF为当前缓冲区占用量,所述t为大于零的整数。
7、如权利要求6所述的方法,其特征在于,所述将所述R分别代入所述R-QP模型的三个区域之前该方法还包括对所述限制后的R进行如下形式的进一步限制:
R″=max{LB,min{R′,UB}},
其中,所述R″为对所述R′进一步限制后给I帧分配的编码比特数,所述LB和UB分别为给所述当前GOP中的I帧分配的编码比特数的上限值和下限值,所述R′为所述当前GOP的前一个GOP中剩余编码比特数。
8、如权利要求7所述的方法,其特征在于,所述LB和所述UB分别按照如下公式进行计算:
LB=R′+目标比特率/Fr,
UB=BS×t+R′,
其中,所述t为大于零的整数。
9、如权利要求1所述的方法,其特征在于,该方法还包括对所述作为当前帧的QP进行如下形式的调整:
QP=max{1,QPI前-s,min{t,QPI前+s,QP}},
其中,所述s,t为大于零的整数。
10、如权利要求1所述的方法,其特征在于,
a1=-0.2713,b1=5.5182,c1=0.1191,d1=0.6673;
a2=-0.2112,a3=0.0047,a4=0.0039,a5=0.0036,b2=7.4371,b3=-0.3782,b4=0.3111,b5=-0.2451,c2=0.0511,c3=7.8952,c4=6.3933,c5=4.468,c6=0.0867,d2=-0.9852,d3=-0.4242;
a6=0.00356,a7=0.00202,a8=0.00102,a9=0.00063,b6=-0.38325,b7=-0.2042,b8=-0.11024,b9=-0.06388,c7=10.309,c8=5.16,c9=3.025,c10=1.716。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100858187A CN101572806B (zh) | 2009-06-01 | 2009-06-01 | 一种基于h.264的i帧码率控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100858187A CN101572806B (zh) | 2009-06-01 | 2009-06-01 | 一种基于h.264的i帧码率控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101572806A true CN101572806A (zh) | 2009-11-04 |
CN101572806B CN101572806B (zh) | 2010-12-01 |
Family
ID=41232020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100858187A Expired - Fee Related CN101572806B (zh) | 2009-06-01 | 2009-06-01 | 一种基于h.264的i帧码率控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101572806B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895759A (zh) * | 2010-07-28 | 2010-11-24 | 南京信息工程大学 | 一种h.264码率控制方法 |
CN101917614A (zh) * | 2010-06-03 | 2010-12-15 | 北京邮电大学 | 一种基于h.264分层b帧编码结构的码率控制方法 |
CN102271247A (zh) * | 2011-06-23 | 2011-12-07 | 杭州海康威视软件有限公司 | 一种编码码率调整方法和装置 |
CN102647586A (zh) * | 2011-02-16 | 2012-08-22 | 富士通株式会社 | 用在视频编码系统中的码率控制方法和装置 |
CN104954793A (zh) * | 2015-06-18 | 2015-09-30 | 电子科技大学 | 一种GOP级的QP-Offset设置方法 |
CN105898307A (zh) * | 2015-12-22 | 2016-08-24 | 乐视云计算有限公司 | 一种b帧位置决策方法及装置 |
CN107027030A (zh) * | 2017-03-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种码率分配方法及其设备 |
CN107257464A (zh) * | 2016-12-29 | 2017-10-17 | 四川大学 | 基于Sobel算子和线性回归的高清视频编码码率控制算法 |
CN110740324A (zh) * | 2019-09-11 | 2020-01-31 | 浙江大华技术股份有限公司 | 编码控制方法及相关装置 |
CN114422783A (zh) * | 2021-12-07 | 2022-04-29 | 网宿科技股份有限公司 | 视频编码方法、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100442848C (zh) * | 2005-04-11 | 2008-12-10 | 华为技术有限公司 | 一种h263编码中码率的控制方法 |
CN100448295C (zh) * | 2005-05-27 | 2008-12-31 | 中国科学院自动化研究所 | 一种低复杂度的积分码率控制方法 |
CN100448297C (zh) * | 2005-11-08 | 2008-12-31 | 上海广电(集团)有限公司中央研究院 | 一种码率控制方法 |
CN100481943C (zh) * | 2006-12-30 | 2009-04-22 | 清华大学 | 一种视频编码码率控制方法 |
-
2009
- 2009-06-01 CN CN2009100858187A patent/CN101572806B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917614A (zh) * | 2010-06-03 | 2010-12-15 | 北京邮电大学 | 一种基于h.264分层b帧编码结构的码率控制方法 |
CN101917614B (zh) * | 2010-06-03 | 2012-07-04 | 北京邮电大学 | 一种基于h.264分层b帧编码结构的码率控制方法 |
CN101895759B (zh) * | 2010-07-28 | 2011-10-05 | 南京信息工程大学 | 一种h.264码率控制方法 |
CN101895759A (zh) * | 2010-07-28 | 2010-11-24 | 南京信息工程大学 | 一种h.264码率控制方法 |
CN102647586A (zh) * | 2011-02-16 | 2012-08-22 | 富士通株式会社 | 用在视频编码系统中的码率控制方法和装置 |
CN102647586B (zh) * | 2011-02-16 | 2015-07-08 | 富士通株式会社 | 用在视频编码系统中的码率控制方法和装置 |
CN102271247A (zh) * | 2011-06-23 | 2011-12-07 | 杭州海康威视软件有限公司 | 一种编码码率调整方法和装置 |
CN104954793B (zh) * | 2015-06-18 | 2018-01-12 | 电子科技大学 | 一种GOP级的QP‑Offset设置方法 |
CN104954793A (zh) * | 2015-06-18 | 2015-09-30 | 电子科技大学 | 一种GOP级的QP-Offset设置方法 |
CN105898307A (zh) * | 2015-12-22 | 2016-08-24 | 乐视云计算有限公司 | 一种b帧位置决策方法及装置 |
CN107257464A (zh) * | 2016-12-29 | 2017-10-17 | 四川大学 | 基于Sobel算子和线性回归的高清视频编码码率控制算法 |
CN107257464B (zh) * | 2016-12-29 | 2020-04-03 | 四川大学 | 基于Sobel算子和线性回归的高清视频编码码率控制方法 |
CN107027030A (zh) * | 2017-03-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种码率分配方法及其设备 |
US10834405B2 (en) | 2017-03-07 | 2020-11-10 | Tencent Technology (Shenzhen) Company Limited | Bit rate allocation method and device, and storage medium |
CN110740324A (zh) * | 2019-09-11 | 2020-01-31 | 浙江大华技术股份有限公司 | 编码控制方法及相关装置 |
CN110740324B (zh) * | 2019-09-11 | 2023-03-31 | 浙江大华技术股份有限公司 | 编码控制方法及相关装置 |
CN114422783A (zh) * | 2021-12-07 | 2022-04-29 | 网宿科技股份有限公司 | 视频编码方法、电子设备及存储介质 |
CN114422783B (zh) * | 2021-12-07 | 2024-04-12 | 网宿科技股份有限公司 | 视频编码方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101572806B (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101572806B (zh) | 一种基于h.264的i帧码率控制方法 | |
CN101917614B (zh) | 一种基于h.264分层b帧编码结构的码率控制方法 | |
CN103281530B (zh) | 基于率失真优化的hevc码率控制方法 | |
CN101895759B (zh) | 一种h.264码率控制方法 | |
CN100425077C (zh) | 采用帧目标比特数不平均分配的视频压缩码率控制方法 | |
CN101888566B (zh) | 立体视频编码率失真性能估计方法 | |
CN103634601B (zh) | 基于结构相似度的高效视频编码感知码率控制优化方法 | |
CN100546388C (zh) | 一种用于视频编码的色度均衡方法 | |
CN101895758B (zh) | 基于帧复杂度的h.264码率控制方法 | |
CN102137258B (zh) | 一种立体视频码率控制方法 | |
CN110225343B (zh) | 一种视频编码的码率控制方法及装置 | |
CN101674472A (zh) | 多视点视频编码的多级码率控制方法 | |
CN107222748B (zh) | 图像数据码率的处理方法和装置 | |
CN101877784B (zh) | 一种适用于实时应用的h.264码率控制方法 | |
CN106358040A (zh) | 一种基于显著性的码率控制比特分配方法 | |
CN105120282A (zh) | 一种时域依赖的码率控制比特分配方法 | |
CN107197267B (zh) | 高效视频编码标准量化参数的分配方法 | |
CN101056408B (zh) | 用于确定视频编码中跳跃模式的阈值的方法和装置 | |
CN106303530A (zh) | 一种融合视觉感知特性的码率控制方法 | |
CN102148973A (zh) | 基于拉格朗日乘数因子的3层码率控制方法 | |
CN102164281B (zh) | 一种基于视觉显著度模型的视频编码码率控制方法 | |
CN103618906B (zh) | 一种基于主观视频质量的h.264码率控制方法 | |
CN102752591B (zh) | 基于综合因子的h.264码率控制方法 | |
CN110139101B (zh) | 一种基于λ域码率控制的帧级比特分配方法 | |
CN111447446A (zh) | 一种基于人眼视觉区域重要性分析的hevc码率控制方法 |
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: 20101201 Termination date: 20130601 |