跳过宏块编码.pdf

上传人:1520****312 文档编号:679132 上传时间:2018-03-04 格式:PDF 页数:50 大小:2.23MB
返回 下载 相关 举报
摘要
申请专利号:

CN02825191.1

申请日:

2002.12.16

公开号:

CN1605213A

公开日:

2005.04.06

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):H04N 7/50变更事项:专利权人变更前权利人:微软公司变更后权利人:微软技术许可有限责任公司变更事项:地址变更前权利人:美国华盛顿州变更后权利人:美国华盛顿州登记生效日:20150429|||授权|||实质审查的生效|||公开

IPC分类号:

H04N7/50; G06T9/00

主分类号:

H04N7/50; G06T9/00

申请人:

微软公司;

发明人:

S·斯里尼瓦杉

地址:

美国华盛顿州

优先权:

2001.12.17 US 60/341,674; 2002.05.03 US 60/377,712

专利代理机构:

上海专利商标事务所

代理人:

谢喜堂

PDF下载: PDF下载
内容摘要

描述了各种用于对二进制信息(如跳过宏块信息)进行编码和解码(如在视频编码器/解码器中)的技术和工具。在一些实施例中,二进制信息在位平面上排列,并且该位平面在图像/帧层上编码。编码器和解码器处理二进制信息,并且在一些实施例中,切换编码模式。例如,编码器和解码器使用普通、行跳过、列跳过或差分模式,或其它和/或另外的模式。在一些实施例中,编码器和解码器将跳过宏块定义为其运动等于其因果预测的运动并且具有零剩余误差的预测宏块。在一些实施例中,编码器和解码器使用原始编码模式来允许低等待时间应用。

权利要求书

1.  在计算机系统中,一种处理一个或多个视频图像的计算机实现的方法,其特征在于,所述方法包括:
从一组多个可用编码模式中选择一编码模式;以及
依照所述选择的编码模式处理位平面,其中,所述位平面包括视频图像的多个单元的二进制信息,其中,所述二进制信息表示所述视频图像的所述多个单元的特征,其中,所述多个单元的每一个均包括多个像素,并且其中,所述二进制信息包括用于所述视频图像的所述多个单元的的每一个的一位。

2.
  如权利要求1所述的方法,其特征在于,所述处理在图像级执行。

3.
  如权利要求1所述的方法,其特征在于,所述多个可用编码模式组包括行预测编码模式和列预测编码模式。

4.
  如权利要求1所述的方法,其特征在于,所述多个可用编码模式组还包括一个或多个矢量可变长度编码模式。

5.
  如权利要求1所述的方法,其特征在于,所述多个可用编码模式组还包括一个或多个差分编码模式。

6.
  如权利要求1所述的方法,其特征在于,所述多个单元是宏块,并且其中,所述位平面中的所述二进制信息包括跳过宏块信息。

7.
  如权利要求1所述的方法,其特征在于,所述多个单元是宏块,并且其中,所述位平面中的所述二进制信息包括运动矢量计数信息。

8.
  如权利要求1所述的方法,其特征在于,所述多个单元是宏块,并且其中,所述位平面中的所述二进制信息包括半帧/帧标志。

9.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求1所述方法的计算机可执行指令的计算机可读媒质,其特征在于,所述处理包括依照所述选择的编码方式进行熵解码。

10.
  一种储存用于引发所述计算机系统在视频编码过程中执行权利要求1的所述方法的计算机可执行指令的计算机可读媒质,其特征在于,所述处理包括依照所述选择的编码方式进行熵编码。

11.
  在计算机系统中,一种处理视频图像序列中多个视频图像的计算机实现的方法,其特征在于,所述方法包括:
从一组多个可用编码模式中选择一编码模式;以及
依照所述选择的编码模式处理位平面,其中,所述位平面包括表示预测视频图像中的宏块是被跳过还是未被跳过的二进制信息,并且其中,如果宏块的运动等于所述宏块的预测运动并且所述宏块没有剩余误差时,跳过所述预测视频图像中的宏块。

12.
  一种储存用于引发所述计算机系统在视频编码过程中执行权利要求11的所述方法的计算机可执行指令的计算机可读媒质。

13.
  在计算系统中,一种用于处理视频序列中多个视频图像的方法,所述多个视频图像包括一个或多个预测视频图像,其特征在于,所述一个或多个预测视频图像的每一个包括多个宏块,所述方法包括:
处理所述一个或多个预测视频图像的至少其中之一的多个宏块之中的一个或多个跳过宏块,其中,所述一个或多个预测视频图像的至少其中之一的每一个从不多于一个参考视频图像中预测,其中,所述一个或多个跳过宏块的每一个根据一个或多个其它宏块的运动对所述跳过宏块使用预测的运动,并且其中,所述一个或多个跳过宏块的每一个没有剩余信息。

14.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求13所述方法的计算机可执行指令的计算机可读媒质。

15.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求13所述方法的计算机可执行指令的计算机可读媒质。

16.
  在计算机系统中,一种处理视频序列的多个视频图像的方法,所述多个视频图像包括多个预测宏块,其特征在于,每一所述多个预测宏块从不多于一个参考视频图像中预测,所述方法包括:
处理所述多个预测宏块之中一个或多个跳过宏块,其中,所述一个或多个跳过宏块的每一个根据一个或多个其它预测宏块的运动对所述跳过宏块使用预测的运动,并且其中,所述一个或多个跳过宏块的每一个没有剩余信息。

17.
  一种储存用于引发所述计算机系统在视频编码过程中执行权利要求16的所述方法的计算机可执行指令的计算机可读媒质。

18.
  一种储存用于引发所述计算机系统在视频解码过程中执行权利要求16的所述方法的计算机可执行指令的计算机可读媒质。

19.
  在计算机系统中,一种处理视频图像序列中一个或多个图像的计算机实现的方法,其特征在于,所述视频图像序列的比特流语法包括多个分级层,所述多个分级层包括至少一序列层、一图像层和一宏块层,所述方法包括:
在所述视频图像序列的比特流语法中的高于宏块层的层上处理位平面,其中,所述位平面包括所述视频图像序列中的图像中的多个宏块的二进制信息,其中,所述多个宏块的每一个均包括多个块,其中,所述多个宏块的每一个均包括多个像素,并且其中,所述二进制信息包括对所述图像中所述多个宏块的每一个的一位。

20.
  如权利要求19所述的方法,其特征在于,所述二进制信息包括跳过宏块信息。

21.
  如权利要求19所述的方法,其特征在于,所述二进制信息包括运动矢量计数信息。

22.
  如权利要求19所述的方法,其特征在于,所述二进制信息包括接口模式信息。

23.
  如权利要求19所述的方法,其特征在于所述更高的层是图像层。

24.
  如权利要求19所述的方法,所述更高层的头包括发送过程中的位平面。

25.
  一种储存用于引发所述计算机系统在视频编码过程中执行权利要求19的所述方法的计算机可执行指令的计算机可读媒质。

26.
  一种储存用于引发所述计算机系统在视频解码过程中执行权利要求19的所述方法的计算机可执行指令的计算机可读媒质。

27.
  在计算机系统中,一种处理视频图像序列中一个或多个图像的计算机实现的方法,其特征在于,所述视频图像序列的比特流语法包括多个分级层,所述多个分级层包括至少一图像层和一宏块层,所述方法包括:
在所述视频图像序列的比特流语法中高于所述宏块层的层上处理跳过宏块信息,其中,所述跳过宏块信息是对于所述视频图像序列中的图像的多个宏块的,其中,所述多个宏块的每一个均包括多个块,其中,所述多个块的每一个均包括多个像素。

28.
  如权利要求27所述的方法,其特征在于所述更高层是图像层。

29.
  如权利要求29所述的方法,其特征在于,所述更高层的头包括跳过宏块信息。

30.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求27所述方法的计算机可执行指令的计算机可读媒质。

31.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求27的所述方法的计算机可执行指令的计算机可读媒质。

32.
  在计算机系统中,一种处理视频图像序列中多个图像的计算机实现方法,其特征在于,跳过宏块信息与所述多个图像相关联,所述方法包括:
从一组多个可用编码模式中选择一编码模式,其中,所述多个可用编码模式的至少两个涉及降低与所述跳过宏块信息相关联的比特率;以及
依照所述选择的编码模式处理所述跳过宏块信息。

33.
  如权利要求32所述的方法,其特征在于,所述多个可用编码模式组包括行预测模式、列预测模式和普通模式。

34.
  如权利要求32所述的方法,其特征在于,所述多个可用编码模式组包括行跳过模式、列跳过模式、差分模式、熵编码模式和原始模式。

35.
  如权利要求32所述的方法,其特征在于,所述处理是低等待时间处理,并且其中,所述选择的编码模式是一次通过宏块级编码模式。

