发明名称 一种基于片的自适应码率控制方法
摘要 一种基于片的自适应码率控制方法,包括以下步骤:(1)、将输入视频序列分成图像组,图像组为一组时间上连续的图像序列,根据H.264基本框架的定义,每个图像组图像组呈IPPP结构,其中I帧是指帧内编码的图像,P帧是指支持前向预测的图像,定义i和j分别表示第i个图像组和第i个图像组的第j帧;(2)、控制编码器使用一个量化系数(QuantizationParameter,QP)的初始值来编码第i个图像组的首个I帧和首个P帧,初始的量化系数值通过目标码率分配到单位象素的比特数来计算;(3)、通过动态量化系数QPik(j)编码第i个图像组的第j帧,每一个片确定动态量化系数QPik(j)。本发明降低算法复杂度,又能在给定的目标码率控制范围内获得较高的视频质量。
申请公布号 CN101159867B 申请公布日期 2010.05.26
申请号 CN200710067915.4 申请日期 2007.03.31
申请人 红杉树(杭州)信息技术有限公司 发明人 宋旭东;杜武平
分类号 H04N7/26(2006.01)I;H04N7/32(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 浙江杭州金通专利事务所有限公司 33100 代理人 徐关寿
主权项 一种基于片的自适应码率控制方法,所述的控制算法包括以下步骤:(1)、将输入视频序列分成图像组,图像组为一组时间上连续的图像序列,根据H.264基本框架的定义,每个图像组呈IPPP结构,其中I帧是指帧内编码的图像,P帧是指支持前向预测的图像,定义i和j分别表示第i个图像组和第i个图像组的第j帧;(2)、控制编码器使用一个量化系数QP的初始值来编码第i个图像组的首个I帧和首个P帧,初始的量化系数值通过目标码率分配到单位象素的比特数来计算;(3)、通过动态量化系数QPik(j)编码第i个图像组的第j帧,每一个片的动态量化系数QPik(j)的确定过程为:(3.1)、当第i个图像组的第j-1帧被编码后,在图像组中剩余的目标比特总数RB用以下公式(1)表示:RBi(j)=RBi(j-1)-ABi(j-1) j=2,3,...,Ni (1)其中,ABi(j-1)表示已编码的第j-1帧比特数;对于一个图像组中的第1帧,它的目标比特数由下式(2)计算: <mrow> <msub> <mi>RB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mi>RS</mi> <mi>FR</mi> </mfrac> <mo>&times;</mo> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>VB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>其中,RS表示目标码率,Ni为第i个图像组总的帧数,FR表示帧率;第j帧的虚拟缓冲区充盈度VB,由下式(3)表示: <mrow> <msub> <mi>VB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>VB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>AB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mfrac> <mi>RS</mi> <mi>FR</mi> </mfrac> </mrow>j=2,3,...,Ni (3)设第1个图像组中第1帧的虚拟缓冲区冲盈度VB1(1)为0,第i个图像组中的第1帧虚拟缓冲区充盈度等于上一个图像组最后一帧的的虚拟缓冲区充盈度,即VBi(1)=VBi-1(Ni-1);(3.2)、第i个图像组中第j个P帧的目标比特数TB是由要编码的剩余总比特数、目标缓冲区等级TBL、帧率、有效的网络带宽、真实的缓冲区充盈度以及先前已编码的I帧和P帧的真实比特数来决定,它由下式(4)表示: <mrow> <msub> <mi>TB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mn>0.5</mn> <mo>&times;</mo> <mfrac> <mrow> <msub> <mi>RB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> <msub> <mi>N</mi> <mrow> <mi>r</mi> <mo>,</mo> <mi>p</mi> </mrow> </msub> </mfrac> <mo>+</mo> <mn>0.5</mn> <mo>&times;</mo> <mrow> <mo>(</mo> <mfrac> <mi>RS</mi> <mi>FR</mi> </mfrac> <mo>+</mo> <mn>0.5</mn> <mo>&times;</mo> <mrow> <mo>(</mo> <msub> <mi>TBL</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>VB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>其中,Nr,p表示剩余P帧的帧数;TBLi(j)计算公式如下(5): <mrow> <msub> <mi>TBL</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>TBL</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mfrac> <mrow> <msub> <mi>VB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>N</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>p</mi> </mrow> </msub> <mo>-</mo> <mn>1</mn> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>其中,Ni,p表示第i个图像组包含的P帧总数;(3.3)、第i个图像组中第j帧的某个片的目标比特数Slice TB是由每一个片的复杂程度来估算,由下式(6)计算获得: <mrow> <msubsup> <mrow> <mi>Slice</mi> <mo>_</mo> <mi>TB</mi> </mrow> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <msubsup> <mi>J</mi> <mrow> <mi>cos</mi> <mi>t</mi> </mrow> <mi>k</mi> </msubsup> <msub> <mi>J</mi> <mrow> <mi>cos</mi> <mi>t</mi> </mrow> </msub> </mfrac> <msub> <mi>TB</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>其中,Jcost表示编码当前帧的拉格朗日代价,表示为(7): <mrow> <msub> <mi>J</mi> <mrow> <mi>cos</mi> <mi>t</mi> </mrow> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>M</mi> </munderover> <msubsup> <mi>J</mi> <mrow> <mi>cos</mi> <mi>t</mi> </mrow> <mi>k</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>其中,Jcostk表示编码当前片k的拉格朗日率失真代价,M是指当前帧的片总数;Jcostk由一个线性滤波器计算前面的帧得到,其算式为(8): <mrow> <msubsup> <mi>J</mi> <mrow> <mi>cos</mi> <mi>t</mi> </mrow> <mi>k</mi> </msubsup> <mo>=</mo> <mfrac> <mn>1</mn> <mi>L</mi> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>L</mi> </munderover> <msup> <mi>COST</mi> <mi>k</mi> </msup> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mi>n</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>其中,L表示窗口长度,率失真代价COSTk(j-n)表达式为(9):COSTk(j-n)=SATDk+λ×Rk (9)式中,SATDk表示第k片经过哈德曼变化的预测残差绝对值总和,Rk是指片k的比特数,λ为拉格朗日乘数因子;(3.4)、每一个片的量化参数计算公式表示如下(10): <mrow> <msubsup> <mi>QP</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>&beta;</mi> <mo>&times;</mo> <mfrac> <mrow> <msubsup> <mi>X</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> <mrow> <msubsup> <mrow> <mi>Slice</mi> <mo>_</mo> <mi>TB</mi> </mrow> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>其中,β是特别因子,Xik(j)的表达式为(11): <mrow> <msubsup> <mi>X</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <msubsup> <mi>QP</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>&times;</mo> <msubsup> <mi>AB</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> <mo>.</mo> </mrow>
地址 310012 浙江省杭州市天目山路176号西湖数源软件园11号楼三楼