图象数据处理的制作方法

文档序号:7565078阅读:187来源:国知局
专利名称:图象数据处理的制作方法
技术领域
本发明涉及用于视频预测编码的产生移动矢量类型的图象数据的处理方法,其中第一视频帧位于参考帧及第二视频帧之间。
本发明也涉及用于视频预测编码的产生移动矢量类型的图象数据的处理装置,其中第一视频帧位于参考帧及第二视频帧之间。
预测编码是一种公知的用于压缩视频数据的技术。将待编码的视频帧与参考帧相比较,不是产生出代表独立的帧的数据,而是产生出代表参考帧与待编码帧之间差值的数据。
如果在图象中发生移却时,在参考帧与待编码帧之间单个象素的比较其效率显著地变低。但是,倘若移动经常导致图象中一些单元重布置,而不是一个图象完全的重发生时,仍然具有一定的固有冗余度,并且这可被用来促使进一步的压缩。
一个视频序列中的移动经常是由在图象不同部分之间移动的单元组成的。假定视频帧每秒出现25或30帧,对于最常观看的物体其移动程度从一帧到另一帧是相当和缓的。因此,移动通常由象素值的重新布置组成及该固有冗余度可被利用以便促进数据压缩。
理论上,可以考虑每个单个象素的移动,对于所考虑的目前帧的每个单个象素识别在参考帧中类似象素的位置。但是,可以理解,对于每个单个象素产生移动矢量,与传输单个象素值本身相比将提供很小的压缩,因此,为了获得一定的压缩度,必须对象素的区域计算移动矢量并假定该整个区域以相同方式移动。因而,公知了将视频图象分成象素块,例如由16×16个象素组成的方块。于是,在对块中的每个象素传输差值数据以前,围绕一个参考块中的类似区域进行搜索以识别参考块中的象素块,此时该识别的象素块再与待传输的块相比较,并产生出最小绝对差值的平均项。这样,一旦确定出来,这些差值项就与移动矢量一起被传输出去,其中移动矢量在参考帧中识别相对于与被传输块类似位置的块的真正参考块的位置。
预测编码可用来对紧跟在参考帧后的帧产生差值。此外,该方法也可用来预测后继的帧,如帧n+2,及帧n+3等。在这些情况下,对其考虑到移动的参考帧搜索区域的规模将随帧间隔的每次增加而增加。此外,应理解这种增加以两维的方式出现。
为了有助于移动矢量的计算,可以采用嵌套(telescoping)技术,其中在帧n及帧n+1之间识别用于第一帧位移的移动矢量,然后参考帧n及对帧n+1计算的移动矢量来对帧n+2计算移动矢量。于是,这两个移动矢量可被“嵌套”在一起,以提供出从帧n 帧n+2的移动矢量。
当实时地确定移动矢量时,最大程度地减少从参考帧中读出象素值的次数将是极有利的。因此,一个参考帧象素区域将被序贯地读出并提供到多个并行处理器。
每个移动矢量的计算涉及参考帧中的象素窗孔。当处理一帧间隔时,这些窗孔相重叠,因此一个区域可能由多个重叠的窗孔组成,这使得被读出的所有数据对多个处理器是可利用的。此外,已知随着象素值的读取移近窗孔边缘时,可比较的数目将下降(因为待编码块中可从这些参考象素移动的象素数目减少了),因而当对其目前块可比较数目开始下降时,对于每个处理器可以开始对一新块处理移动矢量。于是,每个处理器可设置成以基本恒定速率来处理象素的比较。
在理论上,对于与参考帧隔开不止一个帧间隔的视频帧的块的处理基本上以与单个帧间隔的情况类似的方式进行。但是,为了获得可比较的结果,移动矢量可能存在的规模必须成正比地增大。因此,对该区域必须作出的比较量变得过大,并且实施起来是不现实的。
对这个问题的解决是嵌套地进行象素比较。在嵌套方案中,在参考帧中为第二帧考虑的象素位置的窗孔譬如可以与用于第一帧的窗孔具有相同规模。但是,当对第二帧确定移动矢量时,利用由对第一帧的等效块计算出的移动矢量确定的一个外延来再定位该窗孔。因此对于第二帧所需的比较数目变得与对于第一帧所需的比较数目相同,这将改善可实施性。
使用该嵌套方案的一个问题是,就其本质而言,窗孔将以对在先帧确定出的移动矢量进行位移。因此,窗孔可能重叠,但在被读区域中窗孔的真正布置是完全不能预测的而是由视频图象的特征确定的。虽然,为了计算一个特定的移动矢量仅必须读出常规规模窗孔中参考帧的象素值,但是窗孔的位置将改变,因为它们可能位于在所有增大规模的多帧间隔的移动矢量所限定的区域中的任何位置上。因而,通过将象素值提供给多个处理器,使在参考帧中读取象素值的次数减到最小程度的需要是和通过对检验窗孔实行嵌套偏移作出比较以减少处理器的负担的要求相抵触的。
根据本发明的第一方面,提供了上述类型的一种方法,其特征在于包括下列步骤参考所述参考帧处理所述第一帧中的象素块,以产生第一帧移动矢量;从所述参考帧中读出足够大的象素区域,以便参考所述参考帧,提供对所述第二帧的移动矢量的直接计算;并行地处理从所述参考帧中读出的象数值,以便并行地产生多个第二帧移动矢量;及响应所述第一帧移动矢量启动所述处理步骤。
根据本发明的第二方面,提供了上述类型的图象数据处理装置,其特征在于包括处理装置,用于参考所述参考帧处理所述第一帧中的象素块,以产生第一帧移动矢量;从所述参考帧中读出足够大的象素区域,以便参考所述参考帧,提供对所述第二帧移动矢量的直接计算的装置;处理装置,用于并行地处理从所述参考帧中读出的象素值,以便并行地产生多个第二帧移动矢量;及启动装置,用于响应所述第一帧移动矢量,启动所述处理装置。
因而,本发明提供了允许参考帧中象素值区域被序贯地读出并提供给多个处理器的优点。但是,每个处理器并不负担不需由它处理的象素值,因为对每个处理器提供了由对在先帧计算出的移动矢量得到的启动信号。
以下将参照附图通过仅为例子的方式来描述本发明,附图为

