图象数据编码的制作方法

文档序号:7565079阅读:111来源:国知局
专利名称:图象数据编码的制作方法
技术领域
本发明涉及一种包含下述步骤的类型的视频帧预测编码方法通过用从帧n-1至帧n-2的矢量套接帧n至帧n-1的矢量生成帧n-2相对于帧n的运动矢量。本发明还涉及包括下述装置的类型的视频帧预测编码装置通过用帧n-2的矢量套接帧n-1相对于帧n的矢量生成帧n-2相对于帧n的运动矢量的装置。
预测编码为压缩视频数据的已知技术。将待编码的一个视频帧与一个参照帧进行比较,不生成孤立地表示该帧的数据,而生成表示参照帧与待编码的帧之间的差的数据。
如果图象内发生了运动,则比较参照帧与待编码的帧之间的逐个象素成为明显地低效。然而,假定运动通过导致一个图象内的元素的重新排列而不是图象的完全再生,则为了便于进一步的压缩,其中仍然存在一定程度的内在冗余性而可以加以利用。
视频序列内的运动通常包含在图象的不同部分之间运动的一个元素。假定视频帧是以每秒25或30帧出现的,大多数可观察的目标从一帧到另一帧的运动程度是相对地有节制的。从而,如上所述,运动通常包含象素值的重新排列,为了方便进一步的压缩便可利用这一内在的冗余性。
理论上,有可能考虑各单个象素,并且为各单个象素计算一个运动矢量,该矢量为当前正在考虑的帧识别参照帧中具有相似的值的一个象素的位置。然而,可以理解,为各单个象素生成运动矢量与传输单个象素值本身相比,并不提供压缩,因此,为了达到一定程度的压缩,有必要为象素区计算运动矢量并假定整个区以相同的方式运动。因此已知将视频图象分成由诸如16×16个象素构成的正方形组成的象素块。从而,在为块内的各象素传输差数据之前,先围绕一个参照块中的相似区执行搜索来识别参照块中的一块象素,它们与待传输的块相比平均上得出最低的约对差项。从而,一旦确定,便连同标识实际参照块的位置相对于与参照帧中传输的块相同位置的块的一个运动矢量一起传输这些差项。
预测编码能用于为紧跟在参照帧后面的帧生成差值。此外,本方法也可用来预测后面的帧,如帧n+2、n+3等。在这些情况中,随着帧位移的增加,运动必须考虑的参照帧搜索区也随之增大。再者,应理解这种增大是在两个维度上的。
为了方便运动矢量的计算,有可能执行一种套接技术,其中为帧n与帧n+1之间的第一帧位移识别一个运动矢量,此后,参照帧n及为帧n+1计算的运动矢量为帧n+2计算运动矢量。从而,可将这两个运动矢量“套接”在一起来提供从帧n至帧n+2的运动矢量。
实时传输编码的帧时,总希望尽可能快速地传输数据。从而在上述实例中,为了为帧n+2计算运动矢量,必须编码帧n+1。结果,帧n+1一编码完便立即希望传输该帧,然后起动编码帧n+2的处理以便传输该帧。
在某些情况中,尤其是在按照一种采用的标准传输数据时,所要求的传输次序可能与套接过程的自然结果不同。因此导致如果得到的编码的帧是以错误的次序生成时便难于实现套接过程的问题。
本发明的一个目的为提供一种用于视频帧预测编码的改进的方法与装置。
本发明的另一目的为提供一种采用套接预测编码的改进的方法与装置,其中得出的编码的帧是以与特定的传输标准所要求的次序不同的次序生成的。
按照本发明的第一方面,提供了上述类型的方法,其特征在于在将帧n-2写入一个缓冲器之前将帧n-1写入所述缓冲器;而在从所述缓冲器读出帧n-1之前从所述缓冲器读出帧n-2。
在一个较佳实施例中,用向前预测编码从一个较早的帧n-m预测帧n。
按照本发明的第二方面,提供了上述类型的装置,其特征在于缓冲存储装置;在将编码的帧n-2写入所述缓冲存储装置之前将编码的帧n-1写入所述缓冲存储装置的装置;以及在从所述缓冲存储装置读出编码的帧n-1之前从所述缓冲存储装置读出编码的帧n-2的装置。
在一个较佳实施例中,该装置按照MPEG建议编码帧。
在另一个较佳实施例中,该装置用在可视电话的电视会议设施中。
下面参照附图仅用示例方式描述本发明,附图中