36.
  如权利要求32所述的方法,其特征在于,所述视频图像序列的比特流语法包括多个分级层,所述多个分级层包括序列层、图像层和宏块层,并且其中,所述处理出现在图像层。

37.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求32所述方法的计算机可执行指令的计算机可读媒质。

38.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求32所述方法的计算机可执行指令的计算机可读媒质。

39.
  在计算机系统中,一种处理视频图像序列中多个单元的计算机实现的方法,其特征在于,二进制信息表示所述多个单元的特征,其中,所述多个单元的每一个均包括多个像素,并且其中,所述二进制信息包括对所述多个单元的每一个的一位,所述方法包括:
从一组多个可用编码模式中选择一编码模式,其中,所述多个可用编码模式包括低等待时间编码模式;以及
如果所述选择的编码模式是低等待时间编码模式,依照所述选择的编码模式在所述视频图像序列的比特流语法中的单元层处理所述二进制信息,
否则,依照所述选择的编码模式在视频图像的比特流语法中的高于单元层的层将二进制信息作为位平面来处理。

40.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求39所述方法的计算机可执行指令的计算机可读媒质。

41.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求39所述方法的计算机可执行指令的计算机可读媒质。

42.
  在计算机系统中,一种处理视频图像序列中多个单元的计算机实现方法,其特征在于,所述视频图像序列的比特流语法包括多个分级层,所述多个分级层包括序列层和单元层,所述方法包括:
从一组多个可用编码方式中选择一编码方式,其中,所述多个可用编码方式包括低等待时间编码方式;以及
如果所述选择的编码方式为低等待时间编码方式,依照所述选择的编码方式在单元层处理二进制信息,
否则,依照所述选择的编码方式在高于所述单元层的层上将二进制信息作为位平面来处理。

43.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求42所述方法的计算机可执行指令的计算机可读媒质。

44.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求42所述方法的计算机可执行指令的计算机可读媒质。

45.
  在计算机系统中,一种压缩包括以行或列排列的矩阵中的二进制码元的位平面的计算机实现的方法,其特征在于,所述方法包括:
对于所述位平面中行中的每一二进制码元等于第一个值的每一行,或对于所述位平面中列中的每一二进制码元等于第一个值的每一列,使用已编码的比特流中的单个位对所述行或列进行编码;以及
对所述位平面中行中至少一个二进制码元不等于第一个值的每一行,或对于所述位平面中列中至少一个二进制码元不等于第一个值的每一列,在所述行或列中使用每一二进制码元一位来对所述行或列进行编码。

46.
  如权利要求45所述的方法,其特征在于,所述矩阵中的所述二进制码元表示视频序列中的跳过宏块信息。

47.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求45所述方法的计算机可执行指令的计算机可读媒质。

48.
  在计算机系统中,处理一个或多个视频图像的计算机实现方法,其特征在于,所述方法包括:
依照编码模式处理位平面,其中,所述位平面包括视频图像的多个单元的二进制信息,其中,所述二进制信息表示所述视频图像的所述多个单元的特征,其中,所述多个单元的每一个均包括多个像素,其中,所述二进制信息包括对所述视频图像的所述多个单元的每一个的一位,并且其中,倒置标志指示是否倒置所述位平面作为所述处理的一部分。

49.
  一种储存用于引发所述计算机系统在视频编码过程中执行如权利要求48所述方法的计算机可执行指令的计算机可读媒质,其特征在于,所述处理包括依照所述编码模式进行熵编码,并且其中,如果有对所述位平面的倒置,则其出现在所述熵编码之前。

50.
  一种储存用于引发所述计算机系统在视频解码过程中执行如权利要求48的所述方法的计算机可执行指令的计算机可读媒质,其特征在于,所述处理包括依照所述编码模式进行熵解码,并且其中,如果有对所述位平面的倒置,则其出现在所述熵解码之后。

说明书

跳过宏块编码
                        相关申请信息
本发明要求2001年12月17日递交的名为“Techniques and Tools for VideoEncoding and Decoding”的美国临时专利申请序号60/341,674的优先权,其内容通过引用结合于此。本发明也要求2002年5月3日递交的名为“Skip MacroblockCoding”的美国临时专利申请号60/377,712的优先权,其内容通过引用结合于此。
                             技术领域
描述了用于在视频编码/解码应用中对二进制信息进行编码/解码的技术和工具。例如,视频编码器对跳过宏块信息进行编码。
                             背景技术
