发明名称 基于综合因子的H.264码率控制方法
摘要 本发明公开了一种基于综合因子的H.264码率控制方法,属于视频编码技术领域。本发明考虑了P帧在GOP中的位置对当前帧码率控制的影响,定义了一个综合因子,用该因子对帧层目标比特的分配进行优化,然后利用前一帧的实际编码比特数和当前编码帧的目标比特的比率作为量化参数的调整因子,动态地进行量化参数的调整并进行率失真最优化。综合因子定义为当前编码帧的图像灰度直方图的平均差值比率、图像亮度分量的平均绝对误差比率和P帧在GOP中位置的加权和。本发明方法提高码率控制的精度和视频的质量。
申请公布号 CN102752591B 申请公布日期 2014.09.17
申请号 CN201210196077.1 申请日期 2012.06.14
申请人 南京信息工程大学 发明人 陈晓;刘海英
分类号 H04N19/00(2014.01)I 主分类号 H04N19/00(2014.01)I
代理机构 南京汇盛专利商标事务所(普通合伙) 32238 代理人 张立荣
主权项 基于综合因子的H.264码率控制方法,该方法具体包括以下步骤:步骤A,根据综合因子来确定当前编码帧的目标比特数;步骤B,计算量化参数并进行率失真优化;其中步骤A包括:A1、按照下式计算所有未编码帧的剩余比特数:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>T</mi><mi>r</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mrow><mi>u</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>F</mi><mi>r</mi></msub></mfrac><mo>&times;</mo><mrow><msub><mi>N</mi><mi>gop</mi></msub><mo>-</mo><mrow><mo>(</mo><mfrac><msub><mi>B</mi><mi>s</mi></msub><mn>8</mn></mfrac><mo>-</mo><msub><mi>B</mi><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><msub><mi>N</mi><mi>gop</mi></msub></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mtd><mtd><mi>j</mi><mo>=</mo><mn>1</mn></mtd></mtr><mtr><mtd><msub><mi>T</mi><mi>r</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><mi>A</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mtd><mtd><mi>j</mi><mo>=</mo><mn>2,3</mn><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><msub><mi>N</mi><mi>gop</mi></msub></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000505781280000011.GIF" wi="1291" he="238" /></maths>其中,T<sub>r</sub>(n<sub>i,j</sub>)表示第i个GOP层编码至第j帧时剩余的总比特数,u(n<sub>i,1</sub>)表示编码第一帧前的可用信道带宽,F<sub>r</sub>为帧率,N<sub>gop</sub>表示该GOP层中图像帧的个数,B<sub>s</sub>为缓冲区的大小,<img file="FDA0000505781280000012.GIF" wi="240" he="82" />表示第i‑1个GOP层中最后一帧编码结束后缓冲区的实际占有率,A(n<sub>i,j‑1</sub>)是第i个GOP层第j‑1帧实际产生的比特数;A2、按照下式计算当前编码帧的综合因子:CF<sub>j</sub>=μMAD<sub>ratio</sub>(i,j)+ηC(i,j)+αL(i,j),其中CF<sub>j</sub>表示综合因子;μ、η和α是小于1的加权系数;i为视频序列中GOP层的序号,取值范围为1到视频序列中GOP层数;j为第i个GOP层中编码帧的序号,取值范围为1到当前GOP层中包含的总帧数;<img file="FDA0000505781280000013.GIF" wi="720" he="87" />MAD(i,j)=a1×MAD(i,j‑1)+a2,a1和a2为一元线性回归系数,其初始值分别为1和0,并在每个帧编码完成之后更新,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mover><mi>MAD</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></munderover><mi>MAD</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000505781280000014.GIF" wi="525" he="158" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><msqrt><msub><mi>H</mi><mi>j</mi></msub></msqrt><mo>/</mo><msqrt><msub><mi>H</mi><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub></msqrt></mrow>]]></math><img file="FDA0000505781280000015.GIF" wi="452" he="99" /></maths>表示图像灰度直方图的平均差值比率,<img file="FDA0000505781280000016.GIF" wi="504" he="147" />h<sub>j</sub>表示当前编码帧的灰度直方图,h<sub>j‑1</sub>表示前一重建帧的灰度直方图;L(i,j)是第i个GOP中j帧的位置;通过上述方案来优化帧层目标比特的分配,上述加权系数μ、η和α的值分别取0.2、0.5和0.3;A3、根据下式计算当前编码帧的目标比特数:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0.88</mn><mo>&times;</mo><msub><mi>CF</mi><mi>j</mi></msub><mo>&times;</mo><mi>&beta;</mi><mo>&times;</mo><mfrac><mrow><msub><mi>T</mi><mi>r</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>N</mi><mi>r</mi></msub></mfrac><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&beta;</mi><mo>)</mo></mrow><mo>&times;</mo><mo>{</mo><mrow><mo>(</mo><mfrac><mrow><mi>u</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>F</mi><mi>r</mi></msub></mfrac><mo>)</mo></mrow><mo>-</mo><mi>&gamma;</mi><mo>&times;</mo><mo>[</mo><mi>Tbl</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>]</mo><mo>}</mo></mtd><mtd><mn>0</mn><mo>&le;</mo><msub><mi>CF</mi><mi>j</mi></msub><mo>&le;</mo><mn>1.15</mn></mtd></mtr><mtr><mtd><mo>[</mo><mn>0.25</mn><mo>&times;</mo><mrow><mo>(</mo><msub><mi>CF</mi><mi>j</mi></msub><mo>-</mo><mn>1.15</mn><mo>)</mo></mrow><mo>+</mo><mn>1.15</mn><mo>]</mo><mo>&times;</mo><mi>&beta;</mi><mo>&times;</mo><mfrac><mrow><msub><mi>T</mi><mi>r</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>N</mi><mi>r</mi></msub></mfrac><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&beta;</mi><mo>)</mo></mrow><mo>&times;</mo><mo>{</mo><mrow><mo>(</mo><mfrac><mrow><mi>u</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>F</mi><mi>r</mi></msub></mfrac><mo>)</mo></mrow><mo>-</mo><mi>&gamma;</mi><mo>&times;</mo><mo>[</mo><mi>Tbl</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>]</mo><mo>}</mo></mtd><mtd><mn>1.15</mn><mo>&lt;</mo><msub><mi>CF</mi><mi>j</mi></msub><mo>&le;</mo><mn>2.15</mn></mtd></mtr><mtr><mtd><mn>1.15</mn><mo>&times;</mo><mi>&beta;</mi><mo>&times;</mo><mfrac><mrow><msub><mi>T</mi><mi>r</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>N</mi><mi>r</mi></msub></mfrac><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&beta;</mi><mo>)</mo></mrow><mo>&times;</mo><mo>{</mo><mrow><mo>(</mo><mfrac><mrow><mi>u</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow><msub><mi>F</mi><mi>r</mi></msub></mfrac><mo>)</mo></mrow><mo>-</mo><mi>&gamma;</mi><mo>&times;</mo><mo>[</mo><mi>Tbl</mi><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>]</mo><mo>}</mo></mtd><mtd><msub><mi>CF</mi><mi>j</mi></msub><mo>></mo><mn>2.15</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000505781280000017.GIF" wi="1718" he="322" /></maths>其中f(n<sub>i,j</sub>)表示第i个GOP中第j帧的目标比特数;T<sub>r</sub>(n<sub>i,j</sub>)代表是第i个GOP层编码至第j帧时剩余的总比特数;CF<sub>j</sub>表示综合因子;F<sub>r</sub>表示帧率;N<sub>r</sub>表示当前GOP层未编码帧数;u(n<sub>i,j</sub>)表示信道可利用的带宽;Tbl(n<sub>i,j</sub>)表示目标缓冲级别;B<sub>c</sub>(n<sub>i,j</sub>)表示缓冲区占用度;β、γ是加权系数,当有B帧时β为0.9,γ为0.25,否则β为0.5,γ为0.5。
地址 210044 江苏省南京市浦口区宁六路219号