处理视频图像的方法

文档序号:7521786阅读:137来源:国知局
专利名称:处理视频图像的方法
技术领域
描述了用于在视频编码/解码应用中对二进制信息进行编码/解码的技术和工具。例如,视频编码器对跳过宏块信息进行编码。
背景技术
数字视频消耗大量的存储和传输容量。典型的原始数字视频序列每秒包括15或 30帧。每一帧能够包括几万或几十万个像素(也称为pel)。每一像素表示图像的一个微小元素。在原始的形式中,计算机通常用M比特来表示一个像素。由此,典型的原始数字视频序列的每秒的比特数,或比特率可以是500万比特/秒或更高。大多数计算机和计算机网络缺乏处理原始数字视频的资源。鉴于此原因,工程师使用压缩(也称为译码或编码)来降低数字视频的比特率。在视频的质量不受损害但比特率的降低受视频的复杂性限制的情况下,压缩是无损的。或者,在视频的质量受损害但比特率的降低更显著的情况下,压缩是有损的。解压缩倒转了压缩。一般来说,视频压缩技术包括帧内压缩和帧间压缩。帧内压缩技术压缩单个的帧, 通常称为I帧或主帧。帧间压缩技术在压缩帧时参考前帧和/或后帧,通常称为预测帧、P 帧或B帧。微软公司的Windows Media Video,版本7 [ “WMV7”]包括视频编码器和视频解码器。WMV7编码器使用帧内和帧间压缩,WMV7解码器使用帧内和帧间解压。A. WMV7的帧内压缩

