使用上下文树来代码化视频语法元素转让专利

申请号 : CN201880036471.4

文献号 : CN110731084B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 江劲涵韩敬宁许耀武

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

摘要 :

使用上下文树来代码化视频语法元素。识别用于代码化先前代码化的语法元素的上下文信息。通过基于所述上下文信息将先前代码化的语法元素分离为数据群组来产生上下文树。所述上下文树包括表示数据群组的节点。分离先前代码化的语法元素可以包括针对上下文信息的值应用分离准则以产生节点中的至少一些。接着识别上下文信息用于要代码化的另一语法元素集合。基于与另一语法元素集合中的一个语法元素相关联的上下文信息的值来识别上下文树的节点中的一个节点。接着根据与所识别的节点相关联的概率模型来代码化所述语法元素。上下文树可以用于编码或解码语法元素。

权利要求 :

1.一种用于解码编码视频帧的编码块的方法,所述方法包括;

通过以下操作来产生上下文树:

确定由于针对用于所述编码视频帧的先前解码块的第一语法元素的上下文信息应用分离准则而产生的第一候选成本抑减;

根据所述分离准则中的、导致所述第一候选成本抑减中的最高候选成本抑减的第一分离准则将所述语法元素分离成所述第一语法元素的第一群组和所述第一语法元素的第二群组;

确定由于针对用于所述第一群组的上下文信息应用所述分离准则而产生的第二候选成本抑减;

确定由于针对用于所述第二群组的上下文信息应用所述分离准则而产生的第三候选成本抑减;

响应于确定所述第二候选成本抑减中的最高候选成本抑减大于所述第三候选成本抑减中的最高候选成本抑减,根据所述分离准则中的、导致所述第二候选成本抑减中的最高候选成本抑减的第二分离准则而将所述第一群组分离成所述第一群组的第一子群组和所述第一群组的第二子群组;以及根据使用所述上下文树所识别的概率模型来解码所述编码块的第二语法元素。

2.根据权利要求1所述的方法,其中,所述上下文树包括:表示所述第一语法元素的第一节点;

表示所述第一群组的第二节点;

表示所述第二群组的第三节点;

表示所述第一子群组的第四节点;以及

表示所述第二子群组的第五节点,

其中,所述第一节点和所述第二节点是非叶节点,以及

其中,所述第三节点、所述第四节点和所述第五节点是叶节点。

3.根据权利要求2所述的方法,其中,所述上下文树的多个节点包括所述第一节点、所述第二节点、所述第三节点、所述第四节点和所述第五节点,所述方法进一步包括:基于与所述第二语法元素中的语法元素相关联的上下文信息来识别所述多个节点中的、表示包括所述第二语法元素中的所述语法元素的所述第一语法元素的群组或子群组的节点;以及使用所识别的节点来识别所述概率模型。

4.根据权利要求3所述的方法,其中,识别所述多个节点中的、表示包括所述第二语法元素中的所述语法元素的所述第一语法元素的群组的节点包括:针对与所述第二语法元素中的所述语法元素相关联的所述上下文信息应用所述第一分离准则或所述第二分离准则。

5.根据权利要求2所述的方法,进一步包括:

通过基于所述第二语法元素针对所述多个节点中的一个或多个节点重新计算成本抑减来更新所述上下文树;以及使用所更新的上下文树来解码第二编码块的第三语法元素。

6.根据权利要求1所述的方法,其中,根据所述分离准则中的、导致所述第一候选成本抑减中的最高候选成本抑减的第一分离准则将所述语法元素分离成所述第一群组和所述第二群组包括:响应于确定所述第一候选成本抑减中的最高候选成本抑减满足抑减阈值而将所述语法元素分离成所述第一群组和所述第二群组。

7.根据权利要求1所述的方法,其中,确定由于针对用于所述第一语法元素的所述上下文信息应用所述分离准则而产生的所述第一候选成本抑减包括:针对所述上下文树的节点执行广度优先搜索以识别表示所述第一语法元素的节点。

8.一种用于解码编码视频帧的编码块的设备,所述设备包括:存储器;以及

处理器,所述处理器被配置成执行存储在所述存储器中的指令,以:确定由于针对用于所述编码视频帧的先前解码块的第一语法元素的上下文信息应用分离准则而产生的第一候选成本抑减;

根据所述分离准则中的、导致所述第一候选成本抑减中的最高候选成本抑减的第一分离准则将所述语法元素分离成所述第一语法元素的第一群组和所述第一语法元素的第二群组;

确定由于针对用于所述第一群组的上下文信息应用所述分离准则而产生的第二候选成本抑减;

确定由于针对用于所述第二群组的上下文信息应用所述分离准则而产生的第三候选成本抑减;

将所述第二候选成本抑减中的最高候选成本抑减与所述第三候选成本抑减中的最高候选成本抑减进行比较以确定哪个更大;

响应于确定所述第二候选成本抑减中的最高候选成本抑减大于所述第三候选成本抑减中的最高候选成本抑减:根据所述分离准则中的、导致所述第二候选成本抑减中的最高候选成本抑减的第二分离准则而将所述第一群组分离成所述第一群组的第一子群组和所述第一群组的第二子群组;

产生包括表示所述第一语法元素、所述第一群组、所述第二群组、所述第一群组的所述第一子群组和所述第一群组的所述第二子群组的节点的上下文树;以及响应于确定所述第三候选成本抑减中的最高候选成本抑减大于所述第二候选成本抑减中的最高候选成本抑减:根据所述分离准则中的、导致所述第二候选成本抑减中的最高候选成本抑减的第三分离准则而将所述第二群组分离成所述第二群组的第一子群组和所述第二群组的第二子群组;以及产生包括表示所述第一语法元素、所述第一群组、所述第二群组、所述第二群组的所述第一子群组和所述第二群组的所述第二子群组的节点的上下文树;以及根据使用所述上下文树所识别的概率模型来解码所述编码块的第二语法元素。

9.根据权利要求8所述的设备,其中,所述指令包括用于以下操作的指令:基于与所述第二语法元素中的语法元素相关联的上下文信息来识别表示包括所述第二语法元素中的所述语法元素的所述第一语法元素的群组或子群组的节点;以及使用所识别的节点来识别所述概率模型。

10.根据权利要求9所述的设备,其中,用于识别表示包括所述第二语法元素中的所述语法元素的所述第一语法元素的群组或子群组的节点的指令包括用于以下操作的指令:针对与所述第二语法元素中的所述语法元素相关联的所述上下文信息应用所述分离准则中的分离准则。

11.根据权利要求8所述的设备,其中,用于熵解码所述第二语法元素中的语法元素的成本基于以下操作来计算:包括所述第二语法元素中的所述语法元素的所述第一语法元素的群组或子群组的熵成本函数;

具有正输出的大小惩罚函数,所述正输出随着所述第一语法元素的群组或子群组的大小而减小;以及所述大小惩罚函数的权重。

12.根据权利要求11所述的设备,其中,所述熵成本函数基于以下操作来计算:所述第一语法元素的群组或子群组中的数据的长度;以及所述第一语法元素的群组或子群组中包括的语法元素具有指定值的概率。

13.一种用于解码编码视频帧的编码块的方法,所述方法包括:根据使用上下文树所识别的概率模型来解码所述编码块的语法元素,所述上下文树包括:表示所述编码视频帧的先前解码块的语法元素的第一节点;

表示所述语法元素的第一群组的第二节点;

表示所述语法元素的第二群组的第三节点;

表示所述语法元素的所述第一群组的第一子群组的第四节点;

表示所述语法元素的所述第一群组的第二子群组的第五节点,其中,使用导致第一候选成本抑减集合中的最高候选成本抑减的分离准则而将所述语法元素分离成所述第一群组和所述第二群组,所述第一候选成本抑减集合通过针对所述语法元素的上下文信息应用包括所述分离准则的分离准则来确定,以及,其中,响应于确定第二候选成本抑减集合中的最高候选成本抑减大于第三候选成本抑减集合中的最高候选成本抑减而将所述第一群组分离成所述第一子群组和所述第二子群组,所述第二候选成本抑减集合通过针对所述第一群组的上下文信息应用所述分离准则来确定,所述第三候选成本抑减集合通过针对所述第二群组的上下文信息应用所述分离准则来确定。

14.根据权利要求13所述的方法,进一步包括:基于编码成包括所述编码视频帧的编码比特流的数据来产生所述上下文树。

15.根据权利要求13所述的方法,其中,所述上下文树的多个节点包括所述第一节点、所述第二节点、所述第三节点、所述第四节点和所述第五节点,所述方法进一步包括:基于与所述编码块的所述语法元素中的语法元素相关联的上下文信息来识别所述多个节点中的、表示包括所述编码块的所述语法元素中的所述语法元素的所述先前解码块的所述语法元素的群组或子群组的节点;以及使用所识别的节点来识别所述概率模型。

16.根据权利要求15所述的方法,其中,所述分离准则是第一分离准则,其中,识别所述多个节点中的、表示包括所述编码块的所述语法元素中的所述语法元素的所述先前解码块的所述语法元素的群组或子群组的节点包括:针对与所述编码块的所述语法元素中的所述语法元素相关联的所述上下文信息应用所述分离准则中的所述第一分离准则或第二分离准则。

