最后帧运动向量分区方法和装置转让专利

申请号 : CN201611233421.4

文献号 : CN107027032B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 詹姆斯·班科斯基德巴尔加·慕克吉许耀武

申请人 : 谷歌有限责任公司

摘要 :

本发明涉及最后帧运动向量分区。对视频信号进行编码或解码包括确定在视频序列中的当前帧之前的帧的至少一部分的第一分区。使用运动向量将第一分区修改为第二分区,所述运动向量从第一分区预测第一区域的至少一个预测子区域。第二分区用于编码或解码当前帧的当前区域。当前区域可以与第一区域并置。所述技术消除了每次重新分区整个帧的需要,并且可以用于矩形块分区和使用掩模和其它分区技术的分区两者。

权利要求 :

1.一种用于使用计算设备对视频信号进行编码或解码的方法,所述视频信号包括定义视频序列的多个帧,所述帧中的每个帧被划分为至少一个具有像素的区域,所述方法包括:确定在所述视频序列中的当前帧之前的帧的第一区域的第一分区,所述第一分区定义所述第一区域的一个或多个预测子区域;

将所述第一分区修改为用于将所述当前帧的当前区域分区的第二分区,其中每个帧被划分为多个块,所述第一区域是第一块,所述当前区域是当前块,并且修改所述第一分区包括:使用预测所述第一区域的至少一个预测子区域的运动向量将所述第一分区的外边界从与所述第一块对齐的位置调整到定义所述帧中的新区域的更新的位置,所述更新的位置覆盖所述帧的块的部分;和利用至少部分地覆盖所述新区域的预测子区域的所述至少一个运动向量将所述块的所述部分的顶点在所述更新的位置的外边界内移动以产生所述第二分区;以及编码或解码由所述第二分区所分区的所述当前帧的所述当前区域。

2.根据权利要求1所述的方法,其中所述当前帧的所述当前区域和所述当前帧之前的所述帧的所述第一区域是并置块。

3.根据权利要求1或2所述的方法,其中所述第一分区定义所述第一区域的两个预测子区域,且其中:所述第二分区包括两个更新的预测子区域,其中所述两个更新的预测子区域之间的边界是在利用所述运动向量在所述第一区域内移动的所述第一分区的所述两个预测子区域之间的边界。

4.根据权利要求3所述的方法,其中,所述运动向量是所述第一区域的所述两个预测子区域中仅一个的运动向量。

5.根据权利要求3所述的方法,其中,所述运动向量是组合所述第一区域的所述两个预测子区域中的每一个的运动向量的平均运动向量。

6.根据权利要求1或2所述的方法,其中,所述第一块由单个预测子区域定义,并且所述更新的位置内的所述第二分区包括多个预测子区域。

7.根据权利要求1所述的方法,其中,所述更新的位置覆盖至少三个块的部分和所述第一块的一部分;并且其中,所述运动向量是由所述更新的位置包含的最大运动向量。

8.根据权利要求1所述的方法,其中,所述更新的位置覆盖至少三个块的部分和所述第一块的一部分;并且其中,所述运动向量是由所述更新的位置包含的运动向量的平均。

9.根据权利要求1所述的方法,其中所述第一分区包括所述第一区域的四个预测子区域,并且修改所述第一分区包括利用所述运动向量移动在所述四个预测子区域之间的交集,以将所述第一分区修改为所述第二分区。

10.根据权利要求1所述的方法,其中,编码所述当前区域包括:根据所述第二分区,对所述当前帧的所述当前区域的每个预测子区域:生成所述预测子区域的预测器区域;

使用所述预测器区域计算残差区域;和

在编码比特流内编码所述残差区域。

11.根据权利要求1所述的方法,还包括:

在编码比特流内从编码器到解码器用信号通知用于修改所述第一分区的所述运动向量。

12.一种用于对视频信号进行编码或解码的装置,所述视频信号包括定义视频序列的多个帧,每个帧被划分为至少一个区域,并且每个区域具有像素,所述装置被配置为:确定在所述视频序列中的当前帧之前的帧的第一区域的第一分区,所述第一分区定义所述第一区域的一个或多个预测子区域;

使用运动向量移动识别所述第一区域的边界的位置以识别新的区域,所述运动向量预测至少所述第一区域的预测子区域;

利用至少部分地覆盖所述新区域的预测子区域的所述至少一个运动向量来修改在所述位置处的更新的区域的边界内包含的所述第一分区以提供第二分区;和使用所述第二分区来编码或解码所述当前帧的当前区域。

13.根据权利要求12所述的装置,其中所述第一分区使用掩模定义所述第一区域的两个预测子区域,所述两个预测子区域在所述掩模内的边界的相对侧上,且其中:修改所述第一分区包括:利用所述运动向量移动所述掩模内的所述边界,以生成更新的边界,使得所述第二分区包括在所述更新的边界的相对侧上的两个更新的预测子区域。