数字视频消耗大量的存储和传输容量。典型的原始数字视频序列每秒包括15或30帧。每一帧能够包括几万或几十万个像素(也称为pel)。每一像素表示图像的一个微小元素。在原始的形式中,计算机通常用24比特来表示一个像素。由此,典型的原始数字视频序列的每秒的比特数,或比特率可以是500万比特/秒或更高。
大多数计算机和计算机网络缺乏处理原始数字视频的资源。鉴于此原因,工程师使用压缩(也称为译码或编码)来降低数字视频的比特率。在视频的质量不受损害但比特率的降低受视频的复杂性限制的情况下,压缩是无损的。或者,在视频的质量受损害但比特率的降低更显著的情况下,压缩是有损的。解压缩倒转了压缩。
一般来说,视频压缩技术包括帧内压缩和帧间压缩。帧内压缩技术压缩单个的帧,通常称为I帧或主帧。帧间压缩技术在压缩帧时参考前帧和/或后帧,通常称为预测帧、P帧或B帧。
微软公司的Windows Media Video,版本7[“WMV7”]包括视频编码器和视频解码器。WMV7编码器使用帧内和帧间压缩,WMV7解码器使用帧内和帧间解压。
A.WMV7的帧内压缩
图1说明了WMV7编码器中对主帧中像素的块(105)的基于块的帧内压缩(100)。块是一组像素,例如,像素的8×8排列。WMV7编码器将主视频帧拆分为8×8的像素块,并对各单个块,如块(105)应用8×8的离散余弦变换[“DCT”](110)。DCT是一种频率变换,将8×8的像素(空间信息)块转换为8×8的DCT系数块(115),即频率信息。DCT操作本身是无损或接近无损的。然而,与原始像素值相比较,DCT系数对编码器来说能更有效地用来压缩,因为大多数重要信息集中在低频系数(常规地位于块(115)的左上角)中,并且许多高频系数(常规地位于块(115)的右下角)的值为零或接近零。
编码器然后将DCT系数量化(120),得到一个8×8的量化DCT系数(125)块。例如,编码器对每一系数应用统一标量量化步长,类似于将每一系数除以同一值并舍入成整数。例如,如果一个DCT系数值是163并且步长为10,则量化DCT系数值为16。量化是有损的。重建的DCT系数值将是160,而非163。由于低频DCT系数往往具有较大的值,量化会导致精度损耗,但不会完全丢失系数的信息。另一方面,由于高频DCT系数的值往往为零或接近零,对高频系数的量化通常导致零值的邻接区域。此外,在某些情况下,高频DCT系数比低频DCT系数更粗糙地量化,导致高频DCT系数的精度/信息的大量损耗。
编码器然后准备8×8的量化DCT系数(125)块来进行熵编码,这是一种无损压缩的形式。确切的熵编码类型根据系数是否是DC系数(最低频率)、顶行或左列中的AC系数(其它频率)或另一AC系数而不同。
编码器将DC系数(126)编码为对相邻的8×8块的DC系数的差分,该相邻块是正在编码的块的相邻的(如,上方或左边)先前已编码的块。(图1示出了帧内相邻块(135)位于正在编码的块的左边。)编码器对该差分进行熵编码(140)。
熵编码器能够将AC系数的左列或顶行编码为对相邻的8×8的块的相应列或行的差分。图1示出将AC系数的左列(127)编码为对相邻(左边)块135地左列(137)的差分。差分编码提高了差分系数具有零值的机率。剩余的AC系数来自量化DCT系数块(125)。
编码器将8×8的预测的量化AC DCT系数块(145)扫描(150)为一维数组(155),然后使用行程编码(160)的一种变异来对扫描的AC系数进行熵编码。编码器从一个或多个游程/级/最后(run/level/last)表(165)中选择熵码并输出该熵码。
主帧对比特率比预测帧起到更大的作用。在低或者中比特率应用中,主帧经常是性能的关键瓶颈,因此主帧的有效压缩是关键的。
图2说明了如图1所示的帧内压缩的缺点。特别地,对主帧的块之间的冗余的充分利用被限制在对来自块(210)的左边邻块(220)或上方邻块(230)的频率系数的子集(例如,DC系数和AC系数的左列(或顶行))的预测上。DC系数表示块的平均值,AC系数的左列表示块的行平均值,顶行表示列平均值。事实上,如WMV7中的对DC和AC系数的预测限制了向左面(或上方)邻块的行范围(或列范围)平均信号的外插。对于左块(220)的一个特定的行(221),左块(220)的左DCT系数列中的AC系数用来预测块(210)的整个相应行(211)。
B.WMV7中的帧间压缩
WMV7编码器中的帧间压缩使用基于块的运动补偿预测编码,随后为剩余误差的变换编码。图3和4说明了WMV7编码器中对预测帧的基于块的帧间压缩。特别地,图3说明了对预测帧(310)的运动估计,图4说明了对预测帧的已估计运动的块的预测剩余的压缩。
WMV7编码器将一个预测帧拆分为8×8的像素块。一组4个8×8的块组成宏块。对每一宏块,执行运动估计进程。运动估计近似与参考帧,如先前被编码的预测帧相关的像素宏块的运动。在图3中,WMV7编码器计算预测帧(310)中的宏块(315)的运动矢量。为计算该运动矢量,编码器在参考帧(330)的搜索范围(335)中进行搜索。在搜索范围(335)内,编码器将来自预测帧(310)的宏块(315)与不同候选宏块进行比较,来找出较佳匹配的候选宏块。编码器能够在搜索范围(335)中对候选块每一像素或每1/2像素进行检查,取决于编码器的所期望的运动估计分辨率。其它视频编码器以其它增量进行检查,如每1/4像素。对于一个候选宏块,编码器检查预测帧(310)的宏块(315)和候选宏块之间的差异以及对该宏块进行运动矢量编码的成本。当编码器找到较佳匹配的宏块之后,块匹配进程结束。编码器输出匹配宏块的运动矢量(已被熵编码),使得解码器能够在解码过程中找到匹配的宏块。当对预测帧(310)进行解码时,解码器使用运动矢量,利用来自参考帧(330)的信息来计算宏块(315)的预测宏块。对宏块(315)的预测很少是理想的,因此编码器通常对预测宏块和宏块(315)其本身之间8×8的像素差异块(也称为误差或剩余块)来进行编码。
图4说明了WMV7编码器中对已进行运动估计的块进行误差块(435)的计算和编码。误差块(435)是预测块(415)和原始当前块(425)之间的差异。编码器对误差块(435)应用DCT(440),得到8×8的系数块(445)。与像素值的DCT系数的情况相比,误差块(435)的重要信息更显著得多地集中在低频系数(常规地位于块(445)的左上角)中,许多高频系数的值为零或接近零(常规地位于块(445)的右下角)。
编码器然后量化(450)DCT系数,得到8×8的量化DCT系数块(455)。量化步长是可调节的。再一次,由于低频DCT系数往往具有较大的值,量化导致精度的损耗,但未完全损耗系数的信息。另一方面,由于高频DCT系数的值往往为零或接近零,高频系数的量化导致零值的邻接区域。另外,在某些情况下,高频DCT系数比低频DCT系数更粗糙地量化,导致高频DCT系数的精度/信息的更大损耗。
编码器然后准备8×8的量化DCT系数块(455)用于熵编码。编码器将8×8的块(455)扫描(460)为具有64个元素的一维数组(465),使得系数一般从低频到高频地排列,这通常令零值位于最后。
编码器使用行程编码(470)的一个变异对扫描的系数进行熵编码。编码器从一个或多个游程/级/最后表(475)中选择熵码并输出该熵码。
当宏块的运动矢量为零(即没有运动),并且对该宏块没有发送剩余块信息,编码器对该宏块使用1比特的跳过宏块标志。对多种视频内容(如,低运动和/或低比特率视频)来说,这通过避免运动矢量和剩余块信息的发送降低了比特率。编码器将宏块的跳过宏块标志与该宏块的其它信息一起放置在输出比特流的宏块层。
图5示出了帧间编码块的解码进程(500)。由于DCT系数的量化,重建的块(575)与相应的原始块不相同。该压缩是有损的。
在图5的概述中,解码器使用可变长度解码和一个或多个游程/级/最后表(515)对已经过熵编码的表示预测剩余的信息进行解码(510,520)。解码器将储存已进行熵解码的信息的一维数组(525)逆扫描为二维块(535)。解码器对数据进行反量化和反离散余弦变换(同时进行,540),得到重建的误差块(545)。在一单独的路径中,解码器使用对参考帧的位移的运动矢量信息(555)来计算预测块(565)。解码器将预测块(565)和重建的误差块(545)组合(570)来组成重建块(575)。
当解码器接收到宏块的跳过宏块标志时,解码器跳过对该宏块的预测计算和剩余块信息解码。取而代之的是,解码器使用参考帧中宏块位置的相应像素数据。
原始和重建帧之间的变化量被称为失真,对帧进行编码所需要的比特数被称为率。失真量一般说来与率成反比。换言之,用较少的比特来对帧进行编码(较大压缩)将导致较大的失真,反之亦然。视频压缩模式的目的之一是试图改进率-失真-换言之,试图采用较少的比特来达到同样的失真(或使用相同的比特来达到较低的失真)。
尽管WMV7中使用的跳过宏块标志对多种视频内容来说通常能够降低比特率,然而在某些情况下却远非最佳。在许多情况下,未能充分利用从宏块到宏块的跳过宏块标志中的冗余,例如,当跳过宏块成群地出现在图像中时。同样,WMV7在跳过宏块时忽略了对预测帧中宏块的运动预测,在某些情况下会损伤预测帧的压缩的效率。
C.视频压缩和解压的标准
除WMV7之外,若干种国际标准与视频压缩和解压相关。这些标准包括运动图像专家组[“MPEG”]1、2和4标准以及国际电信联盟〔“ITU”〕的H.261、H.262和H.263标准。与WMV7类似,这些标准使用帧内和帧间压缩的组合,尽管这些标准通常在所使用的压缩技术细节上与WMV7不同。
一些国际标准认可将宏块的跳过编码作为一种工具在视频压缩和解压中使用。欲知这些标准中有关跳过宏块编码的另外的细节,参见该标准的说明书本身。
上述标准中的跳过宏块编码通常降低了多种视频内容的比特率,但是在某些情况下远非最佳。在许多情况下,未能充分利用从宏块到宏块的跳过宏块标志中的冗余,例如,当跳过宏块成群地出现在图像中时。同样,当跳过宏块时,它忽略了对预测宏块/图像中的宏块的运动预测,从而在某些情况下会损伤预测宏块/图像的压缩效率。
鉴于对数字视频的视频压缩和解压的关键重要性,视频压缩和解压是充分开发的领域并不令人惊讶。然而,不论先前的视频压缩和解压技术的好处如何,它们都没有以下技术和工具的优点。
                             发明概述
总的来说,详细描述针对用于对二进制信息进行编码和解码(如,在视频编码器/解码器中)的各类技术和工具。二进制信息可能包括指示视频编码器或解码器在视频帧中是否跳过了某一宏块的位。或者,二进制信息可能包括指示对宏块的运动矢量分辨率(如1-MV或4-MV)、隔行扫描方式(如半帧或帧)或一些其它信息的位。二进制信息可能在逐帧的基础上或者在一些其它基础上编码。
在一些实施例中,二进制信息在位平面上排列。例如,位平面在图像/帧层被编码。可选地,二进制信息以其它方法排列和/或在不同的层编码。编码器和解码器处理二进制信息。二进制信息可能包括宏块级信息。可选地,编码器和解码器处理块级、子块级或像素级信息的位平面。
在一些实施例中,编码器和解码器切换编码模式。例如,编码器和解码器使用普通、行跳过或列跳过模式。不同的模式使得编码器和解码器可以充分利用二进制信息中的冗余。可选地,编码器和解码器使用其它和/或另外的模式,如差分模式。为提高效率,编码器和解码器可能在某些模式中使用位平面倒置技术。
在一些实施例中,编码器和解码器将跳过宏块定义为运动等于其因果预测运动并具有零剩余误差的预测宏块。可选地,编码器和解码器将跳过宏块定义为具有零运动和零剩余误差的预测宏块。
在一些实施例中,编码器和解码器使用原始编码模式来允许低等待时间应用。例如,在原始编码模式中,已编码的宏块能够立即发送到解码器,而不需要等到帧/图像中的所有宏块都被编码。编码器和解码器能够在原始编码模式和其它模式之间切换。
各类技术和工具可以组合使用或单独使用。特别地,该应用连同相应的比特流语法一起描述了跳过宏块编码和解码的两种实现。不同的实施例实现了一种或多种所描述的技术和工具。
参考附图阅读以下对不同实施例的详细描述,可以更清楚其它特点和优点。
                         附图的简要描述