17.根据权利要求15所述的方法,进一步包括:

通过基于所述编码块的所述语法元素针对所述多个节点中的一个或多个节点重新计算成本抑减来更新所述上下文树;以及使用所更新的上下文树来解码第二编码块的语法元素。

18.根据权利要求13所述的方法,进一步包括:

响应于确定所述第一候选成本抑减集合中的最高候选成本抑减满足抑减阈值而将所述先前解码块的所述语法元素分离成所述第一群组和所述第二群组。

19.根据权利要求13所述的方法,其中,用于熵解码所述编码块的所述语法元素中的语法元素的成本基于以下操作来计算:包括所述编码块的所述语法元素中的语法元素的所述先前解码块的所述语法元素的群组或子群组的熵成本函数;

具有正输出的大小惩罚函数,所述正输出随着所述先前解码块的所述语法元素的群组或子群组的大小而减小;以及所述大小惩罚函数的权重。

20.根据权利要求19所述的方法,其中,所述熵成本函数基于以下操作来计算:所述先前解码块的所述语法元素的群组或子群组中的数据的长度;以及所述先前解码块的所述语法元素的群组或子群组中包括的语法元素具有指定值的概率。

说明书 :

使用上下文树来代码化视频语法元素

背景技术

[0001] 数字视频流可以使用帧或静止图像的序列来表示视频。数字视频可以用于各种应用,包括例如视频会议、高清晰度视频娱乐、视频广告或共享用户生成的视频。数字视频流可以含有大量数据,并消耗计算装置的大量计算或通信资源用于处理、传输或存储视频数据。已提出多种方法(包括压缩和其他编码技术)来减少视频流中的数据量。

发明内容

[0002] 根据本公开的一个实施方式的一种用于编码视频帧的当前块的方法包括识别与所述视频帧的先前编码块相关联的第一语法元素集合以及用于编码所述第一语法元素集合的第一上下文信息。所述方法还包括通过基于第一上下文信息将第一语法元素集合分离为数据群组来产生上下文树。所述上下文树包括表示数据群组的节点。节点与第一语法元素集合的成本抑减相关联。分离第一语法元素集合包括针对第一上下文信息的值应用分离准则以产生所述节点中的至少一些节点。所述方法还包括识别与所述当前块相关联的第二语法元素集合以及与所述第二语法元素集合相关联的第二上下文信息。所述方法还包括基于与所述第二语法元素集合中的语法元素相关联的所述第二上下文信息的值来识别所述节点中的一个节点,所述识别的节点表示包括所述语法元素的数据群组。所述方法还包含根据与所述识别的节点相关联的概率模型来编码所述语法元素。
[0003] 根据本公开的一个实施方式的一种用于解码编码视频帧的编码块的方法包括识别与所述编码视频帧的先前解码块相关联的第一语法元素集合以及用于解码所述第一语法元素集合的第一上下文信息。所述方法还包括通过基于第一上下文信息将第一语法元素集合分离为数据群组来产生上下文树。所述上下文树包括表示数据群组的节点。节点与第一语法元素集合的成本抑减相关联。分离第一语法元素集合包括针对第一上下文信息的值应用分离准则以产生所述节点中的至少一些节点。所述方法还包括识别与所述编码块相关联的第二语法元素集合以及与所述第二语法元素集合相关联的第二上下文信息。所述方法还包括基于与所述第二语法元素集合中的语法元素相关联的所述第二上下文信息的值来识别所述节点中的一个节点,所述识别的节点表示包括所述语法元素的数据群组。所述方法还包括根据与所述识别的节点相关联的概率模型来解码所述语法元素。
[0004] 根据本公开的一个实施方式的一种用于解码编码视频帧的编码块的设备包括被配置为执行存储在非暂时性存储介质中的指令的处理器。所述指令包括用于识别与所述编码视频帧的先前解码块相关联的第一语法元素集合以及用于解码所述第一语法元素集合的第一上下文信息的指令。所述指令还包括用于通过基于第一上下文信息将第一语法元素集合分离为数据群组来产生上下文树的指令。上下文树包括代表数据群组的节点。节点与第一语法元素集合的成本抑减相关联。用于分离第一语法元素集合的指令包括用于针对第一上下文信息的值应用分离准则以产生所述节点中的至少一些节点的指令。所述指令还包括用于识别与所述编码块相关联的第二语法元素集合以及与所述第二语法元素集合相关联的第二上下文信息的指令。所述指令还包括用以基于与所述第二语法元素集合中的语法元素相关联的第二上下文信息的值来识别所述节点中的一个节点的指令。所述识别的节点表示包括语法元素的数据群组。所述指令还包括用于根据与所述识别的节点相关联的概率模型来解码所述语法元素的指令。
[0005] 根据本公开的一个实施方式的一种用于编码视频帧的当前块的设备包括被配置为执行存储在非暂时性存储介质中的指令的处理器。所述指令包括用于识别与所述视频帧的先前编码块相关联的第一语法元素集合以及用于编码所述第一语法元素集合的第一上下文信息的指令。所述指令还包括用于通过基于第一上下文信息将第一语法元素集合分离为数据群组来产生上下文树的指令。所述上下文树包括表示数据群组的节点。节点与第一语法元素集合的成本抑减相关联。用于分离第一语法元素集合的指令包括用于针对第一上下文信息的值应用分离准则以产生所述节点中的至少一些节点的指令。所述指令还包括用于识别与所述当前块相关联的第二语法元素集合以及与所述第二语法元素集合相关联的第二上下文信息的指令。所述指令还包括用于基于与所述第二语法元素集合中的语法元素相关联的所述第二上下文信息的值来识别所述节点中的一个节点的指令,所述识别的节点表示包括所述语法元素的数据群组。所述指令还包括用于根据与所述识别的节点相关联的概率模型来编码所述语法元素的指令。
[0006] 成本抑减可以是用于代码化第一语法元素集合的成本的抑减。此成本可以是计算成本。计算成本可以例如指示用于代码化的计算资源量。用于代码化语法元素的成本可以取决于或指示选自由以下各参数组成的群组的一个或多个参数:用于代码化语法元素的时间、用于代码化语法元素的空间(例如,计算机存储器的大小)、用于代码化语法元素的多个操作(例如,算术运算)以及用以代码化的语法元素数目。
[0007] 本公开的这些和其他方面在以下详细描述、随附权利要求和附图中公开。

附图说明

[0008] 本文的描述参考下文描述的附图,其中相同附图标记在几个图中指代相同的部分。
[0009] 图1是视频编码与解码系统的示意图。
[0010] 图2是可以实现发送站或接收站的计算装置的示例的框图。
[0011] 图3是将被编码且随后解码的典型视频流的示意图。
[0012] 图4是根据本公开的实现方式的编码器的框图。
[0013] 图5是根据本公开的实现方式的解码器的框图。
[0014] 图6是用于代码化与视频帧的块相关联的语法元素的技术的流程图。
[0015] 图7是用于产生用于代码化与视频帧的块相关联的语法元素的上下文树的技术的流程图。
[0016] 图8是用于编码与视频帧的当前块相关联的语法元素的系统的框图。
[0017] 图9是用于解码与编码视频帧的编码块相关联的编码语法元素的系统的框图。
[0018] 图10A是用于产生上下文树的第一阶段的示例的图示。
[0019] 图10B是用于产生上下文树的第二阶段的示例的图示。
[0020] 图10C是用于产生上下文树的第三阶段的示例的图示。
[0021] 图10D是用于产生上下文树的第四阶段的示例的图示。
[0022] 图11是上下文树的示例的图示。

具体实施方式

