用于前向预测的隔行扫描视频帧的场的预测运动矢量的制作方法

文档序号:7918290阅读:183来源:国知局

专利名称::用于前向预测的隔行扫描视频帧的场的预测运动矢量的制作方法用于前向预测的隔行扫描视频帧的场的预测运动矢量本申请是申请日2004.09.07,申请号为200410077192.2,名称为"用于前向预测的隔行扫描视频帧的场的预测运动矢量"的申请的分案申请。相关申请信息本发明要求2003年九月7日提交的美国临时专利申请号60/501,081,标题为"VideoEncodingandDecodingToolsandTechniques(视频编码禾口角军码工具与技术)"的利益,通过引用将它包括在此。
技术领域
描述用于隔行扫描视频编码和解码的技术与工具。例如,视频编码器/解码器为隔行扫描视频帧的场计算运动矢量预测值。
背景技术
:数字视频消耗大量的存储器和传输容量。典型的未加工的数字视频序列每秒包括15或30个图象。每个图象可以包括几万或几十万像素(pixel)(也称为pels(象素))。每个像素代表图象中的一个微小元素。在未加工的形式中,计算机通常用24比特或更多的比特来表示一个像素。因而,典型的未加工的数字视频序列的每秒比特数,或者比特率可以是5百万比特/秒或更多。许多计算机和计算机网络缺乏资源来处理未加工的数字视频。因此,工程师使用压缩(也称为编码(coding或encoding))来降低数字视频的比特率。压縮可以是无损的,其中视频的质量不受损害,但对比特率的减少受到视频复杂性的限制。或者,压縮可以是有损的,其中视频的质量受到损害,但对比特率的减少更有效。解压縮与压縮相反。一般而言,视频压縮技术包括"帧内(intra)"压縮和"帧间(inter)"或预测压縮。帧内压縮技术压縮单独的图片,一般称为I图片或关键图片。帧间压縮技术参考先前和/或后面的图片来压縮图片,且一般称为预测图片、P图片或B图片。I.在WindowsMediaVideo(视窗媒体视频)版本8和9中的帧间压縮Microsoft(微软)公司的WindowsMediaVideo版本8["WMV8"]包括视频编码器和视频解码器。WMV8编码器使用帧内和帧间压縮,WMV8解码器使用帧内和帧间解压縮。WindowsMediaVideo版本9["WMV9"]的早期版本对于许多操作使用相似的结构。丽V8编码器中的帧间压縮使用基于分块的运动补偿预测编码,后跟随剩余误差(residualerror)变换编码。图1和2例示在丽V8编码器中对于预测帧的基于分块的帧间压縮。特别地,图1例示预测帧110的运动估计,而图2例示预测帧的运动补偿块的预测剩余部分(predictionresidual)的压縮。例如,在图1中,丽V8编码器为预测帧110中的宏块(macroblock)115计算运动矢量。为了计算运动矢量,编码器搜索参考帧130的搜索区135。在搜索区135内,编码器将来自预测帧110的宏块115与各种候选宏块比较,以便找出一个良好匹配的候选宏块。编码器输出指定用于匹配宏块的(熵编码的)运动矢量的信息。由于运动矢量值常常与在空间上环绕运动矢量的值有关系,用于传输运动矢量信息的数据压縮可以通过选择来自相邻宏块的运动矢量预测值并使用该预测值为当前宏块预测运动矢量来完成。编码器可以编码运动矢量与预测值之间的差分。在通过将差分加到预测值上来重新构造运动矢量之后,解码器使用运动矢量,用来自在参考帧130的信息来为宏块115计算预测宏块,其中参考帧130是先前重新构造的、在编码器和解码器可得到的帧。预测很少是完美的,因此编码器通常编码预测宏块与宏块115本身之间像素差的块(也称为误差或剩余块)。图2例示在丽V8编码器中误差块235的计算与编码的例子。误差块235是预测块215与原来的当前块225之间的差。编码器将DCT240应用于误差块235,得到一个8x8的系数块245。编码器随后量化250DCT系数,得到8x8最化的DCT系数块255。编码器将8x8块255扫描260到一维阵列265中,使得系数通常从最低频率到最高频率排序。编码器使用游程长度编码(runlengthencoding)270的变体来熵编码经扫描的系数。编码器从一个或多个行程/级/最后(run/level/last)表275选择一个熵代码并输出这个熵代码。图3示出用于帧间编码块的相应解码过程300。在图3中概括地说,使用具有一个或多个游程/级/最后表315的可变长度解码(variablelengthdecoding)310和游程长度解码(runlengthdecoding)320,解码器解码(310,320)表示预测剩余部分的经熵编码的信息。解码器将存储经熵解码的信息的一维阵列325逆扫描330到二维块335中。解码器逆量化并逆离散余弦变换(一起,340)数据,得到重新构造的误差块345。在一个独立的运动补偿路径中,解码器使用用于离参考帧的位移的运动矢量信息355来计算预测的块365。解码器将预测块365与重新构造的误差块345结合起来,来形成重新构造的块375。原来的与重新构造的帧之间的改变量就是失真,而编码帧所需要的位数表示帧的速率。失真量约略与速率成反比。II.隔行扫描的视频和逐行扫描的视频典型的隔行扫描视频帧由不同时间开始的两个场组成。例如,参考图4,隔行扫描的视频帧400包括顶场410和底场420。通常,在一个时间(时间t)开始扫描偶数行(顶场)并在一个不同(一般稍后)时间(例如时间t+l)开始扫描奇数行(底场)。这个时序可以在存在运动的隔行扫描的视频帧的区域中产生锯齿化牙状特点,因为在不同时间开始扫描两个场。因此,可以按照场结构重新安排隔行扫描的视频帧,将奇数行一起分组在一个场中,而将偶数行一起分组在另一个场中。这种安排,称为场编码,在高度运动的图象中对于减少这样的锯齿化边缘人为假象是有用的。另一方面,在静止区域中,可在没有这样的重新安排的情况下,更有效地保持隔行扫描视频帧中的图象细节。因此,在静止或低度运动的隔行扫描视频帧中常常使用帧编码,其中保持原来交替的场行安排。典型的逐行扫描视频帧由一个具有非交替行的内容的帧组成。与隔行扫描的视频相比,逐行扫描的视频不将视频帧划分成独立的场,而是在单一时间开始从左至右、由顶至底扫描整个帧。III.在觀V9的早期版本中隔行扫描P帧编码与解码WindowsMediaVideo版本9["丽V9"]的早期版本,使用隔行扫描P帧编码和解码。在丽V9的这些早期版本中,隔行扫描的P帧可以包含以场模式或者以帧模式编码的宏块,或者被跳过的宏块,其中通常在一个接一个宏块基础上作出判决。两个运动矢量与每一个场编码的宏块相关联,而一个运动矢量与每一个帧编码的宏块相关联。编码器联合地编码宏块中块的运动信息,包括水平和垂直运动矢量差分分量,有可能连同其它信令(signaling)信息。在编码器中,通过计算运动矢量与运动矢量预测值之间的差分来编码运动矢量,其中运动矢量预测值是根据相邻的运动矢量来计算的。而且,在解码器中,通过将运动矢量差分加到运动矢量预测值上来重新构造运动矢量,其中运动矢量预测值再次是根据相邻的运动矢量计算的(这次是在解码器中)。图5、6和7示出在觀V9的早期版本中的隔行扫描的P帧中,分别用于帧编码的宏块和场编码的宏块的运动矢量预测值的候选预测值的例子。图5示出用于隔行扫描的P帧中的内部位置中当前的帧编码宏块的候选预测值A、B和C(不是宏块行中第一或最后一个宏块,不是在顶行中)。可以从不同于那些标注A、B和C的候选方向获得预测(例如在诸如在当前宏块是一行或顶行中的第一个宏块或最后一个宏块时这样的特殊情况下,因为对于这样的情况某些预测值是不能得到的)。对于当前帧编码的宏块,取决于相邻的宏块是场编码的还是帧编码的来不同地计算预测值候选。对于相邻的帧编码宏块,简单地取运动矢量作为预测值候选。对于相邻的场编码宏块,通过对顶与底场运动矢量取平均来确定候选运动矢量。图6和7示出用于在宏块行中但不在顶行中、不是第一或最后一个宏块的场编码宏块中的当前场的候选预测值A、B和C。在图6中,当前场是底场,并使用相邻宏块中的底场运动矢量作为候选预测值。在图7中,当前场是顶场,并使用顶场运动矢量作为候选预测值。因而,对于当前的场编码宏块中的每一个场,用于每一个场的运动矢量预测值候选的数量最多是三,其中每一个来自同一场类型(例如顶或底)的每一个候选作为当前场。用于当前宏块或当前宏块的场的预测值是根据候选预测值来选择的,并根据预测值来计算运动矢量差分。可以通过在编码器或解码器任意一边将运动矢量差分加到选择的运动矢量预测值上,来重新构造运动矢量。通常,由经编码的运动信息来重新构造亮度运动矢量,而由重新构造的亮度运动矢量来导出色度运动矢量。IV.用于视频压縮和解压縮的标准除丽V8和丽V9的早期版本之外,若干国际标准涉及视频压縮和解压縮。这些标准包括运动图片专家组["MPEG"]l、2和4标准和来自国际电信联合会["ITU,,]的H.261、H.262、H.263和H.264标准。用于在国际标准中实现数字视频序列的数据压縮的一种基本方法是要减少图片之间的时间冗余(temporalredundancy)。这些流行的压縮方案(MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用运动估计和补偿。例如,将当前帧被划分成统一的正方形区域(例如块和/或宏块)。为每一当前区域通过发送用于该区域的运动矢量信息来指定匹配的区域。运动矢量表示在先前编码(和重新构造)的帧中要用作当前区域的预测值的区域的位置。导出当前区域与参考帧中的区域之间一个接一个像素的差,称为误差信号。这个误差信号通常具有比原来的信号低的熵。因此,可以用较低的速率来编码该信息。如在觀V8和WMV9的早期版本中,由于运动矢量值常常与在空间环绕的运动矢量有关系,用于表示运动矢量信息的数据的压縮可以通过编码当前运动矢量与基于先前编码的相邻运动矢量的预测值之间的差分来完成。此外,有些国际标准描述在隔行扫描视频帧中的运动估计和补偿。H.262标准允许隔行扫描的视频帧编码为单一帧或为两个场,其中可以自适应地在一帧接一帧的基础上选择帧编码或场编码。H.262标准描述基于场的预测,它是只使用参考帧的一个场的预测模式。H.262标准还描述双主预测(dual-primeprediction),这是一种预测模式,其中为隔行扫描的P图象中一个16x16块平均两个前向的基于场的预测。H.262标准的7.6节描述"场预测",包括在两个参考场之间选择用于隔行扫描视频帧的当前场的宏块的运动补偿。7.6.3节描述运动矢量预测和重新构造,其中用于给定宏块的重新构造的运动矢量变成用于随后被编码/被解码的宏块的运动矢量预测值。这样的运动矢量预测在许多情况下未能恰当地为隔行扫描视频帧的场的宏块预测运动矢量。给出对数字视频的视频压縮和解压縮的急迫重要性,不会惊讶视频压縮和解压縮是高度发展的领域。无论前面的视频压縮和解压縮技术有什么好处,但是,它们不具有下面的技术和工具的优点。
发明内容总而言之,详细的描述是针对用于编码和解码隔行扫描的视频中预测视频图象的各种技术和工具的。所述的技术包括为隔行扫描视频帧的块或宏块计算运动矢量预测值的技术。这些技术在许多情况下提高运动矢量预测值的准确性,从而减少了与编码用于隔行扫描视频帧的场的运动矢量信息相关联的比特率。可以组合地或独立地使用各种技术和工具。在第一方面,编码器/解码器为隔行扫描的P场的一部分(例如块或宏块)的运动矢量计算运动矢量预测值,包括在为该部分使用相同极性运动矢量预测值与使用相反极性运动矢量预测值之间选择。编码器/解码器至少部分地基于为运动矢量计算的运动矢量预测值来处理运动矢量。该处理可以包括在编码过程中计算运动矢量与运动矢量预测值之间的运动矢量差分,和在解码过程中由运动矢量差分与运动矢量预测值重新构造运动矢量。该选择可以至少部分地基于在该部分周围的近邻的相反极性运动矢量的计数和/或近邻的相同极性运动矢量的计数。该选择还可以至少部分地基于比特流中单个比特信号。该选择可以包括至少部分地基于在该部分周围的近邻的相反极性运动矢量的计数和/或近邻的相同极性运动矢量的计数来确定主导预测值,并基于主要预测值和比特流中的单个比特信号来选择相同极性运动矢量预测值或者相反极性运动矢量预测值。该选择还可以包括,如果用于该部分的运动矢量参考相同极性场,则选择相同极性运动矢量预测值,或者如果用于该部分的运动矢量参考相反极性场,则选择相反极性运动矢量预测值。可以作为在该部分周围的近邻的多个相同极性的运动矢量预测值候选的中值来计算相同极性运动矢量预测值,并可以作为在该部分周围的近邻的多个相反极性的运动矢量预测值的中值来计算相反极性运动矢量预测值。相同极性运动矢量预测值候选可以通过定标相反极性运动矢量预测值候选来导出,并且相反极性运动矢量预测值可以通过定标相同极性运动矢量预测值候选来导出。在另一方面,编码器/解码器至少部分地基于多个相邻的运动矢量为隔行扫描的P场的一部分的运动矢量计算运动矢量预测值,其中,多个相邻的运动矢量包括一个或多个相反极性运动矢量和一个或多个相同极性运动矢量。编码器/解码器至少部分地基于为运动矢量计算的运动矢量预测值来处理运动矢量。可以作为多个相同极性运动矢量预测值候选的中值来计算相同极性运动矢量预测值,其中,至少基于定标来自一个或多个相反极性运动矢量之一的值来导出多个候选的至少一个,以及可以作为多个相反极性运动矢量预测值候选的中值来计算相反极性运动矢量预测值,其中,至少基于定标来自一个或多个相同极性运动矢量之一的值来导出多个候选的至少一个。在另一方面,编码器/解码器处理隔行扫描的预测视频帧,这是通过为视频帧中当前场中的宏块确定运动矢量预测值候选的第一集合,运动矢量预测值候选的第一集合引用具有相对于当前场的相同极性的第一参考场。至少部分地基于运动矢量预测值候选的第一集合中的一个或多个,为宏块计算第一运动矢量预测值。为宏块确定运动矢量预测值候选的第二集合,运动矢量预测值候选的第二集合引用具有相对于当前场的相反极性的第二参考场。至少部分地基于运动矢量预测值候选的第二集合的一个或多个,为宏块计算第二运动矢量预测值。在该处理中使用第一和第二运动矢量预测值,诸如通过选择第一和第二运动矢量预测值之一并基于选择的运动矢量预测值为宏块计算运动矢量差分,和/或选择第一和第二运动矢量预测值之一并将选择的预测值与运动矢量差分结合起来,为宏块重新构造运动矢量。可以熵编码运动矢量差分。在另一方面,通过定标具有不同于第一极性的第二极性的实际运动矢量值来计算第一极性运动矢量预测值候选。当为隔行扫描的P场的一部分的运动矢量计算运动矢量预测值时,使用第一极性运动矢量预测值候选。在编码过程中计算运动矢量与运动矢量预测值之间的运动矢量差分。在解码过程中由运动矢量差分与运动矢量预测值来重新构造运动矢量。第一极性运动矢量预测值候选具有与该部分相反的场极性,其中,实际运动矢量值具有与该部分相同的场极性,以及其中,调整定标以从相同极性定标成相反极性。或者,第一极性运动矢量预测值候选可以具有与该部分相同的场极性,其中,实际运动矢量值具有与该部分相反的场极性,以及其中,调整定标以从相反极性定标成相同极性。定标至少部分地基于参考帧距离。在另一方面,编码器/解码器为视频帧中当前场中的宏块确定第一运动矢量预测值候选,第一运动矢量预测值候选具有第一极性。编码器/解码器为宏块确定第二运动矢量预测值候选,其中,第二运动矢量预测值候选是由第一运动矢量预测值候选使用定标操作来导出的。第二运动矢量预测值候选具有不同于第一极性的极性。在另一方面,编码器/解码器为视频帧中当前场中的宏块确定第一运动矢量预测值候选,第一运动矢量预测值候选引用具有第一极性和参考距离的场。编码器/解码器为宏块确定第二运动矢量预测值候选,其中,第二运动矢量预测值候选是由第一运动矢量预测值候选使用至少部分地基于参考距离变化的定标操作来导出的。第二运动矢量预测值候选具有不同于第一极性的极性。在另一方面,解码器解码比特流中的一个场层次处的第一元素,和比特流中一个宏块层次处的第二元素与第三元素。第一元素包括用于视频帧中当前场的参考场数量信息,它表示用于当前场的两个参考场。第二元素包括用于当前场中的当前宏块的宏块模式信息。第三元素包括用于当前宏块的运动矢量数据,其中,运动矢量数据包括差分运动矢量数据。解码器为宏块处理运动矢量数据。该处理包括为当前宏块确定第一和第二运动矢量预测值,以及至少部分地基于第一和第二运动矢量预测值和至少部分地基于差分运动矢量数据,为当前宏块重新构造运动矢量。第一运动矢量预测值是奇数场预测值而第二运动矢量预测值是偶数场预测值。在另一方面,解码器解码运动矢量数据,运动矢量数据共同地用信号表示水平差分运动矢量分量、垂直差分运动矢量分量和表示是否使用主导的或非主导的运动矢量预测值的标志。解码器至少部分地基于经解码的运动矢量数据,重新构造运动矢量。该重新构造可以包括基于该标志在使用主导运动矢量预测值或非主导运动矢量预测值之间选择,将水平差分运动矢量分量与选择的预测值的水平分量结合起来,以及将垂直差分运动矢量分量与选择的预测值的水平分量结合起来。通过下面参考附图进行的不同实施例的详细描述,将使另外的特征和优点显而易见。图l示出在按照
背景技术
的视频编码器中的运动估计。图2示出在按照
背景技术
的视频编码器中对8x8的预测剩余部分块进行基于块的压縮。图3示出在按照
背景技术
的视频编码器中对8x8的预测剩余部分块进行基于块的解压缩。图4示出按照
背景技术
的隔行扫描视频帧。图5示出WMV9的早期版本中用于当前的帧编码宏块的候选运动矢量预测值。图6和7示出丽V9的早期版本中用于当前的场编码宏块的候选运动矢量预测值。图8是合适的计算环境的方框图,可结合该环境实现几个所述的实施例。图9是一般化的视频编码器系统的方框图,可结合该系统实现几个所述实施例。图10是一般化的视频编码器系统的方框图,可结合该系统实现几个所述实施例。图11是在几个所述的实施例中使用的宏块格式的图。图12A是隔行扫描视频帧的部分的图,示出顶场和底场的交替行。图12B是为编码/解码而组织为帧的隔行扫描视频帧的图,而图12C是为编码/解码而组织为场的隔行扫描视频帧。图13和14是代码列表,示出分别用于3个值的中值和4个值的中值计算的伪代码。图15和16示出隔行扫描的P场,每个场具有两个参考场。图17示出对于当前与参考场极性的不同组合,运动矢量的垂直分量与相应空间位置之间的关系。图18是流程图,示出用于为具有两个可能的参考场的隔行扫描的P场选择运动矢量预测值。图19示出用于当前宏块的由三个候选运动矢量预测值组成的两个集合。图20A-20F是代码列表,示出用于计算二个参考隔行扫描的P场中的运动矢量预测值的伪代码。图21A-21B是代码列表,示出用于定标来自一个场的预测值来导出来自另一个场的预测值。图22和23是示出与不同参考帧距离相关联的定标操作值的表。图24示出在组合的实现中用于隔行扫描的P场的帧层比特流语法。图25示出在组合的实现中用于隔行扫描的P场的场层比特流语法。图26示出在组合的实现中用于隔行扫描的P场的宏块层比特流语法。图27A和27B是代码列表,示出例示为一个参考隔行扫描的P场解码运动矢量差分的伪代码。图28A和28B是代码列表,示出例示为两个参考隔行扫描的P场解码运动矢量差分和主导/非主导预测值信息的伪代码。图29A和29B示出用于隔行扫描的P场中的1MV宏块的候选运动矢量预测值的宏块的位置。图30A和30B示出用于在混合的1MV/4MV隔行扫描的P场中的1MV宏块的候选运动矢量预测值的块的位置。图31A、31B、32A、32B、33和34示出用于在混合的1MV/4MV隔行扫描的P场中的4MV宏块中不同位置的块的候选运动矢量预测值的块的位置。图35A—35F是代码列表,示出在组合的实现中用于计算两个参考隔行扫描的P场中的运动矢量预测值的伪代码。图36是代码列表,示出用于确定两个参考隔行扫描的P场中的参考场的伪代码。具体实施方式本申请涉及用于隔行扫描的视频的有效压縮和解压縮的技术和工具。在所述的各种实施例中,例如,视频编码器和解码器在编码和解码隔行扫描视频帧中的预测场时结合用于预测运动矢量的技术,以及与包括不同层(layer)或级(level)(例如,序列级,图象(picture)/图象(image)级,场级,宏块级和/或块级)的比特流格式或语法一起使用的信令技术。例如在数字视频广播系统(例如,电缆、卫星、DSL等)中,可以使用这些技术和工具。特别地,所述的技术和工具提高了用于隔行扫描视频帧的正向预测场的块和/或宏块的运动矢量预测值的质量,从而允许运动矢量被更有效地编码。例如,描述用于使用周围的块和/或宏块的相邻运动矢量为当前场的块和/或宏块产生预测值运动矢量的技术,其中相邻运动矢量共同地参考两个场中的一个或两个作为参考。在所述技术和工具中实现的创新包括但不限于下列内容1)为隔行扫描的P场(interlacedP-field)中的块或宏块产生两个运动矢量预测值一个运动矢量预测值用于"偶数"参考场而一个运动矢量预测值用于"奇数"参考场。编码器/解码器为当前块或宏块考虑达六个运动矢量预测值候选(三个用于偶数运动矢量预测值,三个用于奇数运动矢量预测值)。多达六个运动矢量预测值候选的使用允许进行比现有方法更好的运动矢量预测。2)使用来自由当前运动矢量引用的参考场的运动矢量预测值如果当前运动矢量引用参考帧的相应场中的区域(指当前场与参考场是相同极性的),则使用来自那个参考场的运动矢量预测值。同样,如果使用相反极性场作为参考,则使用来自那个参考场的运动矢量预测值。这允许进行比现有方法更好的运动矢量预测值。3)使用定标操作为现有运动矢量候选的相反极性产生运动矢量预测值候选。编码器/解码器取用来自候选块/宏块位置的运动矢量,其中该运动矢量或者引用奇数场或者引用偶数场。编码器/解码器随后定标运动矢量来导出其它极性的运动矢量预测值候选。例如,如果一个毗邻宏块的实际运动矢量引用奇数场,则使用那个值作为来自毗邻宏块的奇数运动矢量预测值候选,并使用经定标的运动矢量值(从实际值导出的)作为来自毗邻宏块的偶数运动矢量预测值候选。尽管运动矢量预测值候选只是从三个块/宏块位置(具有三个运动矢量值)获得的,但编码器/解码器的不同极性运动矢量预测值候选的推导给出总数六个候选以供从中选择。4)在导出运动矢量预测值候选时使用取决于参考帧距离的定标操作。编码器/解码器使用当前场与两个参考场之间的相对时间距离来执行定标操作,定标操作从来自另一个场的现有运动矢量候选为缺少的极性导出预测值候选。考虑相对瞬时距离以执行定标的编码器/解码器,可以产生比假定不变的参考距离的编码器/解码器更准确的预测值。对于在此所述的实现的各种可替换方案是可能的。例如,参考流程图描述的技术可以通过改变流程图中所示阶段的顺序、通过重复或省略某些阶段等来改变。作为另一个例子,尽管某些实现是参考特定的宏块和/或块格式来描述的,但也可以使用其它格式。而且,参考隔行扫描的P场类型预测描述的技术和工具也可应用于其它类型的预测。可以组合地或独立地使用各种技术和工具。不同的实施例实现所述技术和工具中的一个或多个。在视频编码器或解码器中,或者在不是明确地受限于视频编码或解码的某些其它系统中,可以使用在此描述的技术和工具。I.计算环境图8例示合适的计算环境800的一般化例子,在该环境中可实现几个所述的实施例。计算环境800不是想要建议对使用范围或功能的任何限制,而是可在各种各样的通用或专用计算环境中实现这些技术和工具。参考图8,计算环境800包括至少一个处理单元810和存储器820。在图8中,这个最基本的配置830包括在虚线中。处理单元810执行计算机可执行指令,并可以是真实的或虚拟的处理器。在多处理器系统中,多个处理单元执行计算机可执行指令以增加处理能力。存储器820可以是易失性存储器(例如,寄存器、高速缓存、RAM),非易失性存储器(例如,R0M、EEPR0M、闪存等),或者两者的组合。存储器820存储实现具有隔行扫描的P场的二个参考场运动矢量预测值的视频编码器或解码器的软件880。计算环境可具有另外的特征。例如,计算环境800包括存储器840,一个或多个输入设备850,一个或多个输出设备860,以及一个或多个通信连接870。互连机制(未示出)诸如总线、控制器或网络将计算环境800的组件互相连接。一般地,操作系统软件(未示出)为在计算环境800中执行的其它软件提供操作环境,并协调计算环境800的组件的活动。存储器840可以是可移动的或不可移动的,并包括磁盘、磁带或盒、CD-ROM、DVD或任何可用于存储信息并在计算环境800内可以访问的其它介质。存储器840存储用于实现视频编码器或解码器的软件880的指令。输入设备850可以是接触式输入设备诸如键盘、鼠标、笔或轨迹球,语音输入设备,扫描设备或给计算环境800提供输入的其它设备。对于音频或视频编码,输入设备850可以是声卡,视频卡,TV调谐卡,或以模拟或数字形式接收音频或视频输入的相似设备,或将音频或视频样本读入计算环境800的CD-ROM或CD-RW。输出设备860可以是显示器,打印机,扬声器,CD-写入器,或从计算环境800提供输出的其它设备。通信连接870允许在通信介质上与另外的计算实体通信。通信介质传送信息,诸如计算机可执行指令、音频或视频输入或输入,或在经调制的数据信号中的其它数据。经调制的数据信号是一种信号,具有以将信息编码在该信号的这样一种方式设置或改变的其一个或多个特性。作为例子,而非限制,通信介质包括以电子、光、红外线、RF、声音或其它载波实现的有线或无线技术。可以在计算机可读介质的一般环境中描述本技术和工具。计算机可读介质是可以在计算环境内访问的任何可用介质。作为例子,而非限制性地,就计算环境800而言,计算机可读介质包括存储器820、存储装置840、通信介质和上述的任何组合。可以在计算机可执行指令的一般环境中描述本技术和工具,诸如包括在计算环境中在目标真实的(targetreal)或虚拟(virtual)的处理器上执行的程序模块中的计算机可执行指令。通常,程序模块包括例程、程序、库、对象、类、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。在各种实施例中按需要,可在程序模块之间组合或分开程序模块的功能。用于程序模块的计算机可执行指令可在本地或分布式计算环境内执行。为了表达,详细描述使用象"估计(estimate)"、"补偿(compensate)"、"预测(predict)"和"应用(apply)"这样的术语来描述计算环境中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应该与由人执行的动作混淆。相应于这些术语的实际计算机操作取决于实现而变化。II.一般化的视频编码器和解码器图9是一般化的视频编码器900的方框图,可结合它实现所述的实施例。图10是一般化的视频解码器1000的方框图,可结合它实现所述的实施例。在编码器900与解码器1000内的模块之间所示的关系表示在编码器和解码器中的一般信息流;为了简单,未示出其它关系。特别地,图9和10通常不示出表示用于视频序列、图象、宏块、块等的编码器设置、模式、表等的边信息(sideinformation)。这样的边信息是在输出比特流中发送的,一般在熵编码边信息之后。输出比特流的格式可以是WindowsMediaVideo版本9格式或其它格式。编码器900和解码器1000处理视频图象,视频图象可以是视频帧、视频场或帧和场的组合。在图象或宏块级的比特流语法和语义可取决于使用帧还是使用场。可以改变宏块组织和整个时序。编码器900和解码器1000是基于块的,并使用4:2:0宏块格式用于帧,其中每个宏块包括四个8x8亮度块(有时视为一个16x16宏块)和两个8x8色度块。对于场,可使用相同或不同的宏块组织和格式。可在不同阶段进一步子划分8x8块,例如在频率变换和熵编码阶段。在下面更详细地描述示例视频帧组织。可供替换地,编码器900和解码器1000是基于对象的,使用不同的宏块或块格式,或者对不同于8x8块和16x16宏块的大小或配置的像素执行操作。取决于实现和所希望的压縮类型,可增加、省略编码器或解码器的模块,将它们划分成多个模块,与其它模块组合起来,和/或用相似的模块代替它们。在可替换的实施例中,具有不同模块和/或模块的其它配置的编码器或解码器执行一个或多个所述技术。A.视频帧组织在某些实现中,编码器900和解码器1000处理按如下组织的视频帧。帧包含视频信号的空间信息的行。对于逐行扫描的视频,这些行包含从一个时刻开始并继续通过至帧的底部的连续行的样本。逐行扫描的视频帧被划分成宏块,诸如图11中所示的宏块1100。宏块1100包括四个8x8亮度块(Y1至Y4)和两个8x8色度块,后者与四个亮度块位置在一起,但在水平与垂直方向只有一半分辨率,按照常规的4:2:0的宏块格式。可在不同阶段进一步细分8x8块,例如,在频率变换和熵编码阶段。逐行I帧是帧内编码的逐行扫描视频帧。逐行扫描的P帧是使用前向预测编码的逐行扫描视频帧,而逐行扫描的B帧是使用双向预测编码的逐行扫描视频帧。逐行扫描的P和B帧可包括帧内编码的宏块和不同类型的预测宏块。对于隔行扫描的视频,帧由两个场即顶场和底场组成。这些场之一比另一个晚开始一个场周期。图12a示出隔行扫描的视频帧1200的部分,在隔行扫描的视频帧1200的左上部分包括顶场和底场的交替行。图12b示出为编码/解码而组织为帧1230的图12a的隔行扫描视频帧1200。隔行扫描视频帧1200已被划分成宏块,诸如宏块1231和1232,它们使用如在图11中所示的4:2:0格式。在亮度平面中,每个宏块1231、1232包括来自顶场的8行,与来自底场的8交替总数16行,且每一行16像素长。(没有示出宏块1231、1232内亮度块和色度块的实际组织和布置,且实际上对于不同的编码选择可以变化)。在给定的宏块内,可共同地或者独立地以任何各种各样的相位编码顶场信息和底场信息。隔行扫描的I帧是隔行扫描视频帧的两个帧内编码的场,其中宏块包括两个场的信息。隔行扫描的P帧是使用正向预测编码的隔行扫描视频帧的两个场,而隔行扫描的B帧是使用双向预测编码的隔行扫描视频帧的两个场,其中宏块包括两个场的信息。隔行扫描的P和B帧可包括帧内编码的宏块和不同类型的预测宏块。图12c示出为编码/解码而组织为场1260的图12a的隔行扫描视频帧1200。隔行扫描视频帧1200的两个场的每一个被划分成宏块。顶场被划分成宏块,诸如宏块1261,而底场被划分成宏块,诸如宏块1262。(再一次,宏块使用如在图11中所示的4:2:0格式,但未示出宏块内亮度块和色度块的组织和布置)。在亮度平面中,宏块1261包括来自顶场的16行,而宏块1262包括来自底场的16行,每一行16像素长。隔行扫描的I场是隔行扫描视频帧的单一、独立表示的场。隔行扫描的P帧是使用正向预测编码的隔行扫描视频帧的单一、独立表示的场,而隔行扫描的B场是使用双向预测编码的隔行扫描视频帧的单一、独立表示的场。隔行扫描的P和B场可包括帧内编码的宏块和不同类型的预测宏块。术语图片(picture)指源、编码的或重新构造的图象(image)数据。对于逐行扫描视频,图片是逐行扫描视频帧。对于隔行扫描的视频,图片可以指隔行扫描的视频帧,帧的顶场,或帧的底场,取决于上下文。B.视频编码器图9是一般化的视频编码器系统900的方框图。编码器系统900接收包括当前图片905在内的视频图片序列,并产生压縮的视频信息995作为输出。视频编码器的特定实施例一般使用一般化编码器900的变体或补充版本。编码器系统900压縮预测图片和关键图片(keypicture)。为了表示,图9示出关键图片通过编码器系统900的路径和预测图片的路径。编码器系统900的许多组件用于压縮关键图片和预测图片两者。由那些组件执行的准确操作可以根据正在压縮的信息类型变化。预测图片(也称为p图片,对于双向预测称为b-图片,或帧间编码的图片)是按照来自一个或多个其它图片(一般称为参考图片或锚(anchor))的预测值(或差)来表示的。预测剩余部分(predictionresidual)是所预测的与原来的图片之间的差。相反,在不参考其它图片的情况下压縮关键图片(也称为I图片,帧间编码的图片)。如果当前图片905是正向预测的图片,则运动估计器(motionestimator)910根据一个或多个参考图片来估计宏块或当前图片905的像素的其它集合的运动,参考图片是在图片存储器(picturestore)920、922中缓冲的重新构造的先前的图片。如果当前图片905是双向预测的图片(B图片),则运动估计器910根据两个或多个重新构造的参考图片来估计当前图片905中的运动。一般地,运动估计器根据至少一个在时间上在前的参考图片和至少一个在时间上在后的参考图片来估计B图片中的运动。因此,编码器系统900可以使用独立的存储器920和922用于后向和正向参考图片。关于双向预测图片的更多信息,见2003年七月18日提交的美国专利申请序列号10/622,378,标题为"AdvancedBi-DirectionalPredictiveCodingofVideoFrames(视步页帧的高级双向预测编码)"。运动估计器910可以按像素、%像素、X像素或者其它增量来估计运动,并可以在一个接一个图片基础或其它基础上切换运动估计的分辨率。运动估计的分辨率可以水平地和垂直地相同或不同。运动估计器910作为边信息输出运动信息915,诸如差分运动矢量信息。编码器900通过例如为运动矢量计算一个或多个预测值,计算运动矢量与预测值的差分并熵编码差分来编码运动信息。为了重新构造运动矢量,运动补偿器930将预测值与差分运动矢量信息组合起来。下面描述用于计算运动矢量预测值、计算差分运动矢量和为隔行扫描的P场重新构造运动矢量的各种技术。运动补偿器930将重新构造的运动矢量应用于重新构造的图片925,以形成经运动补偿的当前图片935。但是预测很少是完美的,而经运动补偿的当前图片935与原来的当前图片905之间的差是预测剩余部分945。可供替换地,运动估计器和运动补偿器应用另外类型的运动估计/补偿。频率变换器960将空间域视频信息转换成频域(即光谱)数据。对于基于块的视频图片,频率变换器960将离散余弦变换["DCT"],DCT的变体,或者其它块变换应用于像素数据或预测剩余部分数据块,产生频率变换系数块。可供替换地,频率变换器960应用另一种常规频率变换诸如傅立叶变换或使用小波或子带分析。频率变换器960可应用8x8、8x4、4x8、4x4或其它尺寸的频率变换。量化器970随后量化光谱数据系数块。量化器以在一个接一个图片基础或其它基础上变化的步长,对光谱数据应用均匀的标量量化。可供替换地,量化器对光谱数据系数应用另一种类型的量化,例如非均匀的、矢量的或非自适应的量化,或者在不使用频率变换的编码器系统中直接量化空间域数据。除自适应量化之外,编码器900可以使用帧丢弃(framedropping)、自适应滤波或其它技术用于速率控制。如果在预测图片中给定的宏块没有某些类型的信息(例如,没有用于宏块的运动信息和没有剩余部分信息),则编码器900可将宏块编码为跳过的宏块(skippedmacroblock)。如果有,则编码器在压縮的视频信息995的输出比特流中用信号表示跳过的宏块。当需要重新构造的当前图片用于后续的运动估计/补偿时,逆量化器976对量化的光谱数据系数执行逆量化。逆频率变换器966随后执行频率变换器960的逆操作,产生(为预测图片)重新构造的预测剩余部分或重新构造的关键图片。如果当前图片905是关键图片,则取重新构造的关键图片作为重新构造的当前图片(未示出)。如果当前图片905是预测图片,则将重新构造的预测剩余部分加到经运动补偿的当前图片935上,以形成重新构造的当前图片。图片存储器920、922之一缓冲在预测下一个图片时使用的重新构造的当前图片。在某些实施例中,编码器将解块(de-blocking)的滤波器应用于重新构造的图片以自适应地平滑图片中的不连续。熵编码器980压縮量化器970的输出和某个边信息(例如,对于运动信息915,量化步长)。典型的熵编码技术包括算术编码(arithmeticcoding),差分编码(differentialcoding),霍夫曼编码(Huffmancoding),行程长度编码(runlengthcoding),编码<XZcoding),词典编码(dictionarycoding),和上述的组合。熵编码器980—般使用不同编码技术用于不同种类的信息(例如,DC系数,AC系数,不同种类的边信息),并可以从特定编码技术内多个编码表中选择。熵编码器980提供压縮视频信息995给多路复用器["MUX,,]990。MUX990可包括缓冲器,并可将缓冲器级指示器(bufferlevelindicator)反馈回比特率自适应模块用于速率控制。在MUX990之前或之后,可以为在网络上传输,信道编码压縮的视频信息995。信道编码(channelcoding)可以将差错检测和校正数据应用于压縮的视频信息995。C.视频解码器图10是一般的视频解码器系统1000的方框图。解码器系统1000接收用于视频预测值的压縮序列的信息1095,并产生包括重新构造的图片1005的输出。视频解码器的特定实施例一般使用通用的解码器1000的变体或补充版本。解码器系统IOOO解压縮预测图片和关键图片。为了表示,图10示出关键图片通过解码器系统1000的路径和正向预测图片的路径。解码器系统1000的许多组件用于解压縮关键图片和预测图片两者。由那些组件执行的准确操作可以根据正在解压縮的信息的类型变化。DEMUX1090接收用于压縮的视频序列的信息1095并使接收的信息可用于熵解码器1080。DEMUX1090可包括抖动缓冲器(jitterbuffer)和其它缓冲器。在DEMUX1090之前或之后,压縮的视频信息可以被信道解码并为差错检测和校正对其处理。熵解码器1080熵解码经熵编码的量化的数据和经熵编码的边信息(例如,对于运动信息1015,量化步长),一般应用编码器中所执行的熵编码的逆操作。熵解码技术包括算术解码(arithmeticdecoding),差分解码(differentialdecoding),霍夫曼编码(Huffmandecoding),行程长度解码(runlengthdecoding),LZ解码(LZdecoding),词典解码(dictionarydecoding),以及上述的组合。熵解码器1080—般为不同种类的信息使用不同的解码技术(例如,DC系数,AC系数,不同种类的边信息),并可以从特定编码技术内的多个编码表中选择。解码器1000解码运动信息1015,例如通过为运动矢量计算一个或多个预测值,熵解码差分运动矢量,以及将经解码的差分运动矢量与预测值组合起来重新构造运动矢量。下面描述用于为隔行扫描的P帧计算运动矢量预测值、计算差分运动矢量和重新构造运动矢量的各种技术。运动补偿器1030将运动信息1015应用于一个或多个参考图片1025以形成正在重新构造的图片1005的预测1035。例如,运动补偿器1030使用一个或多个宏块运动矢量来查找参考图片1025中的宏块。一个或多个图片存储器(例如,图片存储器1020、1022)存储先前重新构造的图片用作参考图片。一般地,B图片具有多于一个参考图片(例如,至少一个在时间上在先的参考图片和至少一个在时间上在后的参考图片)。因此,解码器系统iooo可以使用分开的图片存储器1020和1022用于后向和前向参考图片。运动补偿器1030可以以像素、^像素、^像素或其它增量来补偿运动,并可以在一个接一个图片基础或其它基础上切换运动补偿的分辨率。运动补偿的分辨率可以在水平或垂直上相同或不同。可供替换地,运动补偿器应用另一种类型的运动补偿。通过运动补偿器的预测很少是完美的,因此解码器iooo还重新构造预测剩余部分。逆量化器1070逆量化经熵解码的数据。一般而言,逆量化器以在一个接一个图片基础或其它基础上变化的步长,对经熵解码的数据应用均匀的、标量的逆量化。可供替换地,逆量化器对数据应用其它类型的逆量化,例如,非均匀的、矢量的或非自适应的量化,或者在不使用逆频率变换的解码器系统中直接逆量化空间域数据。逆频率变换器1060将量化的、频域数据转换成空间域视频信息。对于基于块的视频图片,逆频率变换器1060对频率变换系数的块应用逆DCT["IDCT"]、IDCT的变体或其它逆块变换,分别为关键图片或预测图片产生像素数据或预测剩余部分数据。可供替换地,逆频率变换器1060应用另外的常规逆频率变换诸如逆傅立叶变换或使用小波或子带综合。逆频率变换器1060可应用8x8、8x4、4x8、4x4或其它大小的逆频率变换。对于预测图片,解码器IOOO将重新构造的预测剩余部分1045与运动补偿预测1035结合起来以形成重新构造的图片1005。当解码器需要重新构造的图片1005用于随后的运动补偿,图片存储器之一(例如图片存储器1020)缓冲重新构造的1005以在预测下一个图片时使用。在某些实施例中,解码器1000对重新构造的图片应用解块滤波器(de-blockingfilter)以自适应地平滑图片中的不连续。III.运动矢量预测值可以使用用于宏块(或块)的运动矢量来预测那些宏块(或块)的因果关系的近邻中的运动矢量。例如,编码器/解码器可以从用于相邻的候选宏块的运动矢量之中为当前宏块选择运动矢量预测值,并预测地使用该运动矢量预测值为当前宏块编码运动矢量。编码器/解码器可以使用三个值的中值(median-of-three)预测,四个值的中值(median-of-four)预测,或某种其它技术来从来自相邻宏块的候选运动矢量之中为当前宏块确定运动矢量预测值。在图13的伪代码1300中描述用于三个值的中值预测的过程。在图14的伪代码1400中描述用于四个值的中值预测的过程。IV.用于隔行扫描图片的场编码典型的隔行扫描视频帧由在不同时间扫描的两个场(例如,顶场和底场)组成。一般而言,通过将场编码在一起("帧模式"编码)来编码隔行扫描视频帧的静止区域更有效。另一方面,通过独立地编码场("场模式"编码)来编码隔行扫描视频帧的移动区域常常更有效,因为两个场倾向于不同的运动。正向预测的隔行扫描视频帧可被编码为两个独立的正向预测场--隔行扫描的P场。独立地为正向预测隔行扫描视频帧编码场可能是有效的,例如,当遍及隔行扫描的视频帧有高度运动,并因此在场之间有更多的差异。A.用于隔行扫描的P场的参考场隔行扫描的P场引用一个或多个其它场(一般为先前的场,可以编码在比特流中或者可以不编码在比特流中)。例如,在某些实现中,隔行扫描的P场可具有一个或两个参考场。如果隔行扫描的P场具有两个参考场,则用于P场的块或宏块的特定运动矢量参考这两个参考帧中所选择的一个。图15和16示出具有两个参考场的隔行扫描的P场的例子。在图15中,当前场1510参考在时间上在前的帧中的顶场1520和底场1530。由于场1540和1550是隔行扫描的B场,它们不用作为参考场。在图16中,当前场1610参考紧接在包含当前场1610的隔行扫描视频帧之前的预测帧中的顶场1620和底场1630。在其它情况下,隔行扫描的P场引用单个场,例如,最近的或次最近的I场或P场。可供替换地,隔行扫描的P场可使用来自从不同类型或时间位置的帧得到的其它场的场作为参考场。B.场图片坐标系统和场极性运动矢量单位可以用像素/子-像素(sub-pixel)单位或场单位来表示。例如,如果运动矢量的垂直分量表示六个四分之一像素单位的位移,这表示一又二分之一场行的位移,因为在场中每行一个像素高。图17示出在一个实现中运动矢量的垂直分量与空间位置之间的关系。在图17中所示的例子示出三个不同情景1710、1720和1730,用于当前和参考场类型(例如顶和底)的三种不同组合。如果当前和参考场的场类型不同,则极性"相反"。如果场类型相同,则极性"相同"。对于每一种情景,图17示出当前场中的像素的一个垂直列和参考场中的像素的第二垂直列。实际上,这两个列是水平对齐的。圆圈表示实际的整数像素位置而X表示内插的二分之一或四分之一像素位置。水平分量值(未示出)不需要考虑因隔行扫描引起的任何偏移,因为相应的场是水平对齐的。负值表示进一步向上偏移,且在相反的方向中,如所示的正值垂直偏移。在情景1710中,极性"相反"。当前场是顶场而参考场是底场。相对于当前场,参考场的位置因隔行扫描在向下方向中偏移二分之一像素。因而,垂直运动矢量分量值0表示参考场中的位置,它在当前场中的位置之下偏移二分之一像素,作为默认的"无运动"值。垂直分量值+2表示在当前场中位置之下偏移整个像素(以绝对值)的位置,它是参考场中的内插值,而垂直分量+4表示在当前场中位置之下偏移一又二分之一像素(以绝对值)的位置,它是参考场中的实际值。在情景1720中,极性也"相反"。当前场是底场而参考场是顶场。相对于当前场,参考场的位置因隔行扫描在向上方向中偏移二分之一像素。因而,垂直运动矢量分量0表示参考场中高于当前场中位置二分之一像素的位置(以绝对值),垂直分量值+2表示与当前场中位置相同水平(以绝对值)的位置,而垂直分量+4表示在当前场中位置之下偏移二分之一像素的位置(以绝对值)。在情景1730中,极性"相同",没有应用垂直偏移,因为当前场的位置与相对于参考场的位置相同。可供替换地,按照不同的惯例表示运动矢量的位移。V.在用于预测编码/解码隔行扫描的P场的运动矢量预测方面的创新所述实施例包括用于编码和解码隔行扫描的视频(例如隔行扫描的p场)的技术和工具。所述技术和工具可以彼此结合或者结合其它技术和工具使用,或者可以独立地使用。特别地,所述技术和工具规定例如为隔行扫描的p场的块和/或宏块产生运动矢量预测值的方法,其中隔行扫描的p场使用两个场作为参考用于运动补偿预测编码。所述技术和工具实现一个或多个创新,包括但不限于下列内容1.产生两个运动矢量预测值-一个用于偶数场参考,一个用于奇数场参考。每个预测值是从三个先前编码的、候选的相邻运动矢量导出的。2.使用来自相同参考场的运动矢量预测值作为当前运动矢量(都参考相同的参考场)。3.定标一个场的实际运动矢量预测值候选值,为其它场产生运动矢量预测值候选用于运动矢量预测。4.使用定标操作(它使用当前场与两个参考场之间的相对时间距离),由另一种极性的现有运动矢量预测值候选,为一种参考极性导出运动矢量预测值候选。在隔行扫描的视频中,可不使用运动预测(帧内或I场)、使用前向运行预测(P场)或使用双向预测(B场)来编码场。所述技术和工具包括为隔行扫描的P场的部分计算运动矢量预测值,尤其在可以参考两个最近的(以显示顺序)I或p场中任何一个时发生运动补偿的情况下。假定两个参考场是相反极性的,即指一个参考场表示隔行扫描视频帧的奇数行,而另一个参考场表示相同或不同的隔行扫描视频帧的偶数行。这是在图24中表示的信令协议的情况,它示出用于隔行扫描的图片的场图片类型的语法元素(FPTYPE)。或者,例如,再次参考图15,当前场1510参考顶场1520和底场1530,它们分别表示视频帧的奇数和偶数行。A.在两个参考场图片中的运动矢量预测用两个参考场P-场,当前场可以在相同的时间方向上引用两个场(例如两个最近的在前参考场)。在两个参考场隔行扫描的P场的情况下,编码器和解码器为块或宏块的运动矢量在两个运动矢量预测值之间选择。在某些实施例中,一个预测值用于与当前场相同极性的参考场,而另一个用于相反极性的参考场。其它极性组合也有可能。在某些实施例中,编码器/解码器通过查找奇数场预测值和偶数场为当前块或宏块计算运动矢量预测值,并选择一个预测值来处理宏块。例如,图18示出一种技术1800,用于为具有两个可能的参考场的隔行扫描的P场的块或宏块计算运动矢量预测值。在1810,编码器/解码器确定奇数场运动矢量预测值和偶数场运动矢量预测值。运动矢量预测值之一因而具有与当前场相同的极性,而另一个运动矢量预测值具有相反极性。在1820,编码器/解码器从奇数场运动矢量预测值与偶数场运动矢量预测值之中选择运动矢量预测值。例如,编码器在运动矢量预测值之间基于哪一个给出更好的预测的运动矢量预测值来选择。或者,编码器选择参考相同参考场的运动矢量预测值作为当前正在预测的运动矢量。编码器使用简单的选择信号或使用更复杂的结合上下文信息(contextualinformation)以提高编码效率的信令,用信号表示要使用哪一个运动矢量预测值。上下文信息可表示奇数场或偶数场中的哪一个、或者相同极性场或相反极性场中的哪一个是在块或宏块周围的近邻中主要使用的。解码器基于选择信号和/或上下文信息来选择要使用哪一个运动矢量预测值。在1830,编码器/解码器使用所选择的运动矢量预测值来处理运动矢量。例如,编码器编码运动矢量与运动矢量预测值之间的差分。或者,解码器通过将运动矢量差分与运动矢量预测值结合起来解码运动矢量。可供替换地,编码器和/或解码器可跳过确定奇数场运动矢量预测值或确定偶数场运动矢量预测值。例如,如果编码器确定将为用于特定块或宏块的运动补偿使用奇数场,则编码器只确定奇数场运动矢量预测值。或者,如果解码器根据上下文和/或用信号表示的信息确定将为运动补偿使用奇数场,则解码器只确定奇数场运动矢量预测值。因此,编码器和解码器可避免不必要的操作。在一个实现中,解码器使用下列技术来为当前隔行扫描的P场确定运动矢量预测值对于隔行扫描的P场中每一个具有运动矢量的块或宏块,获得两组三个候选的运动矢量预测值。在图19中示出相对于当前宏块1900的相邻宏块,从它们获得这些候选的运动矢量预测值。这些候选中的三个来自于偶数参考场,三个来自于奇数参考场。由于在每个候选方向(A、B或C)中相邻宏块将或者是帧内编码的或者具有实际的运动矢量(它或者引用偶数场或者引用奇数场),因此有必要导出其它场的运动矢量。例如,对于给定的宏块,假定预测值A具有引用奇数场的运动矢量。在这种情况下,"偶数场"预测值候选A是从"奇数场"预测值候选A的运动矢量导出的。这个推导是使用定标操作来完成的。(例如,见下面图21A和21B的说明)。可供替换地,推导是以另一种方式完成的。一旦已获得三个奇数场候选运动矢量预测值,就使用中值操作(median叩eration)来从三个奇数场候选中导出一个奇数场运动矢量预测值。同样,一旦已获得三个偶数场候选运动矢量预测值,就使用中值操作从三个偶数场候选中导出一个偶数场运动矢量预测值。可供替换地,使用另一种机制基于候选场运动矢量预测值来选择场运动矢量预测值。解码器决定使用偶数场还是使用奇数场作为运动矢量预测值(例如,通过选择主导预测值),并使用偶数或奇数运动矢量预测值来重新构造运动矢量。在图20A-20F中的伪代码2000例示用于从如在图19中安排的预测值A、B、C产生运动矢量预测值的过程。尽管图19示出在当前隔行扫描的P场的中间的一个典型宏块的近邻,但图20A-20F的伪代码2000处理宏块位置的各种特殊情况。此外,可使用伪代码2000为在各种位置的块的运动矢量计算运动矢量预测值。在伪代码2000中,应该理解,术语"相同场"和"相反场"是相对于当前正在编码或解码的场而言的。例如,如果当前场是偶数场,贝ij"相同场"是偶数参考场,而"相反场"是奇数参考场。伪代码2000中的变量samefieldpred—x和samefieldpred—y表示来自相同场的运动矢量预测值的水平和垂直分量,而变量oppositefieldpred—x禾口oppositefieldpred—y表示来自相反场的运动矢量预测值的水平和垂直分量。变量saraecount和oppositecount分别跟踪有多少用于当前块或宏块的近邻的运动矢量引用对于当前场的"相同"的极性参考场和有多少引用"相反"极性参考场。在伪代码的开始处将变量samecount和oppositecoimt初始化为0。使用在伪代码2000中提到的定标操作scaleforsame()和scalefor叩posite()从近邻的实际运动矢量值为"其它"场导出运动矢量预测值候选。定标操作是由实现决定的。下面参考图21A、21B、22和23描述示例定标操作。可供替换地,例如,使用其它定标操作来补偿诸如在图17中所示的垂直位移。图20A和20B示出用于为典型的内部块或宏块计算运动矢量预测值。将用于"帧内"近邻的运动矢量设置为0。对于每一近邻,设置相同场运动矢量预测值和相反场运动矢量预测值,其中一个是由近邻的运动矢量的实际值设置的,而另一个是从它导出的。为相同场运动矢量预测值和相反场运动矢量预测值计算候选白勺中值,并根据samecount禾口oppositecount确定"主导(dominant),,预测值。变量dominat印redictor表示哪一个场包含主导运动矢量预测值。如果运动矢量预测值具有与三个候选预测值中大多数相同的极性,则它是主导的。(用信号表示的值predictor—flag,连同运动矢量差分数据一起被解码,表示使用主导还是非主导预测值)。在图20C中的伪代码处理每行只有一个宏块的隔行扫描的P场中的宏块的情况,其中的宏块没有近邻B和C。在图20D和20E中的伪代码处理在隔行扫描的P场左边缘的块或宏块的情况,其中的块或宏块没有近邻C。这里,如果运动矢量预测值具有与多于两个候选预测值的相同极性,则它是主导的,而在平分(tie)的情况下,奇数场运动矢量预测值是主导的。最后,在图20F中的伪代码处理例如隔行扫描的P场的首行中的宏块的情况。B.用于从另一个场运动矢量预测值导出一个场运动矢量预测值的定标在一个实施例中,编码器/解码器使用在图21A和21B的伪代码中例示的定标操作从另一个场运动矢量预测值导出一个场运动矢量预测值。SCALE0PP、SCALESAME1、SCALESAME2、SCALEZ0NE1—X、SCALEZ0NE2—Y、Z0NE10FFSET_X和Z0NE10FFSET—Y的值是由实现决定的。图22的表2200中和图23的表2300中所示的两个可能的值集合,前者用于当前场是隔行扫描的视频帧中的第一个场,而后者用于当前场是隔行扫描视频帧中的第二个场。在表2200和2300中,参考帧距离是作为当前场与包含在时间上最远的参考场之间的B图片(即包括两个B场的视频帧)的数量来定义的。在表2200与表2300中所示的例子中,N的值取决于运动矢量范围。例如,扩展的运动矢量范围可以通过语法元素EXTENDED—MV=1来用信号表示。如果EXTENDED_MV=1,则MVRANGE语法元素存在于图片首部中并用信号表示运动矢量范围。如果EXTENDED_MV=0,则使用默认的运动矢量范围。表1示出N与MVRANGE之间的关系。表1:在图22禾Q23中N的推导<table>tableseeoriginaldocumentpage28</column></row><table>在表2200和2300中的值可以根据实现来修改。可供替换地,不使用扩展的运动矢量范围信息,或者以某种其它方法来执行定标。VI.组合的实现现在描述用于比特流语法和解码器的详细的组合实现,之外还描述具有与主组合实现微小差别的可替换组合实现。A.比特流语法在各种组合实现中,以具有多个层(layer)(例如,序列、帧、场、宏块、块和/或子块层)的比特流的形式提供用于隔行扫描的P场的数据。用于包括隔行扫描的P场的每一帧的数据由帧首部和跟随其后的用于场层的数据组成。在图24中示出构成用于包括隔行扫描的P场的帧的帧首部的比特流元素。在图25中示出构成用于隔行扫描的P场的场首部的比特流元素。在图26中示出构成用于隔行扫描的P场的宏块层的比特流元素。下面的章节描述在涉及用信号表示隔行扫描的P场的块或宏块的运动矢量预测值的帧、场和宏块层中所选择的比特流元素。I.选择的帧层元素图24示出在组合实现中用于包括隔行扫描的P场的帧的帧级(frame-level)比特流语法。下面描述具体的比特流元素。帧编码模式(FrameCodingMode)(FCM)(可变大小)FCM是可变长度代码字(variablelengthcodeword)["VLC"],用于表示图片片码类型。FCM取下面在图2中所示的用于帧编码模式的值表2:帧编码模式VLC<table>tableseeoriginaldocumentpage29</column></row><table>场图片类型(FieldPictureType)(FPTYPE)(3位)FPTYPE是在用于包括隔行扫描的P场的帧的帧首部中存在的三比特语法元素。FPTYPE取按照下面表3用于不同组合的场类型的值。表3:场图片类型FLC<table>tableseeoriginaldocumentpage29</column></row><table>P参考距离(PReferenceDistance)(REFDIST)(可变大小)REFDIST是可变大小的语法元素。这个元素表示当前帧与参考帧之间的帧数量。表4示出用于编码REFDIST值的VLC。表4:REFDISTVLC表<table>tableseeoriginaldocumentpage30</column></row><table>表4中最后一行表示用于表示比2大的参考帧距离的代码字。它们被编码为(二进制)ll,跟随着N-3个1,其中N是参考帧距离。代码字中的最后位是0。例如N=3,VLC代码字410,VLC大小二3N=4,VLC代码字4110,VLC大小4N=5,VLC代码字=11110,VLC大小-5在可替换的组合实现中,在用于隔行扫描的P场的场层的开始处代替在用于包括隔行扫描的P场的帧的帧层处用信号表示图片类型信息,并省略P参考距离。2.选择的场层元素图25示出在组合实现中用于隔行扫描的P场的场级(field-level)比特流语法。下面描述具体的比特流元素。参考图片的数量(NumberofReferencePictures)(NUMREF)(1比特)NU服EF语法元素是一个一比特语法元素,表示当前场引用一个还是两个先前的参考场图片。如果NU服EF^,则当前P场图片可只引用一个场。在这种情况下,在图片层比特流中跟随着REFFIELD语法元素。对于具有两个参考场的隔行扫描的P场,NUMREF=1。参考场图片指示器(ReferenceFieldPictureIndicator)(REFFIELD)(1比特)如果而MREF二O,REFFIELD是在隔行扫描的P场图片首部中存在的一个1位语法元素。REFFIELD表示使用哪一个先前解码的场作为参考。如果REFFIELDK),则使用在时间上最近的(以显示顺序)I或P场作为参考。如果REFFIELD=1,则使用在时间上次最近的I或P场图片作为参考。扩展的MV范围标志(ExtendedMVRangeFlag)(MVRANGE)(可变大小)MVRANGE是在序列层EXTENDED—MV位设置为1时存在的可变大小的语法元素。MVRANGEVLC表示运动矢量范围。扩展的差分MV范围标志(ExtendedDifferentialMVRangeFlag)(DMVRANGE)(可变大小)如果序列级语法语法元素EXTENDED—DMV=1,则存在DMVRANGE,它是可变大小的语法元素。DMVRANGEVLC表示运动矢量差分范围。运动矢量模式(MotionVectorMode)(MVM0DE)(可变大小或1比特)MVMODE语法元素用信号表示四种运动矢量编码模式之一或一种强度补偿模式。若干后续的元素提供另外的运动矢量模式和/或强度补偿信息。宏块模式表(MacroblockModeTable)(MBMODETAB)(2或3比特)MBMODETAB语法元素是定长字段。对于隔行扫描的P场,MBMODETAB是3比特值,表示使用八个霍夫曼表中的哪一个来解码宏块层中的宏块模式语法元素(MBMODE)。运动矢量表(MotionVectorTable)(MVTAB)(2或3比特)MVTAB语法元素是一个2或3位值。对于其中NUMREF=1的隔行扫描的P场,MVTAB是3比特语法元素,表示使用八个隔行扫描的霍夫曼表中的哪些来解码运动矢量数据。4MV块图案表(4MVBlockPatternTable)(備BPTAB)(2比特)4MVBPTAB语法元素是一个2比特值。对于隔行扫描的P场,只有当MVM0DE(或MVM0DE2,如果MVMODE设置为强度补偿)表示图片是"混合的MV"类型时才提供它。4MVBPTAB语法元素用信号表示使用四个霍夫曼表中的哪一个来解码4MV宏块中的4MV块图案(4MVBP)语法元素。3.选择的宏块层元素图26示出在组合实现中用于隔行扫描的P场的宏块级(macroblock-level)比特流语法。下面描述具体的比特流元素。用于宏块的数据由宏块首部和跟随其后的块层数据构成。宏块模式(MacroblockMode)(MBM0DE)(可变大小)MBM0DE语法元素表示宏块类型(1MV、4MV或帧内),并存在CBP标志和运动矢量数据,如在下面VI.B.3.节中详细描述的。运动矢量数据(MotionVectorData)(MVMTA)(可变大小)MVDATA是可变大小的语法元素,它编码用于宏块的运动矢量的差分,在下面VI.B.3.节中详细描述它的解码。4MV块.图案(4MVBlockPattern)(4MVBP)(4比特)4MVBP语法元素表示4个亮度块中哪一个包含非零运动矢量差分,在下面VI.B.3.节中详细描述其使用。一>块级运动矢量数据(Block-levelMotionVector)(BLKMVDATA)(可变大小)BLKMVDATA是可变大小的语法元素,包含用于块的运动信息,并存在于4MV宏块中。混合运动矢量预测(HybridMotionVectorPrediction)(HYBRIDPRED)(1比特)HYBRIDPRED是每运动矢量1比特语法元素。如果预测值显式地编码在比特流中,则提供一个比特表示使用预测值A还是预测值C作为运动矢量预测值。B.解码隔行扫描的P场下面的章节描述用于在组合实现中解码隔行扫描的P场的过程。1.帧/场层解码参考图片P场图片可引用一个或两个先前编码的场。在图片层中的NUMREF语法元素是一个一比特语法元素,表示当前场可引用一个还是两个先前的参考场图片。如果NUMREF^,则当前隔行扫描的P场图片的块和宏块可只引用一个场。如果NUMREF二1,则当前隔行扫描的P场图片的块或宏块可使用两个在时间上最近的(以显示顺序)I或P场图片中的任何一个作为参考。图15和16示出两个参考P-场的例子。P场图片类型隔行扫描的P场图片可以两种类型之一1MV或混合的MV(Mixed-MV)。下面的章节描述每种类型。在1MVP场中,每个运动补偿的宏块使用单个运动矢量来表示用于在宏块中所有6个块的预测的块的位移。1MV模式是由MVMODE和MVM0DE2图片层语法元素用信号表示的。在混合的MVP场中,每个运动补偿的宏块可编码为1MV或4MV宏块。在4MV宏块中,4个亮度块的每一个具有与其相关联的运动矢量。在混合的MVP场中,用于每一个宏块的1MV或4MV是由MBMODE语法元素在每个宏块表示的。混合的MV模式是由MVMODE和MVM0DE2图片层语法元素用信号表示的。2.宏块层解码在隔行扫描的P场中的宏块可以是3种可能类型之一1MV、4MV和帧内(Intra)。宏块类型是由宏块层中的MBMODE语法元素用信号表示的。下面的章节描述1MV和4MV类型以及如何用信号表示它们。1MV宏块1MV宏块可在1MV和混合的MVP场图片中出现。在1MV宏块中,对于宏块中所有6个宏块,单个运动矢量代表当前和参考图片之间的位移。对于1MV宏块,在宏块层中的MBMODE语法元素表示三项内容1)宏块类型是1MV2)CBPCY语法元素是否存在3)MVDATA语法元素是否存在如果MBMODE语法元素表示CBPCY语法元素存在,则CBPCY语法元素存在于相应位置中的宏块层中。CBPCY表示6个块中哪些被编码在块层中。如果MBMODE语法元素表示CBPCY语法元素不存在,则假定CBPCY等于0且不存在用于宏块中6个块的任何一个的块数据。如果MBMODE语法元素表示MVDATA语法元素存在,则MVDATA存在于相应位置中的宏块层中。MVDATA语法元素编码运动矢量差分。将运动矢量差分与运动矢量预测值结束起来重新构造运动矢量。如果MBMODE语法元素表示MVDATA语法元素不存在,则假定运动矢量差分是零并因此运动矢量等于运动矢量预测值。4MV宏块4MV宏块只可在混合的MV图片中出现。在4MV宏块中,在宏块中的4个亮度块的每一个具有相关联的运动矢量,它表示用于那个块的当前和参考图片之间的位移。用于色度块的位移是从4个亮度运动矢量导出的。对于4MV宏块,宏块层中的MBM0DE语法元素表示三项内容1)宏块类型是4MV2)CBPCY语法元素是否存在4MVBP语法元素表示4个亮度块中的哪些包含非零运动矢量差分。4MVBP语法元素解码成0与15之间的值。对于4MVBP中的4个比特位置(bitposition)的每一个,值0表示不存在用于那个块的运动矢量差分(BLKMVDATA)并假定运动矢量差分是0。值1表示在相应位置中存在用于那个块的运动矢量差分(BLKMVDATA)。例如,如果4MVBP解码成值1100(二进制),则比特流包含用于块0和1的BLKMVDATA而没有用于块2和3的BLKMVDATA。在可替换的实现中,MBM0DE语法元素可以表示4MVBP语法元素是否存在;如果MBM0DE语法元素表示4MVBP语法元素不存在,则假定用于所有4个亮度块的运动矢量差分数据(BLKMVDATA)存在。取决于MVM0DE/MVM0DE2语法元素表示混合的MV还是表示全部lMV(al1-1MV),MBMODE用信号表示如下的信息。表5示出MBMODE如何用信号表示关于在全部1MV图片中的宏块的信息。表5:在全剖卜IMV图片中的宏块模式<table>tableseeoriginaldocumentpage35</column></row><table>表6示出MBMODE如何用信号表示关于混合的MV图片中的宏块的信息表6:在混合的1MV图片中的宏块模式索引宏块类型CBP存在MV存在<table>tableseeoriginaldocumentpage35</column></row><table>使用8个表之一来用信号表示MBMODE。在图片层处通过MBMODETAB语法元素用信号表示该表。3.运动矢量解码过程下列章节描述用于P场图片的块或宏块的运动矢量解码过程。解码运动矢量差分MVDATA或BLKMVDATA语法元素为宏块中的宏块或块编码运动信息。1MV宏块具有单个MVDATA语法元素,而4MV宏块可具有零与四个之间的BLKMVDATA元素。下面的章节描述如何为一个参考(one-reference)(图片层语法元素NUMREF二O)和两个参考(two-reference)(图片层语法元素NUMREF:1)情况计算运动矢量差分。在一个参考场图片中的运动矢量差分在只有一个参考场的场图片中,在宏块层中每个MVDATA或BLKMVDATA语法元素共同地编码两项内容l)水平运动矢量差分分量和2)垂直运动矢量差分MVDATA或BLKMVDATA语法元素是可变长的霍夫曼码字(Huffmancodeword)和跟随着的定长码字。霍夫曼码字的值确定定长码字的大小。在图片层中的MVTAB语法元素指定用于解码可变大小的码字的霍夫曼表。在图27A中的伪代码2700例示如何为一个参考场解码运动矢量差分。在伪2700中计算值dmv—x和dmv—y。按如下定义这些值dmv一x:差分水平运动矢量分量,dmv一y:差分垂直运动矢量分量,k—x,k一y:用于长运动矢量的固定长度,k—x和k—y取决于如由MVRANGE符号定义的运动矢量范围。表7:由MVRANGE指定的k—x和k一y<table>tableseeoriginaldocumentpage36</column></row><table>extend—x:用于水平运动矢量差分的扩展范围,extend—y:用于垂直运动矢量差分的扩展范围,extend—x和extend—y是从DMVRANGE图片场语法元素导出的。如果DMVRANGE表示使用用于水平分量的扩展范围,则extend—x=l。否则extend—x=0。同样,如果DMVRANGE表示使用用于垂直分量的扩展范围,则extend—y二l,否贝廿extend—y=0。offset—table(偏移表)是在伪代码2700中使用的数组,并如在图27A中所示的那样定义。在图27B中的伪代码2710例示在可替换的组合实现中如何为一个参考场编码运动矢量差分。伪代码2710以不同的方式解码运动矢量差分。例如,伪代码2710省略了扩展的运动矢量差分范围的处理。在两个参考场图片中的运动矢量差分在使用场屈片编码隔行扫描帧时出现两个参考场图片。序列的每个帧被分成两个场,每个场使用实际上是逐行扫描的编码路径来编码每个场。场图片常常具有两个参考场,并在下面描述在这种情况下场图片运动矢量的编码。在具有两个参考场的场图片中,在宏块层中的每个MVDATA或BLKMVDATA语法元素共同地编码三项内容l)水平运动矢量差分分量,2)垂直运动矢量差分分量和3)是否使用主导或非主导的预测值,即由运动矢量引用两个场中的哪一个。MVDATA或BLKMVDATA语法元素是变长的霍夫曼码字并跟随着的定长码字。霍夫曼码字的值确定定长码字的大小。在图片层中的MVTAB语法元素指定用于解码可变大小的码字的霍夫曼表。在图28A中的伪代码2800例示如何编码运动矢量差分和主导/非主导的预测值信息。在图28A中的伪代码2800中计算值predictor—flag、dmv—x和dmv—y。除在图27A中的伪代码2700中所示的变量和数组之外,伪代码2800包含变量predictor一flag,它是表示使用主导还是非主导运动矢量预测值的二进制标志(0=使用主导预测值,1=使用非主导的预测值),以及表size—table,它是如在图28中所示的那样定义的数组。在图28B中的伪代码2810例示在可替换的组合实现中如何为两个参考场解码运动矢量差分。伪代码2810以不同的方法解码运动矢量差分。例如,伪代码2810省略了扩展的运动矢量差分范围的处理。运动矢量预测值通过将前一节中计算的运动矢量差分加到运动矢量预测值上来计算运动矢量。预测值是由多达三个相邻的运动矢量来计算的。下面的章节描述在这个组合实现中如何为1MVP场图片和混合的MVP场图片计算运动矢量预测值。在1MV隔行扫描的P场中的运动矢量预测值图29A和29B示出为隔行扫描的P场的1MV宏块的候选运动矢量预测值考虑的宏块位置。在1MV隔行扫描的P场中,从左边、上部和右上的宏块取候选预测值,除了在宏块是行中最后一个宏块的情况之外。在这种情况下,预测值B是从左上的宏块取得的,而不是右上。对于帧是一个宏块宽的特殊情况,预测值总是预测值A(上部的预测值)。当前宏块在首行中的特殊情况(没有A和B预测值,或者根本没有预测值),参考上面图20A-20F来处理。在混合的MVP图片中的运动矢量预测值图30A-34示出为混合的MVP场图片中的1MV或4MV宏块的多达3个候选运动矢量预测值考虑的宏块位置。在下列图中,较大的正方形是宏块边界,而较小的正方形是块边界。对于帧是一个宏块宽的特殊情况,预测值总是预测值A(上部预测值)。当前块或宏块在顶行中的特殊情况是参考上面图20A-20F来处理的。图30A和30B示出为混合的1MV/4MV隔行扫描的P场中的1MV当前宏块的候选运动矢量预测值考虑的块位置。相邻的宏块可以是1MV或4MV宏块。图30A和30B示出假定近邻是4MV时(即预测值A是在当前宏块之上的宏块中的块2的运动矢量,而预测值C是紧接着当前宏块的左边的宏块中的块1的运动矢量)候选运动矢量的位置。如果任何近邻是1MV宏块,则取在图29A和29B中所示的运动矢量预测值作为用于整个宏块的矢量。如图30B所示,如果宏块是行中最后的宏块,则预测值B来自左上的宏块中的块3而不是来自右上的宏块中的块2,否则反之。图31A-34示出为在4MV宏块中的4个亮度块的每一个的候选运动矢量预测值考虑的块位置。图31A和31B示出为在混合的1MV/4MV隔行扫描的P场中的4MV宏块中在位置0处的块的候选运动矢量预测值考虑的块位置;图32A和32B示出为在混合的隔行扫描的P场中的4MV宏块中在位置1处的块的候选运动矢量预测值考虑的块位置;图33示出为在混合的1MV/4MV隔行扫描的P场中的4MV宏块中在位置2处的块的候选运动矢量预测值考虑的块位置;以及图34示出为在混合的1MV/4MV隔行扫描的P场中的4MV宏块中在位置3处的块的候选运动矢量预测值考虑的块位置。再一次,如果近邻是1MV宏块,则为宏块的块使用用于宏块的运动矢量预测值。对于宏块是行中第一个宏块的情况,与行中其余宏块的块0不同地处理块0的预测值B。在这种情况下,从紧接在当前宏块之上的宏块中的块3而不是从当前宏块之上和左边的宏块中的块3来取预测值B,.否则反之。同样,对于宏块是行中最后一个宏块,不同地处理块1的预测值B。在这种情况下,从紧接在当前宏块之上的宏块中的块2而不是从当前宏块之上和右边的宏块中的块2来取预测值B,否则反之。如果宏块在第一宏块列中,则将块0和2的预测值C设置为等于O。主导和非主导的MV预测值在两个参考场P场图片中,对于每个帧间编码的宏块,导出两个运动矢量预测值。一个来自主导场,而另一个来自非主导场。主导场被认为是包含近邻的实际值运动矢量预测值候选的大部分的场。在平分的情况下,用于相反场的运动矢量预测值被认为是主导预测值。在主导/非主导预测值的计算中不考虑帧内编码的宏块。如果所有候选预测值宏块是帧内编码的,则主导和非主导运动矢量预测值设置为零,并从相反的场取主导预测值。计算运动矢量预测值如果NUMREF4,则当前场图片可参考两个最近的场图片,且为块或宏块的每个运动矢量计算两个运动矢量预测值。在图35A-35F中的伪代码3500描述在组合实现中如何为于两个参考情况计算运动矢量预测值。(在图20A-20F中的伪代码2000描述在另一个实现中如何为两个参考情况计算运动矢量预测值)。在两个参考图片(NUMREF4)中,当前场可引用两个最近的场。一个预测值用于相同极性的参考场,而另一个用于具有相反极性的参考场。在组合实现中的定标操作图21A-B是代码图,示出用于定标来自一个场的预测值来导出来自另一个场的预测值的伪代码2100。在图22的表2200中(对于当前场是第一个场的情况)和在图23的表2300中(对于当前场是第二个场的情况),示出在这个组合实现中的SCALE0PP、SCALESAME1、SCALESAME2、SCALEZ0NE1—X、SCALEZ0NE1—Y、ZONE1OFFSET—X和ZONE1OFFSET—Y的值。在图片首部中的REFDIST中编码参考帧距离。参考帧距离是REFDIST+1。重新构造运动矢量下面的章节描述如何为1MV和4MV宏块重新构造亮度和色度运动矢量。在重新构造运动矢量之后,随后可使用它作为相邻的运动矢量来为邻近的宏块预测运动矢量。如果运动矢量用于两个参考场隔行扫描的P场中的块或宏块,则运动矢量将具有相关联的"相同"或"相反"的极性,且可用于为运动矢量预测值的其它场极性导出运动矢量预测值。亮度运动矢量重新构造在所有情况(1MV和4MV宏块)下,通过如下将差分加到预测值上来重新构造亮度运动矢量mv—x=(dmv—x+predictor—x)smodrange—xmv—y=(dmv—y+predictor—y)smodrange—y模操作"smod"是带符号模,按如下定义Asmodb二((A+b)%(2*b))-b这确保重新构造的矢量是有效的。(Asmodb)位于-b与b-l之内。range_x和range—y取决于MVRANGE。如果隔行扫描的P场图片使用两个参考图片(NUMREF4),则将在解码运动矢量差分之后导出的predictor—flag与从运动矢量预测值导出的dominatpredictor值结合起来以确定使用哪一个场作为参考。在图36中的伪代码3600描述如何确定参考场。在1MV宏块中,将存在用于4个构成宏块的亮度分量的块的单个运动矢量。如果MBM0DE语法元素表示在宏块层中不存在MV数据,则dmv—x=0和dmv—y=0(mv—x=predictor—x且mv—y=predictor_y)。在4MV宏块中,在宏块中的每一个帧间编码的亮度块将具有其自己的运动矢量。因此在每个4MV宏块中将存在0与4个之间的亮度运动矢量。如果4MVBP语法元素表示不存在用于块的运动矢量信息,则对于那个块dmv—X=0和dmv—y(mv—x=predictor_x且mv—y=predictor—y)。色度运动矢量重新构造色度运动矢量是从亮度运动矢量导出的。在可替换的实现中,对于4MV宏块,基于亮度块或场的状态作出关于将色度块作为帧间还是帧内编码的决定。已经参考各种实施例描述和例示了我的发明的原理,将认识到,可以在不脱离这样的原理的情况下在安排和细节上修改各种实施例。应该理解,在此描述的程序、过程或方法与任何特定类型的计算环境无关,或者不受限于它们,除非另有说明。可与各种类型的通用或专用计算环境一起使用或执行按照在此描述的教导的操作。在软件中所示的实施例的元素可在硬件中实现,反之亦然。由于许多可能的实施例可应用我的发明原理,我要求我的发明所有这样的实施例都落在所附的权利要求书及其等价物的范围和精神之中。权利要求1.一种视频编码的方法,其特征在于,所述方法包括为当前隔行扫描的P场的当前部分的运动矢量计算运动矢量预测值,包括识别当前部分的第一近邻的第一候选运动矢量,所述第一候选运动矢量引用具有第一极性的第一参考场;识别当前部分的第二近邻的第二候选运动矢量,所述第二候选运动矢量引用具有不同于第一极性的第二极性的第二参考场;定标所述第二候选运动矢量;至少使用所述第一候选运动矢量和定标的第二候选运动矢量来确定所述运动矢量预测值;计算所述运动矢量和运动矢量预测值之间的运动矢量差分;以及在一比特流中发送指示所述运动矢量差分的信息。2.—种视频解码的方法,其特征在于,所述方法包括从一比特流中接收指示当前隔行扫描的P场的当前部分的运动矢量的运动矢量差分的信息;计算该运动矢量的运动矢量预测值,包括识别当前部分的第一近邻的第一候选运动矢量,所述第一候选运动矢量引用具有第一极性的第一参考场;识别当前部分的第二近邻的第二候选运动矢量,所述第二候选运动矢量引用具有不同于第一极性的第二极性的第二参考场;定标所述第二候选运动矢量;至少使用所述第一候选运动矢量和定标的第二候选运动矢量来确定所述运动矢量预测值;从所述运动矢量差分和运动矢量预测值中重新构造所述运动矢量。3.如权利要求l或2所述的方法,其特征在于,所述第一极性与当前隔行扫描的P场相同,而所述第二极性与当前隔行扫描的P场相反,其中所述定标适用于从相反极性到相同极性的定标。4.如权利要求1或2所述的方法,其特征在于,所述第一极性与当前隔行扫描的P场相反,而所述第二极性与当前隔行扫描的P场相同,其中所述定标适用于从相同极性到相反极性的定标。5.如权利要求1或2所述的方法,其特征在于,所述定标至少部分基于参考帧距离。6.如权利要求5所述的方法,其特征在于,所述参考帧距离指示了在当前隔行扫描的帧和先前隔行扫描的帧之间的距离,所述当前隔行扫描的帧包括当前隔行扫描的p场,而所述先前隔行扫描的帧包括所述第一参考场和第二参考场中在时间上离所述当前隔行扫描的p场更远的那个参考场。7.如权利要求1或2所述的方法,其特征在于,所述定标包括在多个定标值的表中查找一个定标值。8.如权利要求1或2所述的方法,其特征在于,所述定标包括在两个表中的一个表中查找一个定标值,其中,当当前隔行扫描的P场是当前隔行扫描的帧中的第一场时使用所述两个表中的第一个表,而当当前隔行扫描的P场是当前隔行扫描的帧中的第二场时使用所述两个表中的第二个表。9.如权利要求l或2所述的方法,其特征在于,所述部分是一宏块。10.如权利要求1或2所述的方法,其特征在于,所述部分是一宏块的一块。11.如权利要求l或2所述的方法,其特征在于,所述运动矢量预测值是引用所述第一参考场的第一极性的运动矢量预测值,所述方法进一步包括-计算引用所述第二参考场的第二极性的运动矢量预测值;以及在使用所述第一极性的运动矢量预测值和使用第二极性的运动矢量预测值之间进行选择。12.—种编码器,包括处理器和存储介质,所述存储介质存储了用于使得所述处理器执行如权利要求1所述的方法的计算机可执行指令。13.—种解码器,包括处理器和存储介质,所述存储介质存储了用于使得所述处理器执行如权利要求2所述的方法的计算机可执行指令。全文摘要描述用于编码和解码隔行扫描的视频中预测图象的技术和工具。例如,视频编码器或解码器为隔行扫描的P场的一部分(例如,一个块或宏块)的运动矢量计算运动矢量预测值,包括在为该部分使用相同极性或使用相反极性的运动矢量预测值之间选择。编码器/解码器至少部分地基于为该运动矢量计算的运动矢量预测值来处理运动矢量。该处理可以包括在编码过程中计算运动矢量与运动矢量预测值之间的差分,并在解码过程中由运动矢量差分与运动矢量预测值来重新构造运动矢量。该选择可以至少部分地基于在该部分周围的近邻的相反极性运动矢量的计数和/或相同极性运动矢量的计数。文档编号H04N7/36GK101335896SQ200810144049公开日2008年12月31日申请日期2004年9月7日优先权日2003年9月7日发明者T·W·豪尔克姆申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1