图1所示是依照现有技术的对一个8×8的像素块的基于块的帧内压缩的图。
图2所示是依照现有技术的频率系数的预测的图。
图3所示是依照现有技术的视频编码器中的运动估计的图。
图4所示是依照现有技术的视频编码器中对一个8×8的预测剩余块的基于块的帧间压缩的图。
图5所示是依照现有技术的对一个8×8的预测剩余块的基于块的帧内解压的图。
图6是适于在其中实现若干所描述的实施例的计算环境的结构图。
图7是若干所描述的实施例中使用的一般化的视频编码器系统的结构图。
图8是若干所描述的实施例中使用的一般化的视频解码器系统的结构图。
图9所示是依照第一实现的组成P图像层的比特流元素的图。
图10所示是用于在具有多个跳过宏块编码模式的视频编码器中对跳过宏块的信息进行编码的技术的流程图。
图11所示是用于对由具有多个跳过宏块编码模式的视频编码器编码的跳过宏块的信息进行解码的技术的流程图。
图12所示是跳过宏块编码帧的一个示例。
图13所示是用于在普通跳过宏块编码模式中进行编码的技术的流程图。
图14所示是用于在行预测跳过宏块编码模式中进行编码的技术的流程图。
图15所示是用于对跳过宏块的信息进行行预测解码的伪代码的代码列表。
图16所示是用于在列预测跳过宏块编码模式中进行编码的技术的流程图。
图17所示是用于对跳过宏块的信息进行列预测解码的伪代码的代码列表。
图18所示是用于确定在视频编码器中是否跳过特定宏块的编码的技术的流程图。
图19所示是用于以行跳过编码模式在位平面中对二进制信息进行编码的技术的流程图。
图20所示是用于以列跳过编码模式在位平面中对二进制信息进行编码的技术的流程图。
图21所示是用于以普通-2编码模式在位平面中对二进制信息进行编码的技术的流程图。
图22、23和24所示是以普通-6模式平铺的二进制信息的帧的示例。
图25所示是用于以普通-6模式在位平面中对二进制信息进行编码的技术的流程图。
图26所示是用于以差分编码模式对二进制信息进行编码的技术的流程图。
图27所示是用于以差分编码模式对二进制信息进行解码的技术的流程图。
图28所示是用于对低等待时间应用以原始编码模式选择性地对二进制信息进行编码的技术的流程图。
                             详细描述
