视频图片的全局运动补偿 【相关申请的交叉引用】
本专利申请要求2001年11月30日提交的序号为60/334979的共同未决的美国临时专利申请的优先权的权益,该申请的完整公开通过引用结合于本文中。
【发明背景】
本文所公开并要求其权益的发明一般涉及用于压缩视频信号数据的方法。较为具体地讲,本发明涉及采用全局运动补偿的上述类型的方法。更具体地讲,本发明地一些实施例涉及上述类型的方法,其中宏块被分组为条带,而全局运动补偿信息通过编码条带来传送。
预计本发明的实施例可与标准清晰度数字电视(SDTV)和高清晰度数字电视(HDTV)信号的电视解码器结合使用,作为电视会议系统的一部分,或者在包括PC、膝上型电脑等的计算机中用于对视频解码。这些实施例还可用于诸如移动电话和PDA之类的移动装置中,作为数字影院投影仪中解码器的一部分,以及用于录像机、播放机和家庭娱乐系统中。但是,并不是要将本发明限制于这些实施例。
未压缩形式的数字视频信号通常包含大量数据。但是,实际需要的信息内容因高时空相关性而少得多。因此,视频压缩或编码用来减少数据量,这是某些任务实际需要的,例如存储视频信号或者为了把它们从一个位置传送到另一个位置。在编码过程中,可通过进行所谓的运动补偿预测来利用时间冗余度,其中根据前一帧的相似区域来预测一个视频帧的区域。也就是说,可能某一帧的一些部分与前一帧的相应部分相比,包含极少变化或无变化。因此,这些区域可被忽略或不编码,以便使压缩效率最大。另一方面,如果没有找到与前一帧的良好匹配,则可用帧内预测来降低空间冗余度。利用成功的预测方案,预测误差会较小,并且需要编码的信息量会大大减少。此外,通过例如利用离散余弦变换把像素转换到频域,空间相关性提供效率方面的进一步提高。
本文中,术语“图片”和“帧”可交替用于表示视频序列中的一帧图像数据。
高的时间相关性是视频的特征。因此,优化视频压缩的许多工作集中于对帧的区域进行精确时间预测。预测越好,则对差异编码所需的比特就越少。预测本身被编码为关于如何转换、甚至缩放或旋转先前编码区域的指令。如果帧的许多区域具有相似的运动、例如平移或缩放,则可从对全局运动的单独编码中得到压缩效率的进一步提高,然后再应用于帧的全部或部分区域。这种技术通常称作全局运动补偿(GMC)。
但是,在采用全局运动补偿时不应该针对整个帧,这存在几个原因。第一个原因是差错恢复力。为了防止从图像的受损部分进行差错传播,预测通常被限制在称作条带的有界段中。因此,帧的各条带对于全局运动信息还应该是自含的。另一个原因是全局运动补偿可能不是对于整个帧都相关,即使帧的较小部分可能从单独应用于各部分的全局运动补偿中受益。
静止图像编码与运动补偿
典型的视频编解码器,诸如ITU-T建议H.261和H.263、MPEG-1第2部分、MPEG-2第2部分(H.262)或MPEG-4第2部分,通过对视频序列逐帧地按顺序编码来工作。帧被进一步分为若干块,这些块被逐行按顺序编码,从左上角开始并在右下角结束。典型的块大小为覆盖16×16亮度像素的宏块(MB)。
序列中的第一帧被作为静止图像来编码,称作“帧内编码的”帧。这种帧是独立的,并且与先前编码的帧无关。但是,它们不仅用于序列的开始,而且还可有利地用于视频突然变化的情况、如画面剪切,或者用于希望具有随机接入点、解码器可从该点开始解码而不需要对比特流的前一部分进行解码的情况。通常例如采用离散余弦变换以及量化的变换系数把帧内编码的宏块的像素值转换到频域,以便减小所得的比特流的大小。
相反,“帧间编码的”帧是作为相对于前一帧的运动补偿差异图像来编码的。通过利用已解码帧(重构帧)作为参考,视频编码器能够为各宏块发出一组运动矢量(MV)和系数的信号。运动矢量(一个或数个,取决于分割宏块的方式)通知解码器如何对参考帧的相应区域进行空间转换,以便对所考虑的宏块进行预测。这称作运动补偿。预测数据和原始数据之间的差异根据变换系数来编码。但是,不是帧间编码的帧的所有宏块都需要进行运动补偿。如果从参考宏块到当前宏块的变化较小,则以COPY模式对宏块进行编码,即本身未被编码,而是发出要复制的信号。参见ITU-T建议H.263的章节5.3.1的“编码宏块指示(COD)(1位)”,作为COPY模式实现的一个实例。另一方面,如果宏块差别很大,则最好是把它编码为帧内宏块。
H.263中的全局运动补偿
不是针对仅以块为基础的运动补偿,而是单独提取帧的全局运动并对各块与全局运动的偏差进行编码,这可能是有利的。在传递或变焦序列中,或者当大的对象在帧上移动时,整个运动信息可能通过这种方案保持在最小量。一种众所周知的技术是在帧间编码之前在编码过程中加入附加步骤。H.263的附录P“参考图片再抽样”提供了一种方法,用于在给定指定帧的角像素位移的四个位移矢量v00、vH0、v0V和vHV时对参考图片进行“扭曲(warping)”。图1说明参考帧,其中这些矢量分别从角像素8延伸。其它全部像素的位移通过这些矢量的双线性内插来给出,即:
v‾(x,y)=r‾0+(xH)r‾x+(yV)r‾y+(xH)(yV)r‾xy]]>等式(1)
其中(x,y)是像素的初始位置,H和V表示在参考帧中角像素的位置,以及
r0=v00
rx=vH0-v00
ry=v0V-v00
rxy=v00-vH0-v0V+vHV
关于这些公式实现的详细说明,参考建议H.263。当这种全局运动补偿用于后续帧或帧间时,利用上述内插逐个像素地对参考帧再抽样。已经执行再抽样之后,编码器可根据再抽样后的参考帧继续进行帧间编码。
MPEG-4第2部分中的全局运动补偿
在利用所谓S(GMC)-VOP的MPEG-4视频标准中也指定全局运动补偿。这里,就如H.263附录P中那样逐个像素地应用全局运动补偿。但是,仍然可在宏块级选择是否应该使用(内插的)全局运动补偿后的参考帧。
为H.26L建议的全局运动补偿
ITU-T目前正在制定新的视频编码标准、建议H.26L,它也可能作为ISO/IEC的称作MPEG-4 AVC(ISO/IEC 14496-10)的国际标准联合公开。对于帧和宏块,当前的H.26L标准遵循上述通用视频编码设计,其中通过图片标题以及随后的宏块对各图片编码。下面结合图8-9进一步讨论这个标准。
对视频帧使用全局运动补偿的一个明显缺点是针对整个帧所导致的差错恢复力和灵活性的损失。因此,如果对一个图片仅对全局运动矢量编码一次、例如在图片开始处,而比特流的这一部分在传输过程中丢失,则整个图片可能被损坏。因此,整个图片中的块的运动矢量无法被解码,并且必须被隐藏。这类错误也可能在时间上传播,因为下一个图片也可能是帧间图片,从而把受损图片用作参考。另一个问题、尤其是关于为H.26L标准建议的全局运动矢量编码(GMVC)设计的问题在于,无法指定帧的一些部分的不同全局运动。
发明概述
本发明通过对已经分割为若干条带的帧应用全局运动补偿来解决对帧采用全局运动补偿的上述问题。各个条带被当作独立单元来处理,它不把来自其本身之外的宏块的运动矢量用于预测。通过对各条带的全局运动矢量编码,该条带中的所有运动矢量能够以独立的方式被构造或解码。此外,全局运动矢量能够以不同方式应用于各个条带,或者可参照整个帧来重复全局运动矢量。通过发出各条带的全局运动补偿的信号,可实现全局运动补偿的优点,而不会忽视差错恢复力。另外,可提高压缩效率,因为本发明使全局运动能够更好地适合较小区域。
更有利的是,本发明为全局运动补偿引入一种新的模式,称作隐式全局运动补偿(IGMC)。这种模式可用作许多编码情况中的工具,它要求比COPY模式更有用的MB模式,以便使运动矢量所需的总比特数最少。在COPY模式中,运动矢量始终为零。相反,IGMC采用被预测的隐式运动矢量。
本发明能够针对一种与通过把视频帧分为块序列得到的图像块配合使用的视频数据压缩方法。在一个优选实施例中,这些块是包含16×16(亮度)像素的宏块,其中若干可能的宏块编码模式之一是隐式全局运动补偿(IGMC)模式。这种模式用于从前一帧中复制处于同一位置的块的像素,该块被按照从当前帧的相邻图像块预测的运动矢量来移位。
本发明的另一个部分能够针对一种与通过把视频帧分割为条带序列得到的条带配合使用的视频数据压缩方法,其中各个条带包括多个图像块。该方法包括以下步骤:对各个条带的数据编码以产生相应的编码条带;把信号施加到各个编码条带,以便指明全局运动补偿(GMC)是否要用于重构其相应的原始条带;以及如果是,则通过编码条带包含GMC信息。最好是可以仅采用包含在条带中的GMC信息来重构编码条带的各图像块的运动矢量。在一个实施例中,编码条带中至少两个包含相同的GMC信息。在另一个实施例中,编码条带中至少两个包含不同的GMC信息。有用的是,帧的各个条带所包含的GMC信息包括分别被引用到视频帧的全局运动矢量。
在一个优选实施例中,包含在给定编码条带中的GMC信息包括或表示一组编码全局运动(GM)矢量。该组GM矢量可与双线性内插共同用于计算包含在给定编码条带中的各像素的全局运动补偿。或者,GM矢量可与双线性内插共同用于计算包含给定编码条带的4×4像素块的阵列中各块的全局运动补偿。
在又一个实施例中,特定的编码条带具有宏块复制模式,它通过分别复制位于从视频帧得到的全局运动补偿后的参考帧中的相应图像块来发出关于特定编码条带的图像块的编码的信号。
附图简介
图1是示意图,说明根据H.263视频压缩标准的帧的全局运动补偿。
图2是示意图,说明根据本发明的实施例、用于对视频信息进行压缩、传送和解码的简化系统。
图3是框图,说明图2所示系统的压缩器的某些组件。
图4是示意图,说明来自视频序列的帧划分为分别包含宏块的条带。
图5是示意图,说明与宏块的各个像素块相关的运动矢量。
图6-7是用于说明本发明的实施例的示意图,各图表示出包含宏块序列的条带。
图8是示意图,表示在图片和宏块级的H.26L设计的比特流语法。
图9是示意图,表示在H.26L中在图片和宏块级的所建议的全局运动补偿。
图10是示意图,给出包含4×4宏块的条带,用于说明涉及H.26L视频压缩标准的本发明的实施例。
优选实施例的详细说明
参照图2,说明视频信息源10、如录像机。包含一系列视频帧的信息被耦合到视频编码器或压缩器12,视频编码器或压缩器12根据本发明的一个实施例来压缩连续数据帧,如本文所述。表示压缩数据的比特流通过通信信道22从发射机14发送到接收机16,其中通信信道22可以是无线通信信道。所接收的数据被加到解码器18以恢复视频信息。
参照图3,说明用于处理通过把一帧分为如图4所示的视频帧序列而得到的16×16像素宏块20的压缩器12的某些传统组件。图3所示的组件包括诸如离散傅立叶变换模块之类的变换模块24、量化器26以及二进制编码器28。
如本领域所知的那样,变换模块24接收整数阵列,其中包含宏块20的像素的相应灰度级(亮度)和色度级(色度)。模块24把变换应用于像素级,以便产生变换系数的输出阵列。如同样众所周知的那样,量化器26按照相应步长或量化等级来划分各变换系数。量化器26的输出被送往二进制编码器28,二进制编码器28产生相应的数字比特流30,用于通过信道22传输。
现在参照图4,图中表示了包括视频序列34中的帧之一的帧32。图4还表示了被分割为多个条带36a-d的帧32,其中各条带36a-d包含宏块38的序列。各宏块包含来自帧32的像素阵列。如以下更详细说明的那样,根据本发明的实施例,条带36可包含与其宏块38和/或与帧32有关的GMC信息。
图4还更详细地说明条带36a,强调在帧的任何宏块之后会出现条带边界。条带36b表示为包括位于帧的若干行37中的宏块。此外,条带36b从条带的左帧边界以后几个宏块处开始,并在条带的最后行上的右帧边界之前几个宏块处结束。这样,一部分条带跨越不止一行37,而且一行37可包含不止一个条带,例如最下面一行包含条带36c和36d。
参照图5,前一帧的像素块40a’-40d’用于预测当前帧的块40a-40d。运动矢量42a-42d描述这样的位置,来自第一帧的像素应当从该位置被复制到当前帧的块40a-40d。这说明,通过利用先前解码的帧以及运动矢量42a-42d,可方便地确定或重构像素块40a-40d。
参照图6,图中给出通过对例如图4所示的条带36b之类的条带进行编码所产生的编码条带40。编码条带40包含宏块或图像块42,且带有标题44。在本发明的一个实施例中,例如通过把信号包含在标题44中,可把信号应用于编码条带40,从而指明全局运动补偿(GMC)是否要用于重构相应的原始条带36。如果GMC要用于条带构造中,则标题44还包含GMC信息。这种GMC信息有用地包含或表示运动矢量信息,根据该信息,条带40的各块42的运动矢量能够在解码器上被重构。这样,条带40中的所有运动矢量只能从包含在条带40中的信息导出。
在另一个有用的实施例中,上述从视频帧32的各条带36所编码的全部条带40包含相同的GMC信息。例如,GMC信息可包含一组经编码的GM矢量r0、rx、ry和rxy,如以上结合图1所述。这些矢量被引用到整个扭曲的视频帧,如图1所示,并且是根据上述关系从这里所示的角像素位移矢量导出的。通过在各编码条带中重复这个信息,显著提高了恢复力,因为该信息即使当一部分条带在传输信道中丢失时也会到达解码器。根据上述等式(1),编码GM矢量可与双线性内插结合以用于计算包含在条带40中的各像素的全局运动补偿。
在另一个实施例中,各个编码条带40具有包含全局运动矢量r0、rx、ry和rxy的GMC信息,其中所述矢量被引用到条带的边界框而不是整个帧。再参照图6,图中给出条带40的边界框46,包括可包含该条带的最小矩形。图6说明在边界框46的各个角上的角像素46a-d,其中的矢量v00、vH0、v0V和vHV在这里指定边界框的各个角像素而不是整个帧的位移。可通过以上结合H.263关于整个帧的角像素位移所述的相同关系,根据角像素矢量来确定四个矢量r0、rx、ry和rxy。根据为边界46编码的四个矢量,按照等式(1),利用双线性内插,可方便地计算包含在条带40中的各像素的全局运动补偿。显然,在本实施例中,不同的编码条带40将包含不同的GMC信息。
参照图7,图中再次表示了具有边界框46的编码条带40。但是,只表示了两个全局运动矢量48a和48b,它们被编码为条带40的GMC信息。这些矢量分别表示边界框46的最左和最右像素。从其中可确定条带40的各个像素的全局运动补偿。对于沿垂直轴的像素,全局运动矢量是相同的,而沿水平轴,它们是从两个编码全局运动矢量48a和48b线性内插的。
在另一个实施例中,条带中的全部GMC信息可在图片或帧级上、例如在帧32的标题中反复。
参照图8,图中表示出图片和宏块级的H.26L标准的比特流语法。在H.26L中,帧间的宏块具有若干模式之一,目前包括7个帧间模式(16×16、16×8、8×16、8×8、8×4、4×8和4×4)以及4×4的1个帧内模式和16×16的23个帧内模式。这里,N×M表示宏块所分割成的块的大小。对于帧间MB,各块具有MV,而对于帧内MB,各块被当作一个单元来预测。此外,还有一个COPY模式,它不采用任何MV和系数。这是要发信号的最低成本模式。实际上,游程编码用来发出具有一个码字的多个复制(忽略)宏块的信号。
已经对H.26L标准提出了全局运动补偿。它与用于H.263的附录P的GMC的相似之处在于定义全局运动矢量的方式。但是,主要差别在于,不对参考图片再抽样,而且内插的运动矢量不应用于像素而是应用于像素块。左上像素为(x,y)的图像块的运动矢量可以导出为
v‾(x,y)=r‾0+(xH-4)r‾x+(yV-4)r‾y+(xH-4)(yV-4)r‾xy]]>等式(2)
其中,如同H.263附录P,r0、rx、ry和rxy与v00、vH0、v0V和vHV相关。但是,这些运动矢量应用于由4×4像素组成的图像块。具体来讲,矢量v00、vH0、v0V和vHV分别应用于其左上像素处于(0.0)、(H-4.0)、(0,V-4)和(H-4,V-4)的帧的角块。
建议仅对图片的某些宏块模式应用H.26L的全局运动矢量编码(GMVC)。不管它是否被使用,都通过标志(GMVC标志)在图片标题中为各帧间编码的帧发出信号。如果GMVC被启用,则四个GMV r0、rx、ry和rxy跟随该标志。每当在宏块中发出利用GMVC的模式的信号,它们均被用于当前图片。所建议的语法如图9所示。
在已启用GMVC的帧中的宏块的宏块模式具有两种新的模式。COPY模式由GMVC_COPY取代,另外一个模式称作GMVC_16。两种模式均为帧间4×4模式,即宏块被分割成4×4像素的图像块。各块的运动矢量由内插GMV给出,例如通过上式给出。对于GMVC_COPY,没有对任何系数进行编码,即运动补偿参考图片被复制,而对于GMVC_16,也加入了系数。
参照图10,图中表示了包含宏块52的编码条带50,其中各宏块52根据H.26L标准被分割成4×4图像块54。在图10中,内插GM矢量应用于4×4块54而不是应用于像素。再参照图10,图中表示了具有指定其位移的相关全局运动矢量56a-d的角块54a-d。角块54a-d定义包含条带50的矩形边界框58的各个角。运动矢量56a-d由包含在条带50的标题60中的GMC信息表示。根据与GM矢量56a-d有关的信息,可通过按照上式(2)的线性内插为条带50的各个4×4块54计算全局运动补偿。
在另一个实施例中,可根据指定包含在边界框58中的最左和最右的4×4块的位移的两个编码GM矢量(未示出)来计算各图像块54的全局运动补偿。在又一个实施例中,各块54的全局运动补偿可从包括标题60中含有的GMC信息的单个编码GM矢量中导出。
在其中条带是启用GMC的、即包含指明GMC信息的信号的另一个实施例中,信息包含COPY模式信号。响应关于条带的特定宏块的这个信号,编码器将从全局运动补偿后的参考图片中、即从如图1所示的扭曲帧中复制相应的宏块。在本实施例中,与宏块有关的系数也可以或者也可以不被编码。
在称作隐式全局运动补偿(IGMC)的一个实施例中,没有通过编码条带40发送任何明确的运动矢量。相反,宏块COPY(又称作SKIP)模式被重新解释为没有系数或明确编码的运动矢量的帧间宏块模式。根据相邻块来预测用于对宏块进行运动补偿的运动矢量。更具体来讲,在把本实施例应用于当前帧中的特定图像块时,从前一帧中复制由运动矢量移位的前一帧中处于同一位置的块。根据当前帧中的相邻块、即从相邻或接近特定图像块的块来预测运动矢量。在对图像块编码时,IGMC模式可用来取代COPY模式。
作为IGMC实施例的另一个特征,表示编码图像块的比特流可包含语法元素,该语法元素可被解释为表示IGMC模式或者COPY模式。可通过其它代码元素隐含地发出IGMC和COPY模式之间的转换的信号。或者,可通过码字明确地发出这种转换的信号。
在这个实施例的一个修改方案中,对各条带发送一个额外的运动矢量,用于预测条带的第一帧间块。
显然,根据上述理论,本发明的其它许多修改和变更是可行的。因此要理解,在所公开的概念的范围内,可以不按照具体说明来实施本发明。