发明名称 一种视频图像编码方法
摘要 一种视频编码方法,该方法先对图像进行宏块预测和补偿处理,然后对预测差值进行4×4 DCT-like整数变换处理,再对变换系数分别进行量化和熵编码处理。该方法采用了一种新的4×4 DCT-like整数变换方法和相应的逆变换、量化、逆量化方法,该变换方法的计算复杂度较低,变换过程只涉及到加法和乘法运算,变换性能非常接近于4×4 DCT,从而具有类似于DCT的较好的去相关性能,可以得到较好的视频压缩效果。
申请公布号 CN100440978C 申请公布日期 2008.12.03
申请号 CN200480032962.X 申请日期 2004.09.28
申请人 华为技术有限公司 发明人 熊联欢
分类号 H04N7/30(2006.01) 主分类号 H04N7/30(2006.01)
代理机构 北京三友知识产权代理有限公司 代理人 任默闻
主权项 1、一种视频图像编码方法,包括以下步骤:将输入视频图像分割成16×16宏块,并对I帧图像进行帧内像素预测和补偿处理,对P帧图像进行帧间运动估计及运动补偿处理;变换器对输入预测差值数据进行变换处理,Y=AXA<sup>T</sup>;对变换系数进行量化及熵编码处理,并将编码码流传递给接收端;接收端对编码码流进行熵解码及逆量化处理;逆变换器对逆量化后系数进行逆变换处理,X=A<sup>T</sup>YA;对逆变换处理后的图像数据进行帧内像素补偿或帧间运动补偿,并将解码后的视频图像输出;Y为相应的变换系数矩阵,X为图像数据矩阵或预测差值数据矩阵,A为变换矩阵,A<sup>T</sup>表示矩阵A的转置矩阵;<maths num="0001"><![CDATA[<math><mrow><mi>A</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>a</mi></mtd><mtd><mi>a</mi></mtd><mtd><mi>a</mi></mtd><mtd><mi>a</mi></mtd></mtr><mtr><mtd><mi>b</mi></mtd><mtd><mi>c</mi></mtd><mtd><mo>-</mo><mi>c</mi></mtd><mtd><mo>-</mo><mi>b</mi></mtd></mtr><mtr><mtd><mi>a</mi></mtd><mtd><mo>-</mo><mi>a</mi></mtd><mtd><mo>-</mo><mi>a</mi></mtd><mtd><mi>a</mi></mtd></mtr><mtr><mtd><mi>c</mi></mtd><mtd><mo>-</mo><mi>b</mi></mtd><mtd><mi>b</mi></mtd><mtd><mo>-</mo><mi>c</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msup><mi>A</mi><mi>T</mi></msup><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>a</mi></mtd><mtd><mi>b</mi></mtd><mtd><mi>a</mi></mtd><mtd><mi>c</mi></mtd></mtr><mtr><mtd><mi>a</mi></mtd><mtd><mi>c</mi></mtd><mtd><mo>-</mo><mi>a</mi></mtd><mtd><mo>-</mo><mi>b</mi></mtd></mtr><mtr><mtd><mi>a</mi></mtd><mtd><mo>-</mo><mi>c</mi></mtd><mtd><mo>-</mo><mi>a</mi></mtd><mtd><mi>b</mi></mtd></mtr><mtr><mtd><mi>a</mi></mtd><mtd><mo>-</mo><mi>b</mi></mtd><mtd><mi>a</mi></mtd><mtd><mo>-</mo><mi>c</mi></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mi>a</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><mi>b</mi><mo>=</mo><msqrt><mfrac><mn>1</mn><mn>2</mn></mfrac></msqrt><mi>cos</mi><mrow><mo>(</mo><mfrac><mi>&pi;</mi><mn>8</mn></mfrac><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mi>c</mi><mo>=</mo><msqrt><mfrac><mn>1</mn><mn>2</mn></mfrac></msqrt><mi>cos</mi><mrow><mo>(</mo><mfrac><mrow><mn>3</mn><mi>&pi;</mi></mrow><mn>8</mn></mfrac><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>其特征在于所述变换器对输入预测差值数据进行变换处理的步骤,采用2D 4×4 DCT-like整数变换方法对视频图像进行变换处理,其变换计算采用如下公式:<maths num="0006"><![CDATA[<math><mrow><mi>Y</mi><mo>=</mo><mrow><mo>(</mo><msup><mi>CXC</mi><mi>T</mi></msup><mo>)</mo></mrow><mo>&CircleTimes;</mo><mi>E</mi></mrow></math>]]></maths>所述逆变换器对逆量化后系数进行逆变换处理的步骤,采用2D 4×4IDCT-like逆变换方法对视频图像进行逆变换处理,其逆变换采用如下公式:<maths num="0007"><![CDATA[<math><mrow><mi>X</mi><mo>=</mo><msup><mi>C</mi><mi>T</mi></msup><mrow><mo>(</mo><mi>Y</mi><mo>&CircleTimes;</mo><mi>E</mi><mo>)</mo></mrow><mi>C</mi></mrow></math>]]></maths>其中C<sup>T</sup>表示矩阵C的转置矩阵,<maths num="0008"><![CDATA[<math><mrow><mi>C</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mfrac><mi>b</mi><mi>c</mi></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mo>-</mo><mfrac><mi>b</mi><mi>c</mi></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mfrac><mi>b</mi><mi>c</mi></mfrac></mtd><mtd><mfrac><mi>b</mi><mi>c</mi></mfrac></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths><img file="C2004800329620003C2.GIF" wi="37" he="36" />表示两个矩阵对应位置的元素相乘,E为一个伸缩矩阵,<maths num="0009"><![CDATA[<math><mrow><mi>E</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msup><mi>a</mi><mn>2</mn></msup></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><msup><mi>a</mi><mn>2</mn></msup></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><mfrac><msup><mi>c</mi><mn>2</mn></msup><mn>4</mn></mfrac></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><mfrac><msup><mi>c</mi><mn>2</mn></msup><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><msup><mi>a</mi><mn>2</mn></msup></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><msup><mi>a</mi><mn>2</mn></msup></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><mfrac><msup><mi>c</mi><mn>2</mn></msup><mn>4</mn></mfrac></mtd><mtd><mfrac><mi>ac</mi><mn>2</mn></mfrac></mtd><mtd><mfrac><msup><mi>c</mi><mn>2</mn></msup><mn>4</mn></mfrac></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>在方法实施过程中,做如下取值:<maths num="0010"><![CDATA[<math><mrow><mfrac><mi>b</mi><mi>c</mi></mfrac><mo>&ap;</mo><mn>2.5</mn><mo>,</mo></mrow></math>]]></maths><maths num="0011"><![CDATA[<math><mrow><mi>a</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0012"><![CDATA[<math><mrow><mi>c</mi><mo>=</mo><mn>2</mn><msqrt><mfrac><mn>1</mn><mn>58</mn></mfrac></msqrt><mo>,</mo></mrow></math>]]></maths><maths num="0013"><![CDATA[<math><mrow><mi>C</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>5</mn></mtd><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd><mtd><mo>-</mo><mn>5</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mn>5</mn></mtd><mtd><mn>5</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths><maths num="0014"><![CDATA[<math><mrow><mi>E</mi><mo>&ap;</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mn>0.25</mn></mtd><mtd><mn>0.0657</mn></mtd><mtd><mn>0.25</mn></mtd><mtd><mn>0.0657</mn></mtd></mtr><mtr><mtd><mn>0.0657</mn></mtd><mtd><mn>0.0172</mn></mtd><mtd><mn>0.0657</mn></mtd><mtd><mn>0.0172</mn></mtd></mtr><mtr><mtd><mn>0.25</mn></mtd><mtd><mn>0.0657</mn></mtd><mtd><mn>0.25</mn></mtd><mtd><mn>0.0657</mn></mtd></mtr><mtr><mtd><mn>0.0657</mn></mtd><mtd><mn>0.0172</mn></mtd><mtd><mn>0.0657</mn></mtd><mtd><mn>0.0172</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow></math>]]></maths>其中,将矩阵C的第一行和第三行元素分别乘以一个正整数k,而第二和第四行元素不变,即:<maths num="0015"><![CDATA[<math><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfenced open='' close=''><mtable><mtr><mtd><mi>k</mi></mtd><mtd><mi>k</mi></mtd><mtd><mi>k</mi></mtd><mtd><mi>k</mi></mtd></mtr></mtable></mfenced></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><mfenced open='' close=''><mtable><mtr><mtd><mi>k</mi></mtd><mtd><mo>-</mo><mi>k</mi></mtd><mtd><mo>-</mo><mi>k</mi></mtd><mtd><mi>k</mi></mtd></mtr></mtable></mfenced></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>k为正整数;矩阵E相应地改变为:<maths num="0016"><![CDATA[<math><mrow><msub><mi>E</mi><mn>1</mn></msub><mo>=</mo><mi>E</mi><mo>&CircleTimes;</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mn>1</mn><msup><mi>k</mi><mn>2</mn></msup></mfrac></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mfrac><mn>1</mn><msup><mi>k</mi><mn>2</mn></msup></mfrac></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><msup><mi>k</mi><mn>2</mn></msup></mfrac></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mfrac><mn>1</mn><msup><mi>k</mi><mn>2</mn></msup></mfrac></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>1</mn><mi>k</mi></mfrac></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>而实际变换结果Y不改变,即:<maths num="0017"><![CDATA[<math><mrow><mi>Y</mi><mo>=</mo><mrow><mo>(</mo><msup><mi>CXC</mi><mi>T</mi></msup><mo>)</mo></mrow><mo>&CircleTimes;</mo><mi>E</mi><mo>=</mo><mrow><mo>(</mo><msub><mi>C</mi><mn>1</mn></msub><msup><msub><mi>XC</mi><mn>1</mn></msub><mi>T</mi></msup><mo>)</mo></mrow><mo>&CircleTimes;</mo><msub><mi>E</mi><mn>1</mn></msub><mo>.</mo></mrow></math>]]></maths>
地址 518129中国广东省深圳市龙岗区坂田华为总部办公楼