14.根据权利要求12或13所述的装置,其中,至少部分地覆盖所述新区域的所述预测子区域的所述至少一个运动向量是预测所述第一区域的至少一个预测子区域的运动向量。

15.根据权利要求12或13所述的装置,其中,至少部分地覆盖所述新区域的所述预测子区域的所述至少一个运动向量是至少部分地覆盖所述新区域的至少两个预测子区域的相应运动向量的组合。

16.根据权利要求12所述的装置,其中,所述装置进一步被配置为通过以下解码所述当前区域,对所述当前区域的每个预测子区域:解码与所述当前区域的所述预测子区域相关联的残差子区域;

生成所述预测子区域的预测器区域;和

组合所述残差子区域与所述预测器区域。

17.根据权利要求12所述的装置,其中所述运动向量是所述第一区域的至少两个预测子区域的相应运动向量的组合。

18.一种包括处理器和非暂时性存储器的装置,所述非暂时性存储器存储指令,所述指令使得所述处理器实现根据权利要求12至17中的任一项所述的装置。

19.一种用于对视频信号进行编码的装置,所述视频信号包括定义视频序列的多个帧,每个帧被分区为块,并且每个块具有像素,所述装置被配置为:确定在所述视频序列中的当前帧之前的帧内的第一块的第一分区;

利用预测所述第一块的预测子块的运动向量在所述帧内移动识别所述第一块的边界的位置以识别新的块;

利用所述帧的至少部分地覆盖所述新的块的预测子块的至少一个运动向量来修改在所述位置处的所述新的块的所述边界内包含的所述第一分区以提供第二分区;并且使用所述第二分区来对所述当前帧的当前块进行编码,所述当前块与所述第一块并置。

20.一种包括处理器和非暂时性存储器的装置,所述非暂时性存储器存储指令,所述指令使得所述处理器实现根据权利要求19所述的装置。

说明书 :

最后帧运动向量分区方法和装置

技术领域

[0001] 本申请涉及最后帧运动向量分区。

背景技术

[0002] 数字视频流通常使用帧序列或静止图像来表示视频。每个帧可以包括多个块,其又可以包含描述像素的颜色、亮度或其它属性的值的信息。视频流中的数据量很大,并且视频的传输和存储可以使用大量的计算或通信资源。由于视频数据中涉及大量数据,因此传输和存储需要高性能压缩。在基于块的编解码器中,这涉及预测技术,其包括使用运动向量的预测。

发明内容

[0003] 本公开总体上涉及使用最后帧运动向量分区来对视频数据(例如视频流数据)进行编码和解码,所述最后帧运动向量分区允许对当前帧的分区是基于由一个或一个以上运动向量调整的前一个帧的分区。概括地说,利用由新的块的运动向量覆盖的运动向量之一将先前帧分区移位,将块分割成用于预测的分离区域。
[0004] 本文中用于编码或解码视频信号的方法的一个方面包含确定在视频序列中的当前帧之前的帧的至少一部分的第一分区。视频信号包括定义视频序列的帧,该帧被分区成至少一个具有像素的区域。该方法还包括使用预测来自第一分区的第一区域的至少一个预测子区域的运动向量将第一分区修改为第二分区,并且使用第二分区来编码或解码当前帧的当前区域。
[0005] 本文中所描述的装置的一个方面包括处理器和存储指令的非暂时性存储器,所述指令使得处理器执行包含以下操作的方法:确定在所述视频序列中的当前帧之前的帧的至少一部分的第一分区;使用运动向量将所述第一分区修改为第二分区,所述运动向量预测来自所述第一分区的第一区域的至少一个预测子区域;并且,使用所述第二分区来编码或解码所述当前帧的当前区域。
[0006] 本文的装置的另一方面是一种用于对视频信号进行编码的装置,所述视频信号包括定义视频序列的帧,每个帧被分区为块,每个块具有像素。该装置包括处理器和存储指令的非暂时性存储器,所述指令使处理器执行一种方法,包括:确定在所述视频序列中的当前帧之前的帧的第一块的第一分区;通过下述方式来将所述第一分区修改为第二分区:利用预测所述第一块的预测子块的运动向量移动识别所述第一块的边界的位置以识别新的块,并且通过使用预测由所述第一分区定义的第一块的至少一个预测子块的运动向量,由所述帧的至少部分地覆盖所述新的块的预测子块的运动向量来修改在所述位置的所述新的块的所述边界内包含的所述第一分区;并且,使用所述第二分区来对所述当前帧的当前块进行编码,所述当前块与所述第一块并置 (collocate)。
[0007] 在以下的详细描述、所附权利要求和附图中更详细地描述本公开的这些和其它方面。

附图说明