图1表示用于对视频信号压缩及扩展、以便传输或存储它们的一个系统,它包括执行时间压缩的电路;图2A表示一个待编码帧的象素块及参考帧中的一个象素块,它们用于计算移动矢量;图2B表示计算移动矢量的一个算法程序;
图3详细表示图1中所示类型的用于执行时间压缩的一个公知电路;图4A表示根据MPEG建议方案考虑的在编码前的帧的类型;图4B表示MPEG帧的编码流;图5详细表示用于对根据MPEG建议方案压缩了的视频帧解码的电路;图6表示与待编码帧相比较的一个参考帧或区域,它用于当该帧与参考帧隔开大于一帧间隔时计算其移动矢量;图7表示为了计算移动矢量的嵌套式搜索;图8表示利用嵌套法计算移动矢量的电路,它包括移动矢量计算电路;及图9详细表示图8所示的移动矢量计算电路。
图1中表示出用于压缩视频信号、传输或存储所述信号和扩展所述被传输及被储存的视频信号的一个系统。全带宽视频信号由视频信号发生器14产生出来,该发生器可以是摄象机或视频重播装置、如磁带式放象机或光盘播放机等的形式。信号发生器14产生一个序列的原始帧15,它被提供给一个时间压缩电路16。该时间压缩电路利用在时间上分开的帧之间的相似性并产生代表所述帧之间差别的编码信号。所述时间压缩电路16的输出被提供给空间压缩电路17,它设计来利用特定图象帧中的另外冗余信息。因此,空间压缩电路17利用余弦变换编码,使得对每帧产生的数据量依赖于在帧中包含的真实信息量。
因此,时间压缩及空间压缩的组合被认为可获得显著的视频数据压缩度,它允许被压缩的这类视频信号能在有限带宽的频道上传输,例如是在电视电话中使用的频道上传输,或是用另一种方式,存储在标准的以计算机为基础的存储媒界上,例如单片磁盘或以音频为基础的高密度光盘(CD-ROM)上。
来自空间压缩电路17的输出信号被放大器18放大,以便传输或存储,如标号19中所示的。
在一个接收机上,或在重播装置中,从传输媒界接收到的及从存储装置中读出的编码信号被提供给一个放大器20,以后对取得压缩所进行的处理进行反向处理,以使得图象数据被扩展。于是,电路21执行空间扩展,然后电路22执行时间扩展,由此将一个全带宽视频图象提供给图象产生装置23,例如电视监视器,它接着显示出一个序列的扩展视频帧24。
本发明特别地涉及时间编码及解码方面,尽管会理解到,在许多场合除时间压缩技术外还会涉及空间压缩技术。利用这两种类型压缩的压缩技术被国际标准组织(ISO)的活动图象专家组通称为MPEG。
时间压缩是通过将第一帧作为参考帧并将该参考帧与一个待编码的帧相比较来进行的。通过识别待编码的帧与参考帧之间的差别并对这些差别的表达量进行编码来获得其编码,以使得在接收机上或在重播时能重新构成原始帧。
第一步骤可由将待传输帧的每个象素与参考帧的相应象素相比较来组成。通常,象素由多个彩色分量,如RGB组成,或在传输系统中更普通地由亮度信号加上两个色差信号组成。因此,对于这些分量的每一个,待传输帧的值与参考帧相比较,并且,不是对待传输的象素传输所有的值,而是传输两个象素值之间的差值。因此,在某些情况下,在逐帧基础上两个值之间的差可能很小,尤其是当原始图象是静止的情况。但是,当出现活动时,差别将开始变大并且具有显著的移动量,其保留量将变得很小。此外,假如给定环境具有有限带宽用于传输或存储,其移动将产生图象的破坏。
虽然,当出现大的移动时,差分编码技术最终也会失效,但是显然,在大多数电视片断中,移动是由在一图象帧中在预定时间周期上移动的实际物体组成的。因此,假定在正好一秒的电视片断中大量的帧被消失了,则可能对于整个帧的信息内容来说移动物体不会产生大的变化,尽管在个别象素上会产生大的变化。因此,如果能与差值信号一起传输识别移动矢量的信息,该差值信号不是从参考帧的原始位置取得的,而是根据移动矢量从原始位置移到的位置取得的,就可以减少被传输的信息量。
用此方式压缩视频数据的一个系统,也就是说,利用除差分编码外的移动矢量计算的系统被公开在美国专利5,083,202中,该专利已转让给本受让人。根据该公开文献,视频帧被分成多个块,每个块由每行上具有16个象素的16个行组成,即16×16个象素。将帧分成块也需用空间压缩,即,使用离散变换方法,但通常涉及分成为8×8个象素的块。当使用这两种技术时,从四个8×8的块集合成16×16个象素的区域,为了区别这两者,较大的块被称为宏块。
这种类型的象素宏块被表示在图2A中,对于图象帧中所示的物体的实际移动,移动矢量并非从中得到且未必涉及到。正如这里所使用的,移动矢量涉及特定的16×16宏块,并且它表示与待传输的块相比产生出最小差值的参考图象中一个块的整数象素排列在正或负X,Y方向上的移动。因此有可能这样来识别该矢量,即它满足这个准则而不真正地涉及到图象帧中一个物体的实际移动。但是,在实践中,很可能是这样来识别移动矢量,即由于实际的移动实质上发生在移动矢量的方向上,因而它满足该准则。
移动矢量的分辨率实际上是基于所需压缩度及可能获得的处理装置任意选择的。在此例中,移动矢量是以整象素间隔来量度的,但也可使用分数象素间隔,并且在子象素位置上的新象素值可用内插法计算。类似地,搜索区域的大小这样地选择,以便提供最大的移动速度,而同时其间隔实际受到为计算移动矢量所需的处理设施的限制。当在传输侧上对移动矢量进行实时计算时,这点是特别重要的。
用于特定块的优选移动矢量的识别是一个需要大量计算的过程。但是应理解到,一旦,为了执行编码并然后为了执行解码进行传输及记录,移动矢量被实际地确定出来了,解码程序则需要相当少的计算。因此,当给定一个移动矢量时,使用该矢量是一个非常直截了当操作,以便识别被传输的参考帧中的优选块。但是,在传送侧,在其被用于执行编码前必须实际地计算接矢量。
在特定块计算移动矢量的方法将参照图2A及图2B来描述。在图2A中,一个待编码的16×16的象素块用标号25表示。该象素块用参考帧中的相似块来识别,并且不是传输目前块的真实象素值,而是传输待编码帧的块中的象素值与参考帧中被识别出的块中的象素值之间的算术差。
图26是参考帧中的16×16象素块,它出现在与目前帧中的块25等同的位置上。因此,如果采用无移动矢量的预测编码时,在块25中的象素值将与块26中的象素值直接相比较。
但是,当考虑到移动及使用移动矢量时,将在参考帧中执行搜索,来识别出一个比从块26计算出的差值产生更小差值的16×16象素块。
在理论上,可以对参考帧中的所有可能的块进行检验,但是这需要极大量的计算并且实时地进行实际上是不可能的。因此,作了一种折衷,即从该16×16象素块的基本位置(从标号26表示的位置)在X、Y方向上向正、负方向移动15个象素间隔形成一个搜索区域。
因此,当给出了正或负15个象素的位移时,用于对块25编码的参考象素块可在参考帧的块27中的任何位置上获得。因而,块27是由46×46个象素位置组成的块,并且一个16×16的象素块可能出现在块27中961(31×31)个位置中的任一个上。
为了确定这些可能位置中哪个能提供最佳移动矢量要考虑所有可能位置,并基于在待传输帧25及块27中的参考块之间产生最小差值的位置作出选择。为了确定最佳可能移动矢量所执行的算法表示在图2B上。
为了公开该方案起见,一个16×16的宏块、例如块26,它在一个更大的搜索区域、如块27中的位置被称为“块位置”。此外,在一个16×16个象素的宏块中真实象素的位置被称为“象素位置”。块位置将参照没有在矢动矢量影响下被移动的块所占据的位置来描述。因此,在区域27中一个块位置将参照块26的位置描述。此外,在区域27中块位置的X、Y座标系也等同于将块26改变到计算实际差值的块位置上所需的移动矢量。
如前所述,对于每个块移动矢量是考虑在区域27中的每个可能位置来确定的。这是从考虑由移动矢量(-15,-15)定位的左上角的一个块开始的。
在步骤30上确定下个块的位置,即由一个移动矢量(X、Y)来规定它,在第一次操作时它被规定为上述左上角的块。
在步骤31上,规定为差值和的变量∑D被置成零。接着,从步骤32开始了一个程序环,它考虑在特定块位置中所有的象素位置,因此,在步骤32上考虑该块中下个象素的位置,及在步骤33上利用从待传输的象素值中减去参考象素值计算出绝对差值D,而不管该差值的符号。
在步骤34上,将在步骤33上计算出的差值加到代表差值和的变量∑D上,在第一次操作时,该和由在步骤33上计算出的值D加零形成。
在步骤35上将提问是否还有要考虑的其它象素位置?在第一次操作时,将得到肯定的回答,结果是控制返回到步骤32。
于是,在步骤32上确定出下一象素位置,在步骤33上为该象素位置计算其差值,并再在步骤34上将该差值加到差值和上。
这样,直到宏块中所有象素位置均被考虑了,16×16个象素的该宏块中的所有差值就被加在一起,在步骤35上所问问题的回答便是否定的。
除去被确定的代表一个特定块差值和的∑D值外,还存储了代表差值的最小模数和的规定为∑D(min)的另一变量。
在开始该算法程序时,∑D(min)将设得足够大,以使得任何∑D的典型值将具有较小模数,结果使在步骤36上对所问问题的回答为肯定。
当在步骤36上对所提问题的回答肯定时,则在步骤37上将∑D(min)设成等于∑D的计算值。类似地,在步骤38上,移动矢量的X分量V(X)被置成等于如在步骤30中所确定的X,移动矢量的Y分量V(Y)被置成等于Y。
在步骤39上,将提问是否还有要考虑的其它块位置?如果回答是肯定的,则控制返回到步骤30,在那里将选择下一X、Y块位置。
因此,对于每个块位置,该块中的所有象素值与块25中的相比较,即与待编码的块相比较。所有这些绝对象素差值(即为模数差值)被加在一起,及该和的模数被作出比较为检验至今所发现的和值是否是最小的。如果它是至今发现的最小和值,则用它取代在先的最小和值,并在步骤38上建立一个新的最佳移动矢量。
在所有块位置被考虑了以后,结果是在步骤39上对所提问题的回答为否定,变量∑D(min)将代表最小的差值和,及对V(X)及V(Y)存储的值代表最佳移动矢量的X及Y座标系,它就是当待传输的块25与区域27中的参考块相比较时产生最小差值的移动矢量。
用于执行差分编码的电路被表示在图3上。一个预测电路41包括一个帧缓冲器,用于存储在先帧的象素值。因此,该在先帧成为参考帧,及代表新的帧与该参考帧之间差值的信号被用于传输或传送到下一压缩级,如图1中所示。利用减法电路42计算差值,它从输入象素值中减去由预测电路41产生的输出值。然后,这些象素值被编码电路43编码,可能进行量化编码或霍夫曼(Huffman)编码,以便随后的传输或处理。
由编码电路43输出的信号也提供给解码电路44,它设来作与编码电路43相反的处理。解码过程的执行在于保证类似于在原始侧上产生的参考帧在接收侧上也被重新组建出来。由电路43执行的编码可能会引起损失,因此在原始侧必须对这些损失进行考虑,以保证可重组建出类似的图象。
于是,来自解码电路44的输出被提供给一个加法电路45,该加法电路的输出被供给预测电路41。在操作中,来自待编码帧的图象数据块被集聚在输入缓冲器46中。待被传输的下一个数据块被输入到预测电路41,它被设置来执行移动矢量计算程序,详见前述。该计算程序的结果是,预测电路41确定出用于传输或本身将被记录的该块的移动矢量。
预测电路41存储了一个完整复制的参考帧。开始,它识别在参考帧中与目前正在编码的块等同位置的块。从该等同位置的块,通过移动一些象素间隔根据移动矢量的规定来识别移动校正的等同块。
一旦由预测电路41识别出一个预测块,用于该块的待编码象素值被提供到加法电路42,该加法电路也接收来自预测电路41的等效预测值。因此,对于每个待编码的块中的象素,从其中减去它的等效移动校正象素,并将产生出的作为电路42输出的差值提供给编码电路43。
来自编码电路43的输出象素被聚集在一个输出缓冲器48中,它能存储多个完整的象素,以便能有助于传输的缓冲。这就是说,对于被传输或以恒速记录的象素来说它是理想的,以致能对可获得的带宽作出最佳利用。无论怎样,如果编码过程具有复杂的特性,则难以用恒定速率产生编码象素,因此设置缓冲器48可使产生编码数据的速率的变化被整平。
如前所述,来自编码电路43的输出被提供给一个等效解码电路44,随后由预测电路41产生的象素预测值被加法电路45加在已解码值上,并再反馈到预测电路41,以便能组成后继的参考帧,使得下一帧能依该次序被编码。
因而,可以理解,当在视频帧的一个特定序列中给定了一个帧时,就可以计算以此次序发生的随后帧。这种编码形成被称为向前预测编码,其中一个新帧的编码或解码是参考在次序上先出现的帧进行的。尤其是,每个新帧的块是参考在先帧的块进行解码的。首先,该块可能在与这个在先帧中相应位置不同的位置上,该新位置由移动矢量来识别。其次,传输值由新块与在先被传输块之间的象素差值组成。
如在美国专利5,083,202中所描述的,可以实时地对向前预测的视预信号编码,由此可使该技术除用在编码过程显著长于解码过程的系统中外,也可用在传输系统中。
根据MPEG视频压缩方案,将根据上述的向前预测方法产生出被压缩的视频帧。这种类型的帧被称为“P”帧,它是形成压缩位流的三种帧中的一种。
对MPEG系统要求它应具有输入点,这就是说从其可开始重播的参考帧,而不对在先传输的帧作出参考。因此,一个MPEG位流可考虑是由多群帧组成的,其中每群(group)实质上是自持的,允许在所述群的边界上作编辑点。为了能使一些图象帧压缩成群,必须传输一个以这样方式压缩的帧,即它不需来自任何另外帧的信息用于它的产生。这样一个帧被称为帧内编码的帧,它区别于信息需来自其它帧的帧间编码。这种类型的帧在MPEG标准中被称为“工”帧(帧内编码),而“P”帧是从工帧或另外的P帧向前预测的帧。
在图4中表示出用于MPEG的一个典型输入帧序列。虽然,在该例中一群规定由15帧组成,但根据推荐方案,群数是可调整的,有效的做法是在压缩率(即为,压缩数据与原始数据的比例)及图象质量之间进行折衷。
在图4A所示的15个帧的群中,将帧3规定为帧内编码帧I0。对该输入序列的帧6用如上所述的向前预测编码进行编码,它将参考I0帧,即帧3。类似地,也使用向前预测编码来编码帧9,它被称为P1,并将参考帧P0。下一预测帧P2则参考帧P1进行编码,而最后的向前预测编码帧P3参考帧P2进行编码。因此,在一个15帧的群中,具有一个帧内编码帧,对该帧可料想到,它需要比随后的帧及四个基本使用参照图3所示的技术获得的向前预测帧更显著的加宽的带宽。
该15个帧一群中的其余十个帧考虑参考与它相邻两侧上的帧来得到编码。就实际编码而论,帧4,5,7,8,10,11,13及14可采用与向前预测P帧相同的方式,从一个I帧或一个P帧向前预测。于是,对于每个块,利用块中每个象素上的象素差值向前识别出一个移动矢量。
但是,要理解到,在某些情况下,在向前预测的帧与从其中获取预测值的参考帧之间会出现场景的变化。当出现该情况时,在预测帧及参考帧之间具有很小的相关性,结果是差值非常大,它可能涉及与传输作为帧内编码的预测帧所需信息量成类似比例的信息。因此,在这种状况下,就失去了预测编码的优点,它势必会产生图象度量的降级,因为系统力图传输的场景变化所需的常宽超过所能得到的带宽。在某种程度上,利用输出缓冲器48可使该状况得到宽容,假定另外的帧以足够高的效率进行编码而提供了附加的带宽容量。但是,偶尔地,这类变化可能会产生出显著的图象质量降级。
在一个克服此类状况及进一步降低所需带宽的尝试中,帧1,2,4,5,7,8,10,11,13及14可参考视频图象序列中的后继帧而非在先帧进行编码。这样,不是在向前方向上进行预测编码,而是实际上在向后方向上进行预测编码。因此,这些帧被称为B帧(双向帧),不过,应理解到,向前编码或向后编码的选择是在逐帧的基础上选择的,它取决于哪种方法需要最小的信息量。此外,双向编码帧可参考在先及在后两个帧进行编码。
于是,假定一个场景的变化发生在帧4及帧5之间。如果帧5是使用向前预测编码产生时,它的参考帧是帧3。帧3形成在先场景的部分,因此具有与来自下一场景的帧5很小的相关性。如果要精确地重播帧5时,则需要很大的信息量。
在该例中,为了使用向前预测编码方法来产生帧6将要传输很大的信息量。显然,在帧3及帧6之间发生了场景的变化,正如由产生帧6所需的信息量所表现的,因此,很明显地,在帧3及帧6的编码时已实际上考虑到场景变化的效果。
该变化发生在帧4及帧5之间,且帧4可参考帧3精确地被重播。但是,当编码帧5时,如果所述该帧参考譬如帧6进行编码,也即使用向后预测方法而非向前参考图3进行编码时,将需要少得多的信息量。但是在作出两种编码实践的尝试前,编码系统将不会知道帧5应参考帧6而不是帧3来编码。当已进行这两种类型的编码时,则可能对每种的结果进行比较,并选择会产生最小传输信息量的编码类型。
因此,在该例中帧4及帧5两者起初将用向前预测方式及用向后预测方式进行编码。然后,对帧4将参考向前预测编码进行传输,而对帧5将参考向后预测编码进行传输。
倘若B帧可通过向前预测编码由前面的帧来产生,或通过向后预测编码由后面的帧来产生,为了传输或记录起见,就需要识别出帧数据的次序。这种重编次序表示在图4B中。如果假定图4A中所示的帧1是一特定顺序中的最先一个帧,则不可能利用向前预测来产生该帧,因为没有在先的帧。因此,帧1及帧2两者由向后预测编码来产生并因此在帧3后面被传输出去。这样,如图4B中所示,首先被传输的帧是帧3,后面跟着帧1及2。在帧3后面,不能传输帧4及5,因为这两帧可能是参考帧6编码的,而非参考帧3,因此下一个被传输的帧是帧6,后面跟着帧4及5,类似地,下一个帧是帧9,再跟着帧7及8,在帧12即P2帧被传输后,接着是帧10及11,在P3帧即帧15被传输后,接着是帧13及14。
用于MPEG编码流的解码电路被表示在图5中,接收信号由放大器51放大,它类似于图1中的放大器20。一个信号分离器52从移动矢量中分离出以频域传输的象素信息,并将所述象素数据提供给一个空间扩展电路53,它类似于图1中所示电路21,用于将空间压缩数据转换成象素值或象素差值,然后再被提供给处理器54。
处理器54,除从空间扩展电路53接收象素数据,还从分离器52接收移动矢量及从视频帧存储器A及视频帧存储器B接收参考数据,用于执行时间扩展。为了响应这些信息,处理器54被设置成以传统的视频格式产生输出帧。
如图4B中所示,一个帧群以重编次序被传输,因此扩展电路53接收编码帧3,后面跟着编码帧1,编码帧2及编码帧6等。它执行空间扩展并将扩展帧数据提供给处理器54。
帧3是一个帧内编码帧,其本身仅用空间压缩来传输。因此,在被电路53执行空间扩展后,来自帧3的象素数据就完整了,因而不再需要由处理器54为产生输出数据的附加处理,而将该帧3的象素数据提供给一个选择器55。
但是,直到帧1及2被解码了,帧3才能被提供输出,因此,选择器55将象素数据写入到帧存储器A中。
如图4B所示,下一个到来的帧是帧1,它在空间扩展后就提供给处理器54。帧1是参考帧3预测编码的(向后编码),因此通过响应移动矢量从存储器A中读出参考值及将参考象素加到被传输象素上来产生出帧1的输出数据。没有其它的帧是参考帧1编码的,因此选择器55安排将解码的帧1提供到输出端。
下一个到来的帧是帧2。该帧也是仅参考帧3被编码的,因此处理器54也是通过参考响应由分离器52提供的移动矢量从存储器A中读出的值来解码帧2的。类似地,选择器55将解码的值提供到输出端。
再下一个到来的帧是帧6,它也是参考帧3使用向前预测方法被编码的。因此,在空间扩展后,处理器54将参考移动矢量及存储在存储器A中的参考值对帧6解码,并将帧6的解码值提供给选择器55。在此情况下,帧6不能先于待解码的帧4及5被提供到输出端,因此帧6的解码值由选择器55提供给存储器B。与此同时,帧3从存储器A中被读出并被提供到输出端。
现在,已将帧3及6解码数据进行了存储,就可以对帧4及5进行向前、向后或双向的解码,-假设所有必要的信息是可获得的。在帧4及5被提供到输出端后,将帧6从存储器B中读出并也提供到输出端。
在帧5被提供到输出端后,将不再需要保留帧3,因此存储器A可被改写。再一个到来的帧是帧9。它将参考帧6解码并写入到存储器A中。随后,对于帧7及8重复上述对帧4及5的处理。帧7及8被解码并提供到输出端,然后,可从存储器A中读出并将它本身提供到输出端。
因此,可以理解,利用尊循类似的技术,所有的帧可被解码,直到接收到另一帧内编码帧为止,接着将重复整个处理过程。也可理解到,硬件的需要,尤其是帧存储器的数目并不是由帧群中包含的双向帧数导致的。双向帧当其被接收到时,便参考存储在存储器A及B中的两个帧进行了解码。
在编码速度不太严格的应用场合,根据图4所示的MPEG的要求在对视频序列编码时将不会遇到特别的困难。但是,当试图实时地根据据该标准进行编码时,将会引起两个显著的问题。
如在图2A中所示的,为了仅对一个16×16个象素的宏块25确定其移动矢量,必须要对在区域27中的所有块位置(46×46象素位置的方块)考虑象素差值。当在相邻的帧之间执行预测编码时,可以在这样一个区域上确定出合适的移动矢量。但是,如图4A中所示的,必须要参考帧3来预测地对帧6编码。在此情况下,帧6不是直接地与帧3相邻的,而是距帧3隔开整3个帧的间隔。
如果移动发生在由帧3,4,5及6限定的时间间隔上,则可能在恒定的方向上发生该移动。因此,从其可确定出最小差值的参考象素块将在图象帧上这样地移动,即搜索区域将实际上在逐帧的基础上移动。于是,虽然对于相邻的帧位置需要移动正或负15个象素位置,但随着帧间隔的增大,该搜索区域的规模也必须增大,以便获得类似的结果。
因而,为了参考帧3对帧4预测编码,必须在正或负的15个象素位置考虑块位置,如图2A中所示。但是,当参考帧3对帧5作预测编码时,帧的间隔增加了一个帧的位置,因此必须在正或负30个象素位置上考虑块位置,以便能获得类似结果。相似地,当参考帧3对帧6编码时,搜索区域将再增大正或负15个象素位置。于是,为了实现3个帧间隔,必须考虑由正或负45个象素位置的块位移确定的象素区域。
这样,便易于理解,如果根据图2B规定的算法程序来搜索由正或负45个象素位置的位移限定的区域的话,参考帧3来直接地对帧6计算移动矢量将产生极大的总计算量。
参照图6将可以理解该问题。在该例中,压缩编码装置接收到原始图象帧3,4,5及6,它们将被编码成I0,B1,B2及P0,帧P0将参考帧I0利用向前预测方法被编码。因此,所有的帧被分成16×16个象素的宏块,然后通过确定移动矢量和象素差值一起对每个宏块编码。如前所述,当考虑对于编码帧P0的块时,在由帧I0得到的块及参考帧I0待编码的块之间具有三个帧的间隔。在帧6中,块61代表作为P0帧一部分的待编码用于传输的16×16个象素的宏块。使用向前预测编码方法,在帧I0中的相应块被称为62。对于一帧间隔确定移动矢量时,这样是帧4,这将使块62的位置可在方块63中任何位置上。这代表在X及Y方向上正或负15个象素的可能位移。
对于下一个帧间隔,就是从帧4到帧5,必须再考虑正或负15个象素的位移,因此,在两帧后,对于块62,它可能位于方块64中的任何位置上,于是,在其中必须计算差值的区域大大地增加了。但是,尽管区域出现了明显增大,它仍不能对帧P0提供移动矢量,因为还需要再一帧的间隔。
再一帧的间隔将在X及Y方向上产生另一个正或负15个象素的位移,将使得块62可处于方块65中任何位置上。因此,为了从方块65对块61提供参考矢量,并保持与从方块63获得的移动矢量具有相同的质量等级,就必须考虑在X及Y方向上达到正及负45个象素位置的位移。显然,这样大的计算量在使用现有的硬件设施时实际上是不可能实时地被获得的。
如前所述,还必须对帧4及5进行双向编码。于是,不管对帧4及5是否真正传输正向预测值,仍然必须计算它们,因此必须参考帧3中的块对帧4中的块计算移动矢量。这等同于在方块63中移动块62,这也表示在图2A中。在块62中的所有象素通过在X有Y方向上移动了正或负15个象素位置后,就可以将这些值平均并对块62计算最佳移动矢量。
另一种方案称为“嵌套法”(“telescoping”),它表示在图7中。块62在图7中表示为块72。通过在区域73中移动块72来确定移矢量。作为这些操作的结果,计算出移动矢量,这实际上是将块72重新定位到块76上。于是在块76中的象素可用来向前预测帧4中象素的块。在常规的预测编码中,帧4现在将用来预测帧5的值,后者再用来预测帧6的值。
如前所述,根据MPEG方案,对于帧6的值不是经由帧4从帧5预测的,而是直接地从帧3预测的。但是,假定无论怎样移动矢量都必须从帧4及帧5来计算,则这些移动矢量被用来计算帧6的最终移动矢量。因此,不是需要使象素位移正或负45个象素位置试图一次跃越地来计算帧6的移动矢量,而是分级地来计算帧6的移动矢量,它类似于连接在一起能被拉得很长的嵌套式望远镜的各小节的结构。因而,参考帧3获得帧6的移动矢量的过程为参考帧3来计算帧4的移动矢量,参考帧3并使用上次计算的移动矢量作为偏移量来计算帧5的移动矢量,及最后参考帧3并再使用编移量来计算帧6的移动矢量,该过程被称为“嵌套法”。
图7代表一个参考帧中的象素块。作为该例,待被传输的帧中的块与参考帧相隔3个帧的间隔。但是,不是将参考帧与最后输出帧中的象素值相比较来执行单次操作,而是考虑中间的帧,以致计算一个序列的移动矢量,它们再根据嵌套技术被加在一起。
这样,所考虑的帧是由一个参考帧,一个待传输帧,及两个位于参考帧及待传输的帧之间的中间帧块成的。
待传输帧的每个宏块被单独的考虑。于是,对于每个特定的宏块,在中间帧及在参考帧中具有一个等效的块位置。该等效块位置在图7中表示为块72。该等效定位块将与第一中间帧中的等效定位块相比较。现在是在由X及Y两方向上位移正或负15个象素所确定的区域73中进行搜索的。因此,该搜索实质上与参照图2A所描述的相同。该搜索的结果是,在参考帧中识别出块76,它作为这样一个块,即由它可以获得用于在第一中间帧中重建块的象素值。此外,识别出使该等效定位块移到块76所需的移动矢量。
为了对第二中间帧产生出移动矢量,将在由区域77所限定的正或负15个象素位置间隔内执行另一次搜索。仍然,该搜索产生出另一个被计算出的移动矢量,它实际上在参考帧中被表示为块78。因此,对于第二中间帧的移动矢量将使块位置76转移到块位置78,及对于第一中间帧的移动矢量将使块位置72转移到块位置76。
在对于第二中间帧计算出移动矢量后,对于围绕块78的、也是由正及负15个象素位置间隔限定的区域79再重复该过程。其结果是,在参考帧中识别出另一个块位置,并且产生出全部的三个移动矢量,它们使参考帧中的一个块转移到与其隔开3个帧间隔的待转输帧中的一个块上。于是,由嵌套这三个分开的移动矢量产生出一个单个的移动矢量,以致于可以使得一个块及与识别该块移动的移动矢量被传输出去,对于该块已在与其相隔三帧间隔的参考帧中计算出差值。
该嵌套方法的结果是,获得了在帧3中识别块移动的单个移动矢量,它可用来预测帧6中的块,而不必如图6提供的图示所建议的作出大量曲折的计算。
用于根据MPEG方案实时编码视频帧的一种时间压缩电路被表示在图8中。图8中所示电路包括一个输入存储区域81,一个参考存储区域82,一个移动矢量计算电路83,一个空间压缩器84,一个空间扩展器85及缓冲区域86。
在该图示例中,输入存储区域包括第一输入帧存储器87及第二输入帧存储器88。真正包括在输入存储区域中的帧存储器的数目依赖于传输信息流中双向帧的分群。因此,在该例中,双向帧被分成两群。因而需用两个存储装置87及88。但是根据该方案,包含在每个双向帧群中的双向帧数目是可变的,并应理解到,当该分群值增大时,设在输入存储区域中的输入帧存储器的数目就需要相应增加。
参考存储区域82包括第一参考帧存储器89及第二参考帧存储器90。在参考存储区域中需要两个帧存储器以便用于双向预测编码。于是,在参考存储区域中帧存储器的设置不取决于实际使用的MPEG信息流的类型,该类型是就在每群中出现的双向帧的数目而言的。
标号91表示提供给该电路的输入帧的表,它等同于图4A中所示的次序。如图4A中所示,一个群的开始起始于双向帧B-2,接着跟有双向帧B1,然后是该群的帧内编码帧I0。因而这些帧可被分别标以帧序号1,2及3。
当帧B-2到达该电路时不可能对该帧编码,因为编码是参考帧内编码实现的,而在该阶段此帧还末到达。因此,选择器92将输入帧数据写入到第一输入帧存储器87中。类似地,当帧B-1(帧2)到达时也不可能对该帧编码,因而选择器92将其象素信息写入到第二输入帧存储器88中。
当第三输入帧到达时,这将作为I0帧处理,如前所述,该帧的传输末经任何时间压缩,以致对于特定群的帧可不参考任何其它群被再生出来。因此,输入选择器92将I0帧的象素值直接地提供给输出选择器93,接着将所述的值经由加法器94及空间压缩器84传送到缓冲区域86。
加法器94用它的第二输入端从参考存储区域82接收预测值。该参考存储区域82包括一个输入选择器95及一个输出选择器96,设置来用于将数据分别写入到参考帧存储器89及90中及从所述两存储器中分别读出数据。
当I0帧被提供给空间压缩器84时,选择器96实际上截止,以致没有附加值被提供到加法器94,并且没有被预测的值从由输出选择器93输入到加法器的值中减去。
在缓冲区域86上,由空间压缩器84产生的象素值在写寻址器98的控制下写入到缓冲器97中。于是,如标号99所指示的。I0帧是在写寻址器98的控制下写入到缓冲器97的第一个帧。
除去提供到写寻址器98外,由空间压缩器84产生的用于I0帧的象素值也被提供给空间扩展器85,它实际上执行与空间压缩器84相逆的功能。空间扩展器的输出提供给加法器100,该加法器以其第二输入端接收由选择器96产生的输出。如前所述,当处理I0帧时,没有输出从选择器96产生出来,因此对于帧I0,来自加法器100的输出等同于由空间扩展器85产生的输出。
来自加法器100的输出被提供到参考存储区域82的输入选择器95,接着,它将象素值写入到第一参考帧存储器89中。存储在输入帧存储器87及88中的值及存储在参考帧存储器89及90中的值可由移动矢量计算电路83寻址。该移动矢量计算电路8 3能由在时间上与参考帧相邻不止一帧间隔的四个帧使用上述的嵌套技术计算出移动矢量。因此,使用该技术,移动矢量计算电路对第一帧即B-2帧及对第二帧即B-1帧中的各个块计算移动矢量。理想的情况是,如图4B所示,B-2帧应在B-1帧之前被编码。但是,直到对于B-1帧计算出类似的向后移动矢量时,才可能对B-2帧计算向后的移动矢量。这是因为对B-2帧的移动矢量是用嵌套程序计算的,因此需要对B-1帧计算出的移动矢量用于作为在对B-2帧计算移动矢量时的偏移值。于是,将B-1帧写入到输入帧存储器88中,通过从这个帧存储器中读出值及从参考帧存储器89中读出I0帧的值,移动矢量计算电路83将为帧B-1中的各个块计算出移动矢量。
在对帧B-1计算出移动矢量以后,则可以对帧B-1进行编码。如果对该电路要求其实时地操作,就必须节省每一时刻保证数据尽可能快地被处理。于是,处可以编码B-1帧的状态时将导致了实际上对帧B-1编码所必须采取的步骤。然后,移动矢量被从移动矢量计算电路83提供到输出选择器96。为响应这些移动矢量,从参考帧存储器89读出象素值,这些象素值就是帧I0的构成部分,它被提供给加法器94用于产生预测值。这时,从输入帧存储器88中读出用于帧B-1的象素值,并经由输出选择器93提供给加法器94。在加法器94上,从由输出选择器93提供的被存储象素值中减去由输出选择器96产生的预测值,然后将差值提供给空间压缩器84。
B类帧其本身不对任何其它帧提供参考帧,因此由空间扩展器85产生的任何输出被提供给选择器95,而不导致使象素值提供给任何参考帧存储器89或90。但是,用于帧B-1的编码象素值被提供给写寻址器98,它接着将这些象素值写入到缓冲器97。
在对帧B-1进行编码了及将该块相关的移动矢量存储到移动矢量计算电路83中以后,就可以通过首先对B-2帧计算移动矢量,来对该特定帧进行编码。
如前所述,利用通过嵌套方法对帧B-1确定的偏移值,可使计算移动矢量时的搜索区域减少。于是,产生出嵌套的移动矢量,它能使帧B-2参考已存储在参考帧存储器89中的帧I0来编码。这将导致,由输出选择器93从输入帧存储器87中读出用于帧B-2的象素值,并经由加法器94提供给空间压缩器84。在加法器94上,减去由输出选择器96选择的预测值及所产生的差值被压缩器84压缩。仍然,不需要将任何这些象素作为参考值存储,但是所述的值被提供给写寻址器98,它接着将这些值写入到缓冲器97中。
在帧B-2及B-1已被编码后,不再需要为这些帧保留象素值,因而输入存储器87及88可以被改写。也应理解到,在此阶段没有数据被写入到参考存储器90中。
对于输入序列中到达的下一个帧,即帧4将作为帧B0来处理。帧B0将被进行向编码,因此直到下一人P帧被接收到才能对该帧B0进行编码。所以,将帧B0先写入到第一输入帧存储器87中。用于帧B0的输入象素值也被直接地输入到移动矢量计算电路83,该计算电路将参照被存储的用于I0帧的象素值实时地计算移动矢量。从帧I0向前预测帧B0的值被计算出来并被存储,以便在后面与从下一个P帧的向后预测值相比较。
类似地,下一个到来的帧即帧5也是B类帧,对其将导致在输入选择器92的控制下其象素值被写入到第二输入帧存储器88中,以及直接地被传送到输入选择器,用于如对于帧B0所述的那样从存储帧I0向前预测。
对于下一个到达的帧、即帧6将作为帧P0来处理,因此输入选择器92将这些象素值直接到传到输出选择器93。利用从被存储的I0帧向前预测的值对用于帧P0的象素值进行编码。
用于P0的输入象素值也被直接地提供给移动矢量计算电路83,它将参考存储在帧存储器89中的用于I0帧的存储象素值,利用嵌套来自帧4及5的移动矢量来计算用于P0帧的移动矢量。
在计算用于P0帧的移动矢量时,将所述矢量提供到选择器96,这导致对存储器89中的参考值适当地选址,并对加法器94提供预测的值。
用于P0帧的象素值被从输出选择器93提供给加法器94,在加法器94上从其中减去预测的值,并将输出值提供给空间压缩器84。来自空间压缩器84的输出被提供给写寻址器98,后者接着将已编码的象素值写入到缓冲器97中。与此同时,由压缩器84输出的编码值被传送到空间扩展器85,以执行与空间压缩器84所执行的处理相逆的处理。
如前所述,来自空间扩展器85的输出扩展象素值被提供给加法器100,该加法器100用其第二输入端接收由选择器96产生的预测值于是,象素值以与对P0帧的重建象素值实质上等同的形式被提供给选择器95。这些象素值其本身将被提供来作为B帧的参考值,因而所述这些值被写入到第二参考帧存储器90中。
在对用于P0帧的象素值均被考虑过以后,便可使用于帧B0及B1的象素值分别地存储在输入帧存储器87及88中,以便使用后向预测被编码。
在参考I0帧对P0帧产生移动矢量时,将利用移动矢量计算电路83执行嵌套程序。于是,参考帧3对帧4计算出移动矢量。类似地,参考帧3及4对帧5计算出移动矢量,并利用嵌套程序,参考帧3,4,及5再对帧6计算出移动矢量。这样,就已对B0及B1帧在向前方向上计算出移动矢量。现在则必须在向后方向上来计算这些移动矢量,正如对帧B-2及B-1所作的那样。
仍然,假定对于帧B0将通过嵌套程序来计算移动矢量,就必须首先对帧B1计算帧B1、即帧5的向后移动矢量。
为了实现这些移动矢量计算,从第二输入帧存储器88读出数值并提供给移动矢量计算电路83。然后将相对参考帧进行搜索,在此情况下,参考帧为从第二参考帧存储器90中读出的P0帧。在移动矢量被计算出来以后,它们被提供给选择器96,它通过从第二参考帧存储器90读出合适的参考值,使帧B1被编码。因此,从帧存储器88中读出用于帧B1的象素值并经选择器93提供给加法器94。在加法器94上,从由选择器93提供的实际象素值中减去由输出选择器96产生的预测值,再将产生的差值提供给空间压缩器84。仍然是,由空间压缩器84产生空间压缩值借助于写寻址器98被写入到缓冲器97中。
一旦帧B1被编码了,现在可就对帧B0编码。仍然是,在第二参考帧存储器中存储的参考帧的区域中进行搜索,在该操作时参考帧将是P0帧。借助在先计算出的用于帧5的移动矢量作为偏移量执行嵌套程序。于是,将新计算出的移动矢量提供给选择器96,以便能由加法94执行预测编码。
一旦帧B0及B1已在向前从向后面方向上被编了码,该装置将对这些双向帧确定出是否应该使用向后预测编码向前预测编码或是内插式双向编码。请决定是基于哪一种编码方案能产生最小误差作出的。为响应该计算,选择器96从存储器89及90的任一个中或从这两者的结合中选择用于每个帧的适合值。
如前所述,响应写寻址器98使帧写入缓冲器97次序是由标号99所表示的。该次序可与在如图4 B中所示的方案中所需的次序相互比较。在该方案中,第一个被传输的帧是I0帧,后面跟着B-2帧、B-1帧及P0帧等。但是,倘若是用嵌套程序来对双向帧计算向后预测矢量,必然会导致所述的帧以错误的次序写入到缓冲器97中。于是,如由表99所示地,在帧I0被写入到缓冲器97后紧接着是帧B-1(帧2)被写入到所述缓冲器中,再接眷是B-2帧。因而,帧B-1及帧B-2以错误的次序被产生出来。
这种定次序的状况在缓冲存储区域86中借助读寻址器101来解决。因此,设置的读寻址器101以与写入到缓冲器97的次序不同的次序读出压缩的象素数据。对读寻址器101提供了识别缓冲器97中每个压缩帧位置的信息。于是,在信息以表99所示次序被写入到缓冲器97以后,则根据如表102所示的建议方案中的次序从缓冲器97中读出信息。因而从缓冲器97中要读出的第一个帧是I0帧,如前所述,它也是写入到所述该缓冲器中的第一个帧。但是,此后从缓冲器97中读出的不是B-1帧-该帧为写入在所述缓冲器中的第二帧,而是从该缓冲器读出B-2帧,它实际是写入到所述缓冲器中的第三帧,如表99中所示。于是,读寻址器实现了使帧次序重新编排成推荐方案所需的次序。
如表102所示,下一个被读出的帧是P0帧,然后是B0帧先于B1帧被读出,接着才是B1帧被读出。
参照图8所描述的该系统的一个显著优点在于虽然缓冲器97在允许向后嵌套的矢量计算方面起到重要作用,但它没有明显增加该系统的硬件需要。缓冲器97原是必须的,因为象素势必以可变的位速写入到所述缓冲器中。位速主要取决于图象的固有冗余度,显然,读冗余度是从一个视频帧序列到另一视频帧序列变化着的。因而在整个视颇帧序列上在压缩后产生的实际位数将是变化的。但是许多视频及传输装置需要恒定位速,因此数据以恒定位速从缓冲器97中被读出。于是,除去重新定B帧位置的次序外,缓冲器97还起着吸收数据产生位速波动的重要作用。
在图9上表示出一个计算移动矢量的电路。对于该电路将参考嵌套程序来描述,在其中将对与参考矢量隔开二个帧间隔的帧确定移动矢量。
设置了多个处理器,因当对于两帧间隔检验一个象素区域时需要五个处理器,这五个处理器在图9中表示为P1至P5。每个处理器为待编码帧的一个特定块确定移动矢量。
通过从参考帧的一个区域中序贯地读出象素值并将读出的象素值提供给所有五个处理器可使读参考帧的次数减至最小。区域可由象素的水平频带组成,类似地,它也可由垂直频带组成。从该区域中读出象素值并使区域移动一块的距离,然后再读出新确定区域中的象素值,以便对于另一群块的移动矢量。
在图9上,对于块n-2,n-1,n,n+1及n+2计算移动矢量。如果对于块n基于一帧间隔计算移动矢量,则必须对参考帧中块121的所有象素进行考虑。但是,如果要编码的块与参考帧相隔两帧的间隔,则可能的象素位置区域由块122确定。
如参照图7所描述的,不需要对块122中的所有象素位置进行考虑,因为对于中间帧已经计算出移动矢量,它将用来为待考虑的象素区域提供偏移量。因而,待考虑的象素区域等同于块121的大小。但是,该块可位于块122范围中的任何位置上。
该电路设置来并行地处理五个移动矢量。对于其中的每个,有关窗孔的垂直偏移量(块121的规模)可能不同。因而,为了保证每个处理器从参考帧接收所需的象素值,必须扩展该区域,以致它具有的垂直尺寸等于块122的高度。
对图示区域扫描的区域起始于象素位置123。它垂直向下地延伸到块122的边界124,共五块间隔的距离。读数据是响应于寻址器125产生的地址进行的,该寻址器被编程,用于根据待编码帧与参考帧之间的帧间隔数来读所需规模的区域。
利用递增一个象素间隔的水平位置并再读全部五个块距离上的象素进行连续读数。该过程重复下去直到该区域中的所有象素均被考虑了为止。
当块n中的象素与n上面及下面的块中的象素被一起读出时,将一些象素值提供给处理器P1,它们是对块n-2编码所需要的。类似地,处理器P2接收涉及块n-1的象素值,处理器3接收对块n需要的象素值,处理器P4接收对块n+1编码所需的值,及处理器P5接收对n+2块编码所需的象素值。
当在该区域中,扫描移动到包括块n+1在内的一列块时,所有对块n-2计算移动矢量所需的象素均被提供给处理器P1。于是处理器P1计算用于块n-2的移动矢量并不再需要再对该块作出考虑。处理器P1现在空出来可计算用于另外块的移动矢量,由于处理器相对于块位置的排列次序实际是循环的,故处理器P1持续接收参考帧中的象素值并现在将处理相对于n+3块的这些值。
为了计算移动矢量,每个处理器接收5个块列的象素数据值。因而每个处理器接收用于5个块乘5个块见方的象素区域的象素数据,但是,由于由前一移动矢量确定的偏移量,并作为嵌套的结果,该处理器仅需处理三个块乘三个块见方的象素区域。此外,在可获得的时间中,它也不可能处理五个块乘5个块的区域。
为了利用嵌套程序,当使来自参考帧的象素数据提供给多个处理器时,用于上一帧(或多帧)的移动矢量被提供到一个启动电路126。该启动电路设置用来对每个处理器计算出什么时侯它从参考帧接收的数据是真正需要的,以便计算出嵌套的移动矢量。当这种数据被从参考帧中读出时,启动电路产生一个启动信号并提供给相应的处理器。
当从参考帧中读出象素值时,这些值中的一些将是处理器P1需要的。当被处理器P1需要的象素值被读出时,由启动电路126产生出一个启动信号并经由处理器启动线127提供给P1。类似地,如果读出的象素值是P2所需要的,则启动信号经由线128提供给P2。此外,从启动电路126到相应的处理器P3,P4及P5设置了类似的启动线129,130及131 。
因此,对于一个处理电路(P1等),它对一个特定的块计算移动矢量时,将从其规模等于五个块乘五个块的区域中接收象素值。但是,该处理器仅处理等于三个块乘三个块区域的数据,尽管该区域可能位于较大的五个块乘五个块区域中的任何位置上。该较小的三个块乘三个块的区域是由启动电路确定的,它使得当出现在有关区域中的象素值被读出时,处理器仅响应启动信号来锁存数据。
一旦所有具有5个块间隔高度的全部水平区域被读出时,利用垂直地移动一个块的间隔移动该区域,来选择一个新区域。于是,每行块落在五个重叠的区域(帧边缘除外)中,且每个象素值被读五次。
假定在其中出现的有关象素的区域较大时,当在较大的距离上进行嵌套计算时,则需要更多的处理器。因此,当隔开三个帧的间隔时,需要七个处理器。仍然用启动信号来响应嵌套的移动矢量以识别三个块乘三个块见方的区域。于是,当帧之间的距离增大时,读出的数据量也增大,但由处理器处理的实际数据量仍保持不变,因为启动信号的有效数保持不变;由于启动信号的无效,相应的更多数据被忽略了。
权利要求
1.一种处理图象数据的方法,它包括用于视频预测编码的移动矢量的产生,其中第一视频帧(B0)位于参考视频帧(I0)及第二视频帧(B1)之间,其特征在于,该方法包括下列步骤参考所述参考帧处理所述第一帧中的象素块(72),以产生第一帧移动矢量;从所述参考帧中读出足够大的象素区域,以便参考所述参考帧,提供对所述第二帧的移动矢量的直接计算;并行地处理从所述参考帧中读出的象素值,以便并行地产生多个第二帧移动矢量;及响应所述第一帧移动矢量启动所述第二处理步骤。
2.根据权利要求1所述的方法,其中通过响应所述第二帧移动矢量启动处理,计算第三帧移动矢量。
3.根据权利要求1或2所述的方法,其中通过响应在先计算的第n-1帧移动矢量启动处理,计算第n帧的移动矢量。
4.根据权利要求1,2或3所述的方法,其中所述区域在第一方向上伸延到视频帧的整个范围,而在第二方向上伸延由可能最远的移动矢量确定的距离。
5.根据权利要求4所述的方法,其中所述区域是在所述第二方向上序贯地被读出的。
6.根据权利要求5所述的方法,其中在处理器接收到对于特定移动矢量的计算的所有可能参考象素后,它对在所述第一方向遇到的下一个块进行移动矢量的计算。
7.根据权利要求1至6中任一项所述的方法,其中处理器接收来自启动电路的启动信号,及所述启动电路响应所述在先计算出的移动矢量产生出所述启动信号,以便在被读区域中确定待处理的象素窗孔。
8.根据权利要求1至7中任一项所述的方法,其中所述矢量是对于向前预测编码被产生出来的,在视频帧序列中,所述参考帧先于所述第一帧,所述第一帧又先于所述第二帧。
9.根据权利要求1至7中任一项所述的方法,其中所述矢量是对于向后预测编码被产生出的,在视频帧序列中,所述第二帧领先于所述第一帧,所述第一帧又先于所述参考帧。
10.根据权利要求9所述的向后预测编码的方法,它包括利用将参考帧到第一帧的移动矢量及从第一帧到第二帧的矢量相嵌套,参考该参考帧对第二帧产生移动矢量;在将第二帧写入到一个缓冲器以前将第一帧写入到所述缓冲器;及在从所述缓冲器读出第一帧以前从所述缓冲器读出第二帧。
11.根据权利要求10所述的方法,其中参考帧是通过向前预测编码从一个在先帧中预测出来的。
12.图象数据处理装置,用于为视频预测编码的移动矢量的产生,其中第一视频帧位于参考帧及第二视频帧之间,其特征在于包括处理装置(83),用于参考所述参考帧处理所述第一帧中的象素块,以产生第一帧移动矢量;从所述参考帧中读出足够大的象素区域,以便参考所述参考帧,提供对所述第二帧移动矢量的直接计算的装置;处理装置(P1,P2,P3,P4),用于并行地处理从所述参考帧中读出的象素值,以便并行地产生多个第二帧移动矢量;及启动装量(126),用于响应所述第一帧移动矢量启动所述处理装置。
13.根据权利要求12所述的装置,包括处理装置,它用于处理参考帧以产生第三帧移动矢量,及启动装置,用于响应所述第二帧移动矢量启动所述处理装置。
14.根据权利要求12所述的装置,包括处理装置,它用于计算第n帧移动矢量,及启动装置用于响应所述第n-1帧移动矢量启动所述处理装置。
15.根据权利要求12,13或14所述的装置,包括寻址装置,用于对参考帧的一个区域寻址,该区域在第一方向上伸延到所述帧的整个范围,而在另一方向上伸延到由可能最远的移动矢量确定的距离。
16.根据权利要求15所述的装置,其中所述寻址装置用于在读第一区域后读第二区域,其中所述第二区域从所述第一区域在第二方向上移动一个块间隔。
17.根据权利要求12至16中任一项所述的装置,其中在视频帧序列中所述第二帧先于所述第一帧,在所述序列中所述第一帧先于所述参考帧,以便根据向后预测编码计算所述移动矢量,所述装置还包括利用参考其参考帧对第一帧计算出的移动矢量与用于第二帧矢量相嵌套,参考该参考帧产生用于第二帧的移动矢量的装置;用于对各帧编码的装置;用于在将编码了的第二帧写入所述缓冲装置以前将编码了的第一帧写入到缓冲装置中的装置;及用于在从所述缓冲装置读出编码了的第一帧以前从所述缓冲装置中读出编码了的第二帧的装置。
18.根据权利要求17所述的装置,包括通过从一个在先帧向前预测编码对参考帧编码的装置。
19.根据权利要求12至18中任一项所述的装置,其中所述装置构成电视会议装置的一部分。
20.根据权利要求12至19中任一项所述的装置,其中所述装置构成电视电话的一部分。
全文摘要
视频帧的嵌套式预测编码减少了需要被处理的参考帧中的象素数目。但是,由于对于相邻块的偏移值可以变化,很难并行地处理参考数据来用于实时编码。在第一帧移动矢量被计算后,读出参考帧中的足够大的区域,以提供对第二帧的移动矢量的直接计算,因此允许对象素值的并行处理。虽然每个处理器可获得所有的读出象素值,但是处理器仅锁存对于待计算的特定移动矢量真正需要的值。这是通过对处理器提供启动信号来达到的,启动信号是通过对第一帧移动矢量的处理来确定的。
文档编号H04N7/32GK1130010SQ9419294
公开日1996年8月28日 申请日期1994年7月29日 优先权日1993年7月30日
发明者伊恩·帕克 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1