一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有隐式模型的帧间-帧内预测的制作方法

2023-02-06 22:45:45 来源:中国专利 TAG:

具有隐式模型的帧间-帧内预测


背景技术:

1.数字图像和视频可以例如在互联网上用于经由视频会议的远程商务会议、高清视频娱乐、视频广告或用户生成的内容的共享。由于传送和处理图像和视频数据涉及大量数据,高性能压缩对于传输和存储可能是有利的。因此,提供在具有有限带宽的通信信道上发送的高分辨率图像和视频将是有利的,诸如使用具有隐式模型的帧间-帧内预测来进行图像和视频代码化。


技术实现要素:

2.本技术涉及用于传输或存储的图像数据、视频流数据或两者的编码和解码。本文公开了用于使用具有隐式模型的帧间-帧内预测进行编码和解码的系统、方法和装置的各方面。
3.一个方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的方法。使用具有隐式模型的帧间-帧内预测来进行视频代码化可以包括从视频帧序列生成与当前帧相对应的重构帧。生成所述重构帧可以包括根据帧间-帧内预测模型生成所述重构帧。根据所述帧间-帧内预测模型生成所述重构帧可以包括:从编码比特流中解码用于所述当前帧的当前块的帧间预测运动矢量集合,根据限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,以及使用参考帧集合和所述帧间预测运动矢量集合来生成用于所述当前块的帧间预测块集合,其中,生成所述帧间预测块集合包括:对于来自所述帧间预测块集合的相应帧间预测块,根据所述限定的空间定向,生成相对于所述相应帧间预测块定向的对应参考块-上下文像素集合。根据所述帧间-帧内预测模型生成所述重构帧可以包括标识与所述空间块-上下文像素和所述参考块-上下文像素之间的最小化误差相对应的帧间-帧内预测参数集合,其中,所述帧间-帧内预测参数集合包括混合参数集合,其中,所述混合参数集合包括第一混合参数。根据所述帧间-帧内预测模型生成所述重构帧可以包括通过对于所述当前块的当前像素执行以下操作,生成用于所述当前块的预测块:通过以下方式获得帧间预测像素集合:对于来自所述帧间预测块集合的相应帧间预测块,从所述帧间预测块标识对应于所述当前像素的帧间预测像素,使得所述帧间预测像素集合包括第一帧间预测像素,所述第一帧间预测像素来自所述帧间预测块集合中的第一帧间预测块;使用所述帧间预测像素集合和所述帧间-帧内预测参数集合的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。根据所述帧间-帧内预测模型生成所述重构帧可以包括从所述编码比特流解码用于所述当前块的残差块,其中,解码所述残差块包括解码对应于所述当前像素的残差像素,通过针对所述当前像素将用于所述当前像素的所述预测因子与所述残差像素的总和标识为所述当前像素来生成用于所述当前块的重构块,以及将所述重构块包括在所述重构帧中。所述方法可以包括输出所述重构帧。
4.另一方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的方法。使用具有隐式模型的帧间-帧内预测来进行视频代码化可以包括从帧序列生成与当前
帧相对应的重构帧。生成所述重构帧可以包括:从编码比特流中解码用于所述当前帧的当前块的帧间预测运动矢量,根据限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,使用参考帧和所述帧间预测运动矢量来生成用于所述当前块的帧间预测块,其中,生成所述帧间预测块包括:根据所述限定的空间定向,生成相对于所述帧间预测块定向的参考块-上下文像素,获得与所述空间块-上下文像素和所述参考块-上下文像素之间的最小化误差相对应的帧间-帧内预测参数,以及通过对于所述当前块的当前像素执行以下操作,生成用于所述当前块的预测块:使用来自所述帧间预测块的对应于所述当前像素的帧间预测像素与所述帧间-帧内预测参数的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。生成所述重构帧可以包括从所述编码比特流解码用于所述当前块的残差块,其中,解码所述残差块包括解码对应于所述当前像素的残差像素,通过针对所述当前像素将用于所述当前像素的所述预测因子与所述残差像素的总和标识为所述当前像素来生成用于所述当前块的重构块,以及将所述重构块包括在所述重构帧中。所述方法可以包括输出所述重构帧。
5.另一方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的方法。使用具有隐式模型的帧间-帧内预测来进行视频代码化可以包括通过编码来自输入视频帧序列的当前帧来生成编码帧。编码所述当前帧可以包括:生成与所述当前帧相对应的重构帧的一部分,标识所述当前帧的当前块,使用第一参考帧生成用于所述当前块的第一帧间预测块。生成所述第一帧间预测块可以包括:标识第一帧间预测运动矢量;以及根据限定的空间定向,生成相对于所述第一帧间预测块定向的第一参考块-上下文像素。编码所述当前帧可以包括根据所述限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,获得与所述空间块-上下文像素和所述第一参考块-上下文像素之间的最小化误差相对应的第一帧间-帧内预测参数,以及通过对于所述当前块的当前像素执行以下操作来生成用于所述当前块的预测块:使用来自所述第一帧间预测块的对应于所述当前像素的帧间预测像素和所述第一帧间-帧内预测参数的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。编码所述当前帧可以包括生成用于所述当前块的残差块,其中,生成所述残差块包括生成所述预测因子与所述当前像素之间的差,所述差作为对应于所述当前像素的残差像素,以及在输出比特流中包括所述残差块和所述第一帧间预测运动矢量。所述方法可以包括输出所述输出比特流。
6.另一方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的装置。所述装置可以包括被配置成从视频帧序列生成与当前帧相对应的重构帧的处理器。所述处理器可以被配置成通过下述操作,根据帧间-帧内预测模型生成所述重构帧:从编码比特流中解码用于所述当前帧的当前块的帧间预测运动矢量集合,根据限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,以及使用参考帧集合和所述帧间预测运动矢量集合来生成用于所述当前块的帧间预测块集合,其中,生成所述帧间预测块集合包括:对于来自所述帧间预测块集合的相应帧间预测块,根据所述限定的空间定向,生成相对于所述相应帧间预测块定向的对应参考块-上下文像素集合。所述处理器可以被配置成通过下述操作,根据所述帧间-帧内预测模型生成所述重构帧:标识与所述空间块-上下文像素和所述参考块-上下文像素之间的最小化误差相对应的帧间-帧内预测参数集合,其中,所述帧间-帧内预测参数集合包括混合参数集合,其中,所述混合参数集合包括
第一混合参数。所述处理器可以被配置成通过下述操作,根据所述帧间-帧内预测模型生成所述重构帧:对于所述当前块的当前像素执行以下操作,生成用于所述当前块的预测块:通过以下方式获得帧间预测像素集合:对于来自所述帧间预测块集合的相应帧间预测块,从所述帧间预测块标识对应于所述当前像素的帧间预测像素,使得所述帧间预测像素集合包括第一帧间预测像素,所述第一帧间预测像素来自所述帧间预测块集合中的第一帧间预测块;使用所述帧间预测像素集合和所述帧间-帧内预测参数集合的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。所述处理器可以被配置成通过下述操作,根据所述帧间-帧内预测模型生成所述重构帧:从所述编码比特流解码用于所述当前块的残差块,其中,解码所述残差块包括解码对应于所述当前像素的残差像素,通过针对所述当前像素将用于所述当前像素的所述预测因子与所述残差像素的总和标识为所述当前像素来生成用于所述当前块的重构块,以及将所述重构块包括在所述重构帧中。所述处理器可以被配置成生成输出所述重构帧。
7.另一方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的装置。所述装置可以包括被配置成从帧序列生成与当前帧相对应的重构帧的处理器。所述处理器可以被配置成通过下述操作,生成所述重构帧:从编码比特流中解码用于所述当前帧的当前块的帧间预测运动矢量,根据限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,使用参考帧和所述帧间预测运动矢量来生成用于所述当前块的帧间预测块,其中,生成所述帧间预测块包括:根据所述限定的空间定向,生成相对于所述帧间预测块定向的参考块-上下文像素,获得与所述空间块-上下文像素和所述参考块-上下文像素之间的最小化误差相对应的帧间-帧内预测参数,以及通过对于所述当前块的当前像素执行以下操作,生成用于所述当前块的预测块:使用来自所述帧间预测块的对应于所述当前像素的帧间预测像素与所述帧间-帧内预测参数的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。所述处理器可以被配置成通过下述操作,生成所述重构帧:从所述编码比特流解码用于所述当前块的残差块,其中,解码所述残差块包括解码对应于所述当前像素的残差像素,通过针对所述当前像素将用于所述当前像素的所述预测因子与所述残差像素的总和标识为所述当前像素来生成用于所述当前块的重构块,以及将所述重构块包括在所述重构帧中。所述处理器被配置成生成输出所述重构帧。
8.另一方面是一种用于使用具有隐式模型的帧间-帧内预测来进行视频代码化的装置。所述装置可以包括被配置成通过编码来自输入视频帧序列的当前帧来生成编码帧的处理器。所述处理器可以被配置成通过下述操作,编码所述当前帧:生成与所述当前帧相对应的重构帧的一部分,标识所述当前帧的当前块,使用第一参考帧生成用于所述当前块的第一帧间预测块。所述处理器可以被配置成通过下述操作,生成所述第一帧间预测块:标识第一帧间预测运动矢量;以及根据限定的空间定向,生成相对于所述第一帧间预测块定向的第一参考块-上下文像素。所述处理器可以被配置成通过下述操作,编码所述当前帧:根据所述限定的空间定向,从相对于所述当前块定向的所述重构帧获得空间块-上下文像素,获得与所述空间块-上下文像素和所述第一参考块-上下文像素之间的最小化误差相对应的第一帧间-帧内预测参数,以及通过对于所述当前块的当前像素执行以下操作来生成用于所述当前块的预测块:使用来自所述第一帧间预测块的对应于所述当前像素的帧间预测像
素和所述第一帧间-帧内预测参数的组合来确定用于所述当前像素的预测因子;以及将所述预测因子包括在所述预测块中。所述处理器可以被配置成通过下述操作,编码所述当前帧:生成用于所述当前块的残差块,其中,生成所述残差块包括生成所述预测因子与所述当前像素之间的差,所述差作为对应于所述当前像素的残差像素,以及在输出比特流中包括所述残差块和所述第一帧间预测运动矢量。所述处理器可以被配置成输出所述输出比特流。
9.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来标识所述帧间-帧内预测模型:从所述编码比特流中解码标识所述帧间-帧内预测模型的帧间-帧内预测模型标识符。
10.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来解码所述帧间预测运动矢量集合:解码所述帧间预测运动矢量集合中的第一帧间预测运动矢量,其中,第一帧间预测运动矢量与所述参考帧集合中的第一参考帧相关联。
11.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来生成帧间预测块集合:使用所述第一帧间预测运动矢量和所述第一参考帧生成所述第一帧间预测块,其中,生成所述第一帧间预测块包括生成相对于所述第一帧间预测块定向的第一参考块-上下文像素集合。
12.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来确定所述预测因子:通过将第一值标识为所述第一帧间预测像素乘以所述第一混合参数的乘积;以及将值集合的总和标识为所述预测因子,其中,所述值集合包括所述第一值。
13.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括标识所述帧间-帧内预测参数集合,使得所述帧间-帧内预测参数集合对应于所述空间块-上下文像素与所述第一参考块-上下文像素集合之间的最小化误差。
14.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来解码所述帧间预测运动矢量集合:解码所述帧间预测运动矢量集合的第二帧间预测运动矢量,其中,所述参考帧集合包括第二参考帧。
15.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来生成所述帧间预测块集合:使用所述第二帧间预测运动矢量和所述第二参考帧生成所述帧间预测块集合的第二帧间预测块,其中,生成所述第二帧间预测块包括生成相对于所述第二帧间预测块定向的第二参考块-上下文像素集合。
16.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来获得帧间预测像素集合:从所述第二帧间预测块标识对应于所述当前像素的第二帧间预测像素,使得所述帧间预测像素集合包括所述第二帧间预测像素。
17.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来标识所述帧间-帧内预测参数集合:标识所述帧间-帧内预测参数集合,使得所述帧间-帧内预测参数集合对应于所述空间块-上下文像素、所述第一参考块-上下文像素集合和所述第二参考块-上下文像素集合之间的最小化误差。
18.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括
通过以下操作来确定所述预测因子:将第二值标识为将所述第二帧间预测像素乘以从1减去所述第一混合参数的差的乘积并且将所述第二值包括在所述值集合中。
19.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来标识所述帧间-帧内预测参数集合:标识所述混合参数集合,使得所述混合参数包括第二混合参数。
20.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来确定预测因子:将第二值标识为所述第二帧间预测像素乘以所述第二混合参数的乘积以及将所述第二值包括在所述值集合中。
21.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括标识所述帧间-帧内预测参数集合包括标识递归因子集合。
22.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来确定预测因子:从所述重构帧中标识具有相对于所述当前像素的限定的空间定向的可用像素-上下文像素集合;标识所述可用像素-上下文像素集合与所述递归因子集合的点积;以及将所述点积包括在所述值集合中。
23.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来解码帧间预测运动矢量集合:解码所述帧间预测运动矢量集合的第二帧间预测运动矢量,其中,所述参考帧集合包括第二参考帧。
24.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来生成帧间预测块集合:使用所述第二帧间预测运动矢量和所述第二参考帧生成所述帧间预测块集合的第二帧间预测块,其中,生成所述第二帧间预测块包括生成相对于所述第二帧间预测块定向的第二参考块-上下文像素集合。
25.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来获得帧间预测像素集合:从所述第二帧间预测块标识对应于所述当前像素的第二帧间预测像素,使得所述帧间预测像素集合包括所述第二帧间预测像素。
26.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来标识所述帧间-帧内预测参数集合:标识所述帧间-帧内预测参数集合,使得所述帧间-帧内预测参数集合与所述空间块-上下文像素、所述第一参考块-上下文像素集合和所述第二参考块-上下文像素集合之间的最小化误差相对应。
27.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来确定预测因子:将第二值标识为将所述第二帧间预测像素乘以从1减去所述第一混合参数的差的乘积;以及将所述第二值包括在所述值集合中。
28.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来标识帧间-帧内预测参数集合:标识所述混合参数集合,使得所述混合参数包括第二混合参数。
29.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过以下操作来确定预测因子:将第二值标识为所述第二帧间预测像素乘以所述第二混合参数的乘积;以及将所述第二值包括在所述值集合中。
30.在一些实现方式中,使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过标识偏移来标识所述帧间-帧内预测参数集合,并且确定所述预测因子包括将所述偏
移包括在值集合中。
31.这些和其它方面的变型将在下文中更详细地描述。
附图说明
32.本文的描述参考附图,其中,除非另有说明或从上下文中清楚,否则相同的附图标记在若干视图中指代相同的部分。
33.图1是根据本公开的实现方式的计算设备的图。
34.图2是根据本公开的实现方式的计算和通信系统的图。
35.图3是根据本公开的实现方式的用在编码和解码中的视频流的图。
36.图4是根据本公开的实现方式的编码器的框图。
37.图5是根据本公开的实现方式的解码器的框图。
38.图6是根据本公开的实现方式的帧的一部分的表示的框图。
39.图7是根据本公开的实现方式的使用具有隐式模型的帧间-帧内预测进行解码的示例的流程图。
40.图8是根据本公开的实现方式的使用具有隐式模型的帧间-帧内预测生成用于代码化的预测块的示例的流程图。
41.图9是根据本公开的实现方式的用于使用具有隐式模型的帧间-帧内预测进行代码化的图像元素的示例的框图。
42.图10是根据本公开的实现方式的使用具有隐式模型的帧间-帧内预测进行编码的示例的流程图。
具体实施方式
43.图像和视频压缩方案可以包括将图像或帧分成更小的部分(诸如块),并且使用最小化输出中的每个块所包括的信息的带宽利用率的技术来生成输出比特流。在一些实现方式中,可以通过减少空间冗余、减少时间冗余或它们的组合来限制针对输出中的每一块包括的信息。例如,可以通过基于可用于编码器和解码器两者的信息预测帧或其部分,并且包括表示经预测帧与编码比特流中的原始帧之间的差或残差的信息来减少时间或空间冗余。可以通过将残差信息变换成变换系数、量化变换系数及对于经量化的变换系数熵代码化来进一步压缩残差信息。其它代码化信息(诸如运动信息)可以被包括在编码比特流中,其可以包括基于编码信息的预测发送差分信息,所述差分信息可以经熵代码化以进一步减少对应带宽利用率。可以对编码比特流进行解码,以从有限的信息重构块和源图像。在一些实现方式中,使用帧间预测或帧内预测代码化块的准确度、效率或两者可能是受限的。
44.相对于使用帧间预测或帧内预测的代码化,使用具有隐式模型的帧间-帧内预测来进行代码化(诸如编码或解码)的实现方式可以提高视频代码化的准确性、效率或两者。使用具有隐式模型的帧间-帧内预测来进行代码化可以包括通过生成对应的帧间预测块来生成对应的预测块来代码化当前块,其可以包括根据限定的定向生成相对于帧间预测块在空间上定向的参考块-上下文像素,获得可以是来自当前帧的先前重构的像素的空间块-上下文像素,通过求解相对于参考块-上下文像素和空间块-上下文像素的误差最小化来获得帧间-帧内预测参数,以及基于帧间预测块和帧间-帧内预测参数来生成用于当前块的预测
因子。
45.图1是根据本公开的实现方式的计算设备100的图。所示的计算设备100包括存储器110、处理器120、用户接口(ui)130、电子通信单元140、传感器150、电源160和总线170。如本文所使用的,术语“计算设备”包括能够执行本文公开的任何方法或其任何一个或多个部分的任何单元或单元的组合。
46.计算设备100可以是固定计算设备,诸如个人计算机(pc)、服务器、工作站、小型计算机或大型计算机;或移动计算设备,诸如移动电话、个人数字助理(pda)、膝上型计算机或平板pc。尽管被示出为单个单元,但是计算设备100的任何一个或多个元件可以被集成到任何数量的单独的物理单元中。例如,用户接口130和处理器120可以集成在第一物理单元中,并且存储器110可以被集成在第二物理单元中。
47.存储器110可以包括任何非暂时性计算机可用或计算机可读介质,诸如可以例如包含、存储、传送或传输数据112、指令114、操作系统116或与其相关联的任何信息以供计算设备100的其它组件使用或与其结合使用的任何有形设备。非暂时性计算机可用或计算机可读介质可以是例如固态驱动器、存储卡、可移动介质、只读存储器(rom)、随机存取存储器(ram)、包括硬盘、软盘、光盘、磁卡或光卡的任何类型的盘、专用集成电路(asic)、或适于存储电子信息的任何类型的非暂时性介质或它们的任意组合。
48.尽管示出了单个单元,但是存储器110可以包括多个物理单元,诸如一个或多个主存储器单元(诸如随机存取存储器单元)、一个或多个辅助数据存储单元(诸如磁盘)或它们的组合。例如,数据112或其一部分、指令114或其一部分或两者可以被存储在辅助存储单元中,并且可以结合处理相应的数据112、执行相应的指令114或两者而被加载或以其它方式传输到主存储单元。在一些实现方式中,存储器110或其一部分可以是可移动存储器。
49.数据112可以包括诸如输入音频数据、编码音频数据、解码音频数据等的信息。指令114可以包括用于执行本文公开的任何方法或其任何一个或多个部分的指示(directions),诸如代码。指令114可以以硬件、软件或它们的任意组合来实现。例如,指令114可以被实现为存储在存储器110中的信息,诸如计算机程序,其可以由处理器120执行以执行如本文所述的任何相应的方法、算法、方面或它们的组合。
50.尽管示出为包括在存储器110中,但是在一些实现方式中,指令114或其一部分可以被实现为专用处理器或电路,其可以包括用于执行如本文所述的方法、算法、方面或它们的组合中的任何一个的专用硬件。指令114的部分可以分布在同一机器或不同机器上的多个处理器上,或者分布在诸如局域网、广域网、互联网或它们的组合的网络上。
51.处理器120可以包括能够操纵或处理现在存在或以后开发的数字信号或其它电子信息的任何设备或系统,包括光学处理器、量子处理器、分子处理器或它们的组合。例如,处理器120可以包括专用处理器、中央处理单元(cpu)、数字信号处理器(dsp)、多个微处理器、与dsp内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑阵列、可编程逻辑控制器、微代码、固件、任何类型的集成电路(ic)、状态机或它们的任意组合。如本文所使用的,术语“处理器”包括单个处理器或多个处理器。
52.用户接口130可以包括能够与用户对接的任何单元,诸如虚拟或物理小键盘、触摸板、显示器、触摸显示器、扬声器、麦克风、摄像机、传感器或它们的任意组合。例如,用户接
口130可以是视听显示设备,并且计算设备100可以使用用户接口130视听显示设备,诸如结合显示视频(诸如解码的视频)来呈现音频,诸如解码的音频。尽管被示出为单个单元,但是用户接口130可以包括一个或多个物理单元。例如,用户接口130可以包括用于执行与用户进行音频通信的音频接口,以及用于执行与用户进行视觉和基于触摸的通信的触摸显示器。
53.电子通信单元140可以经由有线或无线电子通信介质180(诸如射频(rf)通信介质、紫外(uv)通信介质、可见光通信介质、光纤通信介质、有线通信介质或它们的组合)发送、接收或发送和接收信号。例如,如所示,电子通信单元140可操作地连接到被配置成经由无线信号进行通信的电子通信接口142,诸如天线。
54.尽管电子通信接口142在图1中被示出为无线天线,但是电子通信接口142可以是无线天线(如所示)、有线通信端口(诸如以太网端口、红外端口、串行端口)或能够与有线或无线电子通信介质180对接的任何其它有线或无线单元。虽然图1示出了单个电子通信单元140和单个电子通信接口142,但是可以使用任何数量的电子通信单元和任何数量的电子通信接口。
55.传感器150可以包括例如音频感测设备、可见光感测设备、运动感测设备或它们的组合。例如,传感器150可以包括声音感测设备,诸如麦克风,或者现在存在或以后开发的可以感测计算设备100附近的声音(诸如由操作计算设备100的用户发出的语音或其它话语)的任何其它声音感测设备。在另一示例中,传感器150可以包括相机或现在存在或以后开发的可以感测图像(诸如操作计算设备的用户的图像)的任何其它图像感测设备。尽管示出了单个传感器150,但是计算设备100可以包括多个传感器150。例如,计算设备100可以包括被定向为具有指向计算设备100的用户的视场的第一相机和被定向为具有指向远离计算设备100的用户的视场的第二相机。
56.电源160可以是用于为计算设备100供电的任何合适的设备。例如,电源160可以包括有线外部电源接口;一个或多个干电池,诸如镍镉(nicd)、镍锌(nizn)、镍金属氢化物(nimh)、锂离子(li离子);太阳能电池;燃料电池;或者能够为计算设备100供电的任何其它设备。尽管图1中示出了单个电源160,但是计算设备100可以包括多个电源160,诸如电池和有线外部电源接口。
57.尽管被示出为单独的单元,但是电子通信单元140、电子通信接口142、用户接口130、电源160或其部分可以被配置为组合单元。例如,电子通信单元140、电子通信接口142、用户接口130和电源160可以被实现为能够与外部显示设备对接、提供通信、电力或两者的通信端口。
58.存储器110、处理器120、用户接口130、电子通信单元140、传感器150或电源160中的一个或多个可以经由总线170可操作地耦合。尽管图1中示出了单个总线170,但是计算设备100可以包括多个总线。例如,存储器110、处理器120、用户接口130、电子通信单元140、传感器150和总线170可以经由总线170从电源160接收电力。在另一示例中,存储器110、处理器120、用户接口130、电子通信单元140、传感器150、电源160或它们的组合可以经由总线170,诸如通过发送和接收电子信号来传送数据。
59.尽管在图1中未单独示出,但是处理器120、用户接口130、电子通信单元140、传感器150或电源160中的一个或多个可以包括内部存储器,诸如内部缓冲器或寄存器。例如,处
理器120可以包括内部存储器(未示出),并且可以将数据112从存储器110读取到内部存储器(未示出)中以进行处理。
60.尽管被示出为单独的元件,但是存储器110、处理器120、用户接口130、电子通信单元140、传感器150、电源160和总线170或它们的任意组合可以被集成在一个或多个电子单元、电路或芯片中。
61.图2是根据本公开的实现方式的计算和通信系统200的图。所示的计算和通信系统200包括计算和通信设备100a、100b、100c、接入点210a、210b和网络220。例如,计算和通信系统200可以是向一个或多个有线或无线通信设备(诸如计算和通信设备100a、100b、100c)提供通信(诸如语音、音频、数据、视频、消息传递、广播或它们的组合)的多址系统。尽管为了简单起见,图2示出了三个计算和通信设备100a、100b、100c,两个接入点210a、210b和一个网络220,但是可以使用任何数量的计算和通信设备、接入点和网络。
62.计算和通信设备100a、100b、100c可以是例如计算设备,诸如图1所示的计算设备100。例如,计算和通信设备100a、100b可以是用户设备,诸如移动计算设备、膝上型计算机、瘦客户端或智能电话,而计算和通信设备100c可以是服务器,诸如大型机或集群。尽管计算和通信设备100a以及计算和通信设备100b被描述为用户设备,并且计算和通信设备100c被描述为服务器,但是任何计算和通信设备可以执行服务器的功能中的一些或全部、用户设备的功能中的一些或全部、或者服务器和用户设备的功能中的一些或全部。例如,服务器计算和通信设备100c可以接收、编码、处理、存储、发送音频数据或以上功能的组合,而计算和通信设备100a以及计算和通信设备100b中的一者或两者可以接收、解码、处理、存储、呈现音频数据或以上功能的组合。
63.可以包括用户设备(ue)、移动站、固定或移动订户单元、蜂窝电话、个人计算机、平板计算机、服务器、消费电子产品或任何类似设备的每个计算和通信设备100a、100b、100c可以被配置成诸如经由网络220执行有线或无线通信。例如,计算和通信设备100a、100b、100c可以被配置成发送或接收有线或无线通信信号。尽管每个计算和通信设备100a、100b、100c被示出为单个单元,但是计算和通信设备可以包括任何数量的互连元件。
64.每个接入点210a、210b可以是被配置成经由有线或无线通信链路180a、180b、180c与计算和通信设备100a、100b、100c、网络220或两者通信的任何类型的设备。例如,接入点210a、210b可以包括基站、基站收发信台(bts)、节点b、增强型节点b(enode-b)、主节点b(hnode-b)、无线路由器、有线路由器、集线器、中继器、交换机或任何类似的有线或无线设备。尽管每个接入点210a、210b被示出为单个单元,但是接入点可以包括任何数量的互连元件。
65.网络220可以是被配置成通过有线或无线通信链路提供服务(诸如语音、数据、应用、网际协议语音(voip)或任何其它通信协议或通信协议的组合)的任何类型的网络。例如,网络220可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、移动或蜂窝电话网络、互联网或任何其它电子通信手段。网络可以使用通信协议,诸如传输控制协议(tcp)、用户数据报协议(udp)、网际协议(ip)、实时传输协议(rtp)、超文本传输协议(http)或它们的组合。
66.计算和通信设备100a、100b、100c可以经由使用一个或多个有线或无线通信链路的网络220,或者经由有线和无线通信链路的组合彼此通信。例如,如所示,计算和通信设备
100a、100b可以经由无线通信链路180a、180b进行通信,而计算和通信设备100c可以经由有线通信链路180c进行通信。计算和通信设备100a、100b、100c中的任何一个可以使用任何有线或无线通信链路或多个链路进行通信。例如,第一计算和通信设备100a可以使用第一类型的通信链路,经由第一接入点210a进行通信,第二计算和通信设备100b可以使用第二类型的通信链路,经由第二接入点210b进行通信,而第三计算和通信设备100c可以使用第三类型的通信链路,经由第三接入点(未示出)进行通信。类似地,接入点210a、210b可以经由一种或多种类型的有线或无线通信链路230a、230b与网络220通信。尽管图2示出了经由网络220通信的计算和通信设备100a、100b、100c,但是计算和通信设备100a、100b、100c可以经由任何数量的通信链路(诸如直接有线或无线通信链路)彼此通信。
67.在一些实现方式中,计算和通信设备100a、100b、100c中的一个或多个之间的通信可以省略经由网络220的通信,并且可以包括经由诸如数据存储设备的另一介质(未示出)传送数据。例如,服务器计算和通信设备100c可以将音频数据(诸如编码的音频数据)存储在数据存储设备(诸如便携式数据存储单元)中,并且计算和通信设备100a或计算和通信设备100b中的一者或两者可以诸如通过将数据存储设备与服务器计算和通信设备100c物理地断开并且将数据存储设备物理地连接到计算和通信设备100a或计算和通信设备100b,从数据存储单元访问、读取或检索所存储的音频数据。
68.计算和通信系统200的其它实现方式是可能的。例如,在实现方式中,网络220可以是自组织网络,并且可以省略接入点210a、210b中的一个或多个。计算和通信系统200可以包括图2中未示出的设备、单元或元件。例如,计算和通信系统200可以包括更多的通信设备、网络和接入点。
69.图3是根据本公开的实现方式的用在编码和解码中的视频流300的图。视频流300(诸如由摄像机捕获的视频流或由计算设备生成的视频流)可以包括视频序列310。视频序列310可以包括相邻帧320的序列。尽管示出了三个相邻帧320,但是视频序列310可以包括任何数量的相邻帧320。
70.来自相邻帧320的每个帧330可以表示来自视频流的单个图像。尽管图3中未示出,但帧330可以包括一个或多个片段、图块或平面,它们可以被独立地(诸如并行地)代码化或以其它方式处理。帧330可以包括一个或多个图块340。图块340中的每一个可以是可以被独立地代码化的帧的矩形区。图块340中的每一个可以包括相应的块350。尽管图3中未示出,但是块可以包括像素。例如,块可以包括16
×
16像素组、8
×
8像素组、8
×
16像素组或任何其它像素组。除非本文另有说明,否则术语“块”可以包括超级块、宏块、片段、切片或帧的任何其它部分。帧、块、像素或它们的组合可以包括显示信息,诸如亮度信息、色度信息或可以用于存储、修改、传送或显示视频流或其一部分的任何其它信息。
71.图4是根据本公开的实现方式的编码器400的框图。编码器400可以在诸如图1所示的计算设备100或图2所示的计算和通信设备100a、100b、100c的设备中实现,作为例如存储在诸如图1所示的存储器110的数据存储单元中的计算机软件程序。计算机软件程序可以包括可以由处理器(诸如图1中所示的处理器120)执行的机器指令,并且可以使设备如本文所述对视频数据进行编码。编码器400可以被实现为包括在例如计算设备100中的专用硬件。
72.编码器400可以对输入视频流402(诸如图3所示的视频流300)进行编码,以生成编码(压缩)比特流404。在一些实现方式中,编码器400可以包括用于生成压缩比特流404的前
向路径。前向路径可以包括帧内/帧间预测单元410、变换单元420、量化单元430、熵编码单元440或它们的任意组合。在一些实现方式中,编码器400可以包括(由虚线连接线指示的)重构路径以重构用于编码另外的块的帧。重构路径可以包括解量化单元450、逆变换单元460、重构单元470、滤波单元480或它们的任意组合。编码器400的其它结构变型可以用于对视频流402进行编码。
73.为了对视频流402进行编码,可以以块为单位处理视频流402内的每个帧。因此,可以从帧中的块中标识当前块,并且可以对当前块进行编码。
74.在帧内/帧间预测单元410处,可以使用可以在单个帧内的帧内预测或可以从帧到帧的帧间预测对当前块进行编码。帧内预测可以包括从当前帧中先前已经被编码和重构的样本生成预测块。帧间预测可以包括从一个或多个先前构造的参考帧中的样本生成预测块。为当前帧中的当前块生成预测块可以包括执行运动估计以生成指示参考帧的适当参考部分的运动矢量。
75.帧内/帧间预测单元410可以从当前块(原始块)中减去预测块以产生残差块。变换单元420可以执行基于块的变换,其可以包括将残差块变换为例如频域中的变换系数。基于块的变换的示例包括karhunen-lo
è
ve变换(klt)、离散余弦变换(dct)、奇异值分解变换(svd)和非对称离散正弦变换(adst)。在示例中,dct可以包括将块变换到频域。dct可以包括使用基于空间频率的变换系数值,其中,最低频率(即dc)系数在矩阵的左上角处,而最高频率系数在矩阵的右下角处。
76.量化单元430可以将变换系数转换为离散量子值,其可以被称为量化变换系数或量化水平。量化变换系数可以由熵编码单元440熵编码以产生熵编码系数。熵编码可以包括使用概率分布度量。可以将用于解码块的熵编码系数和信息(其可以包括所使用的预测类型、运动矢量和量化器值)输出到压缩比特流404。可以使用各种技术(诸如游程长度编码(rle)和零游程编码)来格式化压缩比特流404。
77.重构路径可用于维持编码器400与对应解码器(诸如图5中所示的解码器500)之间的参考帧同步。重构路径可以类似于下面讨论的解码过程,并且可以包括对编码帧或其一部分进行解码,其可以包括对编码块进行解码,其可以包括在解量化单元450处对量化变换系数进行解量化以及在逆变换单元460处对解量化变换系数进行逆变换以产生导数残差块。重构单元470可以将由帧内/帧间预测单元410生成的预测块添加到导数残差块以创建解码块。滤波单元480可以应用于解码块以生成重构块,其可以减少失真,诸如块效应。尽管图4中示出一个滤波单元480,但对解码块进行滤波可以包括环路滤波、解块滤波或其它类型的滤波或滤波类型的组合。重构块可以作为重构块存储或以其它方式使其可存取,所述重构块可以是参考帧的一部分,以用于编码当前帧的另一部分、另一帧或两者,如482处的虚线所示。用于帧的编码信息(诸如解块阈值索引值)可以被编码、被包括在压缩比特流404中或两者,如484处的虚线所示。
78.编码器400的其它变型可以用于对压缩比特流404进行编码。例如,基于非变换的编码器400可以在没有变换单元420的情况下直接量化残差块。在一些实现方式中,量化单元430和解量化单元450可以被组合成单个单元。
79.图5是根据本公开的实现方式的解码器500的框图。解码器500可以在诸如图1所示的计算设备100或图2所示的计算和通信设备100a、100b、100c的设备中实现,作为例如存储
在诸如图1所示的存储器110的数据存储单元中的计算机软件程序。计算机软件程序可以包括可以由处理器(诸如图1所示的处理器120)执行的机器指令,并且可以使设备如本文所述地解码视频数据。解码器500可以被实现为包括在例如计算设备100中的专用硬件。
80.解码器500可以接收压缩比特流502,诸如图4所示的压缩比特流404,并且可以对压缩比特流502进行解码以生成输出视频流504。解码器500可以包括熵解码单元510、解量化单元520、逆变换单元530、帧内/帧间预测单元540、重构单元550、滤波单元560或它们的任意组合。解码器500的其它结构变型可以用于解码压缩比特流502。
81.熵解码单元510可以使用例如上下文自适应二进制算术解码来解码压缩比特流502内的数据元素,以产生一组量化变换系数。解量化单元520可以对量化的变换系数进行解量化,并且逆变换单元530可以对解量化的变换系数进行逆变换以产生导数残差块,该导数残差块可以对应于由图4所示的逆变换单元460生成的导数残差块。使用从压缩比特流502解码的标头信息,帧内/帧间预测单元540可以生成与在编码器400中创建的预测块相对应的预测块。在重构单元550处,可以将预测块添加到导数残差块以创建解码块。滤波单元560可以应用于解码块以减少诸如块效应的伪像,该滤波单元可以包括环路滤波、解块滤波或其它类型的滤波或滤波类型的组合,并且其可以包括生成重构块,其可以被输出为输出视频流504。
82.解码器500的其它变型可以用于解码压缩比特流502。例如,解码器500可以在没有解块滤波单元570的情况下产生输出视频流504。
83.图6是根据本公开的实现方式的帧(诸如图3中所示的帧330)的一部分600的表示的框图。如所示,帧的该部分600包括在矩阵或笛卡尔平面中的两行和两列中的四个64
×
64块610。在一些实现方式中,64
×
64块可以是最大编码单元,n=64。每个64
×
64块可以包括四个32
×
32块620。每个32
×
32块可以包括四个16
×
16块630。每个16
×
16块可以包括四个8
×
8块640。每个8
×
8块640可以包括四个4
×
4块650。每个4
×
4块650可以包括16个像素,该16个像素可以在每个相应块中在笛卡尔平面或矩阵中以四行和四列表示。像素可以包括表示在帧中捕获的图像的信息,诸如亮度信息、颜色信息和位置信息。在一些实现方式中,诸如所示的16
×
16像素块的块可以包括亮度块660,其可以包括亮度像素662;以及两个色度块670、680,诸如u或cb色度块670和v或cr色度块680。色度块670、680可以包括色度像素690。例如,亮度块660可以包括16
×
16亮度像素662,并且每个色度块670、680可以包括8
×
8色度像素690,如所示。尽管示出了块的一种布置,但是可以使用任何布置。尽管图6示出了n
×
n块,但是在一些实现方式中,可以使用n
×
m块。例如,可以使用32
×
64块、64
×
32块、16
×
32块、32
×
16块或任何其它尺寸的块。在一些实现方式中,可以使用n
×
2n块、2n
×
n块或它们的组合。
84.在一些实现方式中,视频代码化可以包括有序块级代码化。有序块级代码化可以包括以诸如光栅扫描顺序的顺序对帧的块进行代码化,其中,可以从帧的左上角或帧的一部分中的块开始,并且沿着行从左到右并从顶行到底行进行,依次标识每个块以进行处理来标识和处理块。例如,帧的顶行和左列中的64
×
64块可以是代码化的第一块,并且紧接在第一块的右侧的64
×
64块可以是代码化的第二块。从顶部开始的第二行可以是被代码化的第二行,使得第二行的左列中的64
×
64块可以在第一行的最右列中的64
×
64块之后被代码化。
85.在一些实现方式中,代码化块可以包括使用四叉树代码化,其可以包括按光栅扫描顺序代码化块内的较小块单元。例如,可以使用四叉树代码化对图6所示的帧的部分的左下角所示的64
×
64块进行代码化,其中可以对左上32
×
32块进行代码化,然后可以对右上32
×
32块进行代码化,然后可以对左下32
×
32块进行代码化,然后可以对右下32
×
32块进行代码化。可以使用四叉树代码化对每个32
×
32块进行代码化,其中可以对左上16
×
16块进行代码化,然后可以对右上16
×
16块进行代码化,然后可以对左下16
×
16块进行代码化,然后可以对右下16
×
16块进行代码化。可以使用四叉树代码化对每个16
×
16块进行代码化,其中可以对左上8
×
8块进行代码化,然后可以对右上8
×
8块进行代码化,然后可以对左下8
×
8块进行代码化,然后可以对右下8
×
8块进行代码化。可以使用四叉树代码化对每个8
×
8块进行代码化,其中可以对左上4
×
4块进行代码化,然后可以对右上4
×
4块进行代码化,然后可以对左下4
×
4块进行代码化,然后可以对右下4
×
4块进行代码化。在一些实现方式中,对于16
×
16块可省略8
×
8块,并且可以使用四叉树代码化来代码化16
×
16块,其中,可以代码化左上4
×
4块,接着可以按光栅扫描顺序代码化16
×
16块中的其它4
×
4块。
86.在一些实现方式中,视频代码化可以包括通过例如从对应的编码帧中省略原始帧中的一些信息来压缩原始或输入帧中包括的信息。例如,代码化可以包括减少频谱冗余、减少空间冗余、减少时间冗余或它们的组合。
87.在一些实现方式中,减少频谱冗余可以包括使用基于亮度分量(y)和两个色度分量(u和v或cb和cr)的颜色模型,其可以被称为yuv或ycbcr颜色模型或颜色空间。使用yuv颜色模型可以包括使用相对大量的信息来表示帧的一部分的亮度分量,以及使用相对少量的信息来表示帧的该部分的每个对应色度分量。例如,帧的一部分可以由高分辨率亮度分量和两个较低分辨率色度分量表示,其中该高分辨率亮度分量可以包括16
×
16像素块,该较低分辨率色度分量中的每一个将该帧的部分表示为8
×
8像素块。像素可以指示值,例如,在从0到255的范围内的值,并且可以使用例如八位来存储或发送。尽管参考yuv颜色模型描述了本公开,但是可以使用任何颜色模型。
88.在一些实现方式中,减少空间冗余可以包括使用例如离散余弦变换(dct)将块变换到频域中。例如,编码器的单元(诸如图4中所示的变换单元420)可以使用基于空间频率的变换系数值来执行dct。
89.在一些实现方式中,减少时间冗余可以包括使用帧之间的相似性来基于一个或多个参考帧使用相对少量的数据对帧进行编码,所述一个或多个参考帧可以是视频流的先前编码、解码和重构的帧。例如,当前帧的块或像素可以类似于参考帧的空间上对应的块或像素。在一些实现方式中,当前帧的块或像素可以类似于不同空间位置处的参考帧的块或像素,且减少时间冗余可以包括生成指示当前帧中的块或像素的位置与参考帧中的块或像素的对应位置之间的空间差或平移的运动信息。
90.在一些实现方式中,减少时间冗余可以包括标识参考帧的对应于当前帧的当前块或像素的部分。例如,可以搜索可以存储在存储器中的参考帧或参考帧的一部分,以标识用于生成预测以用于以最大效率编码当前帧的当前块或像素的部分。例如,搜索可以标识当前块与基于参考帧的该部分生成的预测块之间的像素值的差异被最小化的参考帧的一部分,并且该搜索可以被称为运动搜索。在一些实现方式中,可以限制所搜索的参考帧的部分。例如,被搜索的参考帧的部分(其可以被称为搜索区域)可以包括参考帧的有限数量的
行。在示例中,标识参考帧的用于生成预测的部分可以包括计算搜索区域的部分的像素与当前块的像素之间的成本函数,例如绝对差总和(sad)。
91.在一些实现方式中,参考帧的用于生成参考帧中的预测的部分的位置与当前帧中的当前块之间的空间差异可以表示为运动矢量。预测块与当前块之间的像素值的差可以被称为差分数据、残差数据、预测误差或残差块。在一些实现方式中,生成运动矢量可以被称作运动估计,并且可以基于使用笛卡尔坐标的位置将当前块的像素指示为f
x,y
。类似地,可以基于使用笛卡尔坐标的位置,将参考帧的搜索区域的像素指示为r
x,y
。可以基于例如当前帧的像素与参考帧的对应像素之间的sad来确定当前块的运动矢量(mv)。
92.尽管为了清楚起见在本文中对参考帧的矩阵或笛卡尔表示进行描述,但是帧可以以任何数据结构存储、发送、处理或它们的任意组合,使得可以有效地表示帧或图像的像素值。例如,帧可以以二维数据结构(诸如所示的矩阵)或以一维数据结构(诸如矢量阵列)来存储、发送、处理或它们的任意组合。在实现方式中,帧的表示(诸如所示的二维表示)可以对应于将帧渲染为图像时的物理位置。例如,帧的左上角中的块的左上角中的位置可以与将帧渲染为图像的左上角中的物理位置相对应。
93.在一些实现方式中,可以通过将输入块分割成一个或多个预测分区来提高基于块的代码化效率,所述预测分区可以是用于预测代码化的矩形(包括正方形)分区。在一些实现方式中,使用预测分割来进行视频代码化可以包括从多个候选预测分割方案中选择预测分割方案。例如,在一些实现方式中,用于64
×
64代码化单元的候选预测分割方案可以包括尺寸范围从4
×
4到64
×
64的矩形尺寸预测分区,诸如4
×
4、4
×
8、8
×
4、8
×
8、8
×
16、16
×
8、16
×
16、16
×
32、32
×
16、32
×
32、32
×
64、64
×
32或64
×
64。在一些实现方式中,使用预测分割来进行视频代码化可以包括完全预测分割搜索,其可以包括通过使用每个可用候选预测分割方案对代码化单元进行编码来选择预测分割方案,并选择最佳方案,诸如产生最小速率-失真误差的方案。
94.在一些实现方式中,对视频帧进行编码可以包括标识用于对当前块(诸如块610)进行编码的预测分割方案。在一些实现方式中,标识预测分割方案可以包括确定是将该块编码为最大代码化单元尺寸的单个预测分区(其可以是如所示的64
×
64),还是将块分割成多个预测分区(其可以与子块对应,诸如32
×
32块620、16
×
16块630或8
×
8块640,如所示),并且可以包括确定是否分割成一个或多个较小的预测分割。例如,64
×
64块可以被分割成四个32
×
32预测分区。该四个32
×
32预测分区中的三个可以被编码为32
×
32预测分区,而第四个32
×
32预测分区可以被进一步分割成四个16
×
16预测分区。该四个16
×
16预测分区中的三个可以被编码为16
×
16预测分区,而第四个16
×
16预测分区可以进一步被分割成四个8
×
8预测分区,每个8
×
8预测分区可以被编码为8
×
8预测分区。在一些实现方式中,标识预测分割方案可以包括使用预测分割决策树。
95.在一些实现方式中,当前块的视频代码化可以包括从多个候选预测代码化模式中标识最佳预测代码化模式,这可以提供处理具有各种统计属性的视频信号的灵活性,并且可以提高压缩效率。例如,视频代码化器可以评估每个候选预测代码化模式以标识最佳预测代码化模式,其可以是例如最小化当前块的误差度量(诸如速率-失真成本)的预测代码化模式。在一些实现方式中,可以通过基于当前块和对应预测块之间的相似性来限制可用候选预测代码化模式的集合从而降低搜索候选预测代码化模式的复杂度。在一些实现方式
中,可以通过执行指向的细化模式搜索来降低搜索每个候选预测代码化模式的复杂度。例如,可以针对候选块尺寸的有限集合(诸如16
×
16、8
×
8和4
×
4)生成度量,与每个块尺寸相关联的误差度量可以是降序的,并且可以评估附加的候选块尺寸,诸如4
×
8和8
×
4块尺寸。
96.在一些实现方式中,可以通过将当前残差块分割成一个或多个变换分区来提高基于块的代码化效率,所述一个或多个变换分区可以是用于变换代码化的矩形(包括正方形)分区。在一些实现方式中,使用变换分割来进行视频代码化可以包括选择均匀变换分割方案。例如,当前残差块(诸如块610)可以是64
×
64块,并且可以在不使用64
×
64变换进行分割的情况下进行变换。
97.尽管图6中未明确示出,但可以使用均匀变换分割方案对残差块进行变换分割。例如,可以使用包括四个32
×
32变换块的均匀变换分割方案、使用包括十六个16
×
16变换块的均匀变换分割方案、使用包括六十四个8
×
8变换块的均匀变换分割方案或使用包括256个4
×
4变换块的均匀变换分割方案来变换分割64
×
64残差块。
98.在一些实现方式中,使用变换分割来进行视频代码化可以包括使用多种形式的变换分区代码化来标识残差块的多个变换块尺寸。在一些实现方式中,多种形式变换分区代码化可以包括递归地确定是使用当前块尺寸变换还是通过对当前块进行分割以及对每个分区进行多种形式变换分区代码化来变换当前块。例如,图6所示的左下块610可以是64
×
64残差块,并且多种形式变换分区代码化可以包括确定是使用64
×
64变换对当前64
×
64残差块进行代码化,还是通过将64
×
64残差块分割成多个分区(诸如四个32
×
32块620)并对每个分区进行多形式变换分区代码化来对64
×
64残差块进行代码化。在一些实现方式中,确定是否对当前块进行变换分区可以基于将使用当前块尺寸变换对当前块进行编码的成本与使用分区尺寸变换对每个分区进行编码的成本的总和进行比较。
99.图7是根据本公开的实现方式的使用具有隐式模型700的帧间-帧内预测来进行解码的示例的流程图。使用具有隐式模型700的帧间-帧内预测来进行解码可以在解码器(诸如图5中所示的解码器500)中实现。
100.如图7所示,使用具有隐式模型700的帧间-帧内预测来进行解码包括在710处标识当前块,在720处获得用信号发送的块数据,在730处获得一个或多个空间块-上下文像素,在740处生成一个或多个帧间预测块,在750处获得一个或多个帧间-帧内预测参数,在760处生成预测块,在770处生成重构块,以及在780处输出。
101.尽管在图7中未明确示出,但是使用具有隐式模型700的帧间-帧内预测来进行解码可以包括获得编码比特流的至少一部分,诸如经由有线或无线电子通信介质(诸如图2中所示的网络220)接收,或者从电子数据存储介质(诸如图1中所示的存储器110)读取编码比特流的至少一部分。尽管在图7中未明确示出,但是使用具有隐式模型700的帧间-帧内预测来进行解码可以包括解码用于解码当前帧的一个或多个帧参数,生成对应的重构帧,或两者。尽管在图7中未明确示出,但是使用具有隐式模型700的帧间-帧内预测来进行解码可以包括标识要解码、重构或两者的当前帧。当前帧可以是视频序列(诸如图3中所示的视频序列310)的帧,诸如图3中所示的帧330。尽管被描述为帧,但是当前帧可以是帧的一部分,诸如图块,诸如图3中所示的图块340中的一个。使用具有隐式模型700的帧间-帧内预测来进行解码可以包括生成对应于当前帧的重构帧。标识当前帧可以包括标识重构帧的一个或多个先前解码、重构或两者的部分,诸如块。
102.可以在710处标识当前块。当前块可以是当前帧的块,诸如除先前解码或重构的块之外的块。例如,当前块可以是诸如图6中所示的块610的块。
103.可以在720处获得用信号发送的块数据。例如,在720处获得用信号发送的块数据可以包括从编码比特流解码(例如熵解码)用信号发送的块数据。在720处,获得用信号发送的块数据可以包括获得一个或多个运动矢量,诸如帧间预测运动矢量集合。获得一个或多个运动矢量可以包括从编码比特流解码(例如熵解码)运动数据(诸如帧间预测运动数据)。运动数据可以包括一个或多个运动矢量。获得一个或多个运动矢量可以包括获得指示一个或多个参考帧(例如参考帧集合)的参考帧数据。例如,运动数据可以包括参考帧数据。参考帧可以针对相应运动矢量指示对应参考帧,诸如视频序列的先前解码、重构或两者的帧。例如,可以从当前块的标头解码运动数据。
104.在一些实现方式中,运动矢量集合可以具有基数1,并且运动信息可以包括一个(诸如第一)运动矢量和一个(诸如第一)参考帧标识符。在一些实现方式中,运动矢量集合可以具有基数2,并且运动信息可以包括第一运动矢量、对应于第一运动矢量的第一参考帧标识符、第二运动矢量以及对应于第二运动矢量的第二参考帧标识符。可以使用运动矢量的其它基数。可以使用参考帧的其它基数。在一些实现方式中,参考帧或参考帧中的一个或多个可以为替代参考帧,例如构造的参考帧,其可以是除可显示参考帧以外的参考帧。
105.尽管在图7中未单独示出,但是使用具有隐式模型700的帧间-帧内预测来进行解码可以包括标识帧间-帧内预测模型。例如,在720处获得用信号发送的块数据可以包括从编码比特流解码(诸如熵解码)指示帧间-帧内预测模型的帧间-帧内预测模型标识符。例如,可以从当前块的标头解码帧间-帧内预测模型标识符。在一些实现方式中,帧间-帧内预测模型标识符可以是帧间-帧内预测模型的索引的或有序的集合的索引值。
106.在730处,可以获得一个或多个空间块-上下文像素,诸如空间块-上下文像素集合。空间块-上下文像素可以是来自当前重构帧的像素,诸如来自当前重构帧的先前解码、重构或两者的像素。可以根据相对于当前块的限定的空间定向来标识空间块-上下文像素。空间块-上下文像素可以与用于当前块的帧内预测的因果帧内预测区域相对应。所限定的定向可以指示空间块-上下文像素被定向为接近(诸如相邻或邻近)当前帧或图块中的当前块。例如,空间块-上下文像素可以包括来自当前块上方的一个或多个块、当前块左侧的一个或多个块、当前块上方和左侧的一个或多个块或它们的组合的像素。可以使用空间块-上下文像素相对于当前帧或图块中的当前块的其它定向。标识空间块-上下文像素可以类似于标识用于帧内预测的上下文像素,除了如本文所描述的或者如从上下文中以其它方式清楚的。在示例中,空间块-上下文像素可以是来自当前块上方的四个最近相邻行的像素、来自当前块左侧的四个最近相邻列的像素以及来自当前块上方和左侧的四个最近相邻行和列的像素。图9中示出了获得空间块-上下文像素的示例。在一些实现方式中,使用具有隐式模型700的帧间-帧内预测来进行解码可以省略获得或以其它方式访问当前块的帧内预测像素。
107.在一些实现方式中,可以从编码比特流中提取(诸如解码或以其它方式访问)描述空间块-上下文像素集合的信息,这些信息可以包括描述空间块-上下文像素集合的基数的信息、指示空间块-上下文像素集合或其相应像素的定向或相对位置的信息或两者。在一些实现方式中,帧间-帧内预测模型标识符可以与空间块-上下文像素集合的限定的描述相关
联。
108.在740处,可以生成一个或多个帧间预测块,诸如帧间预测块集合。可以使用一个或多个运动矢量(例如在720处标识的运动矢量)生成一个或多个帧间预测块。可以使用一个或多个参考帧(诸如在720处标识的参考帧)来生成该一个或多个帧间预测块。可以基于来自如由相应运动矢量在空间上标识的相应参考帧的样本来生成该一个或多个帧间预测块,这可以包括使用参考帧的像素值内插或以其它方式导出帧间预测块的像素值。帧间预测块或相应帧间预测块的块尺寸可以与当前块的块尺寸相对应。
109.生成一个或多个帧间预测块可以包括生成一个或多个参考块-上下文像素组,诸如参考块-上下文像素组的集合,其中,参考块-上下文像素组包括根据所限定的空间定向,与相应的帧间预测块相对应的、相对于相应的帧间预测块定向的参考块-上下文像素集合。生成参考块-上下文像素(其可以包括生成内插的或以其它方式导出的参考块-上下文像素值)可以类似于生成帧间预测块,不同之处在于参考块-上下文像素可以根据限定的空间定向相对于相应的帧间预测块定向。所限定的空间定向可以是用于在730处获得空间块-上下文像素的所限定的空间定向。在示例中,参考块-上下文像素可以基于来自参考帧的像素来生成,所述参考帧的所述像素在空间上靠近由根据限定的空间定向的对应运动矢量标识的参考帧的部分,诸如来自由对应运动矢量标识的参考帧的部分上方的四个最近相邻行的像素、来自由对应运动矢量标识的参考帧的部分左侧的四个最近相邻列的像素,以及来自由对应运动矢量标识的参考帧的部分的上方和左侧的四个最近相邻行和列的像素。与相应的运动矢量和参考帧相对应的参考块-上下文像素集合的基数和空间模式可以等同于空间块-上下文像素集合的基数和空间模式。图9中示出了获得参考块-上下文像素的示例。
110.例如,当前块可以是32
×
32像素块。在730处获得的空间块-上下文像素可以定向在当前块的上方、左侧以及上方和左侧,并且可以包括来自重构帧中的当前块上方的四个最近行的128个像素、来自重构帧中的当前块左侧的四个最近列的128个像素,以及来自重构帧中的当前块上方和左侧的四个最近行和列的16个像素。运动矢量集合可以具有基数1并且可以包括与第一参考帧相关联的第一运动矢量。可以根据第一运动矢量和第一参考帧生成第一帧间预测块,其可以包括生成第一帧间预测块,其可以是32
×
32帧间预测块,并且可以包括生成参考块-上下文像素,其可以包括第一帧间预测块上方的四个最近行的128个像素、第一帧间预测块左侧的四个最近列的128个像素,以及来自第一帧间预测块上方和左侧的四个最近行和列的16个像素。
111.在750处,可以获得一个或多个帧间-帧内预测参数,诸如帧间-帧内预测参数集合。可以使用在730处获得的空间块-上下文像素和在740处生成的参考块-上下文像素来获得一个或多个帧间-帧内预测参数。获得一个或多个帧间-帧内预测参数可以包括将空间块-上下文像素与参考块-上下文像素进行比较。获得一个或多个帧间-帧内预测参数可以包括通过使用空间块-上下文像素和参考块-上下文像素求解最小二乘问题来生成一个或多个帧间-帧内预测参数。求解最小二乘问题可以概率性地确定使由参考块-上下文像素预测的空间块-上下文像素中的误差最小化的一个或多个帧间-帧内预测参数。
112.获得一个或多个帧间-帧内预测参数可以包括获得一个或多个混合参数,诸如混合参数集合。混合参数集合的基数可以是运动矢量集合的基数,其可以是帧间预测块集合的基数,其可以是参考块-上下文像素组的集合的基数。例如,运动矢量集合的基数可以是
1,帧间预测块集合的基数可以是1,参考块-上下文像素组的集合的基数可以是1,并且混合参数集合的基数可以是1,其可以包括第一混合参数(α)。在另一示例中,运动矢量集合的基数可以是2,帧间预测块集合的基数可以是2,参考块-上下文像素组的集合的基数可以是2,并且混合参数集合的基数可以是2,其可以包括第一混合参数(α)和第二混合参数(β)。在一些实现方式中,混合参数集合的基数可以不同于运动矢量集合的基数、帧间预测块集合的基数和参考块-上下文像素组的集合的基数。例如,运动矢量集合的基数可以是2,帧间预测块集合的基数可以是2,参考块-上下文像素组的集合的基数可以是2,而混合参数集合的基数可以是1,其可以包括第一混合参数(α)。
113.获得一个或多个帧间-帧内预测参数可以包括获得偏移(δ)。
114.例如,求解最小二乘问题以获得第一混合参数(α)和偏移(δ)可以包括:确定参考块-上下文像素中的像素值的总和(sx),确定空间块-上下文像素中的像素值的总和(sy),确定参考块-上下文像素中的像素值的平方的总和(sx2),确定对应的参考块-上下文像素和空间块-上下文像素的像素值的相应乘积的总和(sxy),确定空间块-上下文像素(或参考块-上下文像素)中的像素的基数(n),其中,确定第一混合参数(α)和偏移(δ)可以表示如下:
115.α=(n*sxy-sx*sy)/(sx2*n-sx*sx),
116.δ=(-sx*sxy sx2*sy)/(sx2*n-sx*sx).方程式1
117.在另一示例中,求解最小二乘问题以获得第一混合参数(α)和偏移(δ)可以包括标识参考块-上下文像素中的参考块-上下文像素(u)的值,标识空间块-上下文像素中的空间块-上下文像素(z)的值,其中,参考块-上下文像素(u)相对于帧间预测块的定向等同于空间块-上下文像素(z)相对于当前块的定向,使得空间块-上下文像素(z)近似为,诸如在所限定的阈值内、等于将偏移(δ)与第一混合参数(α)乘以参考块-上下文像素(u)的乘积相加的总和,其可以表示如下:
[0118][0119]
为了简单和清楚起见,参考块-上下文像素中的参考块-上下文像素(u)和空间块-上下文像素中的空间块-上下文像素(z)在本文中可以被称为共同定向的,以指示参考块-上下文像素(ui)相对于帧间预测块的定向(i)等同于空间块-上下文像素(zi)相对于当前块的定向。参考块-上下文像素(ui)和空间块-上下文像素(zi)的共同定向的集合或对可以表示为{ui,zi}。对于空间块-上下文像素和参考块-上下文像素的相应像素,方程式2可以以矩阵矢量形式表示如下:
[0120][0121]
对于具有基数(n)的空间块-上下文像素或参考块-上下文像素的集合,可以指示n
×
1矢量,(p)可以指示n
×
2矩阵。例如,诸如在图9所示的示例中,当前块可以是w
×
h块,空间块-上下文像素可以包括相对于当前块均匀地位于上方、左侧以及上方和左侧的每
行或每列的b个像素,如图9的920处所示,参考块-上下文像素可以包括相对于帧间预测块均匀地位于上方、左侧以及上方和左侧的每行或每列的b个像素,如图9的950处、980处所示,并且空间块-上下文像素或参考块-上下文像素的基数(n)可以表示如下:
[0122]
n=b(w h b).方程式4
[0123]
获得第一混合参数(α)和偏移(δ)的误差最小化最小二乘估计可以表示如下:
[0124][0125]
在另一示例中,求解最小二乘问题以获得第一混合参数(α)、第二混合参数(β)和偏移(δ)可以包括:标识第一参考块-上下文像素集合中的第一参考块-上下文像素(u)的值、标识第二参考块-上下文像素集合中的第二参考块-上下文像素(v)的值、标识空间块-上下文像素中的空间块-上下文像素(z)的值,其中,所述第一参考块-上下文像素(u)相对于对应的第一帧间预测块的定向等同于所述第二参考块-上下文像素(v)相对于对应的第二帧间预测块的定向,并且等同于所述空间块-上下文像素(z)相对于所述当前块的定向,使得所述空间块-上下文像素(z)近似为(诸如在所限定的阈值内)等于将所述偏移(δ)与所述第一混合参数(α)乘以所述参考块-上下文像素(u)的乘积相加的总和,其可以表示如下:
[0126][0127]
第一参考块-上下文像素(ui)、第二参考块-上下文像素(vi)和空间块-上下文像素(zi)的共同定向的集合或三元组(为了简单起见,在本文中也可以称为一对)可以被表示为{ui,vi,zi}。对于第一空间块-上下文像素、第二空间块-上下文像素和参考块-上下文像素的相应像素,方程式6可以以矩阵矢量形式表示如下:
[0128][0129]
对于具有基数(n)的空间块-上下文像素集合或相应的参考块-上下文像素集合,可以指示n
×
1矢量,(p)可以指示n
×
3矩阵。
[0130]
获得第一混合参数(α)、第二混合参数(β)和偏移(δ)的误差最小化最小二乘估计可以表示如下:
[0131][0132]
可以使用最小二乘问题的其它解,诸如使用机器学习模型(诸如神经网络)的解。
[0133]
获得一个或多个帧间-帧内预测参数可以包括获得一个或多个递归因子,诸如递归因子集合。例如,递归因子集合可以包括三个递归因子(γ
10
,γ
01
,γ
11
)。
[0134]
可以在760处生成预测块。可以基于帧间预测块集合、空间块-上下文像素集合、帧间-帧内预测参数集合或它们的组合来生成预测块。生成预测块可以包括针对当前块的相应像素或像素位置生成相应预测因子或预测像素。图8中示出了生成预测块的示例。
[0135]
可以在770处生成重构块。在770处产生重构块可以包括从编码比特流解码残差块。在770处生成重构块可以包括组合预测块和残差块以获得重构块。例如,可以使用对应的预测因子与对应的残差像素的总和来确定重构块的当前像素的值。
[0136]
可以在780处输出重构块。例如,重构块可以被包括在重构帧中,并且重构帧可以诸如经由图5所示的输出视频流504被输出,诸如用于呈现给用户。尽管在图7中未明确示出,但是生成重构块或重构帧可以包括滤波,诸如图5中的560处所示的滤波。
[0137]
使用具有隐式模型700的帧间-帧内预测来进行解码的其它实现方式是可用的。例如,可以使用运动矢量或递归因子的其它基数。
[0138]
图8是根据本公开的实现方式的使用具有隐式模型的帧间-帧内预测800生成用于代码化(诸如编码或解码)的预测块的示例的流程图。使用具有隐式模型800的帧间-帧内预测生成用于代码化的预测块可以在解码器(诸如图5所示的解码器500)或编码器(诸如图4所示的编码器400)中实现。
[0139]
如图8所示,使用具有隐式模型800的帧间-帧内预测生成用于代码化的预测块包括在810处标识当前块的当前像素,在820处标识与当前像素相对应的一个或多个帧间预测像素,在830处获得用于当前像素的预测因子,以及在840处将预测因子包括在预测块中。
[0140]
可以在810处标识当前块的当前像素。当前块可以是用于重构的当前块,诸如如图7中的710处所示的所标识的当前块。当前像素可以是除来自当前块的先前重构像素以外的像素。例如,当前像素可以是沿着当前块的一个或多个边缘或边界的来自当前块的像素,例如当前块的左上像素。在另一示例中,当前像素可以邻近于来自当前块的一个或多个先前重构的像素,诸如来自当前块的先前重构的像素,其在限定的方向上邻近于当前像素,诸如在当前像素的左侧或上方。标识当前像素可以包括标识对应于当前像素的像素位置。
[0141]
可以在820处标识对应于当前像素的一个或多个帧间预测像素,诸如帧间预测像素集合。例如,如图7中的740处所示的生成的帧间预测块集合可以具有基数1并且可以包括第一帧间预测块,并且可以标识相应块内的在空间上对应于当前像素的一个帧间预测像素。在另一示例中,如图7中的740处所示而产生的帧间预测块集合可以具有基数2,可以包括第一帧间预测块和第二帧间预测块,可以从第一帧间预测块标识相应块内的在空间上对应于当前像素的第一帧间预测像素,并且可以从第二帧间预测块标识相应块内的在空间上对应于当前像素的第二帧间预测像素。
[0142]
在830处,可以获得当前像素的预测因子。
[0143]
在一些实现方式中,第一帧间-帧内预测模型可以包括使用一个运动矢量和一个混合参数。第一帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数、确定偏移和确定递归因子。根据第一帧间-帧内预测模型,可以获得当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j])作为帧间预测像素(p
inter1
[i,j])和混合参数(α)的乘积,其可以表示如下:
[0144]
p[i,j]=α.p
inter1
[i,j],
[0145]
在一些实现方式中,第二帧间-帧内预测模型可以包括使用一个运动矢量、一个混
合参数(α)和偏移(δ)。第二帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数和确定递归因子。根据第二帧间-帧内预测模型,可以获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j])作为偏移(δ)与帧间预测像素(p
inter1
[i,j])和混合参数(α)的乘积的总和,其可以表示如下:
[0146]
p[i,j]=α.p
inter1
[i,j] δ,
[0147]
在一些实现方式中,第三帧间-帧内预测模型可以包括使用两个运动矢量和一个混合参数。第三帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数、确定偏移和确定递归因子。根据第三帧间-帧内预测模型,可以获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j]),作为来自与第一运动矢量对应的第一帧间预测块的第一帧间预测像素(p
inter1
[i,j])和混合参数(α)的乘积和来自与第二运动矢量对应的第二帧间预测块的第二帧间预测像素(p
inter2
[i,j])与1和混合参数(α)之间的差的乘积的总和,其可以表示如下:
[0148]
p[i,j]=α.p
inter1
[i,j] 1-α.p
inter2
[i,j].
[0149]
在一些实现方式中,第四帧间-帧内预测模型可以包括使用两个运动矢量、一个混合参数(α)和偏移(δ)。第四帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数和确定递归因子。根据第四帧间-帧内预测模型,可以获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j]),作为偏移(δ)、来自与第一运动矢量对应的第一帧间预测块的第一帧间预测像素(p
inter1
[i,j])和混合参数(α)的乘积和来自与第二运动矢量对应的第二帧间预测块的第二帧间预测像素(p
inter2
[i,j])与1和混合参数(α)之间的差的乘积的总和,其可以表示如下:
[0150]
p[i,j]=α.p
inter1
[i,j] 1-α.p
inter2
[i,j] δ,
[0151]
在一些实现方式中,第五帧间-帧内预测模型可以包括使用两个运动矢量和两个混合参数(α,β)。第五帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数、确定偏移和确定递归因子。根据第五帧间-帧内预测模型,可以获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j]),作为来自与第一运动矢量对应的第一帧间预测块的第一帧间预测像素(p
inter1
[i,j])和第一混合参数(α)的乘积和来自与第二运动矢量对应的第二帧间预测块的第二帧间预测像素(p
inter2
[i,j])与第二混合参数(β)的乘积的总和,其可以表示如下:
[0152]
p[i,j]=α.p
inter1
[i,j] β.p
inter2
[i,j],
[0153]
在一些实现方式中,第六帧间-帧内预测模型可以包括使用两个运动矢量、两个混合参数(α,β)和偏移(δ)。第六帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数和确定递归因子。根据第六帧间-帧内预测模型,可以获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j]),作为偏移(δ)、来自与第一运动矢量对应的第一帧间预测块的第一帧间预测像素(p
inter1
[i,j])和混合参数(α)的乘积和来自与第二运动矢量对应的第二帧间预测块的第二帧间预测像素(p
inter2
[i,j])与第二混合参数(β)的乘积的总和,其可以表示如下:
[0154]
p[i,j]=α.p
inter1
[i,j] β.p
inter2
[i,j] δ,
[0155]
在一些实现方式中,第七帧间-帧内预测模型(其可以是自适应滤波帧间-帧内预测的示例)可以包括使用一个运动矢量、一个混合参数及一个或多个递归因子,诸如递归因
子集合。第七帧间-帧内预测模型可以省略使用其它运动矢量、确定其它混合参数及确定偏移。根据第七帧间-帧内预测模型,获得用于当前像素(其可以是来自当前块的第i行和第j列中的像素)的预测因子(p[i,j])可以包括获得帧间预测像素(p
inter1
[i,j])的第一乘积。根据第七帧间-帧内预测模型,获得用于当前像素的预测因子(p[i,j])可以包括:根据相对于当前像素的所限定的定向,获得第一递归因子(γ
10
)和来自当前帧(诸如来自当前块)的第一先前再生的可用像素-上下文像素的第二乘积。例如,第一可用像素-上下文像素可以是来自当前帧的紧接在当前像素上方的先前再生的像素,其可以是来自当前块(p[i-1,j])的先前再生的像素。根据第七帧间-帧内预测模型,获得用于当前像素的预测因子(p[i,j])可以包括:根据相对于当前像素的限定的定向,获得第二递归因子(γ
01
)和来自当前帧(诸如来自当前块)的第二先前再生的可用像素-上下文像素的第三乘积。例如,第二可用像素-上下文像素可以是来自当前帧的紧接在当前像素左侧的先前再生的像素,其可以是来自当前块(p[i,j-1])的先前再生的像素。根据第七帧间-帧内预测模型,获得用于当前像素的预测因子(p[i,j])可以包括:根据相对于当前像素的所限定的定向,获得第三递归因子(γ
11.
)和来自当前帧(诸如来自当前块)的第三先前再生的可用像素-上下文像素的第四乘积。例如,第二可用像素-上下文像素可以是来自当前帧的紧接在当前像素左侧的先前再生的像素,其可以是来自当前块(p[i-1,j-1])的先前再生的像素。根据第七帧间-帧内预测模型,获得用于当前像素的预测因子(p[i,j])可以包括获得第一乘积、第二乘积、第三乘积和第四乘积的总和作为预测因子。根据第七帧间-帧内预测模型,获得用于当前像素的预测因子(p[i,j])可以表示如下:
[0156]
p[i,j]=α.p
inter1
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
.p[i-1,j-1].
[0157]
尽管本文描述的示例包括具有基数为3的递归因子集合和具有基数为3的先前再生的可用像素-上下文像素集合,但是可以使用递归因子和先前再生的可用像素-上下文像素的其它基数。
[0158]
在一些实现方式中,第八帧间-帧内预测模型可以类似于第七帧间-帧内预测模型,不同之处在于可以使用偏移(δ),其可以表示如下:
[0159]
p[i,j]=α.p
inter1
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
.p[i-1,j-1] δ.
[0160]
在一些实现方式中,第九帧间-帧内预测模型可以类似于第七帧间-帧内预测模型,不同之处在于可以使用两个运动矢量和两个对应的帧间预测块(p
inter1
,p
inter2
),其可以表示如下:
[0161]
p[i,j]=α.p
inter1
[i,j] 1-α.p
inter2
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
.p[i-1,j-1].
[0162]
在一些实现方式中,第十帧间-帧内预测模型可以类似于第九帧间-帧内预测模型,不同之处在于可以使用偏移(δ),其可以表示如下:
[0163]
p[i,j]=α.p
inter1
[i,j] 1-α.p
inter2
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
.p[i-1,j-1] δ.
[0164]
在一些实现方式中,第十一帧间-帧内预测模型可以类似于第九帧间-帧内预测模型,不同之处在于可以使用两个混合参数(α,β),其可以表示如下:
[0165]
p[i,j]=α.p
inter1
[i,j] β.p
inter2
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
.p[i-1,j-1].
[0166]
在一些实现方式中,第十二帧间-帧内预测模型可以类似于第十一帧间-帧内预测模型,不同之处在于可以使用偏移(δ),其可以表示如下:
[0167]
p[i,j]=α.p
inter1
[i,j] β.p
inter2
[i,j] γ
10
.p[i-1,j] γ
01
.p[i,j-1] γ
11
·
p[i-1,j-1] δ.
[0168]
在840处,预测因子可以被包括在预测块中。获得预测块可以包括获得用于当前块的像素的相应预测因子,如845处的虚线方向线所示。
[0169]
图9是根据本公开的实现方式的用于使用具有隐式模型900的帧间-帧内预测进行代码化的图像元素的示例的框图,诸如图10所示的使用具有隐式模型700的帧间-帧内预测进行解码或使用具有隐式模型1000的帧间-帧内预测进行编码。
[0170]
图9示出了当前帧的当前块910(p[])。当前块910包括当前像素912、紧接在当前像素912上方的第一像素-上下文像素914、紧接在当前像素912左侧的第二像素-上下文像素916以及紧接在当前像素912上方和左侧的第三像素-上下文像素918。像素-上下文像素914、916、918根据第一限定的定向(诸如限定的像素-上下文定向)相对于当前像素912定向。可以使用像素-上下文像素的其它基数和定向。可以使用相对于当前像素的笛卡尔坐标来参考块(诸如当前块910)的像素。例如,当前像素912可以被表示为p[i,j],其可以是如所示的p[1,1]。第一像素-上下文像素914可以被表示为p[i-1,j],其可以是如所示的p[0,1]。第二像素-上下文像素916可以被表示为p[i,j-1],其可以是如所示的p[1,0]。第三像素-上下文像素918可以被表示为p[i-1,j-1],其可以是如所示的p[0,0]。在一些实现方式(未明确示出)中,当前像素可以与当前块的边界相邻,诸如当前块的左上像素,并且可以从当前块外部(诸如从与当前帧中的当前块相邻的块)获得像素-上下文像素中的一个或多个。
[0171]
图9示出了空间块-上下文像素920。如图9所示,空间块-上下文像素包括来自当前帧的在当前块正上方的四行的像素、来自当前帧的在当前块正左侧的四列的像素以及来自当前帧的在当前块正上方和正左侧的四列和四行的像素。空间块-上下文像素920可以是来自当前帧的除当前块之外的块的先前重构的像素。空间块-上下文像素920根据第二限定的定向(诸如限定的块-上下文定向)相对于当前块910定向。可以使用空间块-上下文像素920的其它基数和定向。可以使用相对于当前块(诸如相对于当前块的左上像素)的笛卡尔坐标来参考空间块-上下文像素920。例如,空间块-上下文像素920的左上处的空间块-上下文像素可以被表达为p[i-4,j-4]。
[0172]
图9示出了第一运动矢量930。图9示出了第一帧间预测块940,其可以从由第一运动矢量930指示的第一参考帧(未单独示出)的一部分获得,诸如内插或以其它方式导出。图9示出了第一帧间预测块940上方、左侧以及上方和左侧的第一参考块-上下文像素950。可以类似于第一帧间预测块940获得第一参考块-上下文像素950,诸如从由第一运动矢量指示的第一参考帧的一部分内插或以其它方式导出,不同之处在于第一参考块-上下文像素950根据第二限定的定向相对于第一帧间预测块940定向。可以使用相对于当前块(诸如相对于当前块的左上像素)的笛卡尔坐标来参考第一参考块-上下文像素950。例如,在第一参考块-上下文像素950的左上处的参考块-上下文像素可以被表示为p
inter1
[i-4,j-4]。
[0173]
图9示出了第二运动矢量960。图9示出了第二帧间预测块970,其可以从由第二运动矢量960指示的第二参考帧(未单独示出)的一部分获得,诸如内插或以其它方式导出。图9示出了第二帧间预测块970上方、左侧以及上方和左侧的第二参考块-上下文像素980。可
以类似于第二帧间预测块970获得第二参考块-上下文像素980,诸如从由第二运动矢量指示的第二参考帧的一部分内插或以其它方式导出,不同之处在于第二参考块-上下文像素980根据第二限定的定向相对于第二帧间预测块970定向。可以使用相对于当前块(诸如相对于当前块的左上像素)的笛卡尔坐标来参考第二参考块-上下文像素980。例如,在第二参考块-上下文像素980的左上的参考块-上下文像素可以被表示为p
inter2
[i-4,j-4]。
[0174]
图10是根据本公开的实现方式的使用具有隐式模型1000的帧间-帧内预测来进行编码的示例的流程图。使用具有隐式模型1000的帧间-帧内预测来进行编码可以在诸如图4所示的编码器400的编码器中实现。使用具有隐式模型1000的帧间-帧内预测来进行编码可以类似于使用具有隐式模型700的帧间-帧内预测来进行解码,除了如本文所述或如从上下文中另外清楚的。
[0175]
如图10所示,使用具有隐式模型1000帧间-帧内预测来进行编码包括在1010处标识当前块,在1020处生成帧间预测数据,在1030处获得一个或多个空间块-上下文像素,在1040处获得一个或多个帧间-帧内预测参数,在1050处生成预测块,在1060处生成残差块,以及在1070处输出。
[0176]
尽管在图10中未明确示出,但是使用具有隐式模型1000的帧间-帧内预测来进行编码可以包括获得输入视频流的至少一部分。尽管在图10中未明确示出,但是使用具有隐式模型1000的帧间-帧内预测来进行编码可以包括标识要编码的当前帧,诸如输入视频流的输入帧。当前帧可以是视频序列(诸如图3中所示的视频序列310)的帧(诸如图3中所示的帧330)。尽管被描述为帧,但是当前帧可以是帧的一部分,诸如图块,诸如图3中所示的图块340中的一个。尽管在图10中未明确示出,但是使用具有隐式模型1000的帧间-帧内预测来进行编码可以包括基于当前帧的先前编码部分来生成用于当前帧的重构帧的一部分。标识当前帧可以包括标识重构帧的一个或多个先前编码、重构或两者的部分,诸如块。
[0177]
尽管在图10中未单独示出,但是使用具有隐式模型1000的帧间-帧内预测来进行编码可以包括标识帧间-帧内预测模型,这可以包括标识指示或标识帧间-帧内预测模型的帧间-帧内预测模型标识符。在一些实现方式中,可以使用速率-失真优化来标识帧间-帧内预测模型。
[0178]
可以在1010处标识当前块。当前块可以是当前帧的块,诸如除了先前编码的块之外的块。例如,当前块可以是诸如图6中所示的块610的块。
[0179]
在1020处,可以生成用于当前块的帧间预测数据。生成帧间预测数据可以包括生成用于当前块的帧间预测的一个或多个运动矢量,诸如帧间预测运动矢量集合。相应运动矢量可以与对应参考帧相关联。参考帧可以针对相应运动矢量指示对应参考帧,诸如来自视频序列的先前编码、重构或两者的帧。
[0180]
在1020处,可以生成一个或多个帧间预测块,诸如帧间预测块集合。可以使用一个或多个运动矢量(例如在1020处标识的运动矢量)生成一个或多个帧间预测块。可以使用一个或多个参考帧(诸如在1020处标识的参考帧)来生成一个或多个帧间预测块。运动矢量可以与对应参考帧相关联。可以基于来自如由相应运动矢量在空间上标识的相应参考帧的样本来生成一个或多个帧间预测块,这可以包括使用参考帧的像素值内插或以其它方式导出用于帧间预测块的像素值。帧间预测块或相应帧间预测块的块尺寸可以与当前块的块尺寸相对应。
[0181]
生成一个或多个帧间预测块可以包括生成一个或多个参考块-上下文像素组,诸如参考块-上下文像素组的集合,其中,参考块-上下文像素组包括根据所限定的空间定向,与相应的帧间预测块相对应的、相对于相应的帧间预测块定向的参考块-上下文像素集合。生成参考块-上下文像素(其可以包括生成内插的或以其它方式导出的参考块-上下文像素值)可以类似于生成帧间预测块,不同之处在于参考块-上下文像素可以根据限定的空间定向相对于相应的帧间预测块定向。所限定的空间定向可以是用于在1030处获得空间块-上下文像素的所限定的空间定向。在示例中,参考块-上下文像素可以基于来自参考帧的像素来生成,所述参考帧的所述像素在空间上靠近由根据限定的空间定向的对应运动矢量标识的参考帧的部分,诸如来自由对应运动矢量标识的参考帧的部分上方的四个最近相邻行的像素、来自由对应运动矢量标识的参考帧的部分左侧的四个最近相邻列的像素,以及来自由对应运动矢量标识的参考帧的部分的上方和左侧的四个最近相邻行和列的像素。与相应的运动矢量和参考帧相对应的参考块-上下文像素集合的基数和空间模式可以等同于空间块-上下文像素集合的基数和空间模式。图9中示出了获得参考块-上下文像素的示例。
[0182]
在1030处,可以获得一个或多个空间块-上下文像素,诸如空间块-上下文像素集合。空间块-上下文像素可以是来自当前重构帧的像素,诸如来自当前重构帧的先前编码、重构或两者的像素。可以根据相对于当前块的限定的空间定向来标识空间块-上下文像素。空间块-上下文像素可以与用于当前块的帧内预测的因果帧内预测区域相对应。所限定的定向可以指示空间块-上下文像素被定向为接近(诸如邻近)当前块。例如,空间块-上下文像素可以包括来自当前块上方的一个或多个块、当前块左侧的一个或多个块、当前块上方和左侧的一个或多个块或它们的组合的像素。可以使用空间块-上下文像素相对于当前块的其它定向。标识空间块-上下文像素可以类似于标识用于帧内预测的上下文像素,除了如本文所描述的或者如从上下文中以其它方式清楚的。在示例中,空间块-上下文像素可以是来自当前块上方的四个最近相邻行的像素、来自当前块左侧的四个最近相邻列的像素以及来自当前块上方和左侧的四个最近相邻行和列的像素。图9中示出了获得空间块-上下文像素的示例。在一些实现方式中,使用具有隐式模型1000的帧间-帧内预测来进行编码可以省略获得或以其它方式访问当前块的帧内预测像素。
[0183]
在1040处,可以获得一个或多个帧间-帧内预测参数,诸如帧间-帧内预测参数集合。可以使用在1030处获得的空间块-上下文像素和在1020处生成的参考块-上下文像素来获得一个或多个帧间-帧内预测参数。获得一个或多个帧间-帧内预测参数可以包括将空间块-上下文像素与参考块-上下文像素进行比较。获得一个或多个帧间-帧内预测参数可以包括通过使用空间块-上下文像素和参考块-上下文像素求解最小二乘问题来生成一个或多个帧间-帧内预测参数。求解最小二乘问题可以概率性地确定使由参考块-上下文像素预测的空间块-上下文像素中的误差最小化的一个或多个帧间-帧内预测参数。
[0184]
获得一个或多个帧间-帧内预测参数可以包括获得一个或多个混合参数,诸如混合参数集合。混合参数集合的基数可以是运动矢量集合的基数,其可以是帧间预测块集合的基数,其可以是参考块-上下文像素组的集合的基数。例如,运动矢量集合的基数可以是1,帧间预测块集合的基数可以是1,参考块-上下文像素组的集合的基数可以是1,并且混合参数集合的基数可以是1,其可以包括第一混合参数(α)。在另一示例中,运动矢量集合的基数可以是2,帧间预测块集合的基数可以是2,参考块-上下文像素组的集合的基数可以是2,
并且混合参数集合的基数可以是2,其可以包括第一混合参数(α)和第二混合参数(β)。在一些实现方式中,混合参数集合的基数可以不同于运动矢量集合的基数、帧间预测块集合的基数和参考块-上下文像素组的集合的基数。例如,运动矢量集合的基数可以是2,帧间预测块集合的基数可以是2,参考块-上下文像素组的集合的基数可以是2,而混合参数集合的基数可以是1,其可以包括第一混合参数(α)。
[0185]
获得一个或多个帧间-帧内预测参数可以包括获得偏移(δ)。
[0186]
获得一个或多个帧间-帧内预测参数可以包括获得一个或多个递归因子,诸如递归因子集合。例如,递归因子的集合可以包括三个递归因子(γ
10
,γ
01
,γ
11
)。
[0187]
可以在1050处生成预测块。可以基于帧间预测块集合、空间块-上下文像素集合、帧间-帧内预测参数集合或它们的组合来生成预测块。生成预测块可以包括针对当前块的相应像素或像素位置生成相应预测因子或预测像素。图8中示出了生成预测块的示例。
[0188]
可以在1060处生成残差块。在1060处生成残差块可以包括从当前块减去预测块以获得残差块。例如,可以使用从对应的输入像素减去对应的预测因子的差来确定残差块的当前像素的值。
[0189]
可以在1070处输出编码比特流。例如,残差块可以被包括在编码比特流中并且在1070处输出,其可以包括熵代码化残差块。一个或多个运动矢量可以被包括在编码比特流中并且在1070处输出,其可以包括熵代码化一个或多个运动矢量。指示与相应运动矢量相关联的参考帧的信息可以被包括在编码比特流中并且在1070处输出,其可以包括对参考帧信息进行熵编码。帧间-帧内预测模型标识符可以被包括在编码比特流中并且在1070处输出,这可以包括对帧间-帧内预测模型标识符进行熵代码化。
[0190]
如本文所使用的,术语“最佳”、“被优化”、“优化”或其其它形式是相对于相应的上下文的,并且不指示绝对理论优化,除非本文明确指定。
[0191]
如本文所用,术语“集合”表示零个或多个不同元件或构件的可区分集合或分组,其可以被表示为一维阵列或矢量,除非本文明确描述或从上下文中清楚可见。
[0192]
词语“示例”或“示例性”在本文中用于表示用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式呈现概念。如本技术中所使用的,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚,否则“x包括a或b”旨在表示任何自然的包括性排列。也就是说,如果x包括a;x包括b;或者x包括a和b两者,则在任何前述情况下满足“x包括a或b”。此外,本技术和所附权利要求中使用的冠词“一”和“一个”通常应被解释为表示“一个或多个”,除非另有说明或从上下文中清楚地指向单数形式。此外,贯穿全文使用术语“实施例”或“一个实施例”或“实现方式”或“一个实现方式”并不旨在表示相同的实施例或实现方式,除非如此描述。如本文所使用的,术语“确定”和“标识”或其任何变型包括使用图1所示的一个或多个设备以任何方式选择、查明、计算、查找、接收、确定、建立、获得或以其它方式标识或确定。
[0193]
此外,为了简化说明,尽管本文的附图和描述可以包括步骤或阶段的序列或系列,但是本文公开的方法的元素可以以各种顺序和/或同时发生。另外,本文公开的方法的元素可以与本文未明确呈现和描述的其它元素一起发生。此外,可以从根据所公开的主题的方法的实现方式中省略本文描述的方法的一个或多个元素。
[0194]
发送计算和通信设备100a和/或接收计算和通信设备100b的实现方式(以及存储在其上和/或由其执行的算法、方法、指令等)可以以硬件、软件或它们的任意组合来实现。硬件可以包括例如计算机、知识产权(ip)核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地涵盖任何前述硬件。术语“信号”和“数据”可以互换地使用。此外,发送计算和通信设备100a和接收计算和通信设备100b的部分不一定必须以相同的方式实现。
[0195]
此外,在一个实现方式中,例如,发送计算和通信设备100a或接收计算和通信设备100b可以使用计算机程序来实现,该计算机程序在被执行时执行本文描述的任何相应的方法、算法和/或指令。另外或替代地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文描述的任何方法、算法或指令的专用硬件。
[0196]
发送计算和通信设备100a和接收计算和通信设备100b可以例如在实时视频系统中的计算机上实现。可替代地,发送计算和通信设备100a可以在服务器上实现,而接收计算和通信设备100b可以在与服务器分离的设备(诸如手持通信设备)上实现。在这种情况下,发送计算和通信设备100a可以使用编码器400将内容编码为经编码的视频信号,并将经编码的视频信号发送到通信设备。进而,通信设备然后可以使用解码器500对经编码的视频信号进行解码。可替代地,通信设备可以解码本地存储在通信设备上的内容,例如,未由发送计算和通信设备100a发送的内容。其它合适的发送计算和通信设备100a以及接收计算和通信设备100b实现方案是可用的。例如,接收计算和通信设备100b可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
[0197]
此外,实现方式的全部或一部分可以采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是可以例如有形地包含、存储、通信或传输程序以供任何处理器使用或与任何处理器结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。其它合适的介质也是可用的。
[0198]
应当意识到,可以以任何方便的形式来实现各方面。例如,各方面可以通过适当的计算机程序来实现,该计算机程序可以在适当的载体介质上承载,该载体介质可以是有形载体介质(例如,磁盘)或无形载体介质(例如,通信信号)。各方面还可以使用合适的装置来实现,该装置可以采取运行被布置为实现本文公开的方法和/或技术的计算机程序的可编程计算机的形式。可以组合各方面,使得在一个方面的上下文中描述的特征可以在另一方面中实现。
[0199]
已经描述了上述实现方式以便允许容易地理解本技术不是限制性的。相反,本技术涵盖包括在所附权利要求的范围内的各种修改和等同布置,该范围应被赋予最广泛的解释,以便涵盖法律允许的所有这些修改和等同结构。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献