[0008] 这里的描述参考了下面描述的附图,其中在几个视图中相同的附图标号指代相同的部件。
[0009] 图1是视频编码和解码系统的示意图。
[0010] 图2是可以实现发送站或接收站的计算设备的示例的框图。
[0011] 图3是待编码和随后解码的视频流的图。
[0012] 图4是根据本文的教导的一个方面的视频压缩系统的框图。
[0013] 图5是根据本文的教导的另一方面的视频解压缩系统的框图。
[0014] 图6是使用最后帧运动向量分区对区域进行编码或解码的过程的流程图。
[0015] 图7A-7C是用于解释图6的过程的一个示例的图。
[0016] 图8A和8B是用于解释图6的过程的另一示例的图。

具体实施方式

[0017] 视频流可以通过各种技术被压缩以减少传输或存储视频流所需的带宽。视频流可以被编码成比特流,其可以涉及压缩,然后视频流可以被发送到解码器,解码器可以解码或解压缩视频流,以将其准备用于观看或进一步处理。对视频流进行编码可以涉及在视频质量和比特流大小之间进行权衡的参数,其中增加解码的视频流的感知质量可以增加传输或存储比特流所需的比特数。
[0018] 一种实现优良压缩性能的技术通过空间和/或运动补偿预测利用视频信号的空间和时间相关性。例如,帧间预测使用运动向量来识别类似于待编码的当前块的先前编码和解码的块。通过对运动向量以及两个块之间的差进行编码,解码器可以重新创建当前块。
[0019] 通常希望对尽可能大的块进行编码以最小化包括在用于对块进行解码的比特流的报头内的数据量。然而,大块会导致比期望的更大量的失真,特别是在块内存在大量运动的情况下。由于这个原因,并且为了更好地匹配块内的对象,更大的块可以被分区成几个更小的块。例如,可以将16×16像素的块或更大的块划分成低至4×4像素的大小的块以用于预测。使用其它技术(例如掩模、楔形物等)对帧进行分区呈现相同的质量。因此,本文中使用块进行分区的描述仅是帧分区的输出的一个示例。
[0020] 当前,从头开始将每个帧分区——即,不考虑先前帧的分区。相反,本文的教导描述了一种选项,其中最后帧的分区在帧中由运动向量移位以生成新的分区,而不是每次重新分区整个帧。一般来说,通过移位先前帧分区(例如,利用新区域或块的运动向量所覆盖的运动向量之一)将块(或由帧分区的先前区域)分割为单独区域。每个新区域可以具有其自己的运动向量,并且这允许帧的非正方形区域的单独模式和运动向量。通过使用运动向量来改变先前帧的分区以使其对于新帧有效,可以减少预测成本(包括计算时间)。在对其中可以使用本文的教导的环境的初始讨论之后描述进一步的细节。
[0021] 图1是视频编码和解码系统100的示意图。发送站102可以是例如具有诸如图2所描述的硬件的内部配置的计算机。然而,发送站102 的其它合适的实施方式是可能的。例如,发送站102的处理可以分布在多个设备中。
[0022] 网络104可以连接发送站102和接收站106,用于视频流的编码和解码。具体地,可以在发送站102中对视频流进行编码,并且可以在接收站106中对编码的视频流进行解码。网络104可以是例如互联网。网络104还可以是局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、蜂窝电话网络或将视频流从发送站102传送到在此示例中的接收站106的任何其它装置。
[0023] 在一个示例中,接收站106可以是具有诸如图2中所描述者的硬件的内部配置的计算机。然而,接收站106的其它合适的实施方式是可能的。例如,接收站106的处理可以分布在多个设备中。
[0024] 视频编码和解码系统100的其它实施方式是可能的。例如,实施方式可以省略网络104。在另一实施方式中,视频流可以被编码,然后被存储以便稍后传输到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106接收(例如,经由网络104、计算机总线和/或某个通信路径)编码的视频流,并存储视频流以供稍后解码。在示例实施方式中,实时传输协议(RTP)用于通过网络104传输编码的视频。在另一实施方式中,可以使用除RTP之外的传输协议,例如基于超文本传输协议(HTTP)的视频流协议。
[0025] 例如,当在视频会议系统中使用时,发送站102和/或接收站106 可以包括如下所述的编码和解码视频流的能力两者。例如,接收站106 可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码视频比特流以进行解码和查看,并且进一步编码和发送其自己的视频比特流到视频会议服务器用于由其他参与者解码和查看。
[0026] 图2是可以实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实现图1的发送站102和接收站106中的一个或两个。计算设备200可以是包括多个计算设备的计算系统的形式,或者可以是单个计算设备的形式,例如移动电话、平板计算机、膝上型计算机、笔记本计算机和台式计算机等。
[0027] 计算设备200中的CPU 202可以是中央处理单元。替选地,CPU 202可以是现在存在或将来开发的能够操纵或处理信息的任何其它类型的设备或多个设备。尽管所公开的实施方式可以用所示的单个处理器(例如CPU 202)来实现,但是可以使用多个处理器来实现在速度和效率方面的优点。
[0028] 在实施方式中,计算设备200中的存储器204可以是只读存储器 (ROM)设备或随机存取存储器(RAM)设备。任何其它合适类型的存储设备可以用作存储器204。存储器204可以包括由CPU 202使用总线212访问的代码和数据206。存储器204还可以包括操作系统208 和应用程序210,应用程序210包括允许CPU 202执行这里描述的方法的至少一个程序。例如,应用程序210可以包括应用1至N,其还包括执行这里描述的方法的视频编码应用。计算设备200还可以包括辅助存储214,辅助存储214例如可以是与移动计算设备一起使用的存储器卡。因为视频通信会话可以包含大量的信息,所以它们可以全部或部分地存储在辅助存储
214中,并且根据处理需要被加载到存储器 204中。
[0029] 计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与可操作以感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合到 CPU 202。补充或替代显示器218,可以提供允许用户编程或以其它方式使用计算设备200的其它输出设备。当输出设备是或包括显示器时,显示器可以以各种方式实现,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器(例如,有机LED (OLED)显示器)。
[0030] 计算设备200还可以包括图像感测设备220(例如,相机)或者现在存在或者将来开发的可以感测诸如操作计算设备200的用户的图像的图像的图像感测设备220,或者可以与之进行通信。图像感测设备 220可以被定位成使得其指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置使得视场包括与显示器218 直接相邻并且从其可见显示器218的区域。
[0031] 计算设备200还可以包括声音感测设备222(例如麦克风)或者现在存在的或今后开发的可以感测计算设备200附近的声音的任何其它声音感测设备,或者与之通信。声音感测设备222可以被定位成使得它指向操作计算设备200的用户,并且可以被配置为在用户操作计算设备200时接收由用户发出的声音,例如语音或其它话语。
[0032] 尽管图2将计算设备200的CPU 202和存储器204描述为集成到单个单元中,但是可以利用其它配置。CPU 202的操作可以分布在可以直接耦合或跨越局域或其它网络耦合的多个机器(每个具有一个或多个处理器的机器)上。存储器204可以分布在多个机器上,例如基于网络的存储器或在执行计算设备200的操作的多个机器中的存储器。尽管这里被描绘为单条总线,但是计算设备200的总线212可以由多条总线构成。此外,辅助存储214可以直接耦合到计算设备200的其它组件,或者可以经由网络访问,并且可以包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。计算设备200因此可以以各种各样的配置来实现。
[0033] 图3是待编码并随后解码的视频流300的示例的图。视频流300 包括视频序列302。在下一级,视频序列302包括多个相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302可以包括任何数量的相邻帧304。然后可以将相邻的帧304进一步细分为单独的帧,例如帧 306。在下一级,帧306可以被划分为一系列平面或段308。例如,段 308可以是允许并行处理的帧的子集。段308还可以是可以将视频数据分离成单独颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对段308进行采样。
[0034] 无论帧306是否被划分为段308,帧306可以进一步细分为块310,块310可以包含对应于例如帧306中的16×16个像素的数据。块310 还可以被布置为包括来自像素数据的一个或多个平面的数据。块310 还可以具有任何其它合适的大小,例如4×4像素、8×8像素、16×8 像素、8×16像素、16×16像素或更大。可以根据本文的教导来分区由框架306的分区生成的块310或其它区域,如下面更详细地讨论的。也就是说,待编码的区域可以是分区为更小的子块或区域的较大的区域。更具体地,待编码的当前区域可以被分割成使用例如不同的预测模式编码的更小的像素组。这些像素组在本文中可被称为预测子块、预测子区域或预测单元。在一些情况下,由于仅使用一个预测模式来对该区域进行编码,因此只有一个预测子区域包含待编码的整个区域。除非另有说明,否则在下面的图4和5中的块的编码和解码的描述同样适用于较大区域的预测子块、预测子区域或预测单元。
[0035] 图4是根据实施方式的编码器400的框图。如上所述,可以在发送站102中诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序来实现编码器400。计算机软件程序可以包括机器指令,其当由诸如CPU 202的处理器执行时,使发送站102以图4所述的方式对视频数据进行编码。编码器400还可以被实现为包括在例如发送站102 中的专用硬件。编码器400具有以下阶段以在前向路径(由实线连接线示出)中执行各种功能,以使用视频流300作为输入来生成编码或压缩比特流420:帧内/帧间预测阶段402、变换阶段404、量化阶段406 和熵编码阶段408。编码器400还可以包括重构路径(由虚连接线所示) 以重构用于未来块的编码的帧。在图4中,编码器400具有以下阶段来执行重构路径中的各种功能:反量化阶段410、反变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其它结构变型可以用于对视频流300进行编码。
[0036] 当视频流300被呈现用于编码时,每个帧306可以以像素(例如,区域)为单位被处理,例如块。在帧内/帧间预测阶段402,可使用帧内(intra-fram)预测(也称为帧内(intra)预测)或帧间(inter-frame) 预测(本文中也称为帧间(inter)预测)来对块进行编码。在任何情况下,可以形成预测(或预测器)块。在帧内预测的情况下,可从当前帧中的先前已经编码和重构的样本形成预测块。在帧间预测的情况下,可从一个或多个先前建构的参考帧中的样本形成预测块。
[0037] 接下来,仍参考图4,可以在帧内/帧间预测阶段402从当前块减去预测块,以生成残差块(也称为残差)。变换阶段404使用基于块的变换在将残差变换为例如频域中的变换系数。这种基于块的变换包括例如离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其它基于块的变换是可能的。此外,不同变换的组合可以应用于单个残差。在变换的应用的一个示例中,DCT将残差块变换到频域中,其中变换系数值基于空间频率。最低频率(DC)系数在矩阵左上角且最高频率系数在矩阵右下角。值得注意的是,预测块的大小可以不同于变换块的大小,以及因此得到的残差块的大小可以不同于变换块的大小。例如,残差块或区域可以被分割成应用单独变换的较小块区域。
[0038] 量化阶段406使用量化器值或量化等级将变换系数转换为离散量子值,其称为量化变换系数。例如,变换系数可以除以量化器值并被截断。量化变换系数随后由熵编码阶段408进行熵编码。可使用任何数量的技术(包括令牌和二进制树)来执行熵译码。然后将熵编码的系数连同用于对块进行解码的其它信息(其可以包括例如所使用的预测类型、变换类型、运动向量和量化器值)一起输出到压缩比特流420。压缩比特流420可以也称为编码的视频流或编码的视频比特流,且这些术语将在本文中互换使用。
[0039] 在图4中的重构路径(由虚连接线示出)可以用于确保编码器400 和解码器500(下面描述)使用相同的参考帧来解码压缩比特流420。重构路径执行与在下面更详细地讨论的解码过程期间发生功能类似的功能,包括在反量化阶段410对量化的变换系数进行反量化并且在反变换阶段412对反量化的变换系数进行反变换,以生成导数残差块(也称为导数残差)。在重构阶段414,可以将在帧内/帧间预测阶段402 处预测的预测块添加到导数残差以创建重构块。环路滤波阶段416可以应用于重构块以减少诸如块伪影的失真。
[0040] 编码器400的其它变型可以用于对压缩的比特流420进行编码。例如,基于非变换的编码器400可以针对某些块或帧直接量化残差信号,而不需要变换阶段404。在另一实施方式中,编码器400可以将量化阶段406和反量化阶段410组合成单个阶段。编码器400可以根据该技术对任何大小或形状的像素组进行编码。因此,待编码的像素组可以更一般地称为区域。
[0041] 图5是根据另一实施方式的解码器500的框图。解码器500可以例如通过提供存储在存储器204中的计算机软件程序在接收站106中实现。计算机软件程序可以包括机器指令,当由诸如CPU 202的处理器执行时,使得接收站106以图5中描述的方式解码视频数据。解码器500还可以在包括在例如发送站102或接收站106中的硬件中实现。
[0042] 类似于上文所论述的编码器400的重构路径,解码器500在一个示例中包括以下阶段以执行各种功能以从压缩比特流420生成输出视频流516:熵解码阶段502、反量化阶段504、反变换阶段506、帧内/ 帧间预测阶段508、重构阶段510、环路滤波阶段512和解块滤波阶段 514。解码器500的其它结构变体可用于对压缩比特流420解码。
[0043] 当呈现压缩比特流420用于解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码,以生成量化变换系数集。反量化阶段 504对量化的变换系数进行反量化(例如,通过将量化的变换系数乘以量化器值),并且反变换阶段506使用所选择的变换类型对反量化的变换系数进行反变换,以生成导数残差,其可以与在编码器400中通过反变换阶段412而生成者相同。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测阶段508来创建与在编码器 400中例如在帧内/帧间预测阶段402处创建的预测块相同的预测块。在重构阶段510处,可将预测块添加到导数残差以创建重构块。环路滤波阶段512可以应用于重构块以减少块伪影。可以对重构块应用其它滤波。在此示例中,将解块滤波阶段514应用于重构块以减少块失真,且将结果输出为输出视频流516。输出视频流516还可被称为解码的视频流,且术语将在本文中互换使用。
[0044] 解码器500的其它变型可用于解码压缩的比特流420。例如,解码器500可以在没有解块滤波阶段514的情况下生成输出视频流516。虽然为了简化说明而参考框进行描述,根据本技术,解码器500可解码任何大小或形状的像素组(例如,区域)。
[0045] 如上简述,可以通过最后帧运动向量分区(即,通过使用运动向量调整最后帧的分区)来分区帧或帧的区域以用于编码或解码。一般来说,利用由新区域的运动向量覆盖的运动向量之一将先前帧分区移位来将区域分裂为单独区域。
[0046] 图6是根据本公开的一个实施方式的用于通过最后帧运动向量分区对区域进行编码或解码的过程600的流程图。方法或过程600可以在诸如计算设备200的系统中实现以辅助视频流的编码或解码。过程 600可以被实现为例如由诸如发送站102或接收站106的计算设备执行的软件程序。软件程序可以包括存储在诸如存储器204的存储器中的机器可读指令,其当由诸如CPU 202的处理器执行时,使得计算设备执行过程600。过程600也可以使用硬件整体或部分地实现。如上所述,一些计算设备可以具有多个存储器和多个处理器,并且在这种情况下过程600的步骤或操作可以使用不同的处理器和存储器来分布。本文中单数形式的术语“处理器”和“存储器”的使用包括仅具有一个处理器或一个存储器的计算设备以及具有多个处理器或存储器的设备,每个处理器或存储器可用于执行一些但不必全部的所记载的步骤。
[0047] 为了简化说明,将过程600描绘和描述为一系列步骤或操作。然而,根据本公开的步骤和操作可以以各种次序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其它步骤或操作一起发生。此外,根据本公开主题,并非需要所有示出的步骤或操作用于实现根据所公开的主题的方法。可以对输入信号的每个帧的每个块重复过程600。在一些实施方式中,根据过程600仅处理一个或多个帧的一些块。举例来说,当执行过程600时可省略使用帧内预测模式编码的块。
[0048] 当过程600是编码过程时,输入信号可以是例如视频流300。输入信号可以由以任何数量的方式执行过程600的计算机接收。例如,输入信号可以由图像感测设备220捕获,或者通过连接到总线212的输入从另一设备接收。在另一实施方式中,可以从辅助存储214检索输入信号。输入信号的其它接收方式和其它源也是可能的。例如,当过程600是解码过程时,输入信号可以是诸如压缩比特流420的编码比特流。
[0049] 使用输入信号,在602处确定区域的第一分区。这可以包括确定在视频序列中的当前帧之前的帧的至少一部分的第一分区。
[0050] 当过程600是编码过程时,确定第一分区可以包含使用速率失真计算。例如,当帧是视频序列中的第一帧时,可以通过将帧划分为块并且从多个可用预测模式中确定用于块的最佳预测模式来执行第一分区,所述多个可用预测模式由例如根据图4的编码处理的最低速率失真值确定。在一个示例中,块为16×16像素块,且可用预测模式可包括用于块且用于块的具有8×16像素、16×8像素、8×8像素、8×4 像素、4×8像素和4×4像素的大小的子块的若干帧内预测和帧间预测模式。在另一示例中,帧不是视频序列中的第一帧。在此情况下,可基于先前帧(例如,在帧之前的视频序列中的最后一帧)的分区来如本文中所描述来确定第一分区。
[0051] 当过程600是解码过程时,确定第一分区可以包括从诸如关于图 5描述的编码视频比特流解码帧。在一个实施方式中,根据由编码器确定的分区来对解码的帧进行解码。
[0052] 无论过程600是编码过程还是解码过程,第一分区定义帧的第一区域的至少一个预测子区域。在604使用运动向量修改第一分区。在一个实施方式中,修改第一分区包括使用预测来自第一分区的第一区域的至少一个预测子区域的运动向量将第一分区修改为第二分区。在一些情况下,这是通过由运动向量将帧内的第一区域的位置移动,然后由至少部分地覆盖所述新区域的预测子区域的至少一个运动向量将包含在新区域位置的边界内的第一分区修改而实现。在其它情况下,这是通过由运动向量修改包含在第一区域的边界内的第一分区来实现。
[0053] 图7A-7C是用于解释图6的过程600的一个示例的图。更具体地,图7A-7C解释了在过程600的604处修改第一分区。该示例示出了导致形成为块的区域的分区,因此使用术语块。然而,参考图图7A-7C 对过程600的描述将适用于可以具有或可以不具有矩形形状的区域。
[0054] 图7A示出视频序列中的当前帧之前的帧的第一分区700的一部分。在基于块的分区的该示例中,第一块702被分区为仅一个预测子块。也就是说,使用由图7A中的第一块702的边界内的箭头表示的单个运动向量来预测第一块702。在图7A中示出了第一分区700的几个其它预测子块。具体地,通过示例标记三个其它块的预测子块。
[0055] 将第一块702上方的块分区为四个相等大小的预测子块,其中两个被标记为预测子块706和预测子块708。使用由在图7A中的预测子块706的边界内的箭头示出的运动向量预测预测子块706,而使用图 7A中的预测子块708的边界内的箭头所示的运动向量来预测预测子块 708。预测子块706、708的运动向量不同,或者它们表示的块的部分将被示为单个子块。使用不同的预测模式和/或不同的运动向量对第一块702上方的块的剩余两个子块进行编码。
[0056] 上述块右侧的块也被分区为四个相等大小的预测子块,其中之一被标记为预测子块710。使用通过图7A中的预测子块710的边界内的点所示的帧内预测来预测预测子块710。在该示例中,该块的剩余预测子块没有被标记,因为这里不使用它们,但是每个可以使用不同的预测模式和/或不同的运动向量来编码。
[0057] 将第一块702右侧的块分区为两个相等大小的预测子块,其中之一被标记为预测子块712。使用通过图7中的预测子块712的边界内的点所示的帧内预测来预测预测子块712。在该示例中,该块的剩余预测子块没有被标记,因为这里不使用该块,但它使用不同的预测模式对其进行编码。
[0058] 第一块702可以是16×16像素块、32×32像素块或某个其它大小的块。当第一块702是例如16×16像素块时,预测子块706、708、710 每个包括8×8个像素,并且预测子块
712是8×16个像素。
[0059] 如上所述,可以使用运动向量将第一分区修改为第二分区,该运动向量预测来自第一分区的第一区域的至少一个预测子区域。在图 7A-7C的示例中,这是通过由运动向量将帧内的第一区域(这里是块) 的位置移动,然后通过由至少部分地覆盖新位置的预测子区域的至少一个运动向量将包含在新位置的边界内的第一分区进行修改来实现。如图7A所示,第一块702被移动到由新的块704指示的位置。包括在新的块704的边界内的第一分区包括第一块702、预测子块706、708、 710和预测子块712的部分。至少部分地覆盖新的块704的预测子块的运动向量包括用于第一块702和预测子块706、708的运动向量。图7B 示出了第一分区的修改,由此由另一运动向量调整由新的块704的边界内的相邻预测块或子块之间的顶点720、722定义的边界。所使用的运动向量可以仅是可用运动向量中的一个,诸如最大或最小运动向量,或者其可以是可用运动向量的组合,例如平均或加权平均。加权平均可基于使用每一运动向量预测的新的块704的部分(例如,作为整体的区域中的像素的数量)。图7C示出了结果产生的用于新的块704的第二分区730,其包括五个预测子块732-740。
[0060] 更一般地说,图7A-7C示出了过程,由此修改第一分区包括使用运动向量将第一区域的外边界调整到帧内的更新的位置,其中更新的位置覆盖帧的区域的部分(例如,预测子区域的部分)。然后,由相同的运动向量(或不同的运动向量)在更新的位置内移动区域的部分的角或顶点(以及具有它们的边界),以将第一分区修改为第二分区。
[0061] 图8A和8B是用于解释图6的过程600的另一示例的图。在这种情况下,通过由运动向量修改包含在第一区域的边界内的第一分区来实现使用运动向量修改第一分区。因为图8A和8B示出了分区成块,所以这些区域被称为块。如图8A所示,块800被分区为四个预测子块,其中一个使用运动向量802预测,并且其它三个被帧内预测。在这种情况下,针对块810示出修改的第二分区,其中,如图7B中那样,利用运动向量802移动预测子块之间的交叉点(角或顶点),以将第一分区修改为第二分区。
[0062] 可基于例如预测模式或运动向量值而试探性地确定,或实验地通过测试不同技术且选择最适合正被编码的块(和帧)的一个,来确定用于修改分区的运动向量之间的选择。用于修改根据图6处理的帧的每个块的分区的技术可以由比特流内的标志或其它标识符来识别,使得解码器生成后续帧的相同分区。到对于帧使用相同的技术的程度,这可以在帧报头中发送。替选地或附加地,可在区域(例如,块)或段报头中发送用于修改基于区域或段的分区的运动向量以供解码器使用。在一些实施方式中,仅需要从编码器发送模式标识符以指示使用最后帧运动向量分区来执行区域、段或帧的分区,以使解码器能够生成新分区。在这些实施方式的变型中,仅在编码器处执行过程600,并且解码器可以例如根据图5解码位于比特流内的分区的区域。
[0063] 一旦确定了修改的第二分区,则在606处将其用于对当前帧的当前区域进行编码或解码。当前区域可以与第一区域并置。例如,当前区域和第一区域可以是并置块。并置区域在不同帧内具有相同的像素坐标。替选地,当前区域可被运动向量(例如在示例中的第一块702 的运动向量)在当前帧内从第一区域位置移位。对当前区域进行编码包括通过生成当前区域的预测子区域的残差,并将残差编码到具有解码当前区域所需的信息的编码比特流中,来对第二分区的预测子区域进行编码。例如,编码过程可以包括使用如关于图4所描述的变换阶段404、量化阶段406和熵编码阶段408来处理残差。每个预测子区域的残差可以使用不同的预测模式来生成,通过对每个的最佳模式的可用预测模式的穷尽测试来确定,或者可以基于第一区域的先前预测模式从更小的预测模式列表中来确定。
[0064] 当过程600是解码过程时,修改的分区可以用于确定用于对残差进行解码的当前区域的每个预测子区域的残差的大小,然后为每个预测子区域生成类似大小的预测区域以添加到残差以重构当前区域。例如,解码过程可以包括使用熵解码阶段502、反量化阶段504和反变换阶段506处理残差,如相对于图5所描述的。然后,可以在重构阶段 510重构当前区域,如也参照图5所描述的。
[0065] 尽管已关于具有使用基于块的分区技术形成的矩形预测子块的某些示例描述了过程600,但过程600可用于从帧的各种分区技术产生的区域。过程600例如通过使用被运动向量移位了的最后一帧的掩模,对掩模工作良好。使用具有在单独预测的两个大体连续的像素区域之间的边界的掩模,第一分区将定义第一区域的两个预测子区域,并且第二分区将包括两个更新的预测子区域,其中更新的预测子区域是利用运动向量在第一区域内移动的原始预测子区域之间的边界。也就是说,例如,第一分区可使用掩模来定义第一区域的两个预测子区域,其中两个预测子区域中的每一个在掩模内的边界的相对侧上。因此,修改第一分区包括:利用运动向量移动掩模内的边界,以生成用于预测的更新的边界,使得当更新的掩模用于预测时,第二分区包括在更新的边界的相对侧上的两个更新的预测子区域。使用例如楔形、颜色、残差和三个运动向量模式掩模的分区技术得到的区域都可以从根据过程600的最后帧运动向量分区中获益。
[0066] 通过使用运动向量来改变先前帧的分区以使其对于新帧有效,可以最小化当编码新帧时与分区有关的计算。本文的教导提供了在具有允许帧的新定义区域具有其自己的运动向量和/或编码模式并且允许用于像素的非正方形块的单独模式和运动向量的灵活性的情况下避免重新分区整个帧的选项。这有助于提供对压缩的良好预测。
[0067] 上文所描述的编码和解码的方面图示编码和解码技术的一些示例。然而,应当理解,作为权利要求中使用的那些术语的编码和解码可以意味着数据的压缩、解压缩、变换或任何其它处理或变化。
[0068] 词语“示例”在本文中用于表示用作示例、实例或说明。在本文中被描述为“示例”的任何方面或设计不一定被解释为相对于其它方面或设计是优选的或有利的。相反,使用词语“示例”旨在以具体的方式呈现概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有规定或从上下文中清楚,否则“X包括A或B”意在表示任何自然的包括性排列。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述情况下满足“X包括A或B”。此外,除非另有说明或从上下文中清楚地指示单数形式,否则本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”。此外,贯穿全文使用术语“实施方式”或“一个实施方式”并不旨在表示相同的实施例或实施方式,除非这样描述。
[0069] 发送站102和/或接收站106(以及其上存储的和/或由其执行的由编码器400和解码器500包括的算法、方法、指令等)的实施方式可以以在硬件、软件或其任何组合实现。硬件可以包括例如计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。此外,发送站102和接收站106的部分不一定必须以相同的方式实现。
[0070] 此外,在一个方面,例如,发送站102或接收站106可以使用具有计算机程序的通用计算机或通用处理器来实现,所述计算机程序在被执行时执行任何本文描述的相应的方法、算法和/或指令。附加地或替选地,例如,可以使用可以包含用于执行本文所述的任何方法、算法或指令的其它硬件的专用计算机/处理器。
[0071] 发送站102和接收站106可以例如在视频会议系统中的计算机上实现。替选地,发送站102可以在服务器上实现,并且接收站106可以在与服务器分离的设备上实现,诸如手持通信设备。在这种情况下,发送站102可以使用编码器400将内容编码为编码视频信号,并将编码视频信号发送到通信设备。继而,通信设备然后可以使用解码器500 对编码的视频信号进行解码。替选地,通信设备可以解码在通信设备上本地存储的内容,例如,未由发送站102发送的内容。其它合适的发送并且接收实现方案是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信设备,和/或,包括编码器400的设备还可以包括解码器500。
[0072] 此外,本发明的实施方式的全部或一部分可以采用可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是能够例如有形地包含、存储、传送或传输程序以由任何处理器使用或与任何处理器结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。也可使用其它合适的介质。
[0073] 已经描述了上述实施例、实施方式和方面以便于容易理解本发明,并且不限制本发明。相反,本发明旨在覆盖包括在所附权利要求的范围内的各种修改和等同布置,其范围符合最宽泛的解释,以包括法律允许的所有这样的修改和等同结构。