所描述的实施例与用于对二进制信息进行编码和解码(如,在视频编码器/解码器中)的技术和工具相关。二进制信息可能包括指示视频编码器或解码器是否跳过了视频帧中的特定宏块的位。或者,二进制信息可包括指示宏块的运动矢量分辨率(如1-MV或4-MV)、隔行扫描模式(如半帧或帧)或其它信息的位。二进制信息可能在逐帧的基础上或在一些其它基础上进行编码。
在一些实施例中,二进制信息在位平面中排列。位平面在图像/帧层被编码。可选地,二进制信息以一些其它方式排列和/或在不同的层编码。
在一些实施例中,编码器和解码器切换编码模式。例如,编码器和解码器使用普通、行跳过或列跳过模式。不同的模式使得编码器和解码器可以充分利用二进制信息中的冗余。可选地,编码器和解码器使用其它和/或另外的模式。
在一些实施例中,编码器和解码器将跳过宏块定义为运动等于其因果预测的运动并具有零剩余误差的预测宏块。可选地,编码器和解码器将跳过宏块定义为具有零运动和零剩余误差的预测宏块。
在一些实施例中,作为对有效帧/图像级编码的替代,准许使用原始编码模式来允许低等待时间应用。在原始编码模式中,已编码的宏块能够立即发送到解码器,而不需要等待直到帧/图像中的所有宏块都编码完成。
在一些实施例中,编码器和解码器处理宏块级信息的位平面。可选地,编码器和解码器处理块、子块或像素级信息的位平面。
各类技术和工具可以组合使用或单独使用。具体而言,本申请连同相应的比特流语法一起描述了跳过宏块编码和解码的两种实现。不同的实施例实现一种或多种所描述的技术和工具。
在所描述的实施例中,视频编码器和解码器执行各类技术。尽管这些技术的操作通常为演示目的,以特定顺序来描述,应当理解,这一描述方式包含操作顺序中较小的重排列,除非需要特定的顺序。例如,顺序地描述的操作在某些情况下可以重新排列或并发执行。此外,为简化的目的,流程图通常不显示特定技术可以与其它技术结合使用的不同方法。
在所描述的实施例中,视频编码器和解码器在比特流中使用不同的标志和信号。尽管描述了特定的标志和信号,应当理解,这一描述方式包含了对标志和信号的不同约定(如0的约定而不是1的约定)。
I.计算环境
图6说明了适于在其中实现若干所描述的实施例的计算环境(600)的一般化示例。该计算环境(600)并不意味着对使用或功能的范围的限制,这些技术和工具可以在不同的通用或专用计算系统中实现。
参考图6,计算环境(600)包括至少一个处理单元(610)和存储器(620)。在图6中,这一最基本的配置(630)包括在虚线框中。处理单元(610)执行计算机可执行指令并可以是真实或虚拟的处理器。在多处理系统中,多处理单元执行计算机可执行指令来提高处理能力。存储器(620)可以是易失存储器(如,寄存器、高速缓存、RAM)、非易失存储器(如,ROM、EEPROM、闪存等等)或两者的某一组合。存储器(620)储存实现编码器或解码器,如视频编码器或解码器的软件(680)。
计算环境可以具有其它特性。例如,计算系统(600)包括存储(640)、一个或多个输入设备(650)、一个或多个输出设备(660)以及一个或多个通信连接(670)。互连机制(未示出)如总线、控制器或网络将计算环境(600)的组件互连。通常,操作系统软件(未示出)为其它在计算环境(600)中执行的软件提供了操作环境,并协调计算环境(600)的组件的活动。
存储(640)可以是可移动或不可移动的,包括磁盘、磁带或盒式磁带、CD-ROM、DVD或其它任一可以用来储存信息并在计算环境(600)内可访问的媒质。存储(640)储存软件(680)用来实现编码器或解码器的指令。
(多个)输入设备(650)可以是触摸输入设备,如键盘、鼠标、笔、或轨迹球、语音输入设备、扫描设备或另一提供向计算环境(600)的输入的设备。对音频或视频编码来说,  (多个)输入设备(650)可以是声卡、视频卡、电视调谐卡或以模拟或数字形式接受音频或视频输入的类似设备、或将音频或视频样本读入计算环境(600)的CD-ROM或CD-RW。(多个)输出设备(660)可以是显示器、打印机、扬声器、CD记录器或从计算环境(600)提供输出的另一设备。
(多个)通信连接(670)启用通过通信媒质向另一计算实体的通信。通信媒质传送信息如计算机可执行指令、音频或视频输入或输出或其它已调制数据信号中的数据。已调制数据信号是以某一方式设定或改变其一个或多个特征来对信号中的信息进行编码的信号。作为示例而非限制,通信媒质包括用电子、光学、RF、红外、声学或其它载体实现的有线或无线技术。
本技术和工具可以在计算机可读媒质的一般语境中描述。计算机可读媒质是任一在计算环境中可访问的可用媒质。作为示例而非局限,在计算环境(600)中,计算机可读媒质包括存储器(620)、存储(640)、通信媒质以及上述任一件的组合。
本技术和工具可以在计算机可执行指令的一般语境下描述,如包括在程序模块中、在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令。通常,程序模块包括例程、程序、库、对象、类、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。如不同实施例的期望,程序模块的功能可以在程序模块之间组合或分离。程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。
为演示目的,详细描述使用术语如“确定”、“选择”、“重建”及“通知”,来描述计算环境中的计算机操作。这些术语是对计算机执行的操作的高级抽象,不应与人类执行的行动混淆。与这些术语相应的实际计算机操作可根据实现的不同而不同。
II.一般化的视频编码器和解码器
图7是一般化的视频编码器(700)的结构图,图8是一般化的视频解码器(800)的结构图。
编码器和解码器内的模块之间示出的关系指示了编码器和解码器内的信息的主流程;为简化目的,未示出其它关系。特别地,图7和8通常未示出指示用于视频序列、帧、宏块、块等等的编码器设置、模式、表等等的侧面信息。这类侧面信息在输出比特流中发送,通常在对侧面信息的熵编码之后。输出比特流的格式可以是Windows Media Video版本8的格式或另一格式。
编码器(700)和解码器(800)是基于块的,并使用4:2:0的宏块格式,每一宏块包括4个8×8的亮度块(有时也作为一个16×16的宏块来看待)以及两个8×8的色度块。可选地,编码器(700)和解码器(800)可以是基于对象的,使用不同的宏块或块格式,或在尺寸和构造不同于8×8的块和16×16的宏块的像素集的基础上执行操作。
根据所期望的实现和压缩类型,编码器或解码器的模块可以被添加、省略、拆分成多个模块、与其它模块组合和/或用相似模块代替。在替代实施例中,使用不同模块和/或其它模块构造的编码器或解码器执行所描述的技术的一个或多个。
A.视频编码器
图7是一般视频编码器系统(700)的结构图。编码器系统(700)接收包括当前帧(705)的一系列视频帧并生成压缩的视频信息(795)作为输出。视频编码器的具体实施例通常使用一般化的编码器(700)的变异或补充版本。
编码器系统(700)压缩预测帧和主帧。为了演示,图7示出了主帧通过编码系器统(700)的路径以及前向预测帧的路径。编码器系统(700)的许多组件既用来压缩主帧也用来压缩预测帧。这些组件所执行的确切操作可根据压缩的信息类型的不同而不同。
预测帧〔也称为双向预测中的p帧、b帧或帧间编码帧(inter-coded frame)〕按照从一个或多个其它帧的预测(或差异)来表示。预测剩余是所预测的和原始帧之间的差异。相反,主帧〔也称为i帧或帧内编码帧(intra-coded frame)〕不参考其它帧而压缩。
如果当前帧(705)是前向预测帧,运动估计器(710)估计当前帧的像素宏块或其它像素集对于参考帧的运动,参考帧是缓存在帧存储(720)中的重建的前一帧(725)。在替代实施例中,参考帧是后一帧,或者当前帧是双向预测的。运动估计器(710)能够根据像素、1/2像素、1/4像素或其它增量来估计运动,并在逐帧或其它基础上切换运动估计的分辨率。运动估计的分辨率可以在水平上和垂直上相同或不同。运动估计器(710)将运动信息(715),如运动矢量作为侧面信息输出。运动补偿器(730)将运动信息(715)应用到重建的前一帧(725)来组成已经过运动补偿的当前帧(735)。然而,预测很少是完美的,已经过运动补偿的当前帧(735)和原始当前帧(705)之间的差异为预测剩余(745)。可选地,运动估计器和运动补偿器应用另一类型的运动估计/补偿。
频率转换器(760)将空间域视频信息转换为频域(即,频谱的)数据。对于基于块的视频帧,频率转换器(760)对像素数据或预测剩余数据的块应用离散余弦变换[“DCT”]或DCT的变异,生成DCT系数块。可选地,频率变换器(760)应用另一常规频率变换,如傅立叶变换或使用小波或子带分析。在编码器使用空间外插(图7未示出)来对主帧的块进行编码的实施例中,频率转换器(760)可以对主帧的预测剩余的块应用重定向的频率变换,如偏斜DCT。在其它实施例中,频率变换器(760)对预测帧的预测剩余应用8×8、8×4、4×8或其它尺寸的频率变换(如DCT)。
量化器(770)然后量化空间数据系数块。量化器对空间数据应用统一的标量量化,其步长在逐帧或其它基础上变化。可选地,量化器对空间数据系数应用另一种量化,例如,非统一、矢量或非自适应量化,或直接在不使用频率变换的编码器系统内量化空间域数据。除自适应量化之外,编码器(700)可以使用帧丢弃、自适应滤波或其它技术来进行率控制。
如果预测帧中一个给定的宏块没有特定类型的信息(如,没有宏块的运动信息并且没有剩余信息),则编码器(700)将该宏块编码为跳过宏块。如果是这样,编码器在压缩的视频信息(795)的输出比特流中发信号通知该跳过宏块。
当需要重建的当前帧用于随后的运动估计/补偿时,反量化器(776)在量化的空间数据系数上执行反量化。反频率变换器(766)然后执行频率变换器(760)的反操作,生成重建的预测剩余(对预测帧)或重建的主帧。如果当前帧(705)是主帧,则重建的主帧被用作重建的当前帧(未示出)。如果当前帧(705)是预测帧,则将重建的预测剩余添加到已经过运动补偿的当前帧(735)来组成重建的当前帧。帧存储(720)缓存重建的当前帧用于预测下一帧。在一些实施例中,编码器对重建的帧应用数据分块滤波器来自适应地平滑帧的块中的不连续。
熵编码器(780)压缩量化器(770)的输出以及某些侧面信息(例如,运动信息(715)、空间外插模式、量化步长)。典型的熵编码技术包括算术编码、差分编码、哈夫曼(Huffman)编码、行程编码、LZ编码、字典编码以及上述的组合。熵编码器(780)通常对不同种类的信息(例如,DC系数、AC系数、不同种类的侧面信息)使用不同的编码技术,并能够从特定编码技术之内的多个代码表中进行选择。
熵编码器(780)将压缩的视频信息(795)放置在缓存(790)中。缓存级别指示符反馈至比特率自适应模块。
压缩的视频信息(795)从缓存(790)中以恒定或相对恒定的比特率排出,并被储存用于该比特率的随后的流中。因此,缓存(790)的级别主要是已滤波的量化视频信息的熵的函数,它影响熵编码的效率。可选地,编码器系统(700)在压缩之后立即将压缩的视频信息形成流,并且缓存(790)的级别也取决于信息从缓存(790)中排出进行发送的率。
在缓存(790)之前或之后,可以对压缩的视频信息(795)进行信道编码用于通过网络来发送。信道编码可以将误差检测和纠正数据应用到压缩视频信息(795)中。
B.视频解码器
图8是一般视频解码器系统(800)的结构图。解码器系统(800)接收视频帧的已压缩序列的信息(895),并生成包括重建帧(805)的输出。视频解码器的特定实施例通常使用一般化的解码器(800)的变异或补充版本。
解码器系统(800)对预测帧和主帧进行解压。为了演示,图8示出了主帧通过解码器系统(800)的路径以及前向预测帧的路径。解码器系统(800)的许多组件既用来对主帧进行解压也用来对预测帧进行解压。这些组件的确切操作可以根据所要解压的信息类型的不同而不同。
缓存(890)接收压缩视频序列的信息(895)并使接收的信息对熵解码器(880)可用。缓存(890)通常以随时间变化相当恒定的率接收信息,并包括抖动缓存来平滑带宽或传输中的短期变化。缓存(890)可以包括回放缓存以及其它缓存。可选地,缓存(890)以变化的率来接收信息。在缓存(890)之前或之后,可以对压缩的视频信息进行信道解码和误差检测和纠正的处理。
熵解码器(880)对熵编码的量化数据和熵编码的侧面信息(例如,运动信息(815)、空间外插模式、量化步长)进行熵解码,通常应用编码器中执行的熵编码的反操作。熵解码技术包括算术解码、差分解码、哈夫曼解码、行程解码、LZ解码、字典解码以及上述的组合。熵解码器(880)经常对不同的信息种类(如DC系数、AC系数、不同的侧面信息种类)使用不同的解码技术,并能够在特定的解码技术中从多个代码表中作出选择。
如果要重建的帧(805)是前向预测帧,则运动补偿器(830)对参考帧(825)应用运动信息(815)来组成要重建的帧(805)的预测(835)。例如,运动补偿器(830)使用宏块运动矢量来找出参考帧(825)中的宏块。帧缓存(820)储存前一重建的帧用作参考帧。运动补偿器(830)能够按照像素、1/2像素、1/4像素或其它增量来补偿运动,并能够在逐帧或者其它基础上切换运动补偿的分辨率。运动补偿的分辨率可以在水平上和垂直上相同或不同。可选地,运动补偿器应用另一类型的运动补偿。运动补偿器的预测很少是完美的,因此解码器(800)也重建预测剩余。
当解码器需要重建帧用于随后的运动补偿时,帧存储(820)缓存重建帧用于预测下一帧。在一些实施例中,编码器对重建帧应用数据分块滤波器来自适应地平滑帧的块中的不连续。
反量化器(870)反量化熵解码的数据。一般来说,反量化器对熵解码的数据应用统一标量反量化,其步长在逐帧或者其它基础上变化。可选地,反量化器对数据应用另一类型的反量化,如非统一、矢量或非自适应量化,或直接在不使用反频率变换的解码器系统中反量化空间域。
反频率转换器(860)将量化的频域数据转换为空间域视频信息。对于基于块的视频帧,反频率转换器(860)对DCT系数块应用反DCT[“IDCT”]或IDCT的变异,生成分别用于主帧或预测帧的像素数据或预测剩余数据。可选地,频率转换器(860)应用另一常规反频率变换,如傅立叶变换或使用小波或子带合成。在解码器使用空间外插(图8未示出)来对主帧的块进行解码的实施例中,反频率转换器(860)能够对主帧的预测剩余块应用重定向的反频率转换,如偏斜IDCT。在其它实施例中,反频率转换器(860)对预测帧的预测剩余应用8×8、8×4、4×8或其它尺寸的反频率转换(如IDCT)。
当在压缩的视频帧序列的信息(895)的比特流中发信号通知跳过宏块时,解码器(800)重建跳过宏块,而不使用通常包含在非跳过宏块的比特流中的信息(例如,运动信息和/或剩余信息)。
III.第一实现
在第一实现中,视频编码器和解码器分别以提高的效率对跳过宏块的信息进行编码和解码。在视频比特流中的图像层上发信号通知跳过宏块的信息,使得编码器能够充分利用跳过宏块的信息中的冗余。同样,编码器和解码器在多个编码模式之间进行选择以对跳过宏块的信息进行编码和解码。
A.跳过宏块的信息的图像层编码
在第一实现中,压缩视频序列由构造成四个分级层的数据组成。从上到下层分别为:1)序列层;2)图像层;3)宏块层;以及4)块层。在图像层,每一图像的数据包括图像头,随后是宏块层的数据。(类似地,在宏块层,每一宏块的数据包括宏块头,随后是块层的数据。)当I图像和P图像的一些比特流元素相同时,其它元素仅出现在P图像,反之亦然。
图9示出了组成P图像层(900)的比特流元素。表1简要地描述了P图像层(900)的比特流元素。

   字段 描述   PTYPE(910) 图像类型   PQUANT(912) 图像量化器比例   SMBC(920) 跳过宏块代码   SMB(930) 跳过宏块字段   CPBTAB(940) 已编码块模式表
   MVRES(942)运动矢量分辨率   TTMBF(944)宏块级转换类型标志   TTFRM(946)帧级转换类型   DCTACMBF(948)宏块级DCT AC编码置位标志   DCTACCFRM(950)帧级DCT AC编码置位索引   DCTDCTAB(952)帧内DCT DC表   MVTAB(954)运动矢量表   MB LAYER(960)宏块层

      表1:第一实现中P图像层的比特流元素