图1说明了 WMV7编码器中对主帧中像素的块(105)的基于块的帧内压缩(100)。 块是一组像素,例如,像素的8 X 8排列。WMV7编码器将主视频帧拆分为8 X 8的像素块,并对各单个块,如块(105)应用8X8的离散余弦变换["DCT"] (110)。DCT是一种频率变换, 将8X8的像素(空间信息)块转换为8X8的DCT系数块(115),即频率信息。DCT操作本身是无损或接近无损的。然而,与原始像素值相比较,DCT系数对编码器来说能更有效地用来压缩,因为大多数重要信息集中在低频系数(常规地位于块(115)的左上角)中,并且许多高频系数(常规地位于块(11 的右下角)的值为零或接近零。编码器然后将DCT系数量化(120),得到一个8X8的量化DCT系数(125)块。例如,编码器对每一系数应用统一标量量化步长,类似于将每一系数除以同一值并舍入成整数。例如,如果一个DCT系数值是163并且步长为10,则量化DCT系数值为16。量化是有损的。重建的DCT系数值将是160,而非163。由于低频DCT系数往往具有较大的值,量化会导致精度损耗,但不会完全丢失系数的信息。另一方面,由于高频DCT系数的值往往为零或接近零,对高频系数的量化通常导致零值的邻接区域。此外,在某些情况下,高频DCT系数比低频DCT系数更粗糙地量化,导致高频DCT系数的精度/信息的大量损耗。编码器然后准备8X8的量化DCT系数(12 块来进行熵编码,这是一种无损压缩的形式。确切的熵编码类型根据系数是否是DC系数(最低频率)、顶行或左列中的AC系数 (其它频率)或另一 AC系数而不同。编码器将DC系数(126)编码为对相邻的8X8块的DC系数的差分,该相邻块是正在编码的块的相邻的(如,上方或左边)先前已编码的块。(图1示出了帧内相邻块(135) 位于正在编码的块的左边。)编码器对该差分进行熵编码(140)。熵编码器能够将AC系数的左列或顶行编码为对相邻的8 X 8的块的相应列或行的差分。图1示出将AC系数的左列(127)编码为对相邻(左边)块135的左列(137)的差分。差分编码提高了差分系数具有零值的机率。剩余的AC系数来自量化DCT系数块(125)。编码器将8X8的预测的量化AC DCT系数块(145)扫描(150)为一维数组(155), 然后使用行程编码(160)的一种变异来对扫描的AC系数进行熵编码。编码器从一个或多个游程/级/最后(rim/level/last)表(165)中选择熵码并输出该熵码。主帧对比特率比预测帧起到更大的作用。在低或者中比特率应用中,主帧经常是性能的关键瓶颈,因此主帧的有效压缩是关键的。图2说明了如图1所示的帧内压缩的缺点。特别地,对主帧的块之间的冗余的充分利用被限制在对来自块Ο ο)的左边邻块(220)或上方邻块Q30)的频率系数的子集(例如,DC系数和AC系数的左列(或顶行))的预测上。DC系数表示块的平均值,AC系数的左列表示块的行平均值,顶行表示列平均值。事实上,如WMV7中的对DC和AC系数的预测限制了向左面(或上方)邻块的行范围(或列范围)平均信号的外插。对于左块O20)的一个特定的行021),左块Q20)的左DCT系数列中的AC系数用来预测块O10)的整个相应行 011)。B. WMV7中的帧间压缩WMV7编码器中的帧间压缩使用基于块的运动补偿预测编码,随后为剩余误差的变换编码。图3和4说明了 WMV7编码器中对预测帧的基于块的帧间压缩。特别地,图3说明了对预测帧(310)的运动估计,图4说明了对预测帧的已估计运动的块的预测剩余的压缩。WMV7编码器将一个预测帧拆分为8X8的像素块。一组4个8X8的块组成宏块。 对每一宏块,执行运动估计进程。运动估计近似与参考帧,如先前被编码的预测帧相关的像素宏块的运动。在图3中,WMV7编码器计算预测帧(310)中的宏块(315)的运动矢量。为计算该运动矢量,编码器在参考帧(330)的搜索范围(33 中进行搜索。在搜索范围(335) 内,编码器将来自预测帧(310)的宏块(31 与不同候选宏块进行比较,来找出较佳匹配的候选宏块。编码器能够在搜索范围(33 中对候选块每一像素或每1/2像素进行检查,取决于编码器的所期望的运动估计分辨率。其它视频编码器以其它增量进行检查,如每1/4 像素。对于一个候选宏块,编码器检查预测帧(310)的宏块(31 和候选宏块之间的差异以及对该宏块进行运动矢量编码的成本。当编码器找到较佳匹配的宏块之后,块匹配进程结束。编码器输出匹配宏块的运动矢量(已被熵编码),使得解码器能够在解码过程中找到匹配的宏块。当对预测帧(310)进行解码时,解码器使用运动矢量,利用来自参考帧(330) 的信息来计算宏块(315)的预测宏块。对宏块(315)的预测很少是理想的,因此编码器通常对预测宏块和宏块(31 其本身之间8X8的像素差异块(也称为误差或剩余块)来进行编码。图4说明了 WMV7编码器中对已进行运动估计的块进行误差块035)的计算和编码。误差块(43 是预测块(41 和原始当前块(42 之间的差异。编码器对误差块(435) 应用DCT(440),得到8X8的系数块045)。与像素值的DCT系数的情况相比,误差块(435) 的重要信息更显著得多地集中在低频系数(常规地位于块G45)的左上角)中,许多高频系数的值为零或接近零(常规地位于块G45)的右下角)。编码器然后量化(450) DCT系数,得到8 X 8的量化DCT系数块(45 。量化步长是可调节的。再一次,由于低频DCT系数往往具有较大的值,量化导致精度的损耗,但未完全损耗系数的信息。另一方面,由于高频DCT系数的值往往为零或接近零,高频系数的量化导致零值的邻接区域。另外,在某些情况下,高频DCT系数比低频DCT系数更粗糙地量化,导致高频DCT系数的精度/信息的更大损耗。编码器然后准备8X8的量化DCT系数块(455)用于熵编码。编码器将8X8的块 (455)扫描(460)为具有64个元素的一维数组065),使得系数一般从低频到高频地排列, 这通常令零值位于最后。编码器使用行程编码(470)的一个变异对扫描的系数进行熵编码。编码器从一个或多个游程/级/最后表G75)中选择熵码并输出该熵码。当宏块的运动矢量为零(即没有运动),并且对该宏块没有发送剩余块信息,编码器对该宏块使用1比特的跳过宏块标志。对多种视频内容(如,低运动和/或低比特率视频)来说,这通过避免运动矢量和剩余块信息的发送降低了比特率。编码器将宏块的跳过宏块标志与该宏块的其它信息一起放置在输出比特流的宏块层。图5示出了帧间编码块的解码进程(500)。由于DCT系数的量化,重建的块(575) 与相应的原始块不相同。该压缩是有损的。在图5的概述中,解码器使用可变长度解码和一个或多个游程/级/最后表(515) 对已经过熵编码的表示预测剩余的信息进行解码(510,520)。解码器将储存已进行熵解码的信息的一维数组(525)逆扫描为二维块(535)。解码器对数据进行反量化和反离散余弦变换(同时进行,540),得到重建的误差块( 。在一单独的路径中,解码器使用对参考帧的位移的运动矢量信息(55 来计算预测块(565)。解码器将预测块(56 和重建的误差块(545)组合(570)来组成重建块(575)。当解码器接收到宏块的跳过宏块标志时,解码器跳过对该宏块的预测计算和剩余块信息解码。取而代之的是,解码器使用参考帧中宏块位置的相应像素数据。原始和重建帧之间的变化量被称为失真,对帧进行编码所需要的比特数被称为率。失真量一般说来与率成反比。换言之,用较少的比特来对帧进行编码(较大压缩)将导致较大的失真,反之亦然。视频压缩模式的目的之一是试图改进率-失真-换言之,试图采用较少的比特来达到同样的失真(或使用相同的比特来达到较低的失真)。尽管WMV7中使用的跳过宏块标志对多种视频内容来说通常能够降低比特率,然而在某些情况下却远非最佳。在许多情况下,未能充分利用从宏块到宏块的跳过宏块标志中的冗余,例如,当跳过宏块成群地出现在图像中时。同样,WMV7在跳过宏块时忽略了对预测帧中宏块的运动预测,在某些情况下会损伤预测帧的压缩的效率。C.视频压缩和解压的标准
7
除WMV7之外,若干种国际标准与视频压缩和解压相关。这些标准包括运动图像专家组[“MPEG” ]1、2和4标准以及国际电信联盟〔“ITU”〕的H. 261、H. 262和H. 263标准。 与WMV7类似,这些标准使用帧内和帧间压缩的组合,尽管这些标准通常在所使用的压缩技术细节上与WMV7不同。一些国际标准认可将宏块的跳过编码作为一种工具在视频压缩和解压中使用。欲知这些标准中有关跳过宏块编码的另外的细节,参见该标准的说明书本身。上述标准中的跳过宏块编码通常降低了多种视频内容的比特率,但是在某些情况下远非最佳。在许多情况下,未能充分利用从宏块到宏块的跳过宏块标志中的冗余,例如, 当跳过宏块成群地出现在图像中时。同样,当跳过宏块时,它忽略了对预测宏块/图像中的宏块的运动预测,从而在某些情况下会损伤预测宏块/图像的压缩效率。鉴于对数字视频的视频压缩和解压的关键重要性,视频压缩和解压是充分开发的领域并不令人惊讶。然而,不论先前的视频压缩和解压技术的好处如何,它们都没有以下技术和工具的优点。发明_既述总的来说,详细描述针对用于对二进制信息进行编码和解码(如,在视频编码器/ 解码器中)的各类技术和工具。二进制信息可能包括指示视频编码器或解码器在视频帧中是否跳过了某一宏块的位。或者,二进制信息可能包括指示对宏块的运动矢量分辨率(如 I-MV或4-MV)、隔行扫描方式(如半帧或帧)或一些其它信息的位。二进制信息可能在逐帧的基础上或者在一些其它基础上编码。在一些实施例中,二进制信息在位平面上排列。例如,位平面在图像/帧层被编码。可选地,二进制信息以其它方法排列和/或在不同的层编码。编码器和解码器处理二进制信息。二进制信息可能包括宏块级信息。可选地,编码器和解码器处理块级、子块级或像素级信息的位平面。在一些实施例中,编码器和解码器切换编码模式。例如,编码器和解码器使用普通、行跳过或列跳过模式。不同的模式使得编码器和解码器可以充分利用二进制信息中的冗余。可选地,编码器和解码器使用其它和/或另外的模式,如差分模式。为提高效率,编码器和解码器可能在某些模式中使用位平面倒置技术。在一些实施例中,编码器和解码器将跳过宏块定义为运动等于其因果预测运动并具有零剩余误差的预测宏块。可选地,编码器和解码器将跳过宏块定义为具有零运动和零剩余误差的预测宏块。在一些实施例中,编码器和解码器使用原始编码模式来允许低等待时间应用。例如,在原始编码模式中,已编码的宏块能够立即发送到解码器,而不需要等到帧/图像中的所有宏块都被编码。编码器和解码器能够在原始编码模式和其它模式之间切换。各类技术和工具可以组合使用或单独使用。特别地,该应用连同相应的比特流语法一起描述了跳过宏块编码和解码的两种实现。不同的实施例实现了一种或多种所描述的技术和工具。参考附图阅读以下对不同实施例的详细描述,可以更清楚其它特点和优点。附图的简要描述图1所示是依照现有技术的对一个8X8的像素块的基于块的帧内压缩的图。
图2所示是依照现有技术的频率系数的预测的图。图3所示是依照现有技术的视频编码器中的运动估计的图。图4所示是依照现有技术的视频编码器中对一个8X8的预测剩余块的基于块的帧间压缩的图。图5所示是依照现有技术的对一个8X8的预测剩余块的基于块的帧内解压的图。图6是适于在其中实现若干所描述的实施例的计算环境的结构图。图7是若干所描述的实施例中使用的一般化的视频编码器系统的结构图。图8是若干所描述的实施例中使用的一般化的视频解码器系统的结构图。图9所示是依照第一实现的组成P图像层的比特流元素的图。图10所示是用于在具有多个跳过宏块编码模式的视频编码器中对跳过宏块的信息进行编码的技术的流程图。图11所示是用于对由具有多个跳过宏块编码模式的视频编码器编码的跳过宏块的信息进行解码的技术的流程图。图12所示是跳过宏块编码帧的一个示例。图13所示是用于在普通跳过宏块编码模式中进行编码的技术的流程图。图14所示是用于在行预测跳过宏块编码模式中进行编码的技术的流程图。图15所示是用于对跳过宏块的信息进行行预测解码的伪代码的代码列表。图16所示是用于在列预测跳过宏块编码模式中进行编码的技术的流程图。图17所示是用于对跳过宏块的信息进行列预测解码的伪代码的代码列表。图18所示是用于确定在视频编码器中是否跳过特定宏块的编码的技术的流程图。图19所示是用于以行跳过编码模式在位平面中对二进制信息进行编码的技术的流程图。图20所示是用于以列跳过编码模式在位平面中对二进制信息进行编码的技术的流程图。图21所示是用于以普通-2编码模式在位平面中对二进制信息进行编码的技术的流程图。图22、23和M所示是以普通_6模式平铺的二进制信息的帧的示例。图25所示是用于以普通-6模式在位平面中对二进制信息进行编码的技术的流程图。图沈所示是用于以差分编码模式对二进制信息进行编码的技术的流程图。图27所示是用于以差分编码模式对二进制信息进行解码的技术的流程图。图观所示是用于对低等待时间应用以原始编码模式选择性地对二进制信息进行编码的技术的流程图。详细描述所描述的实施例与用于对二进制信息进行编码和解码(如,在视频编码器/解码器中)的技术和工具相关。二进制信息可能包括指示视频编码器或解码器是否跳过了视频帧中的特定宏块的位。或者,二进制信息可包括指示宏块的运动矢量分辨率(如I-MV或 4-MV)、隔行扫描模式(如半帧或帧)或其它信息的位。二进制信息可能在逐帧的基础上或在一些其它基础上进行编码。在一些实施例中,二进制信息在位平面中排列。位平面在图像/帧层被编码。可选地,二进制信息以一些其它方式排列和/或在不同的层编码。在一些实施例中,编码器和解码器切换编码模式。例如,编码器和解码器使用普通、行跳过或列跳过模式。不同的模式使得编码器和解码器可以充分利用二进制信息中的冗余。可选地,编码器和解码器使用其它和/或另外的模式。在一些实施例中,编码器和解码器将跳过宏块定义为运动等于其因果预测的运动并具有零剩余误差的预测宏块。可选地,编码器和解码器将跳过宏块定义为具有零运动和零剩余误差的预测宏块。在一些实施例中,作为对有效帧/图像级编码的替代,准许使用原始编码模式来允许低等待时间应用。在原始编码模式中,已编码的宏块能够立即发送到解码器,而不需要等待直到帧/图像中的所有宏块都编码完成。在一些实施例中,编码器和解码器处理宏块级信息的位平面。可选地,编码器和解码器处理块、子块或像素级信息的位平面。各类技术和工具可以组合使用或单独使用。具体而言,本申请连同相应的比特流语法一起描述了跳过宏块编码和解码的两种实现。不同的实施例实现一种或多种所描述的技术和工具。在所描述的实施例中,视频编码器和解码器执行各类技术。尽管这些技术的操作通常为演示目的,以特定顺序来描述,应当理解,这一描述方式包含操作顺序中较小的重排列,除非需要特定的顺序。例如,顺序地描述的操作在某些情况下可以重新排列或并发执行。此外,为简化的目的,流程图通常不显示特定技术可以与其它技术结合使用的不同方法。在所描述的实施例中,视频编码器和解码器在比特流中使用不同的标志和信号。 尽管描述了特定的标志和信号,应当理解,这一描述方式包含了对标志和信号的不同约定 (如0的约定而不是1的约定)。I.计算环境图6说明了适于在其中实现若干所描述的实施例的计算环境(600)的一般化示例。该计算环境(600)并不意味着对使用或功能的范围的限制,这些技术和工具可以在不同的通用或专用计算系统中实现。参考图6,计算环境(600)包括至少一个处理单元(610)和存储器(620)。在图6 中,这一最基本的配置(630)包括在虚线框中。处理单元(610)执行计算机可执行指令并可以是真实或虚拟的处理器。在多处理系统中,多处理单元执行计算机可执行指令来提高处理能力。存储器(620)可以是易失存储器(如,寄存器、高速缓存、RAM)、非易失存储器 (如,R0M、EEPR0M、闪存等等)或两者的某一组合。存储器(620)储存实现编码器或解码器, 如视频编码器或解码器的软件(680)。计算环境可以具有其它特性。例如,计算系统(600)包括存储(640)、一个或多个输入设备(650)、一个或多个输出设备(660)以及一个或多个通信连接(670)。互连机制 (未示出)如总线、控制器或网络将计算环境(600)的组件互连。通常,操作系统软件(未示出)为其它在计算环境(600)中执行的软件提供了操作环境,并协调计算环境(600)的组件的活动。存储(640)可以是可移动或不可移动的,包括磁盘、磁带或盒式磁带、⑶-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 X 8的亮度块(有时也作为一个16 X 16的宏块来看待)以及两个8 X 8的色度块。 可选地,编码器(700)和解码器(800)可以是基于对象的,使用不同的宏块或块格式,或在尺寸和构造不同于8X8的块和16X16的宏块的像素集的基础上执行操作。根据所期望的实现和压缩类型,编码器或解码器的模块可以被添加、省略、拆分成多个模块、与其它模块组合和/或用相似模块代替。在替代实施例中,使用不同模块和/或其它模块构造的编码器或解码器执行所描述的技术的一个或多个。A.视频编码器图7是一般视频编码器系统(700)的结构图。编码器系统(700)接收包括当前帧 (705)的一系列视频帧并生成压缩的视频信息(795)作为输出。视频编码器的具体实施例通常使用一般化的编码器(700)的变异或补充版本。编码器系统(700)压缩预测帧和主帧。为了演示,图7示出了主帧通过编码系器统(700)的路径以及前向预测帧的路径。编码器系统(700)的许多组件既用来压缩主帧也用来压缩预测帧。这些组件所执行的确切操作可根据压缩的信息类型的不同而不同。预测帧〔也称为双向预测中的ρ帧、b帧或帧间编码帧(inter-coded frame)〕按照从一个或多个其它帧的预测(或差异)来表示。预测剩余是所预测的和原始帧之间的差异。相反,主帧〔也称为i帧或帧内编码帧(intra-coded frame)〕不参考其它帧而压缩。如果当前帧(70 是前向预测帧,运动估计器(710)估计当前帧的像素宏块或其它像素集对于参考帧的运动,参考帧是缓存在帧存储(720)中的重建的前一帧(725)。在替代实施例中,参考帧是后一帧,或者当前帧是双向预测的。运动估计器(710)能够根据像素、1/2像素、1/4像素或其它增量来估计运动,并在逐帧或其它基础上切换运动估计的分辨率。运动估计的分辨率可以在水平上和垂直上相同或不同。运动估计器(710)将运动信息(715),如运动矢量作为侧面信息输出。运动补偿器(730)将运动信息(715)应用到重建的前一帧(72 来组成已经过运动补偿的当前帧(735)。然而,预测很少是完美的,已经过运动补偿的当前帧(73 和原始当前帧(70 之间的差异为预测剩余(74 。可选地,运动估计器和运动补偿器应用另一类型的运动估计/补偿。频率转换器(760)将空间域视频信息转换为频域(即,频谱的)数据。对于基于块的视频帧,频率转换器(760)对像素数据或预测剩余数据的块应用离散余弦变换[“DCT”] 或DCT的变异,生成DCT系数块。可选地,频率变换器(760)应用另一常规频率变换,如傅立叶变换或使用小波或子带分析。在编码器使用空间外插(图7未示出)来对主帧的块进行编码的实施例中,频率转换器(760)可以对主帧的预测剩余的块应用重定向的频率变换,如偏斜DCT。在其它实施例中,频率变换器(760)对预测帧的预测剩余应用8X8、8X4、 4X8或其它尺寸的频率变换(如DCT)。量化器(770)然后量化空间数据系数块。量化器对空间数据应用统一的标量量化,其步长在逐帧或其它基础上变化。可选地,量化器对空间数据系数应用另一种量化,例如,非统一、矢量或非自适应量化,或直接在不使用频率变换的编码器系统内量化空间域数据。除自适应量化之外,编码器(700)可以使用帧丢弃、自适应滤波或其它技术来进行率控制。如果预测帧中一个给定的宏块没有特定类型的信息(如,没有宏块的运动信息并且没有剩余信息),则编码器(700)将该宏块编码为跳过宏块。如果是这样,编码器在压缩的视频信息(795)的输出比特流中发信号通知该跳过宏块。当需要重建的当前帧用于随后的运动估计/补偿时,反量化器(776)在量化的空间数据系数上执行反量化。反频率变换器(766)然后执行频率变换器(760)的反操作,生成重建的预测剩余(对预测帧)或重建的主帧。如果当前帧(70 是主帧,则重建的主帧
12被用作重建的当前帧(未示出)。如果当前帧(705)是预测帧,则将重建的预测剩余添加到已经过运动补偿的当前帧(73 来组成重建的当前帧。帧存储(720)缓存重建的当前帧用于预测下一帧。在一些实施例中,编码器对重建的帧应用数据分块滤波器来自适应地平滑帧的块中的不连续。熵编码器(780)压缩量化器(770)的输出以及某些侧面信息(例如,运动信息 (715)、空间外插模式、量化步长)。典型的熵编码技术包括算术编码、差分编码、哈夫曼 (Huffman)编码、行程编码、LZ编码、字典编码以及上述的组合。熵编码器(780)通常对不同种类的信息(例如,DC系数、AC系数、不同种类的侧面信息)使用不同的编码技术,并能够从特定编码技术之内的多个代码表中进行选择。熵编码器(780)将压缩的视频信息(7%)放置在缓存(790)中。缓存级别指示符反馈至比特率自适应模块。压缩的视频信息(7%)从缓存(790)中以恒定或相对恒定的比特率排出,并被储存用于该比特率的随后的流中。因此,缓存(790)的级别主要是已滤波的量化视频信息的熵的函数,它影响熵编码的效率。可选地,编码器系统(700)在压缩之后立即将压缩的视频信息形成流,并且缓存(790)的级别也取决于信息从缓存(790)中排出进行发送的率。在缓存(790)之前或之后,可以对压缩的视频信息(7%)进行信道编码用于通过网络来发送。信道编码可以将误差检测和纠正数据应用到压缩视频信息(795)中。B.视频解码器图8是一般视频解码器系统(800)的结构图。解码器系统(800)接收视频帧的已压缩序列的信息(895),并生成包括重建帧(80 的输出。视频解码器的特定实施例通常使用一般化的解码器(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)使用宏块运动矢量来找出参考帧(82 中的宏块。帧缓存(820)储存前一重建的帧用作参考帧。运动补偿器(830)能够按照像素、1/2像素、1/4像素或其它增量来补偿运动,并能够在逐帧或者其它基础上切换运动补偿的分辨率。运动补偿的分辨率可以在水平上和垂直上相同或不同。可选地,运动补偿器应用另一类型的运动补偿。运动补偿器的预测很少是完美的,因此解码器(800)也重建预测剩余。当解码器需要重建帧用于随后的运动补偿时,帧存储(820)缓存重建帧用于预测下一帧。在一些实施例中,编码器对重建帧应用数据分块滤波器来自适应地平滑帧的块中的不连续。
反量化器(870)反量化熵解码的数据。一般来说,反量化器对熵解码的数据应用统一标量反量化,其步长在逐帧或者其它基础上变化。可选地,反量化器对数据应用另一类型的反量化,如非统一、矢量或非自适应量化,或直接在不使用反频率变换的解码器系统中反量化空间域。反频率转换器(860)将量化的频域数据转换为空间域视频信息。对于基于块的视频帧,反频率转换器(860)对DCT系数块应用反DCT[“IDCT”]或IDCT的变异,生成分别用于主帧或预测帧的像素数据或预测剩余数据。可选地,频率转换器(860)应用另一常规反频率变换,如傅立叶变换或使用小波或子带合成。在解码器使用空间外插(图8未示出) 来对主帧的块进行解码的实施例中,反频率转换器(860)能够对主帧的预测剩余块应用重定向的反频率转换,如偏斜IDCT。在其它实施例中,反频率转换器(860)对预测帧的预测剩余应用8X8、8X4、4X8或其它尺寸的反频率转换(如IDCT)。当在压缩的视频帧序列的信息(895)的比特流中发信号通知跳过宏块时,解码器 (800)重建跳过宏块,而不使用通常包含在非跳过宏块的比特流中的信息(例如,运动信息和/或剩余信息)。III.第一实现在第一实现中,视频编码器和解码器分别以提高的效率对跳过宏块的信息进行编码和解码。在视频比特流中的图像层上发信号通知跳过宏块的信息,使得编码器能够充分利用跳过宏块的信息中的冗余。同样,编码器和解码器在多个编码模式之间进行选择以对跳过宏块的信息进行编码和解码。A.跳过宏块的信息的图像层编码在第一实现中,压缩视频序列由构造成四个分级层的数据组成。从上到下层分别为1)序列层;2)图像层;3)宏块层;以及4)块层。在图像层,每一图像的数据包括图像头,随后是宏块层的数据。(类似地,在宏块层,每一宏块的数据包括宏块头,随后是块层的数据。)当I图像和P图像的一些比特流元素相同时,其它元素仅出现在P图像,反之亦然。图9示出了组成P图像层(900)的比特流元素。表1简要地描述了 P图像层(900) 的比特流元素。
权利要求
1.在计算机系统中,一种处理一个或多个视频图像的计算机实现的方法,其特征在于, 所述方法包括从一组多个可用的编码模式中选择一编码模式;以及对于一个或多个视频图像中P图像的多个预测宏块根据所选择的编码模式处理跳过信息,其中跳过信息指示P图像的多个预测宏块是被跳过还是不被跳过,并且如果满足以下条件,P图像的多个预测宏块中的一个预测宏块被跳过所述预测宏块使用基于P图像中一个或多个其它宏块的运动的预测运动; 以及所述预测宏块没有剩余信息。
2.在实现一种视频解码器的计算机系统中,一种对包含多个预测宏块的视频图像进行解码的方法,其中所述多个预测宏块的每个块根据不多于一个参考视频图像来预测,其特征在于,所述方法包括从比特流中接收编码数据;以及对视频图像进行解码,解码包括 从多个可用编码模式中选择一种编码模式;对于多个预测宏块中的一个或多个跳过的宏块,对跳过的宏块信息进行解码,所述跳过的宏块信息已根据从多个可用编码模式中所选择的编码模式进行了编码,其中所述跳过的宏块信息指示跳过/非跳过状态;以及处理所述一个或多个跳过的宏块,其中所述一个或多个跳过的宏块中的每一个 使用基于所述跳过的宏块周围的一个或多个其它的预测宏块的运动的预测运动;以及缺少剩余信息。
3.如权利要求2所述的方法,其特征在于,所述处理所述一个或多个跳过的宏块包括 对于视频图像的当前宏块,使用与从所述一个或多个其它的预测宏块中获取的预测器运动矢量相等的运动矢量来重建当前宏块,并且其中所述一个或多个其它的预测宏块与所述视频图像中的当前宏块相邻。
4.如权利要求2所述的方法,其特征在于,所述比特流语法包括多个分级层,其中所述多个分级层至少包括图像层和宏块层,并且其中所述跳过的宏块信息在所述图像层传输信号。
5.在实现一种视频编码器的计算机系统中,一种对包含多个预测宏块的视频图像进行编码的方法,其中所述多个预测宏块的每个块根据不多于一个参考视频图像来预测,其特征在于,所述方法包括对视频图像进行编码以生成编码数据,编码包括 从多个可用编码模式中选择一种编码模式;处理多个预测宏块中的一个或多个跳过的宏块,其中所述一个或多个跳过的宏块中的每一个使用基于所述跳过的宏块周围的一个或多个其它的预测宏块的运动的预测运动;以及缺少剩余信息;对一个或多个跳过的宏块的跳过的宏块信息进行编码,其中所述跳过的宏块信息指示跳过/非跳过状态,并且其中所述编码包括根据从所述多个可用编码模式中选择的编码模式来对所述跳过的宏块信息进行编码;以及在比特流中输出编码数据。
6.如权利要求5所述的方法,其特征在于,所述处理所述一个或多个跳过的宏块包括 对于视频图像的当前宏块,使用与从所述一个或多个其它的预测宏块中获取的预测器运动矢量相等的运动矢量来预测当前宏块,并且其中所述一个或多个其它的预测宏块与所述视频图像中的当前宏块相邻。
7.如权利要求6所述的方法,其特征在于,所述处理所述一个或多个跳过的宏块包括 确定所述跳过的宏块的预测的运动是否等于从与所述跳过的宏块相邻一个或多个其它的预测宏块的运动矢量中获取的预测器运动矢量;以及确定所述跳过的宏块缺少剩余信息。
8.如权利要求5所述的方法,其特征在于,所述比特流语法包括多个分级层,其中所述多个分级层至少包括图像层和宏块层,并且其中所述跳过的宏块信息在所述图像层传输信号。
9.一种视频解码器的计算设备,所述计算设备包括 处理单元;存储器; 显不器;无线通信连接;以及一个或多个存储计算机可执行指令的存储介质,所述指令在由所述处理单元执行时使所述计算设备执行一种对包含多个预测宏块的视频图像进行解码的方法,其中所述多个预测宏块的每个块根据不多于一个参考视频图像来预测,其特征在于,所述方法包括 从比特流中接收编码数据;以及对视频图像进行解码,解码包括 从多个可用编码模式中选择一种编码模式;对于多个预测宏块中的一个或多个跳过的宏块,对跳过的宏块信息进行解码,所述跳过的宏块信息已根据从多个可用编码模式中所选择的编码模式进行了编码,其中所述跳过的宏块信息指示跳过/非跳过状态;以及处理所述一个或多个跳过的宏块,其中所述一个或多个跳过的宏块中的每一个使用基于所述跳过的宏块周围的一个或多个其它的预测宏块的运动的预测运动,以及缺少剩余信息;以及通过显示器输出视频图像。
10.如权利要求9所述的计算设备,其特征在于,所述处理所述一个或多个跳过的宏块包括对于视频图像的当前宏块,使用与从所述一个或多个其它的预测宏块中获取的预测器运动矢量相等的运动矢量来重建当前宏块,并且其中所述一个或多个其它的预测宏块与所述视频图像中的当前宏块相邻。
11.如权利要求9所述的计算设备,其特征在于,所述比特流语法包括多个分级层,其中所述多个分级层至少包括图像层和宏块层,并且其中所述跳过的宏块信息在所述图像层传输信号。
12.一种视频编码器的计算设备,所述计算设备包括 处理单元;存储器;显不器;无线通信连接;以及一个或多个存储计算机可执行指令的存储介质,所述指令在由所述处理单元执行时使所述计算设备执行一种对包含多个预测宏块的视频图像进行编码的方法,其中所述多个预测宏块的每个块根据不多于一个参考视频图像来预测,其特征在于,所述方法包括对视频图像进行编码以生成编码数据,编码包括从多个可用编码模式中选择一种编码模式;处理多个预测宏块中的一个或多个跳过的宏块,其中所述一个或多个跳过的宏块中的每一个使用基于所述跳过的宏块周围的一个或多个其它的预测宏块的运动的预测运动,以及缺少剩余信息;对一个或多个跳过的宏块的跳过的宏块信息进行编码,其中所述跳过的宏块信息指示跳过/非跳过状态,并且其中所述编码包括根据从所述多个可用编码模式中选择的编码模式来对所述跳过的宏块信息进行编码;以及通过所述无线通信连接在比特流中输出编码数据。
13.如权利要求12所述的计算设备,其特征在于,所述处理所述一个或多个跳过的宏块包括对于视频图像的当前宏块,使用与从所述一个或多个其它的预测宏块中获取的预测器运动矢量相等的运动矢量来预测当前宏块,并且其中所述一个或多个其它的预测宏块与所述视频图像中的当前宏块相邻。
14.如权利要求13所述的计算设备,其特征在于,所述处理所述一个或多个跳过的宏块包括确定所述跳过的宏块的预测的运动是否等于从与所述跳过的宏块相邻一个或多个其它的预测宏块的运动矢量中获取的预测器运动矢量;以及确定所述跳过的宏块缺少剩余信息。
15.如权利要求12所述的计算设备,其特征在于,所述比特流语法包括多个分级层,其中所述多个分级层至少包括图像层和宏块层,并且其中所述跳过的宏块信息在所述图像层传输信号。
全文摘要
描述了各种用于对二进制信息(如跳过宏块信息)进行编码和解码(如在视频编码器/解码器中)的技术和工具。在一些实施例中,二进制信息在位平面上排列,并且该位平面在图像/帧层上编码。编码器和解码器处理二进制信息,并且在一些实施例中,切换编码模式。例如,编码器和解码器使用普通、行跳过、列跳过或差分模式,或其它和/或另外的模式。在一些实施例中,编码器和解码器将跳过宏块定义为其运动等于其因果预测的运动并且具有零剩余误差的预测宏块。在一些实施例中,编码器和解码器使用原始编码模式来允许低等待时间应用。
文档编号H03M7/40GK102316320SQ20111015966
公开日2012年1月11日 申请日期2002年12月16日 优先权日2001年12月17日
发明者P·苏, S·斯里尼瓦杉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1