运动矢量预测方法及其系统的制作方法

文档序号:7604652阅读:123来源:国知局
专利名称:运动矢量预测方法及其系统的制作方法
技术领域
本发明整体上涉及对视频数据的处理,更具体地说涉及一种运动矢量预测方法。
背景技术
采用视频数据压缩算法的数字视频协议是已知的并被普遍使用。用于压缩数字视频数据的协议例如由运动图像专家组(MPEG)提出的一组协议,称为MPEG2和MPEG4协议。这里参考MPEG协议在压缩或编码处理过程中,这些协议试图规定如何利用来自前一帧的冗余图像部分。一种用于实现这种压缩的压缩技术提供了一个帧部分的运动矢量,这个帧部分被编码为指明一个相似的图像部分在前一个所显示的帧中位于何处。通过为基本相似的前一个所显示的帧提供一个运动矢量,只需要存储两幅图像之间的差别,从而大大减少了需要传输或存储的数据量。
识别前一个帧中与被编码的图像部分基本相似的图像部分的处理是一个运算开销很大的过程。因此,人们试图估计一个基本相似的帧将出现在哪里。这种估计被称为运动矢量预测。运动矢量预测的已知方法使用来自当前帧的前一个被编码部分的运动矢量作为当前被编码部分的预测运动矢量。提高运动矢量预测的技术的用处在于,能够减少后续编码处理时间。