特别地,P图像层(900)包括用于P图像中宏块的跳过宏块字段(“SMB”)(930)以及发信号通知跳过宏块字段(930)的编码模式的跳过宏块代码(“SMBC”)字段(920)。SMBC字段(920)仅出现在P图像头中。SMBC(920)是一个2位的值,发信号通知用于指示帧中跳过的宏块的四种模式之一。在第一实现中,用于跳过宏块编码模式的固定长度代码(“FLC”)如下:  SMBC FLC跳过位编码模式     00无跳过位编码     01普通跳过位编码     10行预测(或,“行跳过”)跳过位编码     11列预测(或,“列跳过”)跳过位编码

      表2:第一实现中跳过宏块编码模式代码表
如果编码模式为普通、行预测或列预测,则比特流的下一字段是包含跳过宏块信息的SMB字段(930)。因此,SMB字段仅出现在P图像头中,并且仅当SMBC发信号通知普通、行预测或列预测跳过宏块编码时才出现。如果SMBC发信号通知普通编码,则SMB字段的尺寸等于帧中宏块的数量。如果SMBC发信号通知行预测或列预测,则SMB的尺寸如下所述地变化。
跳过宏块信息通知解码器帧中哪一宏块不在宏块层中。对于这些宏块,解码器在重建该宏块时将从参考帧复制相应的宏块像素数据。
B.切换跳过宏块信息的编码模式
如上所述,SMBC字段(920)发信号通知跳过宏块字段(930)的编码模式。更一般地,图10示出了一种用于在具有多个跳过宏块编码模式的视频编码器中对跳过宏块的信息进行编码的技术(1000)。图11示出了一种用于对由具有多个跳过宏块编码模式的视频编码器编码的跳过宏块的信息进行解码的相应技术(1100)。
参考图10,编码器选择一种跳过宏块编码模式来对跳过宏块的信息进行编码(1010)。例如,在第一实现中,跳过宏块编码模式包括无跳过宏块的模式、普通模式、行预测(或,“行跳过”)模式以及列预测(或,“列跳过”)模式。在选择编码模式之后,编码器对跳过宏块的信息进行编码(1020)。编码器在逐图的基础上选择编码模式。可选地,编码器在其它基础(例如,在序列级)上选择编码模式。当编码器完成对跳过宏块的信息进行编码之后(1030),编码结束。
参考图11,解码器确定编码器用来对跳过宏块的信息进行编码的跳过宏块编码模式(1110)。解码器然后对跳过宏块的信息(1120)进行解码。解码器在逐图的基础上确定编码模式。可选地,解码器在其它基础(例如,在序列级别)上确定编码模式。当解码器完成对跳过宏块的信息进行解码之后(1130),解码结束。
C.编码模式
在第一实现中,跳过宏块编码模式包括无跳过宏块的模式、普通模式、行预测(或,“行跳过”)模式以及列预测(或“列跳过”)模式。以下部分参考图12描述了每一模式中如何对跳过宏块的信息进行编码,并示出了跳过宏块编码帧的一个示例(1200)。
                      1.普通跳过宏块编码模式
在普通模式中,每一宏块的跳过/未跳过状态由一个位来表示。因此,以位表示的SMB字段的尺寸等于帧中宏块的数量。SMB字段中的位的位置与在帧中从左上宏块开始对宏块进行光栅扫描的顺序相应。位的值为0指示相应的宏块未跳过;位的值为1指示相应的宏块被跳过。
图13示出了一种用于以普通跳过宏块编码模式进行编码的技术(1300)。首先,编码器检查是否会跳过对一个宏块的编码(1310)。如果是这样,编码器将值为1的位添加到SMB字段来指示相应的宏块被跳过(1320)。否则,编码器将值为0的位添加到SMB字段来指示相应的宏块未跳过(1330)。当编码器完成向SMB字段添加位之后(1340),跳过宏块编码结束。
作为示例,使用普通模式编码,图12中示例帧(1200)的SMB字段被编码为:010010111111111111010010。
                     2.行预测跳过宏块编码模式
在行预测模式中,每一宏块行(从上到下)的状态由一个位来指示。如果该位为1,则该行所包含的全部为跳过宏块,并且跟随其后的是下一行的状态。如果该位等于0,则用一个位来发信号通知该行中每一宏块的跳过/未跳过状态。因此,跟随其后的是长度等于行中宏块数的位字段。该位字段中的位表示从左到右顺序的宏块。再一次,值为0指示相应的宏块未跳过;值为1指示相应的宏块被跳过。
图14示出了一种用于以行预测(或,“行跳过”)宏块编码模式编码的技术(1400)。首先,编码器检查一行所包含的是否全部为跳过宏块(1410)。如果是,则编码器将值为1的指示符位添加到SMB字段(1420),并且跟随其后的是下一行的状态。如果该行所包含的不全为跳过宏块,则编码器将值为0的指示符位添加到SMB字段,并且用一个位来发信号通知该行中每一宏块的跳过/未跳过状态(1430)。当编码器完成帧(1440)中所有行的处理之后(1440),行预测编码结束。
对于解码,图15所示为对跳过宏块的信息进行行预测解码的伪代码(1500)。在伪代码(1500)中,函数get_bits(n)从比特流读取n位并返回其值。
作为示例,使用行预测模式编码,图12的示例帧(1200)的SMB字段被编码为:0010010110010010。
                     3.列预测跳过宏块编码模式
在列预测模式中,每一宏块列(从左到右)的状态用一个位来指示。如果该位为1,则该列所包含的全部为跳过宏块,并且跟随其后的是下一列的状态。如果该位为0,则用一个位来发信号通知该列中每一宏块的跳过/未跳过状态。因此,跟随其后的是长度等于该列中宏块数的位字段。该位字段中的位表示从上到下顺序的宏块。再一次,值为0指示相应的宏块未跳过;值为1指示相应的宏块被跳过。
图16示出了一种用于以列预测(或,“列跳过”)宏块编码模式编码的技术(1600)。首先,编码器检查该列所包含的是否全部为跳过宏块(1610)。如果是,则编码器将值为1的指示符位添加到SMB字段(1620),并且跟随其后的是下一列的状态。如果该列包含的不全为跳过宏块,则编码器将值为0的指示符位添加到SMB字段,并且用一个位来发信号通知该列中每一宏块的跳过/未跳过状态。当编码器完成帧中所有列的处理之后(1640),列预测编码结束。
对于解码,图17所示为对跳过宏块的信息进行列预测解码的伪代码(1700)。
作为示例,使用行预测模式编码,图12的示例帧(1700)的SMB字段被编码为:0011010011000110100110。
IV.第二实现
在第二实现中,视频编码器和解码器以提高的效率分别对跳过宏块的信息和/或其它2-D二进制数据进行编码和解码。编码器和解码器将跳过宏块定义为具有缺省运动(不一定是零运动)的块,使得编码器和解码器可以在许多情况下跳过更多的宏块。有效的帧级位平面编码指示了跳过宏块的信息和/或其它2-D二进制数据。同样,编码器和解码器可以使用跳过宏块的原始(MB级)编码选项用于低等待时间的应用。
                  A.跳过位定义(跳过宏块的定义)
