用于解码视频图像的方法和设备与流程

文档序号:12796193阅读:167来源:国知局
用于解码视频图像的方法和设备与流程
本发明涉及用于解码视频图像的方法和设备,并且特别涉及用于解码压缩的运动补偿的视频图像的方法和设备。

背景技术:
存在许多视频压缩技术,并且其中有些被合并到标准中。最著名的是MPEG标准,该MPEG标准自第一个概念已来已经有多个版本。最常用的当前压缩标准之一是H.264。视频数据通常包括一系列的非交织帧或视频数据的交织场。通常,压缩技术将分配每个第N个帧作为参考帧,其中该参考帧将整体被传送。在参考帧之间的帧各自由运动矢量的集合表示,其中,当运动矢量被分配至参考帧中的区域时,该运动矢量指向中间帧中的区域,这是对参考帧中的各自的区域的最佳匹配。这些运动矢量经常使用基于块的匹配系统而被分配,在该系统中,一系列候选矢量被指定到每个块并被测试以了解哪个候选矢量提供了在参考帧中的块和由运动矢量所指向的块之间的最佳匹配。具有参考帧的这些运动矢量的集合的传输使得两个或更多个帧能够以压缩格式被传送,因为运动矢量包括与用于获取的场或帧相比更少的数据。压缩帧可以为I、P或B中的一者。I图片不参照任何其他图片且被称为参考图片。P和B图片参照其他图片(使用运动矢量)和在当前图片中编码的残留(residual)数据,以参照在参考图片中的区域,并使用该残留来增加至参考区域,以校正参考区域与当前区域之间的任何区别。这些被称为中间图片。B图片与P图片的区别在于B图片可以参照两个而不是一个预先解码的图片。在大部分系统中,中间帧在系统的编码端被重构,且获得了重构的图片与实际的图片之间的区别数据。该区别数据可以作为用于由运动矢量所表示的场或帧的校正数据而被传送,以改善解码器的品质。在直接压缩的系统中,中间图片将仅参照参考图片来获得。但是,在更为复杂的系统(诸如H.264)中,中间场或帧可以使用运动矢量来获得,该运动矢量起源于其他参考图片。这些参考图片通常被称为B图片。在这些系统中,解码中间图片是不可能的,其中该中间图片根据先前的图片获得或使用至少一些来自先前的图片的数据,直到用于那个先前的中间帧的数据本身已经被解码。在一些应用中,期望能够通过视频数据实施诸如平滑快进的功能。目前,通过压缩的视频数据的快进通常通过跳过中间帧并仅显示参考帧来执行。这在屏幕上产生了跳动的图像,并使得快进图像难以观看。其还使得暂停快进或转回以在视频序列的精确点处进行播放变得更加困难。为了改善诸如平滑快进或更高分辨率视频流的解码的技术,由于比特流的串行特性,有必要以可能比标准解码器更高的速率来完整地解码I、P&B帧。因此,并行方式是合适的。但是,有序图片的并行解码仅在图片没有直接从参考帧获得时是可能的。当至少部分使用运动矢量来根据先前的图片获得图片时,并行方式将失败,因为来自先前的图片的数据需要解码当前的图片,并因此在当前图片的解码可以开始之前,所有来自先前的图片的数据需要是可用的。