图1示出用于压缩与解压供传输或存储用的视频信号系统,其中包含用于实行时间压缩的电路;图2A示出待编码的帧的一块象素及一个参照帧中的一块象素,其目的为计算一个运动矢量;图2B示出计算运动矢量的一种算法;
图3详细示出图1中所示的类型的实行时间压缩的已知电路;图4A示出编码前按照MPEG建议考虑的帧的类型;图4B示出MPEG帧的编码流;图5详示解码按MPEG建议压缩的视频帧的电路图6示出当帧间相隔一个以上的帧间隔时,用于计算运动矢量的区域或参照帧与一个待编码的帧的比较;图7示出用于计算运动矢量的套接搜索;图8示出用套接计算运动矢量的电路,其中包含一个用于计算运动矢量的电路;以及图9详示图8中所标识的运动矢量计算电路。
图1中示出了用于压缩视频信号、传输或存储所述信号及解压所述传输或存储的视频信号的一个系统,采取摄象机或诸如磁带或光盘播放机等视频再生装置的形式的视频信号发生器14生成全带宽的视频信号。信号发生器14生成提供给一个时间压缩电路16的一序列原始帧15。时间压缩电路利用时间上分隔开的帧之间的相似性生成表示所述的帧之间的差的编码信号。所述时间压缩电路16的输出提供给配置成利用特定的图象帧内的进一步冗余性的一个空间压缩电路17。从而,空间压缩电路17可利用离散余弦变换编码,使得为各帧生成的数据量取决于包含在该帧内的实际信息量。
从而,已知时间压缩与空间压缩的组合能达到显著程度的视频数据压缩,允许在有限带宽的信道上传输这种类型的压缩视频信号,诸如用在可视电话中的,或者将它们存储在基于标准计算机的存储介质上,诸如单片磁盘或基于音频的紧致光盘(CD-ROM)。
从空间压缩电路17得出的输出信号被放大器18放大供传输或存储,如用参照数字19所标出的。
在接收机上或播放装置中,将从传输介质接收的或从存储设备读出的编码信号提交给放大器20,此后实际上反演进行压缩所执行的过程,以便解压该画面。从而,电路21执行空间解压,此后电路22执行时间解压,借此将一个全带宽视频画面提供给画面生成装置23,诸如依次显示一序列解压的视频帧24的一台视频监视器。
虽然应当理解,在许多情况中除了时间压缩技术以外还应包含空间压缩技术,但本发明特别关注时间编码与解码方面。真正利用这两种类型压缩的优点的一种压缩技术便是由通常称作MPEG的国际标准组织(ISO)的运动画面专家组所建议的压缩技术。
时间压缩是通过取一第一帧作为一个参照帧并将该参照帧与一个待编码的帧进行比较而实行的。编码是通过识别待编码的帧与参照帧之间的差并编码这些差的一种表示而达到的,从而可在接收机上或在播放时重构原始的帧。
第一步将包含将待传输的帧的各象素与参照帧的对应象素进行比较。通常,象素是由诸如RGB等若干彩色分量构成的,或者更通常地在传输系统中用亮度加两个色差信号构成。从而对于各个这些分量,待传输的帧的值可以与参照帧进行比较,并且不传输待传输的象素的全值,而是传输两个象素值之间的差。这样,在某些情况中,在逐帧基础上的这两个值之间的差可能是非常小的,尤其是如果原始图象是静止的。然而,随着运动的出现,这些差开始变大,并且对于明显的运动量,节省可变得很小。再者给定具有有限的传输或存储带宽的环境,运动可导致画面破裂。
虽然出现显著的运动时,差分编码技术最终将崩溃,但是很明显在大多数视频序列中,运动是由一个图象帧内在预定的时间间隔上运动的实际目标构成的。从而,假定仅仅在视频序列的一秒钟中便流逝相当大的数目的帧,很可能一个运动目标不会导致整个帧的信息内含的明显变化,虽然单个象素会发生明显的变化。从而,如果能够传输标识运动矢量的信息连同不取自参照帧的原始位置而取自按照运动矢量从原图移位了的位置的差信号,便有可能减少传输的信息量。
在转让给本受让人的5,083,202号美国专利中公开了除了差分编码以外用运动矢量计算的方法压缩视频数据的一种系统。按照这一公开,将一个视频帧分成多块,各包含16行,各行上有16个象素,即16×16的块。对于采用离散变换法的空间压缩也需要将帧分成块,但通常它是分成8×8个象素的块。在采用两种技术时,每一个16×16个象素区是由四个8×8的块组成的,并且为了区别两者,将较大的块称作宏块。
图2A中示出了这一类型的象素的宏块。运动矢量不是从图象帧中所示的目标的实际运动导出的,也不一定涉及它们。如这里所使用的,一个运动矢量是指一个特定的16×16宏块而言,并且它表示与待传输的块相比产生最低差值的参照图象中的一块在正或负X与Y方向上的整数个象素间隔的一个运动。从而,识别出满足这一标准的一个矢量有可能并不真正涉及图象帧中一个目标的实际运动。然而,在实践中,很可能由于基本上在运动矢量的方向上出现了实际运动而识别出满足这一标准的一个矢量。
运动矢量的分辨率基本上是基于所要求的压缩程度与可得到的处理设备的一种任意选择。在本例中,运动矢量是以整个的象素间隔为单位测量的,但是也能采用分数象素间隔,并且也能用插入法计算亚象素位置上的新象素值。类似地,将搜索区的大小选择为便于容纳大多数运动速度,同时为了计算运动矢量而对所需要的处理设备加以现实的限制。这一点在传输方的运动矢量为实时计算的时尤其重要。
一个特定块的最佳运动矢量的识别是一种要求大量计算的过程,然而应当理解,一旦真正建立了该矢量、将其用于实行编码、然后为实行解码而将其传输或记录,则解码过程是明显地对计算要求不高的。从而,给定一个运动矢量,用这一矢量来识别传输的参照帧中的最佳块是一种非常直观的实践。然而在传输方,在将其用于实行编码之前,必须实际计算该矢量。
下面参照图2A与图2B描述为一个特定块计算运动矢量的方法。在图2A中,将待编码的一个16×16象素块标识为25。这一象素块是通过在一个参照帧中识别一个相似块而编码的,并且不传输该当前块的实际象素值,而传输表示待传输的帧的块中的象素值与参照帧中识别出的块中的象素值之间的算述差的差值。
块26为出现在与当前帧中块25的等价位置上的参照帧中的一个16×16象素块。从而,如果采用不带运动矢量的预测编码,块25内的象素值将直接与块26内的象素值进行比较。
然而,当计入运动并采用运动矢量时,则执行搜索而在参照帧中识别一个产生比从块26计算产生的差值小的差项的16×16象素块。
理论上有可能检验参照帧中所有的可能块,然而这将需要大量的计算需求并且实际上是不可能实时实现的。从而,采取了折衷方案,在这一特定的实施例中,通过从该16×16象素块的基位置(从参照数字26标识的位置)位移到在X与Y两个方向上加减15个象素间隔的位置中进行搜索。
从而,给定加或减15个象素的位移,便可以从参照帧的块27内的任何地方得到用于编码块25的一个参照象素块。从而,块27为由46×46个象素位置构成的块,而一个16×16的象素块可占据块27内961(31×31)个位置中的任何一个。
为了确定这些可能的位置中哪一个提供最佳的运动矢量,要考虑所有的可能位置并根据得出待传输的块25与块27内的一个参照块之间最小差值的位置进行选择。图2B中示出确定最佳可能运动矢量所执行的算法。
为了本公开的目的,在诸如块27的较大搜索区内的诸如块26的一个16×16宏块的位置将称作“块位置”。再者,16×16象素的宏块内的实际象素位置将称作象素位置。块位置是参照该块不受运动矢量的影响移位时所占据的位置描述的。从而,区27内的一块的位置是参照块26的位置描述的。再者,区27内的块位置的X、Y坐标也等价于将块26变换到计算出实际差值的一个块位置所要求的运动矢量。
如上所述,通过考虑区27内的各可能块位置而为各块确定一个运动矢量。这是通过考虑用一个运动矢量(-5,-5)将该块放置在左上角启动的。
在步骤30确定下一个块位置,该位置在第一次循环上将由如上所述左上块的一个运动矢量(X、Y)定义。
在步骤31,将标识为差之和的一个变量∑D设置为零。步骤32启动一个考虑该特定的块位置内的所有象素位置的循环,从而在步骤32考虑该块内的下一个象素位置,而在步骤33通过从块25导出的待传输象素值中减去参照象数值,同时略去差的符号而计算出绝对差值D。
在步骤34将在步骤33计算的差值加在表示差之和的变量∑D上,在第一次循环上,这便是将步骤33上计算的值D加在零上。
在步骤35上提出问题是否要考虑另一个象素位置,在第一次循环时,答复是肯定的,而导致控制返回到步骤32。
从而,在步骤32识别下一个象素位置,在步骤33计算该象素位置的差值并在步骤34再度将差值加在差之和上。
这样将16×16个象素的宏块的所有差值加在一起直到考虑了宏块内的所有象素位置而在步骤35提出的问题的答复为否定为止。
除了确定表示一个特定的块的差之和的值∑D以外,还存储了表示差值的最低模量和的标识为∑D(MIN)的另一个变量。
在启动算法时,∑D(MIN)可设定为充分大的值,使得∑D的任何典型值都具有较小的模量,而导致在步骤36提出的问题的答复为肯定的。
当步骤36提出的问题的答复为肯定时,便将∑D(MIN)设定为等于步骤37计算的∑D值。类似地,在步骤38将运动矢量的X分量V(X)设定为等于X,如在步骤30所确定的,类似地将运动矢量的Y分量V(Y)设为等于Y。
在步骤39,提出问题是否要考虑另一个块位置,并当答复为肯定时,控制返回到步骤30,选择下一个X、Y块位置。
这样,对于各个块位置,将该块内的所有象素值与块25对比,块25即待编码的块。将所有的绝对象素差值(即模量差值)加在一起,并比较这一和的模量以检验它是否是到此为止找到的最小值。如果它是到此为止找到的最小值,便用它来取代前面的最小值,而在步骤38建立一个到此为止的新的最佳运动矢量。
考虑了所有的块位置之后,在步骤39提出的问题得到否定的答复,变量∑D(MIN)表示最小的差之和,而为V(X)与V(Y)存储的值表示最佳运动矢量的X与Y坐标,这便是将待传输的块25与区27内的一个参照块比较时得出最小差值的运动矢量。
图3中示出了用于执行差分编码的电路。预测电路41包括一个用于存储前一帧的象素值的帧缓冲器。从而,前一帧成为参照帧,而将表示新帧与该参照帧之间的差的信号传输或转发到压缩的下一阶段,如图1中所示。减法电路42计算差,它从进入的象素值中减去预测电路41所产生的输出。然后用有可能执行量化或Huffman编码的一个编码电路43编码这些象素值,供随后的传输或处理。
还将编码电路43的输出提供给配置成执行编码电路43的逆过程的一个解码电路44。执行解码过程,以便保证在发源方生成与接收方重构的相同的参照帧。电路43执行的编码中有可能引入损失,因此在发源方必须计入这些损失,以保证重构一个相同的帧。
从而,将解码电路44的输出提供给一个加法电路45,其输出则提供给预测电路41。操作中,将来自待编码的帧的图象数据块组合在一个输入缓冲器46中。将下一块待传输的数据提供给预测电路41,该电路配置成执行前面详述的运动矢量计算过程。作为这一过程的结果,预测电路41为该块确定一个运动矢量,并将其传输或记录,如前所述。
预测电路41存储参照帧的一个完整的拷贝。开始,它在参照帧中识别与当前正在编码的块等价地定位的块。从这一等价地定位的块,预测电路通过按照运动矢量所定义的移动若干象素间隔而识别一个经过运动校正的等价块。
预测电路41一旦识别了一个预测块,便将正在编码的该块的象素值提供给加法电路42,该电路还接收来自预测电路41的等价预测值。从而,对于正在编码的块中的各象素,从其中减去其等价的经过运动校正的象素,并将作为电路42的输出产生的差提供给编码电路43。
将来自编码电路43的输出象素汇集在一个输出缓冲器48中,该缓冲器能存储若干满帧象素,以便传输缓冲存储。这便是说,希望以不变的速率传输或记录象素,以便优化利用能得到的带宽。然而,由于编码过程的复杂性质,难于以不变的速率生成编码象素,因此设置了缓冲器48来消除产生编码数据的速率中的变化。
如上所述,将编码电路43的输出提供给一个等价的解码电路44,在那里通过加法电路45将预测电路41生成的象素预测加在解码的值上,并反馈给预测电路41,以便建立一个后随的参照帧而允许序列中下一个帧的编码。
从而能够理解,给定一个特定序列的视频帧中的一帧,便有可能计算出现在该序列中的后随的帧。这种编码方式称作向前预测编码,其意义在于参照较早出现在序列中的帧来编码或解码一个新的帧。具体地,新帧的各块是参照前一帧的一块解码的。首先,该块可能在与该前一帧中对应的位置不同的位置中,新的位置是用一个运动矢量标识的。第二,传输的值中包含新块与前面传输的块之间的象素差。
如5,083,202号美国专利中所描述的,有可能实时偏码向前预测视频信号,从而除了在编码过程可占用比解码过程长得多的时间的系统之外,还允许在传输系统中采用这种技术。
按照MPEG视频压缩建议,压缩的视频帧是按照上述向前预测法生成的。将这一类型的帧标识为“P”帧,并且是构成一个压缩的位流的三种类型的帧之一。
MPEG系统的一种要求是它必须具有入口点,这便是说,不参照前面传输的帧,能从其启动播放的参照帧。从而,可认为一个MPEG流是由帧构成的,其中各群是基本上自含的,允许在所述群的边界上定出编辑点。为了能够将图象帧压缩到中,必须传输这样的一帧,它是以这样的方式压缩的,即为了再生它不需来自其它任何帧的信息。这一帧称作帧内编码的;以示与需要来自其它帧的信息的帧间编码的区别。在MPEG标准中将这种类型的帧标识为“I”帧(帧内编码的),而P帧则是从I帧或其它P帧各前预测的帧。
图4中示出MPEG编码的典型输入帧序列。虽然按照建议,群数是实际上作为压缩比(即压缩数据对原来数据之比)与图象质量之间的一种折衰可以调整的,在本例中将一群指定为包含15帧。
在图4A中所示的15帧的群中,帧内编码帧I0标识为帧3。如上所述,输入序列的帧6是参照I0帧(帧3)用向前预测编码的。类似地,向前预测编码也用于参照帧P0编码标识为P1的帧9。下一预测帧P2是从帧P1编码的,而最后的向前预测编码帧P3则是从帧P2编码的。从而,在一群15帧中,有一个帧内编码的帧,它预期比后面的帧需要明显地更多的带宽;以及基本上采用参照图3所示的技术导出的四个向前预测的帧。
15帧的群中的其余10帧,可认为是参照将它们连接在两面的那些帧导出的。在考虑实际编码时,帧4.5.7.8.10.11.13与14可用P帧的向前预测的相同方法从一个I帧或一个P帧向前预测。从而,对于各块,标识一个运动矢量,后面跟着该块内各象素的象素差值。
然而,应理解,在某些情况中,在一个向前预测的帧与从中导出预测值的参照帧之间可出现场景变化。出现这种情况时,预测帧与参照帧之间极少相互关联,而导致极大的差值,这可能占用与作为帧内编码传输预测帧所需的信息水平相同的比例。因此,在这种情况中,预测编码的优点便丧失了,当系统试图传输需要超出可利用的带宽的场景变化时,会导致画面劣化。如果用足够的效率来编码其它的帧而提供了额外的带宽容量的话,输出缓冲器48在一定程度上可容忍这种情况。然而有时这种形式的变化有可能导致明显的画面劣化。
在试图克服这种情况及进一步减少带宽需求中,帧1.2.4.5.7.8.10.13与14可有可能参照视频序列中的后面的一帧编码,而不是前面的一帧。这样,预测编码不是出现在向前的方向上,而实际上出现在向后的方向上,将这些帧标识为B帧(双向的),但应理解,向前编码或向后编码的选择是取决于哪种方法需要最少的信息量而在逐帧的基础上作出的。再者,一个双向编码帧可参照前面与后面的帧两者编码。
假定帧4与帧5之间出现场景变化。如果已采用向前预测编码生成了帧5,则其参照帧将是帧3。帧3构成前一场景的一部分因此与取自后一场景的帧5很少关联。从而如果忠实地再生帧5,便需要可观的信息量。
在本例中,为了用向前预测编码法生成帧6,将要传输可观的信息量。如生成帧6所需的信息量所表示的,很明显在帧3与帧6之间已出现了场景变化,因此很清楚在编码帧3与帧6中已经实际上考虑了场景变化的后果。
变化出现在帧4与帧5之间而帧4能参照帧3忠实地再生。然而,如果帧5是采用向后预测法参照帧6而不是参照帧3编码的,则在编码帧5时只需要极少的信息。然而编码系统在尚未执行过两种编码尝试之前,并不知道帧5应从帧6编码而不是帧3。在已经执行过两种编码时,然后有可能比较它们的结果而选择导致最少数据传输量的那种编码。
从而在本实例中,帧4与5两者原先都是从向前预测方式及向后预测方式编码的。然后,帧4将参照向前预测编码传输,而帧5则将参照向后预测编码传输。
假定以向前预测编码从一个较早的帧,或者以向后预测编码从随后的帧生成了一个B帧,必须为传输或记录的目的重组帧数据次序。图4B中示出了这种重新排序。如果假定图4A中所示的帧1为一个特定的序列中最前面的帧,由于不存在更早的帧而不可能用向前预测产生此帧。从而,帧1与2两者都是用向后预测编码产生的,因此是在帧3之后传输的。从而如图5中所示,传输的第一帧是帧3,后随帧1与2。由于帧4与5也可能参照帧6而不是帧3编码,所以在帧3后面不可能传输帧4与5,因此要传输的下一帧是帧6,后随帧4与5。类似地,下一帧是帧9,后随帧7与8,此后传输帧12即P2帧,后随帧10与11,此后传输P3帧即帧15,后随帧13与14。
图5中示出MPEG编码流的一个解码电路。类似于图1中所示的放大器20的一个放大器51放大所接收的信号。一个信号分离器52将频率域中输送的象素信息与运动矢量分离,并将所述象素数据提供给一个空间解压电路53。类似于图1中所示的电路21,空间解压电路53将空间压缩数据转换成象素值或象素差值,依次将它们提供给处理器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。此时,不能在帧4与5解码之前将帧6提供给输出,因此,选择器55将帧6的解码值提供给存储器B。与此同时,从存储器A中读出帧3并提供给输出。
这时已存储了帧3与6两者的解码版本,便有可能解码帧4与5及将它们提供给输出。假定可以得到所有的必要信息,帧4与5便可向前解码、向后解码或双向解码。将帧4与5提供给输出之后,从存储器B中读出帧6并且也将其提供给输出。
将帧5提交给输出之后,便不再需要保留帧3,因此存储器A可以改写。下一个到达的帧为帧9。参照帧6解码该帧并写入存储器A中。对帧7与8重复上述用于帧4与5的过程。解码帧7与8并提供给输出,此后便能从存储器A中读出帧9并将其提供给输出。
这样便能理解,通过遵循类似的技术,所有的帧都能解码,直到接收到另一个帧内编码的帧为止,然后重复整个过程。还应理解,硬件需求,特别是以帧存储器的数目表示的硬件需求,不受包含在帧群中的双向帧的数目的影响。双向帧是在接收它们时参照存储在存储器A与B中的两帧解码的。
在编码速度不是关键的应用中,在按照图4中所示的MPEG要求编码一个视频序列中不会遇到特殊的困难。然而,当试图按照这一标准实时编码时,将产生两个明显的问题。
如图2A中所示,为了只为一个16×16个象素的宏块25确定一个运动矢量,必须考虑区27(一个46×46个象素位置的正方形)内所有的块位置的象素差值。当在相邻的帧之间实行预测编码时,这样一个区能够确定适当的运动矢量。然而,如图2A中所示,必须参照帧3来预测编码帧6。在这一情况中,帧6不是直接与帧3邻接的,而是一共与帧3相隔3帧的间隔。
如果在帧3、4、5与6所定义的持续时间中出现了运动,这一运动有可能是在同一方向上发生的。从而,从中确定最小的差值的象素参照块会越过图象帧运动而使得搜索区在逐帧的基础上实际移位。从而,尽管对于邻接的帧位置,所需要的是加或减15个象素位置的位移,但为了达到相同的效果,该区的大小必须随帧间隔的增加而增加。
从而,为了从帧3预测编码帧4,必须考虑加或减15个象素单元的块位置,如图2A中所示。然而,在从帧3预测编码帧5时,帧间隔增加了一帧的位置,为了达到可比的结果,必须考虑加或减30个象素位置的块位置。类似地,从帧3编码帧6时,搜索区还要增加加或减15个象素位置。从而,为了实行三帧的间隔,必须考虑由加或减45个象素位置的块位移所定义的一个象素区。
从而,容易理解,如果要按照图2B中所定义的算法搜索加或减45个象素位置的位移所定义的一个区,则参照帧3直接计算帧6的运动矢量会导致巨额的计算开销。
通过参照图6便能理解这一问题。在本例中,压缩编码装置接收到要作为I0.B1.B2与P0编码的原始图象帧3.4.5与6。帧P0是参照帧I0用向前预测法编码的。从而,所有的帧都已分成16×16个象素的宏块,并且通过定义一个运动矢量连同象素差值来编码各宏块。如上所述,在考虑用于编码帧P0的块时,在从帧I0导出的块与参照帧P0编码的块之间存在着三帧的间隔。在帧6中,块61表示要作为P0帧的一部分传输而编码的一个16×16个象素的宏块。采用向前预测编码法,帧I0中的对应帧是参照62的。为一帧的间隔定义一个运动矢量,该帧为帧4,该矢量指定正方形63内任何地方的块62的位置。这表示在X与Y方向上的加或减15个象素的一个可能的位移。
在下一个帧间隔上,即从帧4到帧5,必须考虑一个加或减15个象素的位移,因此,两帧之后,块62有可能在正方形64内任何地方。从而,明显地增加了要计算差值的面积。然而,即使出现了明显的增加,仍然不可能为帧P0提供一个运动矢量,因为它还需要另一个帧间隔。
另一个帧间隔导致在X与Y两个方向上另一个加或减15个象素的位移,得出块62是在正方形65内的任何地方。从而,为了保持从块63导出的运动矢量相同的质量水平而从块65中为块61提供一个运动矢量,必须在X与Y两个方向上考虑高达加与减45个位置的象素位移。很清楚,这种计算水平实际上是不可能用现实的硬件实现实时提供的。
如上所述,还必须双向编码帧4与5。从而,无论实际传输的是否是帧4与5的各前预测值,仍然必须计算它们,因此,必须参照帧3中的块计算关于帧4中的块的运动矢量。这等价于在方框63中移动块62,如图2中所示。在块62中所有的象素在X与Y方向上位移了加或减15个象素位置之后,才可能平均这些值并为块62计算出一个最佳运动矢量。
图7中示出了称作“套接”的一种替代方法。块62在图7中示出为块72。通过在区73中移动块72而确定一个运动矢量。作为这些操作的结果,计算出一个运动矢量,它实际上将块72重定位到块76上。从而块76内的象素可用于向前预测帧4中的一块象素。在正常预测编码中,这时将用帧4来预测帧5的值,而后者又依次用来预测帧6的值。
如上所述,按照MPEG建议,帧6的值并不是经由帧4从帧5预测的,而是直接从帧3预测的。然而,如果迟早总是要计算帧4与帧5的运动矢量的,这些运动矢量便可用来计算帧6的最终运动矢量。从而,不是试图一蹴而就计算出帧6的运动矢量,而需要加或减45个象素位置的象素位移,帧6的运动矢量是分阶段计算的,类似于将望远镜的小段连接在一起而制成一个相当长的装置那样。从而将通过参照帧3计算帧4的一个运动矢量;用前面计算的运动矢量作为偏移而参照帧3计算帧5的运动矢量;以及再次用一个偏移参照帧3最终计算帧6的运动矢量,这种参照帧3导出帧6的运动矢量的过程称作“套接”。
图7表示一个参照帧内的象素块。为了本实例的目的,将待传输的一帧内的一块与参照帧分隔开三帧的间隔。然而,不是执行一个单一的操作将参照帧中的象素值与最终输出帧进行比较,而是考虑中间帧以便计算一序列运动矢量,然后按照套接技术将它们加在一起。
从而,考虑中的帧中包含一个参照帧、一个待传输的帧、以及位于参照帧与待传输的帧之间的两个中间帧。
单个地考虑待传输的帧的各宏块。从而,对于一个特定的宏块,在中间帧及参照帧中存在一个等价的块位置。图7中将这一等价块位置标识为块72。将这一等价定位的块与第一中间帧中的一个等价定位的块比较。这时在用X与Y两个方向上加或减15个象素位移所定义的一个区73内进行搜索。从而,搜索是基本上类似于参照图2A所描述的。作为这一搜索的结果,在参照帧中识别出一块76,作为为了在第一中间帧中重构该块而应从其中得到象素值的块。此外,识别出将等价地定位的块转移到块76所需的运动矢量。
为了为第二中间帧生成运动矢量,在区77所定义的加或减15个象素位置间隔内实行进一步的搜索。这再一次导致计算出实际上在参照帧中标识块78的另一个运动矢量。从而,第二中间帧的运动矢量将块位置76变换到块位置78,而第一中间帧的运动矢量则将块位置72变换到块位置76。
计算了第二中间帧的运动矢量之后,为包围块78的区79再度重复该过程,区79也是通过加与减15个象素位置间隔定义的。作为结果,识别出参照帧中的又一个块位置,并生成了一共3个运动矢量,它们将参照帧中的一块变换到相隔3帧间隔的待传输的帧中的一块上。通过套接这三个独立的运动矢量便产生了一个单一的运动矢量,使得一块能被传输,连同一个标识相隔了帧间隔的参照帧内的从其中计算出差值的一块的运动的矢量。
套接过程的结果在于得到标识帧3中的一块的运动的一个单一的矢量,它能用于预测帧6中的一块,而无须进行图6所提出的示例所建议的曲折的计算量。
图8中示出按照MPEG建议实时编码视频帧的一个时间压缩电路。图8中所示的电路包括一个输入存储区81、一个参照存储区82、一个运动矢量计算电路83、一个空间压缩器84、一个空间解压器85及一个缓冲区86。
在所示的实例中,输入存储区包含一个第一帧存储器87及一个第二输入帧存储器88。实际包含在输入存储区中的帧存储器的数目取决于传输流中的双向帧的群集。从而,在本例中,双向帧是成双群集的,因此需要两个存储器87与88。然而按照建议,包含在各双向帧群中的双向帧的数目是可变的,并且应理解,当这一群集值增加时,设置在输入存储区中的输入帧存储器的数目需要对应地增加。
参照存储区82包含一个第一参照帧存储器89及一个第二参照帧存储器90。在参照存储区中需要两个帧存储器来容许双向预测编码。从而在参照存储区内帧存储器的设置不取决于以出现在各群中的双向帧的数目表示的所采用的实际MPEG流的类型。
参照数字91标识提供给电路的输入帧的清单,它与图4A中所示的次序等价。如图4A中所示,一群的开始是由双向帧B-2起动的,后随双向帧B-1然后是该群的帧内编码帧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上,在写寻址器98的控制下将空间压缩器84生成的象素值写入缓冲器97。从而,如参照数字99所指示的,该I0帧是在写寻址器98控制下写入缓冲器97中的第一帧。
除了提供给写寻址器98以外,空间压缩器84生成的I0帧的象素值还提供给实际上执行空间压缩器84的逆功能的空间解压器85。将空间压缩器的输出提供给加法器100,后者在其第二输入端上接收选择器96生成的输出。如上所述,处理I0帧时,该选择器96不生成输出,因此加法器100的I0帧输出等价于空间压缩器85生成的输出。
将加法器100的输出提供给参照存储区82的输入选择器95,后者又将象素值写入第一参照帧存储器89。存储在输入帧存储器87与88中的值连同存储在参照帧存储器89与90中的值,可由运动矢量计算电路83寻址。运动矢量计算电路83能用上述套接技术在时间上从一个参照帧相隔一个帧间隔以上的四个帧中计算运动矢量。从而,采用这些技术,运动矢量计算电路计算作为一个B-2帧的第一帧及作为一个B-1帧的第二帧内的块的运动矢量。如图4B中所示,理想上B-2帧应在B-1之前编码。然而,在为B-1帧计算出类似的向后运动矢量之前,不可能计算B-2帧的向后运动矢量。这是因为B-2帧的运动矢量是用套接过程计算的,因此在计算B-2帧的运动矢量时,需要为B-1帧生成的矢量作为编移值。从而,将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确定偏移,便减小了计算运动时的搜索区。从而,生成了套接的运动矢量,而允许参照已存储在参照帧存储器89中的帧I0来编码帧B-2。这导致输出选择器93从输入帧存储器87中读取帧B-2的象素值,并经由加法器94提供给空间压缩器84。在加法器94上,减去输出选择器96选择的预测值,并且压缩器84压缩所得出的差值。再一次没有必要存储这些象素值中任何一个作为参照值,尽管所述值是提供给写寻址器98的,后者依次将它们写入缓冲器97。
编码帧B-2与B-1之后,不再需要保存这些帧的象素值了,因此便可改写输入存储器87与88。也能理解,在这一阶段,没有数据写入参照存储器90。
输入序列中下一个到达的帧,帧4,是作为帧B0处理的。帧B0可以是双向编码的,因此在接收下一个P帧之前不可能编码这一帧。结果,将帧B0写入第一输入帧存储器87。还将帧B0的输入象素值直接提供给运动矢量计算电路83,后者参照所存储的I0帧的象素值实时计算运动矢量。计算及存储从帧I0到帧B0的向前预测,供以后与从下一个P帧的向后预测的比较使用。
类似地,下一个到达的帧,帧5,也是一个B型帧,因而在输入选择器92的控制下将这一帧的象素值写入第二输入帧存储器88,以及导至输出选择器93供从存储的帧I0向前预测,如对照帧B0描述的。
下一个到达的帧,帧6,是作为一个向前预测的帧,帧P0处理的,因此输入选择器92直接将这些象素值导向输出选择器93。帧P0的象素值是用来自存储的I0帧的向前预测值编码的。P0帧的输入象素值直接提供给运动矢量计算电路83,后者利用来自帧4与5的套接的运动矢量参照存储在帧存储器89中的I0帧的存储的象素值实时计算运动矢量。
将为P0帧计算的运动矢量提供给选择器96,得出从存储器89的参照值的适当寻址,而为加法器94提供预测值。
从输出选择器93将P0帧的象素值提供给加法器94,并在加法器94上从中减去预测值,而向空间压缩器84提供一个输入。将来自空间压缩器84的输出提供给写寻址器98,后者依次将编码象素值写入缓冲器97。与此同时,将来自压缩器84的输出编码值提供给空间解压器85,以实行空间压缩器84所执行的过程的逆过程。
如上所述,将来自空间解压器85的输出解压后的象素值提供给加法器100,后者在其第二输入端上接收选择器96所生成的预测值。从而,象素值是以基本上等价于P0帧的重构象素值的形式提供给选择器95的。这些象素值本身提供B帧的参照值,因此将所述值写入第二参照帧存储器90。
在考虑过P0帧的所有象素值之后,便有可能用向后预测编码分别存储在输入帧存储器87与88中的帧B0与B1的象素值了。
在参照I0帧生成P0帧的运动矢量中,运动矢量计算电路83已经实现了套接过程。从而已参照帧3为帧4计算出了运动矢量。类似地,已参照帧3与4为帧5计算出了运动矢量,并且进一步已参照帧3与4为帧5计算出了运动矢量,并且进一步已参照帧3、4与5用套接过程为帧6,P0帧,计算出了运动矢量。从而已在前进方向上为B0与B1帧计算出了运动矢量。当前必须在向后方向上计算运动矢量,如为帧B-2与B-1所进行的。
再次假定帧B0的运动矢量将用套接过程计算,便必须首先计算帧B1,即帧5的向后运动矢量。
为了进行这些运动矢量的计算,从第二输入帧存储器88中读取值,产将其提供给运动矢量计算电路83。然后相对于参照帧进行搜索,这时参照帧为读自第二参照帧存储器90的P0帧。在计算出运动矢量之后,将它们提供给选择器96,后者通过从第二参照帧存储器90中读取适当的参照值,而编码帧B1。从而,从帧存储器88中读取帧B1的象素值,并经由选择器93将其提供给加法器94。在加法器94上,从选择器93提供的实际象素值中减去输出选择器96生成的预测值,将得出的差值提供给空间压缩器84。再次将空间压缩器84生成的空间压缩值用写寻址器98写入缓冲器97。
一旦编码了帧B1,这时便可以编码帧B0。再次在存储在第二参照帧存储器90中的参照帧的区内进行搜索,在这一循环中这是P0帧。通过利用前面为帧5计算的运动矢量作为对搜索的偏移进行套接。将新计算的运动矢量提供给选择器96,而允许加法器94实行预测编码。
一旦在向前与向后两个方向上编码了帧B0与B1,运动矢量计算电路83便为双向帧确定应采用向后预测编码,向前预测编码或插值双向编码中哪一种。这一决定是根据哪种编码方案产生最小的误差作出的。根据这一计算,选择器96从存储器89、存储器90或这两个存储器的组合中选择适当的值。
如上所述,按照写入寻址器98将帧写入缓冲器97的次序是用参照数字99标识的。可将这一次序与图4B中所示的在MPEG标准下所要求的次序进行比较。按照该标准,传输的第一帧为I0帧,后随B-2帧、B-1帧及P0帧等。然而,假定套接过程已计算出双向帧的向后预测运动矢量,便导致所述帧是以错误的次序写入缓冲器97的。从而如清单99所示,在将I0帧写入缓冲器97之后,便立即将帧B-1(帧2)写入所述缓冲器,然后跟随B-2帧。从而B-1帧与B-2帧是以错误次序生成的。
用一个读寻址器101在缓冲区86内解决这一排序情况。将读寻址器101配置成以不同于写入缓冲器97的次序来读取压缩的象素数据。对读寻址器101提供有识别缓冲器97内各压缩帧的位置的信息。从而,在以清单99所示的次序将信息写入缓冲器97之后便按照清单102所示的建议排序从缓冲器97中读取。从而,从缓冲器97中读取的第一帧便是I0帧,如上所述,它是写入所述缓冲器的第一帧。然而此后从缓冲器97读取的不是作为下一帧写入所述缓冲器的B-1帧,而是如清单99中所示的实际上作为第三帧写入所述缓冲器的B-2帧。从而,读寻址器实现了将帧的排序重新排列成建议所要求的排序。
如用清单102所示,要读取的下一帧为P0帧,此后优先于B1帧读取B0帧,然后才读取B1帧。
参照图8描述的系统的重大优点在于虽然缓冲器86在容许向后套接矢量计算中扮演重要的角色,它并不显著地增加系统的硬件需求。缓冲器86也是必要的,因为象素值倾向于在可变的比特率上写入缓冲器。比特率极大地依赖于图象的内在冗余性,很明显,这是在视频序列之间变化的。从而,在整个视频序列上,压缩后产生的位的实际数目是变化的。然而,许多视频与传输设备要求不变的比特率,因此数据是在不变的比特率上读出缓冲器86的。从而,除了重新排列B帧的位置之外,缓冲器86还执行吸收产生数据的速率的浮动的重要功能。
图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上面与下面的块中的所有象素时,向处理器P提供可能在编码块n-2时需要的角素值。类似地,处理器P2接收可能与块n-1相关的象素值,处理器P3接收块n可能需要的值,处理器P4接收编码块n+1可能需要的值,而处理器P5则接收编码块n+2可能需要的象素值。
随着在该区内的扫描进行到包含块n+1的下一列块,计算块n-2的运动矢量所需的所有象素将已经提供给处理器P1。从而,处理器P1计算块n-2的运动矢量,而无需再进一步考虑该块。这时处理器P1空闲而计算另一块的运动矢量,从而处理器相对于块位置的排序实际上是循环的,处理器P1继续接收来自参照帧的象素值,但这时相对于块n+3处理这些值。
为了计算一个运动矢量,各处理器接收相当于五个块列的象素数据。因此各处理器接收五块乘五块正方形象素区的象素数据,但是由于前面的运动矢量所定义的偏移与作为套接的结果,处理器只须处理3块乘3块的正方形象素区。再者,在可利用的时间内,将是不可能处理5块乘5块的区的。
为了得益于套接过程,在允许来自参照帧的象素数据提供给多个处理器的同时,将前一帧(或多帧)的运动矢量提供给一个启动电路126。为了计算套接的运动矢量,将启动电路配置成为各处理器计算何时它正在从参照帧接收实际需要的数据。当正在从参照帧读取这种数据时,便生成一个启动信号并将其提供给相应的处理器。
当从参照帧读取象素值时,处理器P1将需要这些值中的某一些。正在读取P1所需要的象素值时,启动电路126生成一个启动信号并在处理器启动线127上将其提供给P1。类似地,如果正在读取的象素值是P2所需要的,便在线128上将一个启动信号提供给P2。再者,设置了从启动电路126到对应的处理器P3、P4与P5的类似启动线129、130与131。
从而,一个处理电路(P1等)为了计算一个特定的块的运动矢量,它接收在大小上等价于一个5块乘5块的区的一个区中的象素值。然而,处理器只处理等于3块乘3块的一个区中的数据,虽然这一区可位于较大的5块乘5块区内的任何地方。较小的3×3块区是由启动电路126定义的,使得正在读取当前感兴趣的区内的象素时,处理器响应启动信号只是锁存数据。
一旦已读取了具有五块间隔的高度一个整个水平区,便通过将该区垂直移动一块的间隔而选择一个新区。从而,各块的行落在5个重叠的区中(除了在帧的边沿上之外)而各象素值被读取5次。
假定出现感兴趣的象素的区较大而在较大距离上套接时,则需要较多的处理器。从而在相隔三帧的间隔时,需要7个处理器。而启动信号则响应套接的运动矢量,仍然标识3块×3块的一个正方形区。从而,随着帧间距离的增加,读出的数据量也增加,但是在启动信号活跃时处理器的实际处理器保持不变;由于在启动信号活跃时,处理器的实际处理量保持不变;由于启动信号不活跃而成比例地忽略更多的数据。
权利要求
1.一种向后预测编码视频信号的帧的方法,包括参照帧n为帧n-1生成运动矢量及编码帧n-1;通过套接从帧n到帧n-1的运动矢量与从帧n-1到帧n-2的矢量,参照帧n生成帧n-2的运动矢量及编码帧n-2;其特征在于在将编码的帧n-2写入一个缓冲器(97)之前,将编码的帧n-1写入所述缓冲器;以及在从所述缓冲器读出编码的帧n-1之前,从所述缓冲器读出编码的帧n-2。
2.按照权利要求1的一种方法,其中帧n是用向前预测编码从一个较早的帧n-m预测的。
3.按照权利要求2的一种方法,其中帧n-m是不参照任何前面的或后面的帧传输的。
4.按照权利要求2的一种方法,其中帧n-m是用向前预测编码从另一帧编码的。
5.按照任何一项前面的权利要求的一种方法,其中数据是在可变比特率上写入缓冲器(97),而在基本上不变的比特率上读自所述缓冲器的。
6.用于预测编码一个视频信号的帧的装置,包括用于通过套接参照帧n的帧n-1的矢量与帧n-2的矢量而参照帧n生成帧n-2的运动矢量的装置;用于编码视频帧的装置;缓冲存储装置(97);用于在将编码的帧n-2写入所述缓冲存储装置之前,将编码的帧n-1写入所述缓冲存储装置的装置(98);以及用于在从所述缓冲存储装置读取编码的帧n-1之前,从所述缓冲存储装置读取编码的帧n-2的装置(101)。
7.按照权利要求6的装置,包括用向前预测编码从帧n-m编码帧n的装置。
8.按照权利要求7的装置,包括用于不参照任何其它的帧编码帧n-m的装置。
9.按照权利要求7的装置,包括从一个前面的帧向前预测编码帧n-m的装置。
10.按照权利要求6至9中任何一项的装置,其中所述缓冲存储装置是配置成在可变的比特率上接收编码数据的。
11.按照权利要求6至10中任何一项的装置,其中用于编码视频帧的装置是按照MPEG建议的。
12.电视会议装置或可视电话装置,包括按照权利要求6至11中任何一项预测编码的装置。
13.一种预测编码视频信号的帧的方法,该方法包括首先生成帧n-1相对于帧n的运动矢量,编码帧n-1及将其写入一个缓冲器。其次通过搜索一个偏移了帧n-1的运动矢量的一个区而生成帧n-2的运动矢量及计算帧n-2的运动矢量,将所生成的两组运动矢量加在一起以构成帧n-2相对于帧n的运动矢量,编码帧n-2并将其写入缓冲器,以及在从缓冲器读取编码的帧n-1之前,从缓冲器读取编码的帧n-2。
14.按照权利要求13的一种预测编码视频信号的帧的方法,相对于帧n生成运动矢量之前,相对于一个较早的帧n-m生成帧n-2、n-1与n的运动矢量,其中m大于2。
15.按照权利要求14的一种方法,其中帧n-m是不参照任何前面的或后面的帧编码的。
16.预测编码视频信号的装置,该装置包括一个在前帧存储器,用于存储在前帧数据及一个在后帧存储器,用于存储在后帧数据,一个运动矢量计算器,用于相对于在前帧数据和/或在后帧数据,计算输入帧的运动矢量,用于编码视频信号的帧的装置,编码的帧是输出到一个缓冲器的,以及读出装置,用于以逆向次序从缓冲器中读出允许双向编码的帧。
全文摘要
按照MPEG标准实时编码视频帧的系统,在向前预测B帧与P帧期间,采用套接过程计算运动矢量。类似地,在向后预测编码期间,采用套接过程来计算B帧的运动矢量。在向后预测编码中采用套接,导致以错误的次序编码B帧。通过以生成它们的次序将帧写入一个缓冲器(97),然后以传输或记录所要求的次序从缓冲器中读出帧数据而重新为B帧建立正确的次序。采用套接过程明显地减少在预测编码偏移一个以上帧周期的帧时计算运动矢量所需的计算量。采用一个缓冲器来重组帧并不明显增加硬件需求,因为这一缓冲器通常用于消除不规则的数据率。
文档编号H04N7/32GK1128098SQ94192948
公开日1996年7月31日 申请日期1994年7月29日 优先权日1993年7月30日
发明者伊恩·帕克 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1