第二实现包括跳过宏块的概念的新定义。“跳过”指比特流中没有进一步的信息需要在该粒度级上发送的情况。跳过宏块(块)是具有缺省类型、缺省运动和缺省剩余误差的宏块(块)。(作为比较,在其它实现和标准中,跳过宏块是具有零运动和零剩余的预测宏块。)
跳过宏块的新定义是其运动等于其因果预测运动并具有零剩余误差的预测宏块。(与其它定义的不同点是缺省运动等于运动预测器,这不一定要为零。)
例如,在一些实施例中,从紧靠当前宏块上方或左边的宏块中得到当前宏块的预测运动矢量。或者,从当前宏块的左边、上方或者右上的宏块的水平和垂直分量范围内的中项生成预测器的水平和垂直分量。
具有四个运动矢量(4MV)的跳过宏块的运动矢量由其顺序地以自然扫描顺序执行的各预测给出。在一个运动矢量(1MV)的情况下,误差剩余为零。
图18示出了一种用于在视频编码器中依照跳过宏块的新定义确定是否要跳过对特定宏块的编码的技术(1800)。首先,编码器检查当前帧是否是I帧或P帧(1810)。如果当前帧是I帧,则当前帧中不跳过任何宏块(1820),对该帧的跳过宏块编码结束。
另一方面,如果当前帧是P帧,编码器检查当前帧中可以跳过的宏块。对于一个给定的宏块,编码器检查该宏块的运动矢量是否等于该宏块因果预测的运动矢量(例如,该宏块的差分运动矢量是否等于零)(1830)。如果宏块的运动不等于因果预测的运动,则编码器不跳过该宏块(1840)。否则,编码器检查该宏块是否有任何剩余需要编码(1850)。如果有需要编码的剩余,编码器不跳过该宏块(1860)。然而,如果该宏块没有剩余,编码器跳过该宏块(1870)。编码器继续编码或跳过宏块直到完成编码(1880)。
B.位平面编码
在第二实现中,某一宏块特定信息(包括发信号通知跳过宏块)可以以每宏块一位来编码。帧内所有宏块的状态可以一起编码为位平面并在帧头中发送。
在第二实现中,编码器在三种情况下使用位平面来发信号通知关于帧中宏块的信息。这三种情况为:1)发信号通知跳过宏块,2)发信号通知半帧或帧宏块模式,以及3)发信号通知每一宏块的1-MV或4-MV运动矢量。这一部分描述了对三种情况的任一种的位平面编码以及相应的解码。
帧级位平面编码用来对二维二进制数组进行编码。每一数组的尺寸是rowMB×colMB,其中,rowMB和colMB分别为宏块行和列的数目。在比特流中,每一数组被编码为一组连续的位。使用七种模式之一来对每一数组进行编码,如表3列举并在下文描述的。 编码模式描述 原始以每码元一位编码 普通-2两个码元共同编码 差分-2位平面的差分编码,随之为对两个剩余码元共同编码 普通-6六个码元共同编码 差分-6位平面的差分编码,随之为对六个剩余码元共同编码 行跳过一位跳跃来发信号通知没有置位的位的行 列跳过一位跳跃来发信号通知没有置位的位的列

                 表3:第二实现中的编码模式
在第二实现中,编码器使用三个语法元素:MODE、INVERT和DATABITS,以在位平面中嵌入信息。
MODE字段是对位平面的编码模式进行编码的可变长度代码(“VLC”)。例如,MODE字段中的VLC表示表3所列的七种编码模式中的任一种。为节省位,编码器可以向可能性较大的编码模式分配较短的代码,并向可能性较小的编码模式分配较长的代码。如上所述,MODE字段在帧头中发送。
编码器和解码器在逐帧的基础上在编码模式之间切换。例如,编码器和解码器分别如图10和11中第一实现的编码器和解码器在跳过宏块编码模式之间切换一样在编码模式之间切换。可选地,编码器和解码器使用其它技术和/或在其它基础上进行切换。
如果模式不是原始模式,则发送一位的INVERT字段。在可能执行条件倒置的若干个编码模式中,INVERT字段指示编码器中位平面中的位是否在编码发生之前被倒置以及解码器中的解码输出是否被倒置。当位平面中的大多数位等于1时,INVERT字段为1,当位平面中的大多数位等于0时,INVERT字段为0。当出现较多的0时,编码器采用若干种消耗更少位的编码模式(如普通-2和普通-6)。如果要编码的位平面中1比0多,则编码器可以倒置位平面来增加位平面中0的比例并增加用于节省位的潜力。其它模式(如差分-2和差分-6)使用INVERT的值来计算预测器位平面。因此,在某些编码模式中,解码器上最终的重建位平面取决于INVERT。
DATABITS字段是包含重建位平面所需要的信息的VLC码元的熵编码流,在给定MODE和INVERT字段的情况下。
C.编码模式
在第二实现中,编码器以七种不同编码模式的任一种对二进制信息(例如,跳过宏块信息)进行编码:行跳过模式、列跳过模式、普通-2模式、普通-6模式、差分-2模式、差分-6模式以及原始模式。解码器对七中编码模式的任一种执行相应的解码。每一模式在下文详细描述。
可选地,编码器和解码器使用其它和/或另外的编码模式。
                       1.行跳过和列跳过模式
行跳过编码模式通过当行中每一二进制码元是一个特定值时用单个位来表示位平面中的一行来节省位。例如,编码器在位平面中用0来表示跳过宏块,并使用以单个位来表示全0行的行跳过编码模式。因此,当宏块的全部行都跳过时,编码器节省了位。解码器执行相应的解码。
在第二实现中,全零行用设为0的一位来指示。当该行不是全为0时,一位指示符设为1,跟随其后的是按顺序排列的包含该位平面行的colMB位。行以自然顺序扫描。
同样地,对于列跳过模式,如果整个行为零,则发送一个0位。否则,则发送1,跟随其后的是按顺序排列包含整个列的rowMB位。列以自然顺序扫描。
对以差分-6和普通-6模式(下文描述)对剩余的行和/或列的编码,应用相同的逻辑。一个一位的标志指示行或列是否全为0。如果不是,则使用每码元一位来发送整个行或列。
当编码器对主要包含1的位平面编码时,行跳过和列跳过编码通常效率较低,因为行/列全部包含0的概率较小。然而,编码器能够在这一情况下在位平面上执行倒置来增加0的比例并潜在地提高位节省。由此,当通过INVERT位来指示条件倒置时,编码器在平铺位平面并对其进行编码之前,对位平面进行预倒置(pre-invert)。在解码器端,通过对最终输出执行倒置来实现条件倒置。(对差分-2和差分-6模式不执行该步骤)。
图19示出了一种用于以行跳过模式在位平面中对二进制信息进行编码的技术(1900)。编码器首先检查位平面的倒置是否适合,如果是,则执行倒置(1910)。编码器然后检查位平面中的一行来看行中的每一位是否等于0(1920)。如果是,则编码器将该行的指示符位设为0(1930)。如果行中任一位不为0,则编码器将该行的指示符位设为1,并用一位来对该行中每一位进行编码(1940)。当编码器完成对位平面中所有行的编码之后(1950),位平面编码结束。
对行跳过编码模式,解码器执行相应的解码。
图20示出了一种用于以列跳过模式对二进制信息进行编码的技术(2000)。编码器首先检查位平面的倒置是否适合,如果是,则执行倒置(2010)。编码器然后检查位平面中的一列来看该列中的每一位是否等于0(2020)。如果是,则编码器将该列的指示符位设为0(2030)。如果列中任一位不为0,则编码器将该列的指示符位设为1,并用一位来对该列中的每一位进行编码(1940)。当编码器完成位平面中每一列的编码之后(1950),位平面编码结束。
对列跳过编码模式,解码器执行相应的解码。
                         2.普通-2模式