技术实现要素:
我们已经理解了许多视频编码/解码技术对运动矢量在水平和垂直方向上的最大限度(extent)进行了限制。一旦已经完成了到运动矢量的最大限度的第一个帧的解码,我们能够利用该限制以允许场或帧的部分并行解码,其中为了适当地解码当前场或帧,一个帧需要来自先前的场或帧的数据。在本发明的优选实施方式中,提供了一种用于根据图像数据和运动矢量解码压缩的运动补偿的视频图像序列的方法和设备,所述图像数据包括多个参考图片,所述运动矢量用于根据所述序列中先前的图片获得中间图片(I,B),所述运动矢量具有对应于图像数据的行数的最大垂直限度,所述方法包括一旦解码所述中间图片所需要的所述序列中先前的图片在超过从用于中间图片的解码的起始位置起的所述运动矢量的所述最大垂直限度的区域上可用时,并且在整个先前的图片可用之前,开始所述序列中的每个中间图片的解码。在优选实施方式中,还提供了一种用于根据图像数据和运动矢量解码压缩的运动补偿的视频图像序列的方法,所述图像数据包括多个参考图片,所述运动矢量用于根据所述序列中先前的图片获得中间图片,所述运动矢量具有对应于图像数据的行数的最大垂直限度,该方法包括:接收参考图片和运动矢量的集合,以根据所述参考图片获得所述序列中的下一个图片;一旦所述参考图片的垂直限度超过从起始位置起的运动矢量的所述最大垂直限度,就根据所述参考图片解码所述下一个图片;接收用于根据先前的图片获得所述序列中再下一个图片的运动矢量的再下一个集合;对于每个再下一个图片,当各自先前的图片的区域已经被解码到从用于开始所述下一个图片的解码的起始位置起的运动矢量的所述最大垂直限度时,并且在整个先前的图片可用之前,使用其各自的运动矢量的再下一个集合解码所述图像数据。在优选的实施方式中,提供了一种用于解码压缩视频数据的设备,所述视频数据包括参考图片和用于获得中间图片的运动矢量数据,该设备包括:第一解码器,该第一解码器用于接收视频数据的图片并因此接收用于根据所述图片获得随后的图片的运动矢量;第二解码器,该第二解码器用于从第一解码器接收随后的图片并接收用于根据随后的图片获得进一步的图片的运动矢量;以及用于控制所述第二解码器在所述第一解码器已经解码了所述随后的图片的在垂直和水平方向上超过从用于随后的图片的解码的起始位置起的运动矢量的最大距离的区域,并且所述第一解码器已经解码了不到整个的随后的图片时,开始所述进一步的图片的解码的装置。附图说明图1示意性地显示了参考图片和将使用该参考图片和运动矢量的集合来解码的当前图片;图2显示了使用一对运动补偿解码核进行图片解码之间的暂时关系;图3显示了循环连接的三个解码核的集合;图4显示了用于确定解码核应该何时依赖于先前的场或帧的解码来开始解码的机制;以及图5显示了一对解码核的更加详细的块设计。具体实施方式在图1中显示了图像的两个场或帧。为了说明的目的,术语“图片”用于指场或帧。在左手边的第一个图片是参考图片;第二个图片是当前图片,该当前图片需要使用来自第一个图片的运动矢量来解码。通常,所采用的技术将接收整个左手边的图片,或者,如果其是运动估计的解码帧,将需要解码整个左手边的图片。用运动估计根据左手边的图片获得的右手边的图片或当前图片接着将使用来自左手边的图片的运动矢量的集合和数据来解码。在H.264编码技术中,对于在定义级5.1内的流,用于根据先前的图片获得当前图片的运动矢量的最大垂直限度为512个像素。这相当于32排(row)的16×16像素宏块。因而,下一排的宏块将从第513行(line)至第544行。对于1920像素宽1088像素高的高清图片,这实际上意味着对于先前的图片,在第512行之后开始并在第544行结束的一排宏块需要在可以开始解码当前图片中的第一排宏块之前被接收或解码,这是因为从在先前的图片中的第544行上结束的一排宏块开始的运动矢量可以用于获得在当前图片的第一行中的宏块。因而,在解码系统中,当图片X被用作将使用运动矢量的集合获得的图片X+1的参考时,当图片的上半部在时间X已经被解码或接收到如第544行时,在时间X+1处开始解码使用H.264编码的图片的序列中的图片是可能的。显然,图片X+1则必须以小于或等于图片X的解码速率来解码,以避免图片X的还没有被解码的区域需要运动矢量。在运动矢量的最大限度被设定为小于参照图1显示的运动矢量的最大限度的情况下,一旦先前的图片已经从第一排宏块开始被接收或解码直到包围在邻近的图片之间许可的运动矢量的最大限度的一排宏块,当前图片的解码可以开始得更早。因而,可以看出在图1中给出的示例,一旦先前的图片(X)的上半部已经被接收或解码,就可开始解码当前图片(X+1),其中图片X被用作图片X+1的参考。因而,在1920×1088像素图片的示例中,一旦在第544行结束的一排宏块可用,对于图片来说,在下一个图片中的第一排宏块可以使用来自其先前的图片的运动矢量开始被解码。因而,部分并行解码是可能的。对于使用诸如H.264的标准的解码系统,其中运动矢量可以具有参照图1显示的限度,即,512个垂直排列的行,并行操作的两个解码核的使用将使可以解码图片的速率加倍。如果运动矢量的最大垂直或水平限度较小,即图片的垂直限度的25%,那么完整的图片能够使用四个解码核并行地被解码,其中,一旦第一个图片的25%已经被接收或解码,则第二个解码核就开始序列中的第二个图片的解码,在第二个图片的25%已经被解码之后,第三个解码核就开始序列中的第三个图片的解码,以及在第三个图片的25%已经被解码之后,第四个解码核就开始序列中的第四个图片的解码。对于图1的示例,一对解码核可以按以下步骤操作:1、核0解码图片0的第1行至第544行;2、使用来自图片0的运动补偿和数据,核0解码图片0的第544行至第1088行,以及核1解码图片1的顶部至第544行。3、核0接收下一个待被解码的图片(图片2),并使用图片1作为运动补偿矢量的参考来解码该图片的顶部至第544行,以及核1继续使用图片0作为参考来继续解码图片1的第545行至底部。这三个图片的解码之间的临时关系如图2所示,其中时间按箭头的方向增加。在图3中,示出了三个核成环形进行操作。来自核0的时钟信息被提供给核1,来自核1的时钟信息被提供给核2及随后来自核2的时钟信息被返回至核0。可以根据为传送的图片和运动矢量的任意给定的集合提供最大解码速度所需要的核的数量来选择环路中核的数量。在解码每排宏块之后,每个核输出“宏块排计数”。宏块排计数的值仅在该排中的最后一个块已经被解码之后被更新,并存储在存储器中。接着可以更新核的宏块排计数以指示已经被解码的宏块的排数。每个核还具有寄存器以存储宏块排偏移。该宏块排偏移是需要在来自序列中的下一个图片的数据能够开始解码之前被解码或接收的宏块排的数量。每个核从接收自先前的核的宏块排偏移中减去所述宏块排的数量,以确定是否能够开始该图片自身的解码。因而,如果余数大于或等于正在被处理的排数,且“图片号”匹配,则下一个核的解码可以开始。如果图片号不匹配而所述余数大于或等于排数,那么这就是先前的核已经完成接收或解码先前的图片并已经开始解码序列中的另一个图片的指示。在图片已经完成解码时图片号发生变化,并且与下一个图片中的图片号进行比较以作为对解码开始的控制。图4更加具体地显示了在每个核中实施该控制所需要的电路。可以看出,图4包括宏块排计数输入2、宏块排偏移存储器4和内部宏块排计数6。在减法器8中,从接收到的宏块排计数2中减去宏块排偏移核。所得到的值接着与内部宏块排计数6进行比较。如果减法运算的结果大于或等于来自宏块排计数6的正在被处理的数量,那么正结果被提供至或(OR)门10,该OR门10的输出使关联的核继续进行解码。到OR门10的其他输入为不相等比较单元(异或门)12的结果,该不相等比较单元12接收来自先前的核的图片号13和来自当前核的图片号14。该不相等输入的输出为到OR门(非异或)12的另一个门(gate)。这是因为图片号在完成图片的解码之后发生变化。在对该实施方式的改善中,在图片数据的末端(extreme)中的“图片起始码”被识别。这使得用于正被特定核解码的图片的数据能够因为其在比特流中的位置而仅被发送至那个特定核。可替换地,完整的比特流可以被发送至每个核,其中,每个核放弃不形成其需要解码的图片的比特流的部分。以上简要地讨论了可替换的实施方式。其中,根据由所使用的编码系统许可的矢量的最大限度,具有较小的运动矢量的最大限度的图片被使用且因此可使用两个以上的核。在进一步的实施方式中,图3中显示的核可以根据这些核何时开始处理图片而被允许异步地运行。每个核则可以通过根据正在被解码的图片中的运动矢量来确定指向的区域是否已经由另一个核解码,以及当前图片的解码是否能够开始来进行控制。可替换地,宏块可不参照先前的图片,即该宏块为内部宏块,并且在这种情况下,该宏块可被解码而不管任何其他图片的解码状态。使用这种技术将使得解码速度能够依赖检测到的运动矢量的最大限度而动态地改变。因而,对于非常静态的图像,下一个图像的解码可在例如一行或两行宏块之后开始。但是,本发明最大的益处将不会出现,除非在每个进一步的一排或两排宏块之后继续开始解码下一个图像是可能的,并且这将需要进一步的解码核。可仍然对矢量设定最大限度,例如512行。因而,应当理解的是,通过使得运动补偿压缩图像数据能够同时解码图片,即使当完整的先前的图片仍未被解码时,也可改善诸如快进的特征的实施以及解码更高分辨率的视频流的能力。本发明可与任何运动补偿的视频标准一起使用。即使在没有对运动矢量的限度的最大限制的情况下,实际上,许多是没有超过图片的一半(512行)的运动矢量,这些都可使用本发明的实施方式来实施。甚至,即使对于允许矢量远超过512行的标准,本发明仍然可以通过将这些矢量剪切(clip)成512行来使用,以使得快进能够实施。在通过图像数据进行快进时,由矢量的剪切造成的明显不连续性将不太明显,并且未剪切的矢量将提供很好的图像表示。应当理解的是,平滑快进的速度的增加已经针对非交织的图像进行了描述,因为只要相关行的宏块已经被解码,对于非交织的帧来说,运动矢量的最大限度将被全部遍历。对于交织的图像,在下一个图像的解码可以开始之前,对于根据一对交织场获得运动矢量的系统,需要接收整个场和用于当前图片的下一个场的一半,直到在1080行图像中的第544行。在运动矢量在交织系统中逐场(fieldbyfield)获得的情况下,即参考场为序列中的先前的场,系统可以以与非交织的图片相同的速度进行操作。对于具有1088行的交织图片,运动矢量的最大垂直限度可以仅为256个像素,因而正如非交织场;直到完整图片的第512行的宏块需要被处理。这实际上意味着16排宏块需要被解码,其对于交织场意味着272行像素。一旦已经解码这些宏块,就可以在下一个核开始解码来自下一个场的交织行。因而,2个核可具有与增加诸如平滑快进的速度的影响相同的影响,因为这2个核可具有非交织的信号。因而,在先前的图片直到运动矢量的最大垂直限度为可用时,并且在整个先前的图片为可用之前,可开始解码序列中的图片。图5显示了在解码器核内部但没有图4中显示的时钟电路的基本单元的更加详细的框图。显示了核1和核2两个核,且这两个核适于使用在1088行的图片中的512行的最大垂直运动矢量限度来解码逐行扫描的压缩图片。包括参考图片的数据流50和用于中间图片的运动矢量被提供给核1中的输入和核2中的输入。在每个核中,数据检测器52确定数据为未压缩的图片数据还是运动矢量数据,所述未压缩的图片数据可以被直接发送至帧存储器54,所述运动矢量数据需要被发送至运动补偿单元56。在两个核之间的时钟和控制电路用于确保两个核均未将相同的参考帧载入到他们的帧存储器54中,或者意图经由运动补偿解码相同的中间图片。图片的解码顺序如下:第一个参考图片将被载入到核2中的帧存储器54。核1中的数据检测器接着将检测用于以后的图片的运动矢量,并将这些运动矢量发送至运动补偿单元56,该运动补偿单元56还从帧存储器54中接收参考图片数据。核1中的运动补偿单元56根据核2中的帧存储器54产生了运动补偿版本的图片,并将其存储在核1中的帧存储器54中。核2中的数据检测器52接着检测运动矢量的下一个集合并将其发送至该核2中的运动补偿单元56。核2中的运动补偿单元56还从核1中的帧存储器54接收先前解码的图片并产生下一个解码的图片以存储在核2中的帧存储器54中。该过程继续,直至下一个未压缩的图片被接收和存储在核1或核2的帧存储器54中,这依赖于其接收时钟。图4中显示的控制电路与图5的电路结合使用,以控制由核1和核2执行的解码,使得在存储在其他核的帧存储器中的先前图片的区域超过运动矢量的最大垂直限度时,每个各自的运动补偿单元开始下一个图片的解码。这也是对确保该解码在已经达到该最大限度之后尽快开始的控制,并且适当的块选择能够按照最大垂直限度立即被控制到行上,但更一般地是在包括运动矢量的最大垂直限度可扩展至的行的块之后的下一行的块中。由于解码能够在整个先前的帧为可用之前开始,这样的配置使得压缩图片的解码能够部分并行地执行。因而,诸如平滑快进的功能可以被实施而没有跳帧。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1