[0023] 视频压缩方案可以包括将相应的图像或帧分解成较小的部分(诸如块),并使用限制与其相应块相关联的语法元素的编码的技术来生成编码比特流。编码比特流可以被解码以从编码的语法元素重新创建源图像。例如,视频压缩方案可以包括将视频流的当前块的预测残差变换为变换块的变换系数。变换系数被量化并熵编码为编码比特流。解码器使用编码的变换系数来解码或解压所述编码比特流,以准备视频流用于观看或进一步处理。语法元素是表示待被编码或解码的所有或部分视频序列的数据的元素。例如,语法元素可以是变换块的变换系数、用于生成预测残差的运动向量、帧头内的标志值或与视频序列相关联的其他数据。
[0024] 上下文信息可以用于语法元素的熵编码和熵解码。上下文信息的示例可以指亮度平面、色度平面、邻近系数、系数位置、变换尺寸等或其组合。上下文信息的值可以指可以如何使用上下文信息来编码或解码语法元素。编码器或解码器可以基于上下文信息来预测语法元素的概率分布。也就是说,上下文信息可以与指示语法元素先前如何被代码化的概率模型相关联,诸如对于与要被编码或解码的当前块相似的块(例如,基于视频帧内的接近性、块尺寸等)。通过使用适当的概率模型来代码化语法元素,编码器或解码器可以使用较少的比特来分别编码或解码语法元素。
[0025] 然而,在存在许多与要编码或解码的块相关联的语法元素的情况下,可能难以确定要使用的适当概率模型。一个解决方案可以包括基于上下文信息的所有组合将与块相关联的语法元素分离为不同的群组。每一群组包括与上下文信息的一个组合相关联的多个语法元素。语法元素接着可以使用与包括最大数目的语法元素的群组相关联的概率模型来代码化。
[0026] 然而,所述解决方案可能具有缺点。例如,随着可用上下文信息数目的增加,群组的数目可以呈指数地增加。这可能导致熵代码化过程变得不期望的昂贵。在另一示例中,可以存在多个群组,而每一群组可以仅含有较小数目的语法元素。这种过度分离可能导致语法元素的不精确概率模型估计,这可能导致编码器或解码器使用次优或不适当的概率模型来分别编码或解码语法元素。
[0027] 本公开的实现方式包括使用上下文树来代码化与视频帧的块相关联的语法元素。与视频帧的块相关联的语法元素可以是包括在所述块中、包括在包括所述块的视频帧的标头中、或者以其他方式与所述块的内容或代码化相关或用于所述块的内容或代码化的语法元素。识别用于代码化先前代码化的语法元素的上下文信息,且通过基于所述上下文信息将先前代码化的语法元素分离为多个数据群组来产生上下文树。上下文树包括表示数据群组的节点,且所述节点与先前代码化的语法元素的成本抑减相关联。在使用先前代码化的语法元素和与其相关联的上下文信息产生上下文树之后,可以识别另一个语法元素集合和相关联的上下文信息。例如,先前代码化的语法元素可以是与视频帧的第一块相关联的语法元素,且另一个语法元素集合可以是与视频帧的第二块相关联的语法元素。另一个语法元素集合中的语法元素可以通过诸如基于与语法元素相关联的上下文信息的值识别上下文树的节点中的一个节点来代码化。然后,可以根据与所识别的节点相关联的概率模型来代码化语法元素。因而,上下文树可以用于处理其他语法元素集合,从而导致熵编码或熵解码的较低成本。
[0028] 用于使用上下文树来代码化语法元素的技术的进一步细节在本文中最初参考可以实现他们的系统来描述。图1是视频编码与解码系统100的示意图。发送站102可以是例如具有诸如图2中所描述的硬件内部配置的计算机。然而,发送站102的其他实现方式是可能的。例如,发送站102的处理可以分布在多个装置中。
[0029] 网络104可以连接发送站102和接收站106,用于视频流的编码和解码。具体来说,视频流可以在发送站102中编码,且编码的视频流可以在接收站106中解码。网络104可以是例如因特网。网络104还可以是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝式电话网络或将视频流从发送站102传送到(在此示例中)接收站106的任何其他装置。
[0030] 在一个示例中,接收站106可以是具有诸如图2中所描述的硬件内部配置的计算机。然而,接收站106的其他合适的实现方式是可能的。例如,接收站106的处理可以分布在多个装置中。
[0031] 视频编码与解码系统100的其他实现方式是可能的。例如,一种实现方式可以省略网络104。在另一实现方式中,视频流可以被编码且接着被存储,用于稍后传输到接收站106或具有存储器的任何其他装置。在一个实现方式中,接收站106(例如,经由网络104、计算机总线和/或某一通信路径)接收编码的视频流且存储该视频流用于稍后解码。在示例性实现方式中,实时传送协议(RTP)用于在网络104上传输编码视频。在另一实现方式中,可以使用不同于RTP的传送协议,例如基于超文本传送协议(HTTP)的视频流传输协议。
[0032] 例如,当在视频会议系统中使用时,发送站102和/或接收站106可以包括如下文所述编码和解码视频流的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码的视频比特流以解码和观看,且进一步编码和发射他或她自己的视频比特流到视频会议服务器以供其他参与者解码和观看。
[0033] 图2是可以实现发送站或接收站的计算装置200的示例的框图。例如,计算装置200可以实现图1的发送站102和接收站106中的一者或两者。计算装置200可以呈包括多个计算装置的计算系统的形式,或者呈一个计算装置的形式,例如移动电话、平板计算机、膝上型计算机、笔记型计算机、台式计算机等。
[0034] 计算装置200中的处理器202可以是常规中央处理单元。或者,处理器202可以是另一类型的装置或多个装置,能够操纵或处理现存的或以后开发的信息。例如,尽管所公开的实现方式可以用所示的一个处理器(例如,处理器202)来实践,但是速度和效率方面的优势可以通过使用一个以上的处理器来实现。
[0035] 在实现方式中,计算装置200中的存储器204可以是只读存储器(ROM)装置或随机存取存储器(RAM)装置。然而,其他合适类型的存储装置可以用作存储器204。存储器204可以包括由处理器202使用总线212存取的代码和数据206。存储器204可以还包括操作系统208和应用程序210,应用程序210包括允许处理器202执行本文所述的技术的至少一个程序。例如,应用程序210可以包括应用1到N,其还包括执行本文所述的技术的视频代码化应用。计算装置200还可以包括辅助存储214,其可以是例如与移动计算装置一起使用的存储卡。由于视频通信会话可以含有大量信息,所以它们可以全部或部分存储在辅助存储214中且根据需要载入到存储器204中用于处理。
[0036] 计算装置200还可以包括一个或多个输出装置,诸如显示器218。在一个示例中,显示器218可以是触敏显示器,其将显示器与可操作来感测触摸输入的触敏元件相组合。显示器218可以经由总线212耦合到处理器202。除显示器218之外或作为显示器218的替代,可以提供允许用户编程或以其他方式使用计算装置200的其他输出装置。当输出装置是显示器或包括显示器时,显示器可以以多种方式实现,包括液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
[0037] 计算装置200还可以包括图像感测装置220(例如相机)或者可以感测图像(诸如操作计算装置200的用户的图像)的现存的或者以后开发的任何其他图像感测装置220或者与之通信。图像感测装置220可以被定位成使得它指向操作计算装置200的用户。在示例中,图像感测装置220的位置和光轴可以被配置成使得视场包括直接邻近显示器218的区域,且从所述区域可见显示器218。
[0038] 计算装置200还可以包括声音感测装置222(例如麦克风)或者可以感测计算装置200附近声音的现存的或者以后开发的任何其他声音感测装置,或者与之通信。声音感测装置222可以被定位成使得它指向操作计算装置200的用户,且可以被配置成在用户操作计算装置200的同时接收用户生成的声音,例如语音或其他话语。
[0039] 尽管图2将计算装置200的处理器202和存储器204描绘为集成在一个单元中,但可以利用其他配置。处理器202的操作可以分布在多个机器上(其中个别机器可以具有一个或多个处理器),这些机器可以直接耦合或者跨局域网或其他网络耦合。存储器204可以分布在多个机器上,诸如基于网络的存储器或执行计算装置200的操作的多个机器中的存储器。尽管此处描绘为一个总线,但计算装置200的总线212可以由多个总线构成。此外,辅助存储
214可以直接耦合到计算装置200的其他部件或可以经由网络访问,且可以包含诸如存储卡的集成单元或诸如多个存储卡的多个单元。计算装置200因此可以以多种配置来实现。
[0040] 图3是将被编码且随后解码的视频流300的示例的示意图。视频流300包括视频序列302。在下一级,视频序列302包括多个相邻帧304。虽然三个帧被描绘为相邻帧304,但视频序列302可以包括任何数目的相邻帧304。相邻帧304接着可以进一步细分为个别帧,例如帧306。在下一级,帧306可被划分为一系列平面或分段308。分段308可以是允许例如并行处理的帧的子集。分段308还可以是可以将视频数据分离为不同颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。分段308可以以不同的分辨率被取样。
[0041] 无论帧306是否被划分为分段308,帧306都可以进一步细分为块310,块310可以含有对应于例如帧306中的16×16像素的数据。块310还可以被布置以包括来自像素数据的一个或多个分段308的数据。块310还可以具有任何其他合适的尺寸,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。除非另外指出,否则术语块和宏块在本文可以互换使用。
[0042] 图4是根据本公开的实现方式的编码器400的框图。如上文描述,编码器400可以实现在发送站102中,例如通过提供存储在存储器(例如,存储器204)中的计算机软件程序。计算机软件程序可以包括机器指令,机器指令在由处理器(诸如处理器202)执行时使得发送站102以图4中描述的方式来编码视频数据。编码器400还可以被实现为包括在例如发送站102中的专用硬件。在一个特别期望的实现方式中,编码器400是硬件编码器。
[0043] 编码器400在(由实心连接线示出的)前向路径中具有用于执行各种功能的以下阶段,以使用视频流300作为输入来生成编码或压缩比特流420:帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408。编码器400还可以包括(由虚线连接线示出的)重构路径,以重构用于编码未来块的帧。在图4中,编码器400在重构路径中具有用于执行的各种功能的以下阶段:去量化阶段410、逆变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其他结构变体可以用于编码视频流300。
[0044] 当呈现视频流300用于编码时,相邻帧304中的每一者(诸如帧306)可以以块为单位进行处理。在帧内/帧间预测阶段402,相应的块可以使用帧内预测(还称作内预测)或帧间预测(还称作间预测)来编码。在任何情况下,都可以形成预测块。在帧内预测的情况下,预测块可以由先前已编码和重构的当前帧中的样本形成。在帧间预测的情况下,预测块可以由一个或多个先前构建的参考帧中的样本形成。
[0045] 接着,仍参看图4,可以在帧内/帧间预测阶段402从当前块减去预测块以生成残差块(也称作残差)。变换阶段404使用基于块的变换将残差变换为例如频域中的变换系数。量化阶段406使用量化器值或量化级将变换系数转换为离散的量子值,这些量子值被称为量化的变换系数。例如,变换系数可以除以量化器值并被截断。
[0046] 量化的变换系数接着由熵编码阶段408熵编码。例如,熵编码阶段408可以包括识别用于编码与当前块相关联的语法元素的上下文信息,并通过基于上下文信息将语法元素分离为数据群组来产生上下文树。下文关于图6至图11来描述识别上下文信息和产生上下文树的实现方式。接着将熵编码的系数连同用于解码所述块的其他信息(例如,其可以包括诸如用于指示所使用的预测类型、变换类型、运动向量、量化器值等的语法元素)输出到压缩比特流420。压缩比特流420可以使用各种技术来格式化,诸如可变长度代码化(VLC)或算术代码化。压缩比特流420还可以称作编码视频流或编码视频比特流,且所述术语在本文将可以互换使用。
[0047] 图4中的(由虚线连接线示出的)重构路径可以用于确保编码器400和解码器500(下文描述)使用相同的参考帧来解码压缩比特流420。重构路径执行的功能类似于解码过程期间发生的功能(下文描述),包括在去量化阶段410对量化的变换系数进行去量化,以及在逆变换阶段412对去量化的变换系数进行逆变换,以生成导数残差块(也称为导数残差)。在重构阶段414,可以将帧内/帧间预测阶段402预测的预测块添加到导数残差以创建重构块。可以将环路滤波阶段416应用于重构块以减少失真,诸如块伪影。
[0048] 编码器400的其他变体可以用于编码压缩比特流420。在一些实现方式中,对于某些块或帧,基于非变换的编码器可以直接量化残差信号,而无需变换阶段404。在一些实现方式中,编码器可以将量化阶段406和去量化阶段410组合在一个公共阶段中。
[0049] 图5是根据本公开的实现方式的解码器500的框图。解码器500可以实现在接收站106中,例如通过提供存储在存储器204中的计算机软件程序。计算机软件程序可以包括机器指令,机器指令在由处理器(诸如处理器202)执行时使得接收站106以图5中描述的方式来解码视频数据。解码器500还可以被实现中包括在例如发送站102或接收站106中的硬件中。
[0050] 解码器500类似于上述编码器400的重构路径,在一个示例中包括用于执行各种功能的以下阶段以从压缩比特流420生成输出视频流516:熵解码阶段502、去量化阶段504、逆变换阶段506、帧内/帧间预测阶段508、重构阶段510、环路滤波阶段512和去块滤波阶段514。解码器500的其他结构变体可以用于解码压缩比特流420。
[0051] 当呈现压缩比特流420用于解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码以生成量化的变换系数集合。例如,熵解码阶段502可以包括识别用于解码与编码块相关联的编码的语法元素的上下文信息,并通过基于上下文信息将编码的语法元素分离为数据群组来产生上下文树。下文关于图6至图11来描述识别上下文信息和产生上下文树的实现方式。
[0052] 去量化阶段504(例如,通过使量化的变换系数乘以量化器值)对量化的变换系数进行去量化,且逆变换阶段506对去量化的变换系数进行逆变换以生成导数残差,所述导数残差可以与编码器400中的逆变换阶段412创建的导数残差相同。通过使用从压缩比特流420解码的标头信息,解码器500可以使用帧内/帧间预测阶段508以创建与编码器400中(例如,在帧内/帧间预测阶段402)创建的相同的预测块。
[0053] 在重构阶段510,可以将预测块添加到导数残差以创建重构块。可以将环路滤波阶段512应用于重构块以减少块伪影。可以将其他滤波应用于重构块。在此示例中,将去块滤波阶段514应用于重构块以减少块失真,且结果作为输出视频流516输出。输出视频流516还可以称作解码视频流,且所述术语在本文将可以互换使用。解码器500的其他变体可以用于解码压缩比特流420。在一些实现方式中,解码器500可以在没有去块滤波阶段514的情况下生成输出视频流516。
[0054] 接下来参看图6至图7,描述了用于产生上下文树并且使用上下文树来代码化语法元素的技术。图6是用于使用上下文树来代码化与视频帧的块相关联的语法元素的技术600的流程图。图7是用于产生用于代码化与视频帧的块相关联的语法元素的上下文树的技术700的流程图。技术600或技术700中的一者或两者可以例如实现为软件程序,软件程序可以由诸如发送站102或接收站106的计算装置执行。例如,软件程序可以包括可以存储在诸如存储器204或辅助存储214的存储器中的机器可读指令,且机器可读指令在由诸如处理器
202的处理器执行时可以使得计算装置执行技术600和/或技术700。技术600或技术700中的一者或两者可以使用专用硬件或固件来实现。如上文解释,一些计算装置可以具有多个存储器或处理器,且技术600或技术700中的一者或两者中所描述的操作可以使用多个处理器、存储器或两者来分布。
[0055] 技术600或技术700中的一者或两者可以通过编码器(例如,图4中所示的编码器400)或通过解码器(例如,图5中所示解码器500)来执行。因而,技术600和技术700的以下描述中的引用可以包括对编码当前块或解码编码块,或者产生用于编码当前块或解码编码块的上下文树的论述。虽然技术600或技术700的全部或一部分可以用于编码当前块或解码编码块,但是对“编码当前块”等或“解码编码块”等的引用可以指适用的操作。例如,当技术
600或技术700用作用于编码当前块的过程的一部分时,可以忽略对“解码编码块”等的引用。类似地,当技术600或技术700用作用于解码编码块的过程的一部分时,可以忽略对“编码当前块”等的引用。
[0056] 首先参看图6,展示用于使用上下文树来代码化与视频帧的块相关联的语法元素的技术600的流程图。在602,识别用于代码化与视频帧的先前代码化的块相关联的第一语法元素集合的上下文信息。识别上下文信息可以包括确定可用于编码或解码第一语法元素集合的上下文信息的可能值。在代码化过程期间,编码器(例如,图4中所示的编码器400)或解码器(例如,图5中所示的解码器500)可以被配置为使用上下文信息在定义的上下文信息集合内的值。每一上下文信息集合的值可以反映用于代码化语法元素的不同概率。
[0057] 例如,可以存在可用于由编码器或解码器使用的N个上下文信息集合。N个上下文信息集合可以存储在编码器或解码器可用的上下文缓冲器内。这些集合的值可以反映用于代码化语法元素(例如,与要代码化的视频帧的块相关联的第二语法元素集合)的默认概率、基于语法元素(例如,第一语法元素集合)的先前代码化确定的概率等。每个上下文信息集合可以包括用于该上下文信息集合的不同值。第一集合的第一上下文信息的值可能不与第二集合的同一第一上下文信息的值相同。
[0058] 识别上下文信息可以包括生成、接收或以其他方式识别上下文向量。上下文向量包括用于代码化语法元素的上下文信息的可能值中的一些或全部。上下文向量可以表示为变量ctx。上下文向量的索引ctx[N]可以指代上下文信息集合中的一个的可能值。例如,存储在ctx[0]的值可以指代第一上下文信息的不同值。包括在上下文向量中的上下文信息可以存储在高速缓冲存储器中。
[0059] 例如,生成上下文向量可以包括定义数据结构(例如,阵列、对象序列等),以及将来自不同上下文信息集合的上下文信息的值存储在数据结构的索引内。在另一示例中,识别上下文向量可以包括从编码器或解码器可访问的数据库或类似数据存储(例如,其内存储上下文信息的高速缓冲存储器)中检索定义的数据结构。在另一示例中,接收上下文向量可以包括从软件或硬件部件接收指示上下文向量的数据。例如,服务器装置可以包括用于传输数据到编码器或解码器的软件。数据可以包括上下文向量或可用于识别上下文向量的数据,诸如在数据库或类似的数据存储内。
[0060] 在604,产生上下文树。上下文树可以是二进制或非二进制树,包括表示用于代码化第一语法元素集合的数据的节点。上下文树的节点可以是叶节点或非叶节点。叶节点是表示第一语法元素集合的集合或子集的节点,所述集合或子集在本文被称为数据群组。非叶节点是表示用于分离数据群组的表达式的节点,所述表达式在本文被称为分离准则。例如,在上下文树是二进制树的情况下,非叶节点是父节点,其可以具有两个子节点,这两个子节点都是叶节点,都是非叶节点,或者包括一个叶节点和一个非叶节点。
[0061] 产生上下文树可以包括基于所识别的上下文信息(例如,上下文向量内的上下文信息集合的值)将第一语法元素集合分离为数据群组。产生上下文树的节点来表示第一语法元素集合的数据群组。分离第一语法元素集合可以包括针对上下文信息的值应用分离准则以产生节点中的一个节点。可用于产生上下文树的分离准则可以在编码器或解码器可访问的列表、数据库或其他数据存储中定义。
[0062] 如下文将描述,响应于确定使用分离准则将导致第一语法元素集合的最大成本抑减,可以针对上下文信息的值应用分离准则来产生一个或多个节点。例如,候选成本抑减可以基于对上下文信息的不同值应用不同的分离准则来确定。选择导致最大成本抑减的分离准则和上下文信息的相应值用于产生上下文树的一个或多个新节点。
[0063] 节点可以作为叶节点开始,且接着变化为非叶节点。例如,上下文树的第一级可以包括一个节点,它是表示要被代码化的所有第一语法元素集合的叶节点。可以针对上下文信息的值应用分离准则以分离第一语法元素集合。在应用分离准则之后,所述节点变成非叶节点,表示分离准则已应用,且叶节点经产生为所述非叶节点的子节点。子节点中的每一者表示包括所有第一语法元素集合的子集的数据群组。例如,在上下文树是二进制树的情况下,应用分离准则到上下文树的第一级的节点的上下文信息的值包括产生该节点的两个子节点。由那些子节点中的每一者表示的数据群组可以例如包括第一语法元素集合的一半。或者,那些数据群组可以包括不同数量的第一语法元素集合。
[0064] 上下文树的节点与第一语法元素集合(且,例如,使用上下文树代码化的后续语法元素集合)的成本抑减相关联。产生上下文树以确定用于代码化与视频帧的块相关联的语法元素的最低成本。用于代码化语法元素的成本可以是用于代码化语法元素的计算成本。计算成本可以例如指示用于代码化的计算资源量。例如,用于代码化语法元素的成本可以指示选自由以下各参数组成的群组的一个或多个参数或者是这些参数的某种函数:用于代码化语法元素的时间、用于代码化语法元素的空间以及用于代码化语法元素的多个操作(例如算术运算)。用于代码化语法元素的成本可以取决于要代码化的语法元素的数目。要代码化的语法元素的数目可以使用数据群组来表示。上下文树的叶节点表示不同的数据群组,且因此表示不同可能数目的语法元素。因而,可以确定每一叶节点的用于熵代码化与视频帧的块相关联的语法元素的成本。例如,基于由上下文树的叶节点表示的数据群组对语法元素进行熵代码化的成本可以使用以下公式来计算:
[0065]
[0066] 其中gi是第i数据群组,e(gi)是数据群组gi的熵成本函数,r(size(gi))是具有正输出的大小惩罚函数,所述正输出随着数据群组gi的大小而减小,且λ是大小惩罚函数r(size(gi))的权重。大小惩罚函数r(size(gi))可以例如具有域和陪域R+→R+。可以使用以下公式来计算熵成本函数:
[0067]
[0068] 其中ni是数据群组gi中的数据的长度,且pi[k]是数据群组gi的具有语法值k的语法元素的概率。由上下文树的节点表示的每一数据群组可以与概率模型相关联。
[0069] 产生上下文树可以包括确定产生表示第一语法元素集合的分离数据群组的节点可能导致的成本抑减。也就是说,将分离准则应用在叶节点上导致所述叶节点成为具有两个或两个以上子节点的非叶节点(例如,父节点)。在使用分离准则确定要分离哪些节点时的成本抑减是通过父节点的成本减去所得子节点的成本的总和来计算的。所产生的上下文树可以具有可以使用分离准则而变成非叶节点(例如,父节点)的一个或多个叶节点。因而,产生上下文树因此可以包括确定给定级别的叶节点或上下文树的叶节点集合中的哪一个在被分离时将导致用于对第一语法元素集合进行熵代码化的最高成本抑减。
[0070] 确定分离上下文树的给定叶节点集合中的导致最高成本抑减的叶节点可以包括确定用于对表示在分离准则被应用于那些叶节点之前和之后的叶节点的数据群组进行熵代码化的成本抑减。与最高成本抑减相关联的叶节点可以分离以产生子节点;然而,在一些实现方式中,作为另一结果,由所述叶节点集合中的其他节点表示的数据群组不分离。下文关于图7来描述用于产生上下文树的其他实现方式和示例。
[0071] 在606,识别第二语法元素集合和与其相关联的上下文信息。第二语法元素集合可以与以光栅或其他扫描顺序位于在包括用于产生上下文树的第一语法元素集合的块之后的块相关联。或者,第二语法元素集合可以和与用于产生上下文树的第一语法元素集合不同的视频帧相关联。要用于代码化第二语法元素集合的上下文信息可以表示为第二上下文向量的值。第二上下文向量可以与包括用于代码化第一上下文信息集合的上下文信息的值的上下文向量相同或不同。
[0072] 在608,基于与第二语法元素集合的语法元素中的一个语法元素相关联的上下文信息的值来识别上下文树的节点中的一个节点。所识别的节点表示包括第二语法元素集合的该语法元素的数据群组。基于上下文信息的值来识别节点可以例如包括:针对与所述语法元素相关联的第二上下文信息的值应用用于分离与先前代码化块(例如,用于产生上下文树)相关联的语法元素的分离准则中一个分离准则。
[0073] 例如,在上下文树是二进制树的情况下,上下文信息的值可以根据分离准则中的一个分离准则被解析为真或假。用于将第一树级的第一节点分离成第二树级的第二和第三节点的第一分离准则可以询问上下文向量的第一索引处的上下文信息的值是否大于三。如果不是,那么可以针对上下文信息的值应用用于将第二节点分离成第三树级的第四和第五节点的分离准则。然而,如果是,那么可以代替针对上下文信息的值应用用于将第三节点分离成第三树级的第六和第七节点的分离准则。此过程可以重复,直到基于上下文信息的值和分离准则而识别一个节点为止。
[0074] 在610,根据与所识别的节点相关联的概率模型来代码化第二语法元素集合的语法元素。上下文树的节点或那些节点所表示的数据群组各自与概率模型相关联。与节点或数据群组相关联的概率模型可以反映用于那个节点或数据群组的语法元素的概率。在一些实现方式中,概率模型指定(例如,包括)仅那个节点或数据群组的那些语法元素的概率,且不指定(例如,包括)不包括在那个数据群组中的语法元素的概率。
[0075] 概率模型可以指示与视频帧的块相关联的语法元素将是特定值、将针对那个块或帧存在等的概率。例如,概率模型可以包括反映可以与语法元素中的一个或多个相关联的不同概率的整数值。可以为概率模型定义最大值,使得语法元素的给定概率可以表示为通过将整数值除以最大值得到的百分比。例如,概率模型的最大值可以是256。语法元素的概率可以反映值119。概率模型将因此指示存在与那个语法元素相关联的119/256概率。
[0076] 根据与所识别的节点相关联的概率模型来代码化第二语法元素集合的语法元素可以包括:在编码过程期间,根据概率模型编码第二语法元素集合的语法元素,或根据概率模型解码第二语法元素集合的语法元素。使用熵代码化(例如,在图4中所示的熵编码阶段408或图5中所示的熵解码阶段502)来处理与所识别的概率模型相关联的概率。例如,算术代码化可以用于对具有满足阈值的概率的语法元素进行编码或解码,使得当该语法元素的概率太低时,不会对语法元素进行编码或解码。
[0077] 因此,可以执行算术代码化来限制要编码为比特流的语法元素的总数,诸如最小化比特流的总大小、在传输比特流时的成本等。因而,在编码操作期间,且在根据所识别的概率模型对第二语法元素集合执行算术代码化之后,通过将第二语法元素集合压缩成编码比特流来对其进行编码。或者,在解码操作期间,且在根据所识别的概率模型对第二语法元素集合执行算术代码化之后,通过从编码比特流中解压缩来解码第二语法元素集合。
[0078] 在一些实现方式中,技术600可以包括使用第二语法元素集合来更新上下文树,且接着使用更新的上下文树来代码化第二语法元素集合。例如,可以诸如基于第二语法元素集合和与其相关联的上下文信息来重新计算与上下文树的节点相关联的概率模型。接着可以基于重新计算的概率模型来代码化第二语法元素集合。例如,重新计算的成本抑减可以用于分离叶节点,诸如将叶节点改变为与成本抑减相关联的非叶节点,从而导致用于代码化第二语法元素集合的估计的最低成本。
[0079] 在一些实现方式中,可以基于在编码比特流内所接收的数据来产生上下文树。例如,在执行技术600以解码编码语法元素的情况下,指示上下文树的数据可以在解码器处在从编码器、中继装置或另一计算装置传输的编码比特流内接收。编码比特流包括编码视频帧,且编码视频帧包括与编码语法元素相关联的编码块。因此可以基于例如从编码器接收的信息来产生上下文树。例如,用于产生比特流的数据可以包括指示应用于用于解码编码语法元素的上下文信息中的相应上下文信息的分离准则的数据。
[0080] 在一些实现方式中,与块相关联的语法元素可以使用存储在高速缓冲存储器中的数据来编码或解码。例如,存储在高速缓冲存储器中的数据可以指示语法元素分离成数据群组。可以使用所述分离例如以产生上下文树,更新上下文树,或验证当前上下文树是否与所指示的分离一致。
[0081] 在一些实现方式中,可以更新根据其代码化语法元素的概率模型。例如,概率模型可以响应于编码或解码视频帧的最终块而更新。更新概率模型可以包括计数语法元素与视频帧的块相关联的次数。例如,所述次数可以响应于每一适用块被编码或解码而被更新。概率模型可以基于在视频帧的最终块经编码或解码之后所得的总数而更新。例如,如果计数高于阈值,那么概率模型可以被更新以反映语法元素是某个值或存在的概率已经增加。如果计数低于阈值,那么概率模型可以被更新以反映所述概率已减小。阈值可以是例如先前视频帧的语法元素的总数。
[0082] 对概率模型的更新可以由编码器和解码器中的每一者独立进行。例如,根据本公开的技术,编码器和解码器可以分别存储可用于编码和解码语法元素的概率模型。或者,对概率模型的更新可以在编码器处被确定并且传达给解码器。例如,编码器可以在视频帧被编码后更新与概率模型相关联的概率,使得那些更新的概率可以与解码器同步并且用于解码编码视频帧。
[0083] 在一些实现方式中,识别用于代码化与块相关联的语法元素的上下文信息可以包括选择上下文信息集合中的用于代码化语法元素的上下文信息集合。编码器可以被配置为选择N个集合中的对其可用的一个集合,且仅基于所选择的集合的可能值来生成、接收或以其他方式识别上下文向量。例如,编码器可以选择最常用于代码化与同一视频帧的其他块相关联的语法元素的上下文信息集合。在另一示例中,编码器可以选择用于通过视频帧的最近编码块来代码化语法元素的上下文信息集合。上下文向量将不包括其他上下文信息集合的值。因而,上下文向量的每一索引将反映所选择的上下文信息集合的单个值。
[0084] 在一些实现方式中,编码器或解码器可以在确定上下文信息的值之前,确定上下文信息集合内的上下文信息的类型是否与代码化所述块相关联的语法元素相关。例如,可能的情况是,集合内的一种或多种类型的上下文信息不涉及或以其他方式提供可用于编码或解码与块相关联的语法元素的有意义信息。编码器或解码器可以不确定不相干类型的上下文信息的值,或者以其他方式包括或使用上下文向量内的不相干类型的上下文信息。在一些实现方式中,解码器可不被配置为生成上下文向量。例如,用于编码语法元素的上下文信息的值可以诸如使用上下文向量而从编码器传送到解码器。解码器可以使用包括在从编码器接收到的上下文向量中的值来解码语法元素。
[0085] 接着参照图7,展示用于产生上下文树的技术700的流程图,上下文树用于代码化与视频帧的块相关联的语法元素。技术700可以包括图6中所示的技术600的操作中的一者或多者,诸如在604执行的那些操作。因而,技术700可以作为用于代码化与视频帧块相关联的语法元素的技术(例如技术600)的一部分来执行。或者,技术700可以与用于代码化语法元素的技术分开执行。例如,用于产生上下文树的操作可以与用于代码化语法元素的操作无关。这可能是这样的情况,例如,使用语法元素的样本集合来产生上下文树,且然后在上下文树本身用于代码化语法元素之前被训练来更新上下文树。
[0086] 在702,确定用于第一数据群组的分离准则。第一数据群组可以是包括使用要产生的上下文树编码或解码的所有语法元素的数据群组。分离准则可以是可用于评估上下文信息的多个分离准则中的一者。例如,编码器或解码器可以访问分离准则列表,其例如可以存储在数据库或其他数据存储中。列表中的每一分离准则可以包括表达式,取决于上下文树的类型,所述表达式可以返回数值、数值范围或二进制值。例如,在上下文树是二进制树的情况下,每一分离准则可以包括一个表达式,所述表达式当被应用于上下文信息的值时返回为真或假。
[0087] 确定要应用于第一数据群组的分离准则可以包括针对要编码或解码的多个语法元素的上下文信息的不同值应用不同的分离准则,以确定候选成本抑减。每个候选成本抑减可以表示一个分离准则和它所应用的上下文信息的相应值。候选成本抑减可以相比较以确定其最高成本抑减。接着可以将导致最高成本抑减的分离准则确定为用于第一数据群组的分离准则。例如,确定候选成本抑减可以包括针对已产生的上下文树的节点执行广度优先搜索,以识别要分离的一个或多个候选数据群组。因此,候选成本抑减中的不同的候选成本抑减将与一个或多个候选数据群组中的不同数据群组相关联。
[0088] 在704,使用所确定的分离准则将第一数据群组分离为第二数据群组和第三数据群组。例如,在上下文树是二进制树的情况下,使用确定的分离准则将第一数据群组分离为第二和第三数据群组可以包括确定当使用分离准则时第一数据群组的哪些语法元素解析为真,而哪些解析为假。例如,第二数据群组可以包括第一数据群组的解析为真的那些语法元素,且第三数据群组可以包括第一数据群组的解析为假的那些语法元素。可以使用第一节点在上下文树中表示第一数据群组。分离第一数据群组因此可以包括:在上下文树内产生表示第二数据群组的第二节点,并在上下文树内产生表示第三数据群组的第三节点。
[0089] 在706,确定用于第二和第三数据群组中的每一者的分离准则。确定要用于第二数据群组的分离准则包括确定候选成本抑减集合,所述候选成本抑减集合是通过针对为其确定了候选成本抑减的语法元素的第一部分的上下文信息的不同值应用不同的分离准则而产生的,从而导致将第一数据群组分离为第二和第三数据群组。针对第二数据群组选择导致最高候选成本抑减的分离准则。确定要用于第三数据群组的分离准则还包括确定候选成本抑减集合,所述候选成本抑减集合是通过针对为其确定了候选成本抑减的语法元素的第二部分的上下文信息的不同值应用不同的分离准则而产生的,从而导致将第一数据群组分离为第二和第三数据群组。针对第三数据群组选择导致最高候选成本抑减的分离准则。导致第一数据群组分离的候选成本抑减的语法元素的第一部分和第二部分可以是那些语法元素的不同部分。或者,第一部分和第二部分可以共享一些或所有语法元素,对于这些语法元素,候选成本抑减导致第一数据群组的分离。
[0090] 在708,将使用为第二数据群组选择的分离准则导致的最高成本抑减与使用为第三数据群组选择的分离准则导致的最高成本抑减进行比较。例如,基于所述比较,可以确定使用为第二数据群组选择的分离准则导致的最高成本抑减大于使用为第三数据群组选择的分离准则导致的最高成本抑减。
[0091] 在710,响应于确定使用为第二数据群组选择的分离准则导致的最高成本抑减大于使用为第二数据群组选择的分离准则导致的最高成本抑减,第二数据群组可以被分离。例如,第二数据群组可以使用为第二数据群组选择的分离准则而分离为第四数据群组和第五数据群组。分离第二数据群组还可以包括:在上下文树内产生表示第四数据群组的节点,和在上下文树内产生表示第五数据群组的节点。
[0092] 在712,产生包括表示第一、第二、第三、第四和第五数据群组的节点的上下文树。产生上下文树可以包括产生上述节点。例如,表示第一数据群组的节点可以不在将第一数据群组分离为第二和第三数据群组时或之前产生。类似地,表示第四数据群组的节点可以不在将第二数据群组分离为第四和第五数据群组时或之前产生。相反,所有这些节点可以在数据群组分离完成后同时或几乎同时产生。或者,产生上下文树可以包括使已产生的节点(例如,在数据群组的各自分离时或之前)与上下文树相关联。
[0093] 在一些实现方式中,技术700可以包括确定用于熵代码化第二和第三数据群组的组合成本是否将小于用于在将第一数据群组分离为第二和第三数据群组之前熵代码化所述第一数据群组的成本。例如,确定针对上下文信息的值要应用的分离准则可以包括计算用于熵代码化第一数据群组、第二数据群组和第三数据群组中的每一者的成本。接着可以在用于熵代码化第一数据群组的成本与用于熵代码化第二和第三数据群组的组合成本之间执行比较。例如,如果确定用于熵代码化由节点表示的数据群组的组合成本不小于用于熵代码化将被分离以产生那些节点的数据群组的成本,那么可能不会产生那些节点。
[0094] 在一些实现方式中,可以在产生节点作为数据群组的分离的一部分之后执行用于熵代码化第一数据群组的成本与用于熵代码化第二和第三数据群组的组合成本之间的比较。例如,如果确定用于熵代码化由新产生的节点表示的数据群组的组合成本不小于用于熵代码化被分离以产生那些节点的数据群组的成本,那么可能会从上下文树移除那些新产生的节点。
[0095] 在一些实现方式中,基于对上下文信息的值应用分离准则所导致的成本抑减量,将数据群组分离为两个或两个以上数据群组。例如,数据群组的分离可以响应于确定最高候选成本抑减满足抑减阈值。抑减阈值可以是表示用于代码化与块相关联的语法元素的成本的最小减少的整数、浮点或其他值。如果通过对上下文信息值应用分离准则没有满足最小减少,那么数据群组可能不会分离。例如,抑减阈值可以用于防止计算资源被消耗,而不提高与块相关联的语法元素的代码化效率。
[0096] 接下来参照图8至图9,描述了用于使用上下文树来代码化语法元素的系统。图8至图9中所示的系统可以包括使用图6中所示的技术600或图7中所示的技术700中的一者或两者的全部或一部分。例如,系统可以表示用于执行技术600或技术700中的一者或两者的全部或一部分的硬件和/或软件部件。
[0097] 图8是用于编码与视频帧的当前块相关联的语法元素的系统的框图。用于编码语法元素的系统可以例如通过或使用编码器(诸如图4中所示的编码器400)来实现。系统包括对应于先前代码化的语法元素802的上下文信息800。上下文信息800可以是定义用于由编码器使用的一个或多个上下文信息集合。上下文信息800可以包括基于上下文信息集合的值而生成、接收或以其他方式识别的上下文向量。语法元素802是与要被编码的块相关联的语法元素。
[0098] 上下文信息800和先前代码化的语法元素802分别高速缓存在上下文高速缓冲存储器804和语法元素高速缓冲存储器806中。接着将存储在上下文高速缓冲存储器804和语法元素高速缓冲存储器806中的数据用作用于产生上下文树808的输入。例如,可以将包括在上下文信息800中的上下文向量高速缓存到上下文高速缓冲存储器804中,且接着由被配置为产生上下文树808的软件部件接收。例如,包括在上下文向量中的上下文信息的值可以与编码器可用的分离准则一起使用,以基于编码语法元素高速缓冲存储器806中的语法元素中的一个语法元素的最低成本来产生上下文树808。在产生上下文树808之后,可以基于由这些叶节点表示的数据群组,针对上下文树中的各个叶节点估计概率模型810。使用概率模型来编码传入的语法元素(例如,与视频帧的第二块相关联的语法元素,诸如在用于产生上下文树808的语法元素802与视频帧的第一块相关联的情况下)。例如,先前代码化的语法元素802可以指代与视频帧的第一块相关联的第一语法元素集合,且传入的语法元素可以指代与视频帧的第二块(诸如要被编码的当前块)相关联的第二语法元素集合。为了编码传入的语法元素,可以识别对应于该传入的语法元素的(例如,上下文信息800的)上下文信息。接着可以应用上下文信息以识别上下文树808的将导致用于编码传入的语法元素的最低成本的节点。接着可以识别与上下文树808的所识别的节点相关联的概率模型810。概率模型810可以是存储在编码器可用的不同上下文信息的概率的概率表中的多个概率模型之一。识别概率模型810可以包括例如使用与上下文树808的所识别的节点相关联的信息来查询概率表。
[0099] 因此,将与要编码的传入的语法元素相对应的上下文信息传递到上下文树808,以请求或以其他方式识别概率模型810。接着将概率模型810传递到算术代码器812。算术代码器812可以是被配置为使用概率模型810的概率来执行算术代码化的软件模块或类似部件。还将传入的语法元素传递到算术代码器812。算术代码器812接着根据概率模型810来熵编码传入的语法元素。作为算术代码器812熵编码的结果,产生编码块814。编码块814包括编码形式的传入的语法元素。编码块814可以包括在编码比特流(诸如图4所示的压缩比特流
420)中。
[0100] 上下文高速缓冲存储器804和语法元素高速缓冲存储器806可以存储语法元素802和已经编码的对应的上下文信息800。上下文高速缓冲存储器804和语法元素高速缓冲存储器806可以用于产生上下文树808。当后续语法元素集合被接收并高速缓存在语法元素高速缓冲存储器806中或以其他方式被识别用于编码时,上下文高速缓冲存储器804和语法元素高速缓冲存储器806可以用于更新现有的上下文树804。语法元素高速缓冲存储器806可以是用于存储语法元素802、传入的语法元素和/或已被编码的其他语法元素集合的高速缓冲存储器。例如,后续语法元素集合可以与存储在语法元素高速缓冲存储器806中的语法元素相比较。如果确定与存储在语法元素高速缓冲存储器806中的信息匹配,那么可以使用上下文树808而无需修改。
[0101] 图9是用于解码与编码视频帧的编码块相关联的编码语法元素的系统的框图。用于解码编码语法元素的系统可以例如通过或使用解码器(诸如图5中所示的解码器500)来实现。编码比特流900表示视频流,且包括视频流的编码块。例如,编码比特流900可以是图4中所示的压缩比特流420。编码比特流900的编码块可以例如是图8中所示的编码块810。
[0102] 系统使用与先前代码化的语法元素904相对应的上下文信息902。上下文信息902可以是定义用于由解码器使用的一个或多个上下文信息集合。上下文信息902和先前代码化的语法元素904分别高速缓存在上下文高速缓冲存储器906和语法元素高速缓冲存储器908中。存储在上下文高速缓冲存储器906和语法元素高速缓冲存储器908中的数据可以用作用于产生上下文树910的输入。例如,上下文信息902可以包括基于上下文信息集合的值而生成、接收或以其他方式识别的上下文向量。例如,上下文向量可以从编码器接收。上下文向量高速缓存在上下文高速缓冲存储器906中。语法元素904是先前代码化的语法元素,其与上下文信息902一起用于产生上下文树910。上下文树910可以是图8中所示的上下文树
808。例如,上下文树910可以以与产生上下文树808相同的方式而产生。在另一示例中,上下文树808可以被传达到解码器以在解码语法元素时用作上下文树910。接着使用产生的上下文树910来识别用于解码传入的语法元素(例如,与编码视频帧的第二编码块相关联的语法元素,诸如在用于产生上下文树910的语法元素904与编码视频帧的第一编码块相关联的情况下)的概率模型。例如,先前代码化的语法元素904可以指代与视频帧的第一块相关联的第一语法元素集合,且传入的语法元素可以指代与视频帧的第二块相关联的第二语法元素集合,诸如要被解码的编码块。
[0103] 基于上下文树910诸如以上文关于图8中所示的概率模型810描述的相同方式(例如,通过将对应于要解码的传入的语法元素的上下文信息传递到上下文树910以识别概率模型912)来识别概率模型912。接着将概率模型912传递到算术代码器914以解码传入的语法元素。例如,算术代码器914可以是被配置为使用概率模型912的概率来熵解码传入的语法元素的软件模块或类似部件。响应于算术代码器914使用概率模型912的概率来熵解码传入的语法元素而生成解码块916。接着可以将解码块916输出作为视频流的一部分,例如,图5中所示的输出视频流516。
[0104] 上下文高速缓冲存储器906和语法元素高速缓冲存储器908可以存储语法元素904和已经解码的对应的上下文信息902。上下文高速缓冲存储器906和语法元素高速缓冲存储器908可以用于产生上下文树910。当后续语法元素集合被接收并高速缓存在语法元素高速缓冲存储器908中或以其他方式被识别用于解码时,上下文高速缓冲存储器906和语法元素高速缓冲存储器908可以用于更新现有的上下文树910。语法元素高速缓冲存储器908可以是用于存储语法元素904、传入的语法元素和/或被解码之前的其他的编码语法元素集合的高速缓冲存储器。例如,后续编码语法元素集合可以与存储在语法元素高速缓冲存储器908中的编码语法元素相比较。如果确定与存储在语法元素高速缓冲存储器908中的信息匹配,那么可以使用上下文树910而无需修改。
[0105] 接下来参照图10A至图11,描述了示例性上下文树的产生。如图10A至图11中所示而产生的示例性上下文树可以通过执行图6中所示的技术600或图7中所示的技术700中的一者或两者的全部或一部分而产生。此外,如图10A至图11中所示而产生的示例性上下文树可以使用图8至图9中所示系统中的一者或两者而产生。例如,示例性上下文树可以通过使用图8中所示系统的编码器或使用图9中所示系统的解码器而产生。编码器或解码器可以例如基于技术600而产生树,作为代码化语法元素的技术的一部分。或者,编码器或解码器可以例如基于技术700独立于语法元素的代码化而产生树。
[0106] 图10A是用于产生上下文树的第一阶段的示例的图示。例如,图10A展示示例性上下文树的第一级的产生。节点1000是表示包括与要被编码或解码的块相关联的所有语法元素的数据群组的叶节点。可以通过针对上下文信息的值应用分离准则而将由节点1000所表示的数据群组分离为要被节点1002和节点1004表示的数据群组。如上文描述,导致节点1000的分离的特定分离准则和上下文信息的值可以基于候选成本抑减而确定,所述候选成本抑减基于针对上下文信息的不同值应用不同的分离准则而确定。通过将大于三的分离准则应用到位于上下文向量的[0]索引处的上下文信息的值来分离节点1000。
[0107] 图10B是用于产生上下文树的第二阶段的示例的图示。例如,图10B展示示例性上下文树的第二级的产生。节点1002和1004响应于在图10A所示的第一阶段处分离表示节点1000的数据群组而产生。响应于确定代码化要由节点1002和1004表示的数据群组中包括的语法元素的组合成本小于代码化要由节点1000表示的数据群组中包括的语法元素的成本,由节点1000表示的数据群组分离为要由节点1002和1004表示的数据群组。
[0108] 节点1002和1004是叶节点。响应于节点1002和1004的产生,节点1000变成非叶节点。节点1002表示包括与要被编码或解码的块相关联的语法元素中的一些的数据群组。节点1004表示包括剩余的那些语法元素的数据群组。节点1002表示的数据群组可以分离为节点1006表示的数据群组和节点1008表示的数据群组。节点1004表示的数据群组可以分离为节点1010表示的数据群组和节点1012表示的数据群组。
[0109] 选择分离准则用于分离节点1002表示的数据群组。分离准则包括表达式余数2小于1,并应用于位于上下文向量的[2]索引处的上下文信息的值。由于为节点1002使用分离准则而产生的成本抑减是20。选择不同的分离准则用于分离节点1004表示的数据群组。分离准则包括小于2的表达式,并应用于位于上下文向量的[1]索引处的上下文信息的值。由于为节点1004使用分离准则而产生的成本抑减是15。因而,将由于节点1002表示的数据群组分离为由节点1006和1008表示的数据群组所导致的成本抑减大于将由于将由节点1004表示的数据群组分离为由节点1010和1012表示的数据群组所导致的成本抑减。
[0110] 图10C是用于产生上下文树的第三阶段的示例的图示。例如,图10C展示示例性上下文树的第三级的产生。节点1006和1008响应于在图10B所示的第二阶段处分离由节点1002表示的数据群组而产生。响应于确定用于代码化要由节点1006和1008表示的数据群组中包括的语法元素的组合成本小于用于代码化要由节点1002表示的数据群组中包括的语法元素的成本,由节点1002表示的数据群组分离为要由节点1006和1008表示的数据群组。
[0111] 节点1006和1008是叶节点。响应于节点1006和1008的产生,节点1002变成非叶节点。节点1006表示包括语法元素中的一些的数据群组,所述语法元素包括在节点1002表示的数据群组中。节点1008表示包括剩余的那些语法元素的数据群组。节点1006表示的数据群组可以分离为节点1014表示的数据群组和节点1016表示的数据群组。节点1008表示的数据群组可以分离为节点1018表示的数据群组和节点1020表示的数据群组。
[0112] 选择分离准则用于分离节点1006表示的数据群组。分离准则包括表达式余数等于负一,并应用于位于上下文向量的[1]索引处的上下文信息的值。由于为节点1006使用分离准则而产生的成本抑减是7。选择不同的分离准则用于分离节点1008表示的数据群组。分离准则包括大于1的表达式,并应用于位于上下文向量的[0]索引处的上下文信息的值。由于为节点1008使用分离准则而产生的成本抑减是18。因而,将由于节点1008表示的数据群组分离为由叶节点1018和1020表示的数据群组所导致的成本抑减大于将由于叶节点1006表示的数据群组分离为由节点1014和1018表示的数据群组所导致的成本抑减,且还大于将由于叶节点1004表示的数据群组分离为由节点1010和1012表示的数据群组所导致的成本抑减。
[0113] 图10D是用于产生上下文树的第四阶段的示例的图示。例如,图10D展示示例性上下文树的第四级的产生。节点1018和1020响应于在图10C所示的第三阶段处分离节点1008表示的数据群组而产生。响应于确定用于代码化要由节点1018和1020表示的数据群组中包括的语法元素的组合成本小于用于代码化由节点1008表示的数据群组中包括的语法元素的成本,由节点1008表示的数据群组分离为要由节点1018和1020表示的数据群组。
[0114] 节点1018和1020是叶节点。响应于节点1018和1020的产生,节点1008变成非叶节点。节点1018表示包括语法元素中的一些的数据群组,所述语法元素包括在节点1008表示的数据群组中。节点1020表示包括剩余的那些语法元素的数据群组。节点1018表示的数据群组可以分离为节点1022表示的数据群组和节点1024表示的数据群组。节点1020表示的数据群组可以分离为节点1026表示的数据群组和节点1028表示的数据群组。
[0115] 选择分离准则用于分离节点1018表示的数据群组。分离准则包括表达式余数减去一,并应用于位于上下文向量的[1]索引处的上下文信息的值。由于为节点1018使用分离准则而产生的成本抑减是6。选择不同的分离准则用于分离节点1020表示的数据群组。分离准则包括表达式余数二等于一,并应用于位于上下文向量的[2]索引处的上下文信息的值。由于为节点1020使用分离准则而产生的成本抑减是3。
[0116] 因而,将由于节点1018表示的数据群组分离为由节点1022和1024表示的数据群组所导致的成本抑减大于将由于节点1020表示的数据群组分离为由节点1026和1028表示的数据群组所导致的成本抑减。然而,接着可以确定,用于代码化要由节点1022和1024表示的数据群组中包括的语法元素的组合成本并不显著小于用于代码化节点1018表示的数据群组中包括的语法元素的成本。作为该确定的结果,节点1018表示的数据群组未被分离,且没有节点在示例性上下文树的第五级处产生。
[0117] 图11是上下文树1100的示例的图示。上下文树1100是包括在图10A至10D中所示的第一、第二、第三和第四阶段处产生的节点1000、1002、1004、1006、1008、1010、1012、1018和1020的二进制树。例如,尽管上文未描述,但是响应于确定用于代码化要由节点1010和1012表示的数据群组中包括的语法元素的组合成本小于用于代码化由节点1004表示的数据群组中包括的语法元素的成本,可以产生节点1010和1012。
[0118] 上下文树1100可以用于语法元素的后续代码化。或者,上下文树1100可以在用于代码化语法元素之前被训练,而无需进一步修改。例如,上下文树1100可能已基于N个语法元素而产生。其他N个语法元素可以用于训练上下文树1100,以验证这N个语法元素的代码化效率比前N个语法元素有所提高。其后,上下文树1100可以用于后续语法元素的进一步代码化,而无需进一步修改。
[0119] 图11中所示的上下文树1100的实现方式可以包括与所展示和描述相比额外、减少或不同的功能性。在一些实现方式中,上下文树可以是非二进制树。例如,应用于上下文信息的分离准则可以返回上下文树中的多个分支,诸如每一分支对应于满足分离准则的可能值的范围。例如,二进制版本的分离准则可以询问上下文向量的第一索引处的上下文信息的值是否小于3。所述树可以包括基于分离准则的两个分支,其中一个分支通向表示上下文信息的值小于3的数据群组的节点,且另一分支通向表示上下文信息的值不小于3的数据群组的节点。
[0120] 然而,非二进制版本的分离准则可以询问上下文向量的第一索引处的上下文信息的值是什么。例如,基于分离准则的第一分支可以通向表示上下文信息的值是0到1的数据群组的节点,另一此类分支可以通向表示上下文信息的值是2到3的数据群组的节点,且另一此类分支可以通向表示上下文信息的值是4到5的数据群组的节点。在一些实现方式中,由于对上下文信息的值应用非二进制分离准则,对分支的最大数目可能存在可配置或不可配置的限制。
[0121] 上述编码和解码的方面示出编码和解码技术的一些示例。然而,应理解编码和解码(如权利要求中使用的那些术语)可能意味着压缩、解压、变换或数据的任何其他处理或变化。
[0122] 本文使用的单词“示例”意味着充当示例、例子或说明。本文描述为“示例”的任何方面或设计不一定被理解为优于或有利于其他方面或设计。相反,使用“示例”一词是旨在以具体的方式呈现概念。如本申请中所使用,术语“或”旨在意味着包括性的“或”而不是排他性的“或”。也就是说,除非上下文另有指定或明确指示,否则语句“X包括A或B”旨在意味着其任何自然的包括性排列。也就是说,如果X包括A;X包括B;或者X包括A和B两者,那么在任何前述情况下都满足“X包括A或B”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意味着“一个或多个”,除非上下文另有指定或明确指示为单数形式。此外,除非如此描述,否则在整个公开中使用术语“实现方式”或术语“一个实现方式”并不旨在意味着相同的实施例或实现方式。
[0123] 发送站102和/或接收站106的实现方式(以及存储在其上和/或由其执行的算法、方法、指令等,包括由编码器400和解码器500执行)可以实现在硬件、软件或其任何组合中。硬件可以包括例如计算机、知识产权(IP)核心、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应被理解为包括任何前述硬件,无论是单独的还是组合的。术语“信号”和“数据”可以互换使用。此外,发送站102和接收站106的部分不必以相同的方式实现。
[0124] 此外,在一个方面,例如,发送站102或接收站106可以使用具有计算机程序的通用计算机或通用处理器来实现,所述计算机程序在被执行时进行本文描述的任何相应方法、算法和/或指令。另外或替代地,例如可以利用专用计算机/处理器,其可以含有用于进行本文描述的任何方法、算法或指令的其他硬件。
[0125] 发送站102和接收站106可以例如实现在视频会议系统中的计算机上。或者,发送站102可以实现在服务器上,且接收站106可以实现在与服务器分开的装置上,诸如手持式通信装置。在此情况下,发送站102通过使用编码器400可以将内容编码为编码视频信号,并将编码的视频信号发射到通信装置。继而,通信装置接着可以使用解码器500来解码编码的视频信号。或者,通信装置可以解码本地存储在通信装置上的内容,例如,未被发送站102发射的内容。其他合适的发射和接收实现方式方案是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信装置,和/或包括编码器400的装置还可以包括解码器500。
[0126] 此外,本公开的全部或部分实现方式可以采用可从例如计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是任何装置,其可以例如有形地含有、存储、传达或传送由任何处理器使用或结合任何处理器使用的程序。介质可以是例如电子、磁性、光学、电磁或半导体装置。其他合适的介质也是可用的。
[0127] 已描述上述实施例、实现方式和方面以便有助于容易了解本公开且不限制本公开。相反,本公开旨在涵盖包括在随附权利要求范围内的各种修改和等效布置,所述范围应符合法律所允许的最广泛的解释,以便涵盖所有此类修改和等效布置。