编码器使用普通-2模式来对位平面中多个码元进行共同编码(例如,通过使用矢量哈夫曼或其它可变长度编码模式)。编码器使用可变长度代码对二进制码元对进行编码。解码器执行相应的解码。
如果rowMB×colMB是奇数,则将第一个码元编码为单个位。随后的码元以自然扫描顺序成对地进行编码。使用VLC表来对码元对进行编码以降低总熵。
当通过INVERT位指示条件倒置时,编码器在成对地对位平面进行编码之前对其进行预倒置。在解码器端,通过对最终输出执行倒置来实现条件倒置。(当使用差分-2模式时,在这一步骤不执行条件倒置)。
图21示出了一种用于以普通-2模式对二进制信息进行编码的技术(2100)。编码器执行初始检查来确定位平面倒置是否适合以提高编码效率,如果是,执行倒置(2110)。编码器然后确定要编码的位平面是否具有奇数个二进制码元(2120)。如果是,则编码器将第一个码元用单个位来编码(2130)。编码器然后使用可变长度代码来对码元对进行编码,使用较短的代码来表示可能性较大的对,使用较长的代码来表示可能性较小的对(2140)。当完成对码元对的编码时(2150),编码结束。
对普通-2模式,解码器执行相应的解码。
                          3.普通-6模式
编码器也使用普通-6模式来对位平面中多个二进制码元进行共同编码(例如,使用矢量哈夫曼或其它可变长度编码模式)。编码器平铺以六个二进制码元组成的组,并用可变长度代码来表示每一组。解码器执行相应的解码。
在普通-6模式(以及差分-6模式)中,位平面以六个像素为一组进行编码。这些像素分组成2×3或3×2的平铺块。使用一组规则最大化地对位平面进行平铺,剩余的像素使用行跳过或列跳过模式的变异来进行编码。
在第二实现中,当且仅当rowMB为3的倍数且colMB不是3的倍数时使用3×2“垂直”平铺块。否则,则使用2×3“水平”平铺块。图22、23和24示出了普通-6编码模式中平铺的帧的示例。图22示出了帧(2200),具有3×2垂直平铺块以及将使用列跳过模式进行编码的一个码元宽度的剩余(以阴影部分显示)。图23示出了帧(2300),具有2×3水平平铺块以及将要使用行跳过模式进行编码的一个码元宽度的剩余。图24示出了帧(2400),具有2×3水平平铺块以及将要使用行跳过和列跳过模式进行编码的一个码元宽度的剩余。
尽管在该示例中使用3×2和2×3平铺块,在其它实施例中,可以使用不同的平铺块构造和/或不同的平铺规则。
首先对6元素平铺块进行编码,跟随其后的是用列跳过和行跳过编码的线性平铺块。如果数组尺寸是3×2或2×3的倍数,则后面的线性平铺块不存在,位平面能完美地平铺。使用VLC表来对6元素矩形平铺块进行编码。
当通过INVERT位来指示条件倒置时,编码器在对位平面进行平铺和编码之前对其进行预倒置。在解码器端,通过对最终输出执行倒置来实现条件倒置。(当使用差分-6模式时,在这一步骤不执行条件倒置。)
图25示出了一种用于以普通-6模式对二进制信息进行编码的技术(2500)。编码器执行初始检查来确定位平面的倒置是否适合以提高编码效率,如果是,则执行倒置(2510)。编码器然后检查位平面的行数是否为3的倍数(2520)。如果行数不是3的倍数,则将位平面中的码元分组为2×3的水平平铺块(2530)。
如果行数为3的倍数,则编码器检查位平面的列数是否为3的倍数(2540)。如果列数为3的倍数,则编码器将位平面中的码元分组为2×3的水平平铺块(2530)。如果列数不是3的倍数,则编码器将码元分组为3×2垂直平铺块(2550)。
在将码元分组成3×2或2×3的平铺块之后,编码器使用如六维矢量哈夫曼编码技术或其它编码技术来对以6平铺的码元组进行编码(2560)。编码器使用上述行跳过和/或列跳过编码技术来对任何剩余的未平铺码元进行编码(2570)。
对普通-6编码模式,解码器执行相应的解码。
在其它实施例中,编码器使用其它技术来对平铺和未平铺的码元进行编码。
                      4.差分-2和差分-6模式
差分编码模式,如差分-2或差分-6模式,通过基于要编码的位平面的预测器首先对要编码的位平面生成差分(或剩余)位的位平面来对位平面进行编码。然后使用如普通-2或普通-6模式来对剩余位平面进行编码,而不需要条件倒置。
在第二实现中,差分-2和差分-6模式使用以diff操作来表示的差分编码。如果使用了任一差分模式,首先通过检查位平面b(i,j)的预测器(i,j)来生成差分位的位平面,预测器由以下因果操作来定义:

换言之,给定二进制码元b(i,j)的预测器(i,j)是紧靠b(i,j)左边的二进制码元,下列特殊情况除外:
1)如果b(i,j)在位平面的左上角,或其上方码元b(i,j-1)不等于左边二进制码元b(i-1,j),则预测器b(i,j)等于INVERT的值;或者
2)如果1)不适用并且b(i,j)位于最左列(i=0),则预测器(i,j)为上方二进制码元b(i,j-1)。
在编码器端,diff操作根据以下来计算剩余位平面r:
r(i,j)=b(i,j)(i,j)                              (2)
其中是异或操作。使用普通-2或普通-6模式对剩余位平面进行编码,而不需要条件倒置。
在解码器端,使用适当的普通模式来重新生成剩余位平面。随后,使用剩余位来将原始位平面作为二进制2-D差分重新生成:
b(i,j)=r(i,j)(i,j)                               (3)
图26示出了一种用于以差分编码模式对二进制信息进行编码的技术(2600)。编码器对位平面计算预测器(2610),如等式(1)所示。然后编码器如通过在位平面及其预测器上执行XOR操作来计算剩余位平面(2620)。然后编码器对剩余位平面进行编码(例如,用普通-2或普通-6模式)(2630)。
图27示出了一种用于对以差分编码模式编码的二进制信息进行解码的技术(2700)。解码器根据用于对剩余位平面进行编码的模式(例如,普通-2或普通-6模式)使用适当的解码技术对剩余位平面进行解码(2710)。解码器也使用编码器中使用的同一技术对位平面计算预测器(2720)。然后解码器如通过在剩余位平面及其预测器位平面上执行XOR操作来重建原始位平面(2730)。
                           5.原始模式
除原始模式之外的所有模式在帧级对位平面进行编码,要求在编码过程中第二次通过该帧。然而,对低等待时间情况,第二次通过会增加不能接受的延迟(例如,由于帧头和宏块层信息的发送被延迟,直到遇到帧中的最后一个宏块为止,这是由用于对位平面进行编码的花费时间所引起的)。
原始模式使用传统的方法,在比特流的同一位置以每二进制码元一位对位平面进行编码,作为宏块级信息的剩余。尽管码元的宏块级编码其本身不是一种新概念,然而将码元的编码从帧级切换到宏块级能够替代帧级编码提供低等待时间。
图28示出了一种用于对低等待时间应用选择性地以原始编码模式对宏块的二进制信息进行编码的技术(2800)。首先,编码器检查是否使用原始模式来对二进制信息进行编码(2810)。如果是,则编码器对宏块在宏块级进行位的编码(2820),并检查该宏块是否是帧中的最后一个宏块(2830)。如果该宏块不是帧中的最后一个宏块,则编码器继续对下一宏块在宏块级进行位的编码(2820)。
如果编码器不使用原始编码模式,则编码器对帧中的各宏块在帧级进行位平面的编码(2840)。当完成对帧中的宏块的编码时(2850),编码器结束对帧的编码。
尽管该技术(2800)示出了在逐帧基础上的切换模式,编码器可选地在其它基础上进行切换。
参考各种实施例描述并说明了本发明的原理之后,可以认可,在不背离这些原理的情况下可以在方案和细节上对各种实施例进行修改。应当理解,这里描述的程序、进程或方法并非相关或局限于任一特定的计算环境类型,除非另外指明。可以依照这里描述的指导结合各种类型的通用或专用计算环境使用或执行操作。以软件形式示出的实施例的元素可以以硬件来实现,反之亦然。
考虑到可以应用本发明的原理的许多可能的实施例,对本发明要求权利,所有这类实施例都包含在所附权利要求及其等效权利要求的范围和精神之内。

跳过宏块编码.pdf_第1页
第1页 / 共50页
跳过宏块编码.pdf_第2页
第2页 / 共50页
跳过宏块编码.pdf_第3页
第3页 / 共50页
点击查看更多>>
资源描述

《跳过宏块编码.pdf》由会员分享,可在线阅读,更多相关《跳过宏块编码.pdf(50页珍藏版)》请在专利查询网上搜索。

描述了各种用于对二进制信息(如跳过宏块信息)进行编码和解码(如在视频编码器/解码器中)的技术和工具。在一些实施例中,二进制信息在位平面上排列,并且该位平面在图像/帧层上编码。编码器和解码器处理二进制信息,并且在一些实施例中,切换编码模式。例如,编码器和解码器使用普通、行跳过、列跳过或差分模式,或其它和/或另外的模式。在一些实施例中,编码器和解码器将跳过宏块定义为其运动等于其因果预测的运动并且具有零。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1