图1示出了根据现有技术的视频数据的表示方式;图2以图例方式示出了根据本发明的一个特定实施例,用来确定一个预测运动矢量的多个视频数据帧;图3和图4示出了根据本发明的特定方法的流程图;图5以框图的形式示出了根据本发明的系统。
具体实施例方式
在本发明中,确定与第一个视频数据帧相关联的第一组运动矢量。并且确定与第二个视频数据帧相关联的第二组运动矢量。与第二个视频数据帧相关的一个像素组的一个运动矢量根据所述第一组运动矢量和第二组运动矢量被预测出来。在一个实施例中,第一个视频数据帧是在所述第二帧之前被编码的一帧像素数据。第一帧也可以是在所述第二个视频数据帧之前被显示的帧。
为了清楚起见,图1用于表示这里所用的术语。具体来说,图1示出了两个数据帧102和103。帧103被表示为由术语T(0)所示的当前视频数据帧。使用类似的术语,帧102被表示为由T(-1)所示的前一帧。可以理解,相对于编码过程,帧102先前在前一个时间周期内已经被编码。类似地,用于帧103的指示符T(0)表示帧103是当前正在被编码的帧。
帧103或任意帧的更详细的示图由帧映射图100来表示。具体来说,帧映射图100示出了帧103由编号为00至99的多个像素组构成。根据MPEG协议,像素组00至99被称为宏块(macroblocks)。每个宏块(特别地用宏块96来表示)由四个数据块组成。每个数据块包括一个8×8像素矩阵,用像素矩阵107来表示。为了进行描述,术语“宏块”这里用来表示一个被编码的特定像素组。然而,应该理解,除了“宏块”之外的其他像素组也可以用于这里所描述的编码过程。例如,编码过程可以在一个数据块一个数据块的基础上进行,或者可以在一些其他像素组大小的基础上进行。此外,尽管这里通常使用的术语与MPEG协议中的术语一致,这里所描述的方法和系统也可以等同地应用到使用运动矢量的压缩技术的其他系统和方法。参照图2-5将更好地理解本发明的特定实施例。
图2示出了一个当前正在被编码的帧202,以及用于先前已编码的帧204的像素数据。在编码过程中,帧202中的每个宏块通过将其像素与前一帧204的像素进行相关运算被压缩。请注意,帧202的宏块与之进行相关的前一帧204是一个参考帧。换句话说,帧202的宏块与该参考帧的像素进行相关,其中所述参考帧在当前帧的解压过程中被提供。通常前一帧将在当前帧之前被编码,因此,先前被编码的帧204的宏块已经具有将被包含在运动矢量信息中的经过压缩的数据。
根据本发明的一个特定实施例,帧202的宏块当前正在被编码。一个与宏块43相关的指示符“p”表示正在为该宏块43预测一个运动矢量。包含宏块00至42的区域203表示已经被编码的当前帧202的宏块。为了进行讨论,假设当前帧202中先前已被编码的宏块中的每一个宏块都具有运动矢量。
根据本发明的一个特定实施例,当前正在被编码的宏块43根据来自相邻宏块的运动矢量接收一个预测运动矢量。所述相邻的宏块可能是包含宏块43的帧202中的相邻宏块,也可能是在前一帧204中与帧202中的宏块协同定位的宏块,这些宏块与帧202中的宏块43直接相邻。例如,用等式210来表示,对宏块43的预测运动矢量是宏块32、33、34和42的运动矢量的函数,在图2中帧202中的所有这些宏块都用“X”来标记。但是,帧202中其他直接相邻的宏块没有被编码,因此还不具有运动矢量。换句话说,相对于帧202,宏块位置44、52、53和54还不具有能够用于运动矢量预测的运动矢量。
并非仅根据帧202中那些已编码的宏块来对帧202的宏块43进行运动矢量预测,本发明利用了前一帧204中与协同定位的宏块相关运动矢量。帧204中协同定位的宏块位置用“X”来标记。例如,帧204中宏块44的运动矢量与帧204中宏块52-54的运动矢量共同使用。通过这种方式,帧202中宏块43的预测运动矢量在更大的一组先前已存在的运动矢量的基础上来确定。在另一个实施例中,也可以利用来自并非直接相邻的宏块位置的运动矢量。例如,可以利用来自正在被编码的两个宏块内的宏块位置的运动矢量。在该实施例中,帧202中在位置21-25、31、35和41处的运动矢量可以用于预测过程。类似地,帧204中在位置45、51、55和61-65处的运动矢量可以用于预测过程。
图3以流程图的形式示出了根据本发明用于预测运动矢量的方法。在步骤201中,确定与第一个视频数据帧相关联的第一组运动矢量。参照图2,在一个实施例中第一组运动矢量与帧202相关,并包括来自宏块32、33、34和42的运动矢量。请注意,该实施例包括每个在正交方向或对角线方向上与当前正在被编码的宏块直接相邻的宏块的运动矢量。应该理解,在其他实施例中,使用的是与正在被编码的宏块直接相邻的正交宏块或者对角线宏块。在另外一个实施例中,可使用在正在被编码的两个宏块之内的宏块。
在步骤202,与第二个视频数据帧相关联的第二组运动矢量被确定。再次参照图2,第二组运动矢量包括来自帧204的宏块44、52、53和54的运动矢量。如前面所提到的,包含在第二组运动矢量中的宏块包括帧204中的那些与帧202中与正在被编码的宏块直接相邻的宏块协同定位的宏块的运动向量。在其他实施例中,只考虑正交的或对角线上宏块。在另一个实施例中,可以使用与正在被编码的两个宏块内的宏块协同定位的宏块。
在步骤203,根据第一和第二组运动矢量为第一个视频数据帧预测第一个运动矢量。例如,参照图2,帧202中的宏块43的预测运动矢量根据等式210被预测。应该理解,一旦完成了对运动矢量的预测,它可以用作正在被编码的宏块的实际运动矢量,或者它可以用作另一个编码过程的起始点,以确定要与正在被编码的宏块相关联的最后一个运动矢量。
有多种方法可以利用步骤201和202中的第一和第二组运动矢量中的运动矢量来推导出一个所预测的运动矢量。一个实施例是确定第一和第二组中的运动矢量的平均值。第二个实施例是确定包含在第一和第二组运动矢量之内的运动矢量的中间值。另一实施例是在采用特定算法之前通过运动矢量组内的运动矢量进行不同的加权来预测运动矢量。另外,可以使用第一和第二组内的所有运动矢量,也可以仅使用上述运动矢量组中的一部分运动矢量。例如,可确定第一和第二组运动矢量中的一个或多个运动矢量在某些方面与其他运动矢量中的大多数不相同(例如在幅度和/或方向上不同),或者它位于其他一些统计参数之外,如标准差,这使其不会被包含在该组中。
在前面的讨论中,已经假定正在被编码的帧202以及先前被编码的帧204中的每个宏块都具有一个运动矢量。但是,一个编码宏块具有一个运动矢量并不总是必需的。当与正在被编码的宏块直接相邻的编码宏块没有运动矢量时,可进行多种选择。例如,用于生成预测运动矢量的运动矢量组可能具有一个较小的运动矢量。在另一个实施例中,用于预测预测运动矢量的运动矢量组可能包括具有一个预定值,如(0,0)的运动矢量。另一个选择是使用与相邻宏块不同的运动矢量。例如,如果帧202的编码宏块32没有运动矢量,作为替代,可使用与其直接相邻的宏块之一的运动矢量。在另一个实施例中,如果当前正在被编码的帧中的编码宏块没有相关的运动矢量,则可以使用先前被编码的帧中与其协同定位的宏块的运动矢量。以类似的方式,如果与当前帧中的一个宏块协同定位的宏块没有运动矢量,用一个具有预定值,如(0,0)的运动矢量进行代替,或者使用通过与协同定位的0,0直接相邻的邻近运动矢量所计算出的替代运动矢量。
图4以流程图的形式示出了一种根据本发明的方法。具体来说,图4中的流程图示出了用于确定图3中的步骤201、202所示的第一和第二组运动矢量的方法。
在步骤221,识别出一个与当前正在被编码的帧相关联的像素组,如宏块。接下来,在步骤222,判断该像素组是否与正在被编码的像素组直接相邻。请注意,在其他实施例中,在步骤222中可以识别出比直接相邻的宏块更远的宏块,以将其包含在内。然而参照图2所示的实施例,只有与帧203中的宏块43直接相邻的宏块能够得到步骤222至223中的处理流程。特别地,如果该像素组与当前正在被编码的像素组并非直接相邻,则不能认为它是第一和第二组运动矢量中的一部分,并且流程进行到流程步骤226,其中流程对该像素组终止。如果该像素组与当前正在被编码的像素组直接相邻,则流程进行到步骤223。
在步骤223,判断该像素组是否已经被编码。如果该像素组还没有被编码,如图2中所示的帧203中的像素组44,则流程进行到步骤227。否则,如果已经被编码,则流程进行到步骤224。
在步骤224,判断对于该像素组是否存在一个运动矢量。如果对于该像素组存在一个运动矢量,则流程进行到步骤225,其中该运动矢量被包括到用于第二组运动矢量的像素组中,这在图3中是用于正在被编码的帧的像素组。然而,如果对于该像素组不存在运动矢量,则流程从步骤224进行到步骤226,在所述的两组运动矢量中不包含运动矢量。
在步骤227,判断对于协同定位的像素组是否存在一个运动矢量。如果对于协同定位的像素组存在一个运动矢量,则在步骤228种将其包括进来,作为第一组运动矢量的一部分,这个第一组运动矢量时用于先前已编码的帧的运动矢量组。以这种方式,能够很容易地确定第一和第二组运动矢量的数目。
图5示出了根据本发明的一个特定实例例的系统。具体来说,图5所示的系统100具有一个数据处理器310和一个存储器320。在工作时,数据处理器310访问存储器300,以执行程序指令322并对视频数据324进行处理。例如,视频数据324通常包括图2中的帧202和204中的视频帧数据。类似地,视频处理器310通常包括一个用于执行指令的指令执行单元。另外,数据处理器310可包括辅助处理器312,该辅助处理器可包括专用的硬件、加速器和/或微代码引擎,能够加速编码处理。进一步应该理解的事,图5中的信息处理器300可以是通用计算机或专用计算机的一部分,或者被集成为大型系统的一部分。
在前面详细描述的实施例中,并且参照了作为其一部分的附图,其中通过实例方式示出了特别的实施例,对本发明进行了公开。这些实施例被充分详细地描述,以使本领域技术人员能够实施本发明,并且应该理解,也可以使用其他的实施例,可以对本发明做出逻辑、机械和电气上的改动,而不会背离本发明的主旨或保护范围。为了避免对于本领域技术人员实施本发明不必要的细节,说明书中省去了本领域技术人员所公知的信息。此外,本领域技术人员可以很容易地构造包含了本发明的指导的许多其他实施例。因此,本发明并不局限于这里所提到的特定方式,相反,本发明覆盖了其他的改动、改进和等价物,这可以很合理地包括在本发明的主旨和保护范围中。因此前面详细描述的说明并不具有限制意义,本发明保护范围仅通过所附的权利要求来限定。
权利要求
1.一种方法,包括以下步骤确定与第一个视频数据帧相关联的第一组运动矢量;确定与第二个视频数据帧相关联的第二组运动矢量;并且根据所述第一组运动矢量和第二组运动矢量为第二个视频数据帧中的第一个像素组预测一个第一运动矢量。
2.如权利要求1所述的方法,其中所述确定步骤还包括描述要在第二个视频数据帧之前被显示的图像的第一个视频数据帧。
3.如权利要求1所述的方法,其中所述确定第一组运动矢量的步骤包括为第二个像素组确定一个第二运动矢量;所述确定第二组运动矢量的步骤包括为第三个像素组确定一个第三运动矢量;并且所述预测步骤包括使用所述第二运动矢量和第三运动矢量来预测所述第一运动矢量,其中所述第三运动矢量与第二个帧中的所述第一运动矢量直接相邻。
4.如权利要求3所述的方法,其中所述预测步骤包括预测所述第一运动矢量,其中所述第二运动矢量与一个和第二个帧中的所述第一像素组直接相邻的第四像素组协同定位。
5.如权利要求3所述的方法,其中所述预测步骤包括预测所述第一运动矢量,其中所述第二运动矢量与一个和第二个帧中的所述第一像素组直接相邻的第四像素组协同定位。
6.如权利要求1所述的方法,其中所述确定第一组运动矢量的步骤包括第一组运动矢量中的每个运动矢量与一个和所述第一个像素组直接相邻的像素组协同定位。
7.如权利要求6所述的方法,其中所述确定第二组运动矢量的步骤包括第二组运动矢量中的每个运动矢量对应于一个和所述第一个像素组直接相邻的像素组。
8.如权利要求1所述的方法,其中所述确定第二组运动矢量的步骤包括第二组运动矢量中的每个运动矢量对应于一个和所述第一个像素组直接相邻的像素组。
9.如权利要求1所述的方法,其中所述确定第一组运动矢量的步骤包括识别出与一个和所述第一像素组直接相邻的像素组协同定位的像素组。
10.如权利要求1所述的方法,其中所述确定第一组运动矢量的步骤包括识别出与一个和所述第一像素组直接相邻的像素组协同定位的像素组的运动矢量。
11.如权利要求1所述的方法,其中所述预测第一运动矢量的步骤包括根据第一组运动矢量和第二组运动矢量确定所述第一运动矢量的平均值。
12.如权利要求11所述的方法,其中所述预测第一运动矢量的步骤包括当确定所述平均值时将一个运动矢量从所述第一组运动矢量中去除。
13.如权利要求1所述的方法,其中所述预测第一运动矢量的步骤包括根据第一组运动矢量和第二组运动矢量确定所述第一运动矢量的均值。
14.如权利要求13所述的方法,其中所述预测第一运动矢量的步骤包括当确定所述均值时将一个运动矢量从所述第一组运动矢量中去除。
15.如权利要求1所述的方法,其中一个像素组代表一个8×8像素块。
16.如权利要求1所述的方法,其中一个像素组代表一个16×16像素块。
17.一种系统,包括一个视频数据处理单元;一个与所述视频数据处理单元相连接的存储器,该存储器包括一个视频数据存储区,用于存储第一个视频数据帧和第二个视频数据帧;以及一个程序存储区,用于存储程序指令,所述程序指令用于确定与第一个视频数据帧相关联的第一组运动向量;确定与第二个视频数据帧相关联的第二组运动矢量;并且根据所述第一组运动矢量和第二组运动矢量为第二个视频数据帧中的第一个像素组预测一个第一运动矢量。
18.如权利要求17所述的方法,其中所述用于确定第一组运动向量的程序指令包括确定与一个和所述第一个像素组直接相邻的像素组协同定位的第一组运动矢量中的每个运动矢量。
19.如权利要求17所述的方法,其中所述用于确定第二组运动向量的程序指令包括确定对应于一个和所述第一个像素组直接相邻的像素组的第二组运动矢量中的每个运动矢量。
20.一种方法,包括以下步骤接收具有第一个像素组的第一个视频数据帧,所述第一个视频数据帧要在第一时间进行显示;接收具有第二个像素组合第三个像素组的第二个视频帧,其中所述第二个像素组和第三个像素组相互之间在水平、垂直或对角线方向中的一个方向上直接相邻,所述第一个像素组余所述第三个像素组协同定位,所述第二个视频数据帧要在第二时间进行显示;为第一个像素组确定一个运动矢量;并且根据第一个像素组的运动矢量为第二个像素组确定一个运动矢量。
21.如权利要求20所述的方法,其中所述接收第二个视频帧的步骤包括在所述第一时间之后的第二时间。
22.如权利要求21所述的方法,其中所述为第二个像素组确定运动矢量的步骤包括当还没有为第三个像素组确定一个运动矢量时,根据第一个像素组的运动矢量为第二个像素组确定一个运动矢量。
23.如权利要求21所述的方法,其中所述为第二个像素组确定运动矢量的步骤包括根据以下的任一项为第二个像素组确定一个运动矢量当还没有为第三个像素组确定一个运动矢量时,根据第一个像素组的运动矢量;以及当已经为第三个像素组确定了一个运动矢量时,根据第三个像素组的运动矢量。
全文摘要
确定与第一个视频数据帧相关联的第一组运动矢量。并且确定与第二个视频数据帧相关联的第二组运动矢量。根据所述第一组运动矢量和第二组运动矢量预测与第二个视频数据帧中的一个像素组的运动矢量。在一个实施例中,所述第一个视频数据帧是在所述第二个帧被之前被编码的一帧像素数据。所述第一帧也可以是要在所述第二个视频数据帧之前显示的帧。
文档编号H04N7/50GK1739297SQ200480002270
公开日2006年2月22日 申请日期2004年1月14日 优先权日2003年1月16日
发明者帕特里克·M.·劳特, 曾志华 申请人:Vixs系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1