书签 分享 收藏 举报 版权申诉 / 36

实现模块化处理的上下文建模方法和装置.pdf

  • 上传人:Y94****206
  • 文档编号:665829
  • 上传时间:2018-03-02
  • 格式:PDF
  • 页数:36
  • 大小:1.68MB
  • 摘要
    申请专利号:

    CN201280068313.X

    申请日:

    2012.01.30

    公开号:

    CN104081773A

    公开日:

    2014.10.01

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):H04N 19/13申请公布日:20141001|||实质审查的生效IPC(主分类):H04N 19/13申请日:20120130|||公开

    IPC分类号:

    H04N19/13(2014.01)I; H04N19/18(2014.01)I; H04N19/184(2014.01)I

    主分类号:

    H04N19/13

    申请人:

    黑莓有限公司

    发明人:

    阮·阮; 计天颖; 何大可

    地址:

    加拿大安大略省沃特卢市

    优先权:

    2012.01.28 US 13/360,688

    专利代理机构:

    中科专利商标代理有限责任公司 11021

    代理人:

    王玮

    PDF完整版下载: PDF下载
    内容摘要

    描述了一种对视频数据进行编码和解码的方法,用于对变换单元的系数进行编码或解码。具体地,基于上下文确定对针对系数组的有效位系数标志进行编码和解码,并基于相邻标志的值来确定上下文。用于确定上下文的邻域依赖于要编码或解码的有效位系数标志是否在系数组的两个右侧列或两个下方行中变化。左上角也具有不同的邻域。如果所述标志在两个右侧列或两个底部行之一中,则备选上下文邻域之一用于避免对于其他系数组中的有效位标志的依赖。

    权利要求书

    1.  一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述基于块的系数组具有行和列,所述方法应用于当前系数组内的有效位系数标志,所述方法包括:
    确定针对所述有效位系数标志的上下文,其中所述确定包括:
    设置初始上下文索引;以及
    基于相邻有效位系数标志的值来有条件地递增初始上下文索引,其中所述递增有条件地基于当前系数组内有效位系数标志的位置,以确保在递增中使用的任意相邻有效位系数标志在所述当前系数组内;以及
    使用确定的上下文对所述有效位系数标志进行解码。

    2.
      根据权利要求1所述的方法,其中所述有条件地递增还基于排除沿反向扫描顺序紧邻所述有效位系数标志之前的相邻有效位系数标志。

    3.
      根据权利要求1或2所述的方法,其中所述有条件地递增包括:如果有效位系数不在当前系数组的最右侧列中,则将初始上下文索引递增所述有效位系数右侧的相邻有效位系数标志的值。

    4.
      根据权利要求1至3中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志在当前系数组的最右侧两列的任一列中,则将初始上下文索引递增所述有效位系数标志右侧两个位置的相邻有效位系数的值。

    5.
      根据权利要求1至4中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志不在最底部行也不在最右列,则将初始上下文索引递增所述有效位系数标志右下对角线的相邻有效位系数的值。

    6.
      根据权利要求1至5中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志不在最底部两行的任一行中,则将初始上下文索引递增所述有效位系数标志下方两个位置的相邻有效位系数的值。

    7.
      根据权利要求1至6中任一项所述的方法,其中所述有条件地 递增包括:
    如果有效位系数标志不在最底部的行中,
    如果有效位系数标志不在最右侧列和次底部行中,以及
    如果有效位系数标志不在系数组的左上角中,
    则将初始上下文索引递增所述有效位系数标志下方紧邻的相邻有效位系数的值。

    8.
      根据权利要求1至7中任一项所述的方法,其中所述系数组是4x4组。

    9.
      一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述系数组具有列和行,所述方法应用于当前系数组内的有效位系数标志,所述方法包括:
    基于位置上相对于所述有效位系数标志的相邻标志的集合来确定针对有效位系数标志的上下文,其中
    如果所述有效位系数标志不在当前系数组的最右侧列,则所述集合包括所述有效位系数标志的右侧的位置的标志;
    如果所述有效位系数标志不在当前系数组的最底部列中,则所述集合包括所述有效位系数标志下方的位置的标志;
    如果所述有效位系数标志不在当前系数组的最右侧列也不在当前系数组的最底部行,则所述集合包括所述有效位系数标志的右侧一列和下方一行位置中的标志;
    如果所述有效位系数标志不在当前系数组的最右侧列也不在次右侧列,则所述集合包括所述有效位系数标志的右侧两列位置的标志;以及
    如果所述有效位系数标志不在当前系数组的最底部行也不在次底部行中,所述集合包括所述有效位系数标志下方两行位置的标志,以及
    使用确定的上下文对有效位系数标志进行解码。

    10.
      根据权利要求9所述的方法,其中只有所述有效位系数标志不在当前系数组的最右侧列和次底部行的情况下,所述集合才包括所述有 效位系数标志下方位置的标志。

    11.
      根据权利要求9或10所述的方法,其中只有所述有效位系数标志不在当前系数组的左上角的情况下,所述集合才包括所述有效位系数标志下方位置的标志。

    12.
      一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,对于当前系数组内的有效位系数标志,所述当前系数组具有两个右侧列和两个底部行,所述方法包括:
    确定有效位系数标志是否在当前系数组的右下角、最右侧列或次底部行;并且
    如果是,基于其位置确定针对所述有效位系数标志的上下文,
    否则,确定所述有效位系数标志是否在当前系数组的两个右侧列之一、当前系数组的两个底部行之一或当前系数组的左上角,并且如果是,则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第一集合,否则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第二集合;以及根据所选集合中位置中的有效位系数标志之和来确定针对所述有效位系数标志的上下文;
    使用确定的上下文对所述有效位系数标志进行解码。

    13.
      根据权利要求12所述的方法,其中相邻有效位系数标志位置的第一集合包括相对于所述有效位系数标志的相邻有效位系数标志位置的多个集合之一,并且其中所述多个集合的每一个排除了来自其他系数组的有效位系数标志。

    14.
      根据权利要求12所述的方法,其中相邻有效位系数标志位置的第一集合包括相对于所述有效位系数标志的相邻有效位系数标志位置的多个集合之一,并且选择相邻有效位系数标志位置的第一集合包括:基于所述两个右侧列之一或所述两个底部行之一内的有效位系数标志的位置来选择相邻有效位系数标志位置的多个集合之一。

    15.
      根据权利要求12所述的方法,其中选择相邻有效位系数标志位置的第一集合包括:基于当前系数组中所述有效位系数标志的位置来选择相邻有效位系数标志位置的第一集合。

    16.
      根据权利要求12所述的方法,其中选择相邻有效位系数标志位置的第一集合包括:分配初始上下文索引,以及如果所述有效位系数不在当前系数组的最右侧列中,则将初始上下文索引递增所述有效位系数右侧的相邻有效位系数标志的值。

    17.
      一种解码器,用于对编码数据的比特流进行解码以重构针对变换单元的系数,所述解码器包括:
    处理器;
    存储器;以及
    解码应用程序,存储在存储器中,并且包含用于配置处理器执行如权利要求1至16中任一项所述方法的指令。

    18.
      一种非临时处理器可读介质,存储处理器可执行指令,当执行所述可执行指令时,配置一个或多个处理器执行如权利要求1至16中任一项所述的方法。

    说明书

    实现模块化处理的上下文建模方法和装置
    版权通告
    本文档和附属材料的公开的一部分包含要求了版权的材料。版权人不反对任何人在专利商标局的文件或记录中发表的专利文档或专利公开的复制,但是无论如何保留所有其他版权权利。
    技术领域
    本申请大体上涉及数据压缩,具体地涉及当对残差视频数据进行编码和解码时进行上下文建模的方法和装置。
    背景技术
    数据压缩发生在众多上下文中。在通信和计算机联网中非常普遍地使用数据压缩,以有效地存储、传输和再现信息。其在图像、音频和视频的编码方面得到了具体应用。由于每个视频帧所需的大量数据以及经常需要发生的编码和解码的速度,因此视频对数据压缩提出相当大的挑战。视频编码的当前最新技术是ITU-T H.264/AVC视频编码标准。该标准定义了针对不同应用的多个不同简档,包括主简档、基线简档等等。通过MPEG-ITU的联合发起,当前正在开发下一代视频编码标准:称作高效视频编码(HEVC)。所述发起最终可能导致常称作MPEG-H的视频编码标准。
    存在用于编码/解码图像和视频的多个标准,包括H.264,其使用基于块的编码过程。在这些过程中,图像或帧被分割成块,通常是4×4或8×8,并且块被频谱变换成系数、量化、和熵编码。在许多情况中,被变换的数据不是实际像素数据,而是预测操作之后的残差数据。预测可以是:帧内的,即帧/图像内的块到块;或者帧间的,即在帧之间(也称为运动预测)。预计MPEG-H也将具有这些特征。
    当对残差数据进行频谱变换时,这些标准中的多个标准规定了使用离散余弦变换(DCT)或基于它的一些变形。然后使用量化器对所得DCT系数进行量化,以产生量化的变换域系数或索引。
    然后,使用具体的上下文模型对量化的变换域系数的块或者矩阵(有时也称作“变换单元”)进行熵编码。在H.264/AVC和对于MPEG-H的当前研发工作中,通过以下步骤对量化的变换系数进行编码:(a)在变换单元中对末位非零系数的位置加以表示的末位有效位系数位置进行编码,(b)在变换单元中对包含非零系数位置(除了末位有效位置之外的)加以表示的有效位映射进行编码,(c)对非零系数的幅度进行编码,以及(d)对非零系数的符号进行编码。量化的变换系数的这种编码通常占用比特流中已编码数据的30-80%。
    发明内容
    本申请描述了使用多级有效位映射和系数级别编码对残差视频数据进行编码和解码的方法和编码器/解码器。描述了一种当对有效位系数标志(有效位系数标志)进行编码和解码时用于确定上下文的上下文推导方法。还描述了一种对系数级别数据进行编码和解码时用于确定上下文的上下文推导方法。
    在第一个方面,本申请提出了一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述方法应用于当前系数组内的有效位系数标志。所述方法包括:确定针对有效位系数标志的上下文,其中所述确定包括:设置初始上下文索引;以及基于相邻有效位系数标志的值有条件地递增初始上下文索引,其中所述递增有条件地基于当前系数组内有效位系数标志的位置,以确保在递增中使用的任意相邻有效位系数标志在当前的系数组内;以及使用确定的上下文对所述有效位系数标志进行解码。
    在另一个方面,本申请描述了一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述系数组具有列和行,所述方法应用于当前 系数组内的有效位系数标志。所述方法包括:基于位置上相对于所述有效位系数标志的相邻标志的集合来确定针对有效位系数标志的上下文;以及使用确定的上下文对有效位系数标志进行解码。如果所述有效位系数标志不在当前系数组的最右侧列,则所述集合包括所述有效位系数标志的右侧位置的标志;如果所述有效位系数标志不在当前系数组的最底部列中,则所述集合包括所述有效位系数标志下方位置的标志;如果所述有效位系数标志不在当前系数组的最右侧列也不在当前系数组的最底部的行中,则所述集合包括所述有效位系数标志的右侧一列和下方一行位置的标志;如果所述有效位系数标志不在当前系数组的最右侧列也不在次右侧列中,则所述集合包括所述有效位系数标志的右侧两列位置的标志;以及如果所述有效位系数标志不在当前系数组的最底部行也不在次底部行中,所述集合包括所述有效位系数标志下方两行位置的标志。
    在另一个方面,本申请描述了一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组。所述方法应用于当前系数组内的有效位系数标志,所述当前系数组具有两个右侧列和两个底部行。所述方法包括:确定有效位系数标志是否在当前系数组的右下角、最右侧列或次底部行;如果是,则基于其位置确定针对所述有效位系数标志的上下文,否则确定所述有效位系数标志是否在当前系数组的两个右侧列之一、当前系数组的两个底部行之一、还是在当前系数组的左上角中,并且如果是,则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第一集合,否则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第二集合;以及根据所选择的集合中位置的有效位系数标志之一来确定针对所述有效位系数标志的上下文;使用确定的上下文对所述有效位系数标志进行解码;以及更新确定的上下文。
    在一个方面中,本申请描述了一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组。所述方法包括:针对当前系数组内的有效位系数标志,确定所述有效位系数标志是否在当前系数组右侧列或当前系数组下方行内,并且如果是,选择相对于所述有效位系数标志的相邻有效 位系数标志位置的第一集合,否则选择相对于所述有效位系数标志的相邻有效位系数标志位置的不同的第二集合。所述方法还包括:根据在所选择集合的位置选择的有效位系数标志之和来确定针对所述有效位系数标志的上下文;使用确定的上下文对所述有效位系数标志进行解码;以及更新确定的上下文。
    在另一个方面中,本申请描述了一种通过针对变换单元的有效位系数进行重构来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组。所述方法包括:针对当前系数组内的有效位系数标志,确定所述有效位系数标志是否在当前系数组右侧的列或当前系数组下方的行,并且如果是,则选择相邻有效位系数标志的第一集合,否则选择相邻有效位系数标志的不同的第二集合;根据所选择集合中的所选择有效位系数标志之和来确定针对所述有效位系数标志的上下文;使用确定的上下文对所述有效位系数标志进行解码;以及更新确定的上下文。
    在另一个方面,本申请描述了一种通过针对变换单元的有效位系数进行重构来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个相邻的系数组。所述方法包括:针对系数组内的每一个有效位系数标志,基于多个相邻有效位系数标志之和来确定针对所述有效位系数标志的上下文,其中除了所述系数组紧邻右侧列中的有效位系数标志、所述系数组紧邻下方的行中的有效位系数标志以及所述系数组右下角对角线相邻的有效位系数标志之外,所述相邻有效位系数标志不包括所述系数组以外的任意有效位系数标志;使用确定的上下文对所述有效位系数标志进行解码;以及更新确定的上下文。
    在又一方面,本申请描述了被配置为执行这种编码和解码方法的编码器和解码器。
    在又一方面,本申请描述了存储计算机可执行程序指令的非瞬时计算机可读介质,当执行所述计算机可执行程序指令时,所述计算机可执行程序指令将处理器配置为执行所描述的编码和/或解码的方法。
    本领域普通技术人员将通过结合附图阅读以下示例的描述,来理解本申请的其他方面和特征。
    附图说明
    现在以示例方式参照附图,附图示出了本申请的示例性实施例,在附图中:
    图1以框图形式示出了用于对视频进行编码的编码器;
    图2以框图形式示出了用于对视频进行解码的解码器;
    图3示出了针对16x16变换单元的多级扫描顺序的示例;
    图4以流程图的形式示出了用于对有效位系数标志进行解码的示例性方法;
    图5以流程图的形式示出了用于对系数级别数据进行解码的示例性方法;
    图6示出了编码器的示例性实施例的简化框图;以及
    图7示出了解码器的示例性实施例的简化框图。
    在不同的附图中已使用类似的附图标记来指示类似的组件。
    具体实施方式
    在以下描述中,参考用于视频编码的H.264标准和/或正在研发的MPEG-H标准描述了一些示例性实施例。本领域普通技术人员将理解的是,本申请不限于H.264/AVC或MPEG-H,而是可适用于其他视频编码/解码标准,包括可能的将来的标准、多视图编码标准、可伸缩视频编码标准、以及可重新配置的视频编码标准。
    在以下描述中,当参考视频或图像时,在某种程度上可以互换地使用术语帧、画面、图像片、平铺块(tile)和矩形图像片组。本领域技术人员将清楚的是,在H.264标准的情况中,帧可以包含一个或多个图像片。还将清楚的是,根据适用的图像或视频编码标准的特定要求或技术,某些编码/解码操作是逐帧执行的,一些编码/解码操作是逐图像片执行的,一些编码/解码操作是逐画面进行的,一些编码/解码操作是逐平铺块执行的,以及一些编码/解码操作是逐矩形图像片组执行的。在任何特定实施例中,适用的图像或视频编码标准可以确定是否关于帧和/或画面 和/或图像片和/或平铺块和/或矩形图像片组来执行以下描述的操作,视情况而定。相应地,根据本公开,本领域普通技术人员将理解,本文描述的特定操作或过程以及对帧、、画面、图像片、平铺块、矩形图像片组的特定引用对于给定实施例是否适用于帧、画面、图像片、平铺块、矩形图像片组、或者其中的一些或全部。这也可应用于变换单元、编码单元、编码单元组等等,这些根据以下描述将变得明显。
    本申请描述了用于针对变换单元的非零系数对符号位进行编码和解码的示例处理和装置。非零系数通过有效位映射来识别。有效位映射是映射到变换单元或者限定的系数单元(例如,数个变换单元、变换单元的一部分或者编码单元)或者与其相对应的块、矩阵、组或标志的集合。每一个标志表示变换单元或指定单元中的相应位置是否包含非零系数。在现有标准中,这些标志可以称作有效位系数标志。在现有标准中,按照扫描顺序从DC系数到末位有效位系数,每个系数具有一个标志,并且如果对应系数为零则所述系数是为0的比特,而如果对于系数非零则所述系数设置为1。这里使用的术语“有效位映射”旨在表示针对变换单元的有效位系数标志的矩阵或者有序集合,如根据以下描述可以理解的;或者表示限定的系数单元,如根据本发明的上下文将变得清楚的。
    应该理解的是,根据以下描述,可以在一些情况中应用多级别编码和解码结构,并且可以根据像视频内容类型(在序列、画面或图像片首部中识别的自然视频或图形)那样的辅助信息来确定这些情况。例如,两个级别可以用于自然视频,而三个级别可以用于图形(典型地更加稀疏)。另一种可能是在序列、画面或图像片首部之一中提供标志,以表示所述结构是具有一个、两个还是三个级别,从而允许编码器针对当前内容选择最合适结构的灵活性。在另一个实施例中,标志可以表示内容类型,所述内容类型将与级别的个数相关联。例如,类型“图形”的内容可以是以三个级别为特征。
    现在参照图1,图1以框图形式示出了用于对视频进行编码的编码器10。还参照图2,图2示出了用于对视频进行解码的解码器50的框图。将清楚的是,本文描述的编码器10和解码器50均可以在专用或通用计 算设备(包含一个或多个处理单元和存储器)上实现。编码器10或解码器50执行的操作可以通过例如专用集成电路或通过通用处理器可执行的存储程序指令来实现,视情况而定。设备可以包括额外软件,包括例如用于控制基本设备功能的操作系统。关于以下描述,本领域普通技术人员将清楚在其中可以实现编码器10或解码器50的设备和平台的范围。
    编码器10接收视频源12并产生编码比特流14。解码器50接收编码比特流14并输出解码视频帧16。编码器10和解码器50可以被配置为符合多个视频压缩标准来操作。例如,编码器10和解码器50可以符合H.264/AVC。在其他实施例中,编码器10和解码器50可以符合其他视频压缩标准,包括诸如MPEG-H之类的H.264/AVC标准的演进。
    编码器10包括空间预测器21、编码模式选择器20、变换处理器22、量化器24和熵编码器26。本领域普通技术人员将清楚的是,编码模式选择器20确定视频源的适合编码模式,例如对象帧/图像片是I、P还是B类型,帧/图像片内的特定编码单元(例如宏块、编码单元等)是帧间还是帧内编码。变换处理器22对空间域数据执行变换。具体地,变换处理器22应用基于块的变换来将空间域数据变换为频谱分量。例如,在很多实施例中,使用离散余弦变换(DCT)。在一些示例中,可以使用其他变换,如离散正弦变换等。根据宏块或编码单元的大小,该基于块的变换是在编码单元、宏块或者子块的基础上执行的。在H.264标准中,例如,典型的16×16的宏块包含16个4×4的变换块,并且对4×4的块执行DCT过程。在一些情况中,变换块可以是8×8的,这意味着针对每个宏块存在4个变换块。在其他情况中,变换块可以是其他大小。在一些情况中,16×16的宏块可以包括4×4和8×8的变换块的非重叠的组合。
    将基于块的变换应用于像素数据块得到变换域系数的集合。在该上下文中,“集合”是有序集合,在该集合中系数具有系数位置。在一些示例中,变换域系数的集合可被认为是系数的“块”或矩阵。在本文的描述中,短语“变换域系数的集合”或“变换域系数的块”被互换地使用,并且用于指示变换域系数的有序集合。
    量化器24对变换域系数的集合进行量化。然后,熵编码器26对量化后的系数和相关联的信息进行编码。
    量化的变换域系数的块或者矩阵这里可以称作“变换单元”(TU)。在一些情况下,TU可以是非正方形的,例如非正方形正交变换(NSQT)。
    帧内编码的帧/图像片(即,类型I)不参照其他帧/图像片进行编码。换言之,它们不采用时间预测。然而,帧内编码的帧依赖于帧/图像片内的空间预测,如图1中由空间预测器21所示。即,在对特定块编码时,可以将块中的数据与针对该帧/图像片已经编码的块内相邻像素的数据进行比较。使用预测算法,可以将块的源数据转换为残差数据。然后,变换处理器22对残差数据进行编码。例如,H.264规定了4×4变换块的9种空间预测模式。在一些实施例中,这9种模式中的每一种可以用于独立地处理块,然后使用速率-失真优化来选择最佳模式。
    H.264标准还规定了使用运动预测/补偿来利用时间预测。相应地,编码器10具有反馈环路,反馈环路包括:解量化器28、逆变换处理器30和去块处理器32。去块处理器32可以包括去块处理器和滤波处理器。这些元件反映了解码器50执行以再现帧/图像片的解码过程。帧存储器34用于存储再现帧。按照这种方式,运动预测基于在解码器50处重构帧是什么,而不基于原始帧,由于编码/解码中涉及的有损压缩,原始帧可能不同于重构帧。运动预测器36使用帧存储器34中存储的帧/图像片作为源帧/图像片,来与当前帧进行比较,以识别相似块。相应地,对于应用了运动预测的宏块或编码单元,变换处理器22编码的“源数据”是出自运动预测过程的残差数据。例如,其可以包括关于参考帧、空间置换或“运动矢量”的信息、以及表示参考块与当前块之间的差异(如果存在)的残差像素数据。关于参考帧和/或运动矢量的信息可以不由变换处理器22和/或量化器24处理,而是可以提供给熵编码器26,作为比特流的一部分与量化后的系数一起编码。
    本领域普通技术人员将清楚用于实现视频编码器的细节和可能变形。
    解码器50包括:熵解码器52、解量化器54、逆变换处理器56、空间补偿器57和去块处理器60。去块处理器60可以包括去块和滤波处理器。帧缓冲器58提供重构帧以便由运动补偿器62在应用运动补偿时使用。空间补偿器57表示根据先前解码块来恢复特定帧内编码块的视频数 据的操作。
    熵解码器52接收并解码比特流14,以恢复量化后的系数。在熵解码过程中,还可以恢复辅助信息,如果适用,一些辅助信息可以提供给运动补偿环路,以用于运动补偿。例如,熵解码器52可以恢复运动矢量和/或针对帧间编码宏块的参考帧信息。
    然后,解量化器54对量化后的系数进行解量化,以产生变换域系数,然后,逆变换处理器56对变换域系数进行逆变换,以重建“视频数据”。将清楚的是,在一些情况下,如对于帧内编码的宏块或编码单元,重建的“视频数据”是用于空间补偿的、相对于帧内先前解码块的残差数据。空间补偿器57根据残差数据和来自先前解码块的像素数据来产生视频数据。在其他情况下,如对于帧间编码的宏块或宏块,来自逆变换处理器56的重建“视频数据”是用于运动补偿的、相对于来自不同帧的参考块的残差数据。在本文中,空间和运动补偿均可以称为“预测操作”。
    运动补偿器62在帧缓冲器58内定位针对特定帧间编码的宏块或编码单元指定的参考块。运动补偿器62基于针对帧间编码的宏块或编码单元指定的参考帧信息和运动矢量来进行该操作。然后,运动补偿器62提供参考块像素数据,以与残差数据组合,从而得到针对该编码单元/宏块的重构视频数据。
    然后,可以对重构帧/图像片应用去块/滤波过程,如去块处理器60所示。在去块/滤波之后,输出帧/图像片作为解码视频帧16,例如以在显示设备上显示。将理解的是,视频回放机(如计算机、机顶盒、DVD或蓝光播放器和/或移动手持设备)可以在输出设备上显示之前将解码帧缓存在存储器中。
    期望符合MPEG-H兼容的编码器和解码器将具有这些相同或类似特征中的多个特征。
    量化的变换域系数编码和解码
    如上所述,量化的变化域系数块或集合的熵编码包括针对量化的变换域系数块或集合编码有效位映射(例如,有效位系数标志集合)。有效位映射是对(从DC位置到末位有效位系数位置)哪些位置出现非零系数 加以表示的块的二元映射。可以根据扫描顺序(所述扫描顺序可以是垂直、水平、对角线、Z字形或者任意其他扫描顺序)将有效位映射转换为矢量。典型地按照“反向”顺序进行,即,从末位有效位系数开始沿反向方向通过显著性图,直到到达[0,0]处左上角的有效位系数标志。在本发明描述中,术语“扫描顺序”倾向于表示按照它们本来的方式处理标志、系数或组的顺序,并且可以包括通常称作“反向扫描顺序”的顺序。
    然后使用可应用的上下文自适应编码方案对每一个有效位系数标志进行熵编码。例如在许多应用中,可以使用上下文自适应二元算术编码(CABAC)方案。
    利用16x16和32x32有效位映射,针对有效位系数标志的上下文(在多数情况下)基于邻域有效位系数标志值。在用于16x16和32x32有效位映射的上下文中,存在专用于[0,0]比特位置以及专用于相邻比特位置(在一些示例实施方式中)的特定上下文,但是大多数有效位系数标志采用依赖于相邻有效位系数标志的累计值的四个或五个上下文之一。在这些情况下,确定针对有效位系数标志的正确上下文依赖于确定和求和相邻位置处有效位系数标志的值(典型地五个位置,但是在一些情况下可以更多或更少)。
    然后,可以对针对那些非零系数的有效位系数级别进行编码。在一个示例实施方式中,可以通过首先对具有大于1的绝对值级别的那些非零系数的映射进行编码来编码所述级别。另一个映射可以是对具有大于2级别的那些非零系数进行编码。然后对具有大于2的绝对值的系数的任一个的值或者级别进行编码。在一些情况下,编码的值可以是实际值减去3。还对每一个非零系数的符号进行编码。每一个非零系数具有对非零系数的级别是负还是正加以表示的符号位,尽管在一些情况下可以采用符号位隐藏来减小符号位的个数。
    一些现有的工作关注于使用多级有效位映射。现在参考图3,其示出了利用示出的多级对角线扫描顺序的16x16变换单元100。将变换单元100划分为16个相邻的4x4系数组或者“有效位系数标志的集合”。在每一个系数组内,在所述组内而不是在整个变换单元100上应用对角线扫描顺 序。按照扫描顺序对所述集合或系数组进行处理,在该示例实施方式中所述扫描顺序也是对角线扫描顺序。应该注意的是在该示例中将扫描顺序描述为“反向”扫描顺序;也就是说,扫描顺序示出为从右下系数组沿左下对角线方向朝着左上系数组进行。在一些实施方式中,同样的扫描顺序可以沿其他方向限定;也就是说,沿右上对角线方向进行,并且当在编码或解码期间应用时可以沿“反向”扫描顺序应用。
    多级有效位映射的使用包含对L1或更高级别的有效位映射进行编码,所述有效位映射表示期待哪些系数组包含非零有效位系数标志以及哪些系数组包含全零有效位系数标志。期待包含非零有效位系数标志的系数组具有它们的已编码有效位系数标志,而不对包含全零有效位系数标志的系数组进行编码(除非它们是由于特定例外情况编码的组,因为假设它们包含至少一个非零有效位系数标志)。每一个系数组具有有效位系数组标志(除非是系数组具有假设值的标志特定情况,例如包含末位有效位系数的组、左上组等)。
    注意:在一些实施例中系数组可以是非正方形的。例如在一些情况下,可以限定矩形系数组。在一些实施例中,系数组形状可以依赖于扫描顺序。例如,对角线扫描可以使用正方形系数组,垂直或水平扫描可以使用矩形系数组。
    多级有效位映射的使用便于进行编码和解码的残差数据的模处理。
    用于有效位映射编码和解码的上下文确定
    如上所述,对于16x16和32x32 TU(同样对于其他较大的TU尺寸),可以用于在位置x对有效位系数标志进行编码和解码的上下文模型是基于相邻位置的有效位系数标志。在一个示例中,上下文模型使得位置x中针对有效位系数标志的上下文基于位置a、b、c、d和e的有效位系数标志之和:

         xad cb  e  

    在有效位系数标志a、b、c、d或e在TU边界之外的情况下,假设它们是零。由于不同上下文用于对所述位置的标志进行编码,上述上下文限定假设了x不在变换单元内的DC位置[0,0]。
    在多级有效位映射的情况下,应该注意的是对于除掉四个位置之外的所有位置,在确定上下文时考虑4x4系数组外部的有效位系数标志。实际上,对于沿最右侧列的位置,使用来自右侧邻域系数组的至少三个有效位系数标志;并且对于沿下方行的位置,使用来自下方邻域系数组的至少三个有效位系数标志。在最极端的情况下,对于系数组的右下位置,上下文确定完全基于来自当前系数组外部的有效位系数;实际上,从右侧邻域起两个、从下方邻域起两个以及从右下对角线邻域起一个。因此,为了处理16个有效位系数标志的系数组,需要来自三个邻域系数组的17个有效位系数标志:

    在以上图像中,浅灰色4x4系数组包含正在处理的16个有效位系数标志,即,必须确定上下文的有效位系数标志。深灰色表示来自邻域系数组的17个位置,必须访问该邻域系数组以便确定该系数组内的16个有效位系数标志的上下文。这总计等于17/16>1的开销。为了避免不规则形状的复杂度,在许多实施方式中,这可以作为6x6数据块来处理,使得开销是20/16。这使得设计不大模型化,并且存储器比所需更有效。
    为了减小所要求的开销,本申请提供了一种上下文模型,其中修改上下文邻域(也就是说,用于确定上下文的相邻有效位系数标志)以避免使用除了系数组右侧列的相邻有效位系数标志、系数组下方行的相邻有效位系数标志以及与系数组的右下角对角线相邻的相邻有效位系数标志之外的系数组外部的任意有效位系数。因此,将开销减小为9/16:

    为了实现这种更加紧凑的上下文模型,上下文邻域依赖于系数组内的哪个有效位系数位置正在进行评估而改变。具体地,当将要确定的上下文的有效位系数位置在系数组的右侧列或者下方行时,使用修改的上下文邻域;否则使用传统的上下文邻域。也就是说,如果xC%4=3或者如果yC%4=3,那么使用修改的上下文邻域之一来进行上下文确定。
    修改的上下文邻域或模板是相对于正在考虑的有效位系数标志的相邻有效位系数标志位置的限定集合。也就是说,所述限定的上下文邻域根据相对于正在确定上下文的有效位系数标志的位置,指定了在上下文确定中要使用的有效位系数标志的地点或位置。在一个实施例中,可以使用的特定示例上下文邻域(相邻有效位系数标志位置的集合)如下,其中有效位系数标志位置的系数基于下述内容:
    1513106141173128419520

    对于位置0,将上下文邻域限定为::

    对于位置1,将上下文邻域限定为:

    注意:这种上下文邻域的特征在于4个邻域。这不包括系数组内位置0的有效位系数标志。这是为了允许BAC引擎内标志处理的并行化。在解码器(或编码器)试图确定位置1的上下文时,相对于位置0的上下文确定、解码和上下文更新可能还没有完成。因此在该实施例中,当评估针对位置1的上下文时,该模型试图避免使用位置0。
    对于位置3,邻域如下给出:

    对于位置6,在上下文模型中将邻域限定为:

    对于系数组中的位置2和5,将邻域限定为:

    对于位置9,邻域如下给出:

    对于系数组中的所有其他位置,邻域如下给出:

    注意:在一些实施例中,为了避免使用沿反向扫描顺序紧邻当前标志之前的标志,位置15(左上角)可以使用修改为排除位置“c”的通常邻域。因此,针对邻域15的邻域如下给出:

    这些示例邻域满足以下条件:有效位系数标志的上下文不依赖于扫描顺序中紧邻之前处理的有效位系数标志。
    如上所述,在一些实施例中,为了允许上下文推导中的并行化,在 上下文推导中可以不使用如上所述的邻域中的所有位置。例如对于位置3,可以使用以下两个邻域之一:

    或者

    类似地,对于位置2,可以使用以下邻域:

    在另一个实施例中,修改以上上下文,使得在针对位置1、3、6、2、5和9的有效位系数标志的上下文推导中不使用相邻的有效位系数标志“e”。也就是说,对于这些上下文邻域,假设位置“e”中的相邻有效位系数为零。
    在又一个实施例中,系数确定还依赖于相邻系数组的有效位系数组标志。例如,上下文确定可以部分地基于右侧系数组、下方的系数组和/或右下对角线系数组的有效位系数组标志。如上给出的相同上下文邻域限定或其变体可以用于确定上下文,但是可以存在两个上下文集合。相邻系数组的有效位系数组标志可以用于确定是否使用原始上下文或者是否使用新的上下文集合。在原始或新的上下文集合内,可应用的上下文邻域确定选择哪一个上下文。在该示例中,上下文确定是基于以下内容:
    ●对于位置0、4、7、8或10-15的有效位系数标志,使用原始上下 文集合进行上下文确定。
    ●对于位置1、3或6的有效位系数标志,如果右侧邻域系数组的有效位系数组标志是1,则使用新定义的上下文集合;否则使用原始上下文集合。
    ●对于位置2、5或9的有效位系数标志,如果下方邻域系数组的有效位系数组是1,则使用新定义的上下文集合;否则使用原始上下文集合。
    考虑到这里的描述,本领域普通技术人员应该理解前述上下文邻域的其他变体或实施例。
    通过限制对于当前系数组内位置的上下文模型并且不使用来自相邻系数组的有效位系数标志,可以实现模块化的改进。具体地,这应用于4x4系数组并且不使用来自相邻系数组的有效位系数标志,其中这种相邻组是4x4或者其他大小/形状。在示例实施例中,修改上下文模型以避免使用来自4x4系数组外部的有效位系数标志。通常的上下文邻域用于[0,0]、[0,1]、[1,0]和[1,1]位置的有效位系数标志。在其他12个位置,即在第三或第四列,或第三或第四行,使用不同的上下文邻域。具体地,对于这12个位置的每一个,使用只依赖于系数组内的有效位系数标志的上下文邻域。在一个实施例中,如下所述,这通过使用修改通常上下文邻域以丢弃当前系数组外部的任意位置来完成的。
    对于位置0,上下文是固定的并且不会参考邻域。在这种情况下,可以将上下文邻域理解为:

    对于位置1,上下文也是固定的并且不依赖于邻域。在一些情况下,可以使用紧邻位置1下方的标志(即位置0),但是这种标志沿反向扫描顺序在位置1的标志紧邻之前,因此依赖于位置0的标志用于位置1的上下文 确定可能会减小在编码器或解码器中硬件或软件层面实现流水线或并行处理的能力。
    位置2具有限定为下述内容的上下文邻域:

    对于位置3和6,将上下文邻域限定为:

    对于位置5和9,将上下文邻域限定为:

    位置4具有限定为下述内容的上下文邻域:

    对于位置7和10,将上下文邻域限定为:

    对于位置8和12,将上下文邻域限定为:

    位置11、13、14和15可以使用具有标志a至e的通常上下文邻域。在至少一个实施例中,位置15使用修改的邻域,其中不使用标志“c”,从而改进对于流水线编码或解码的能力。
    注意在该实施例中,尽管来自邻域系数组的有效位系数标志不能用于确定上下文,在一些实施例中,来自邻域系数组的其他数据可以用于上下文集合选择的目的,即,选择在对有效位系数标志进行编码或解码时可使用的上下文的集合。在一个示例中,邻域系数组的有效位系数组标志可以用于上下文集合选择。在另一个示例中,来自邻域系数组的统计数据可以影响上下文集合选择。示例的统计数据包括邻域系数组中的非零系数的个数。
    现在参考图4,图4以流程图的形式示出了针对视频解码器中的变换单元对有效位系数标志进行解码的一个示例方法200。
    方法200是根据作为视频解码处理的一部分的已编码数据的比特流对有效位系数标志进行解码的方法。方法200并没有说明变换单元内末位有效位系数位置的解码或者系数级别、符号位或辅助信息的解码。方法200用于对系数组中当前位置的有效位系数标志进行解码。
    方法200包括操作201:确定有效位系数标志是否在系数组的右下角 (即如上所述的位置0)或右侧列且在次下方行,即位置1。如果是,则固定上下文,如操作203所示。在该实施例中,系数组的右下角或位置1的有效位系数标志具有不依赖于任意邻域有效位系数标志值的上下文。因此,方法200跳过操作203向下进行如下所述的解码操作。
    如果有效位系数标志不是在位置1或位置0,那么在操作202中,解码器确定有效位系数位置是否在两个右侧列之一、系数组两个底部行之一或左上角。如果是,在操作204,解码器基于系数组内有效位系数的位置来选择上下文邻域。两个右侧列包括最右侧列和次右侧列。两个底部行包括最底部行和次底部行。基于系数位置的示例上下文邻域如上所述,尽管在其他实施方式中可以应用其他上下文邻域。
    如果有效位系数位置不是在两个右侧列、两个底部行或者左上位置,则在操作206,解码器选择传统的上下文邻域。传统的上下文邻域是可应用于满足这种标准的三个位置(即,位置11、13和14)的任一个的相邻有效位系数的限定邻域。映射如下:

    一旦选择了上下文邻域,在操作208中,解码器基于来自上下文邻域的有效位系数标志之和来确定针对这种有效位系数位置的上下文。应该理解的是可以按照多种不同的方式实施和集成操作202、204、206和208。在一种实施方式中,如下面的示例语法所表示的,评估多种位置测试或逻辑规则,并且基于测试或规则将相应的相邻有效位系数标志条件求和。
    一旦在操作208确定了上下文,在操作210,解码器使用确定的上下文对来自编码数据的比特流的有效位系数标志进行解码。解码可以包括二元算术解码。
    在操作212,解码器基于有效位系数标志的解码值来更新确定的上 下文。
    在操作214,解码器确定是否是系数组的末位有效位系数标志,即系数位置15。如果不是,在操作216,解码器在系数组内沿对角线扫描顺序(反向)移动至下一个有效位系数位置,并且返回操作202对下一个有效位系数标志进行解码。
    如果是系数组的末位有效位系数标志,那么解码器评估是否是变换单元218中的最后系数组。如果是,那么方法200退出;而如果不是,在操作220,解码器按照组级别扫描顺序移动到下一个系数组。在操作222,解码器复位到下一个系数组内按照扫描顺序的第一个位置,即复位至位置0,然后返回到操作202对新系数组的位置0中的有效位系数标志进行解码。
    应该理解的是为了简化说明,操作214和218不会反映针对上下文确定的特定处理,所述特定处理可能在DC值[0,0]处的情况下发生,并且在一些实施例中在变换单元中的其他位置处发生。
    下面提供了用于实现限制到4x4系数组的位置相关有效位系数上下文模型的示例语法。但是该示例语法只是一种可能实施方式。在该示例中,没有示出针对DC情况(xC=0并且yC=0)的上下文确定。
    这种处理是为了使用语法元素的先前已解码significant_coeff_flag(有效位系数标志)的bins来推导上下文系数变量sigCtx。将变量sigCtx初始化为0(或者一些其他初始上下文系数值)。然后基于相邻有效位系数标志的值来将变量sigCtx有条件地递增。基于确保标志在当前系数组内的逻辑规则或条件语言的集合来选择使用的有效位系数标志(即,形成邻域或相邻有效位系数标志的“集合”)。该条件可以是基于当前系数组内的有效位系数标志的位置。基于相邻有效位系数标志的值来递增sigCtx的示例条件测试如下:
    如果yC%4等于3(或者等效地,yC&3等于3),将变量bottomRow设置为真,否则设置为假。如果xC%4等于3(或者等效地,xC&3等于3),将变量rightCol设置为真,否则设置为假。
    当rightCol为假时,应用以下公式:
    sigCtx=sigCtx+significant_coeff_flag[xC+1][yC]
    当rightCol和bottomRow都为假时,应用以下公式:
    sigCtx=sigCtx+significant_coeff_flag[xC+1][yC+1]
    当xC%4<2(即,标志不在两个右侧列的任一个内)时,应用以下公式:
    sigCtx=sigCtx+significant_coeff_flag[xC+2][yC]
    当所有以下条件为真时:
    xC%4不等于0,或者yC%4不等于0,
    xC%4不等于3,或者yC%4不等于2,以及
    bottomRow为假,
    则应用以下公式:
    sigCtx=sigCtx+significant_coeff_flag[xC][yC+1]
    当yC%4<2(即,标志不在两个底部行的任一个内)时,应用以下公式:
    sigCtx=sigCtx+significant_coeff_flag[xC][yC+2]
    在该示例实施方式中,根据以下的条件和规则来修改变量sigCtx。
    如果颜色分量索引cIdx等于0并且xC+yC大于(1<<(max(log2TrafoWidth,log2TrafoHeight)-2))-1,应用以下公式:
    sigCtx=((sigCtx+1)>>1)+24
    否则应用以下公式:
    sigCtx=((sigCtx+1)>>1)+((cIdx>0)?18∶21)
    然后使用颜色分量索引cIdx和sigCtx推导出上下文索引增量ctxIdxInc。
    应该理解的是前述内容只是一种示例实施方式。此外应该理解的是对于上下文的整个集合的示例索引偏移(例如“24”或“18”等等)是非限制性示例。
    用于系数级别编码和解码的上下文确定
    在一些视频编码或解码处理中,按阶段进行系数级别编码和解码。 也就是说,系数编码处理包括对识别了所有非零系数的有效位映射进行编码。还对针对所述系数的符号位进行编码。然后通过识别哪个非零系数具有大于1的级别来进行级别编码。在大于1的这些系数中,然后识别级别大于2的系数。在那些系数中,级别大于3的那些系数具有编码/解码的实际级别。利用后一种系数集合,不是对绝对级别进行编码,而是可以对小于3的级别进行编码(因为已知所述级别大于2),并且解码器向这些解码的级别添加级别3。
    典型地,在16个系数的集合或组中进行上下文级别编码和解码。这也与有效位映射的基于块的系数组编码和解码以及在该处理中使用的多级扫描顺序相对应。
    与有效位映射编码相同,系数级别(大于1、大于2以及小于3的绝对值)的编码依赖于上下文建模。在一些实施方式中,用于在16个级别的集合中对系数级别进行编码的上下文集合(例如,系数组)依赖于已处理的在先系数级别集合,例如按照扫描顺序的在先系数组。先前处理的扫描集合中系数的幅度用于基于在先集合中系数的幅度与当前集合中系数的预期幅度相关来确定使用哪个上下文集合。
    当使用多级扫描顺序时,如图3所示,可能出现这样的情况:沿扫描顺序的在先系数组不是相邻的扫描集合。例如,沿(反向)扫描顺序的在先系数组可能位于变换单元的另一侧。下面示出了划分为4x4系数组的示例32x32变换单元。阴影系数组沿对角线扫描顺序彼此相邻。应该理解的是那些系数组之一中系数的幅度不必也与那些系数组中其他系数组的系数的幅度相关。

    因此,本申请提出了一种用于系数级别编码的上下文的新过程。在建议中,用于对系数组的系数级别进行编码的上下文选择是基于右侧和底部邻域系数组。具体地,可以是基于那些邻域系数组中非零系数的个数或者累计数值。
    上下文选择可以基于绝对值大于1的系数个数的函数f()。例如,上下文索引可以初始化为具体的值或者系数,并且如果f()>1则递增1,而如果f()>3则递增2。
    以下符号R和L分别用于表示在右侧邻域系数组和下方邻域系数组中绝对值大于1的系数的个数。如果右侧或下方系数组的任一个落到变换单元的边界之外,那么假设R或L(根据具体情况而定)为零。
    在一个实施例中,该函数可以表达为:
    f(R,L)=max(R,L)
    在另一个实施例中,所述函数是线性函数,例如:
    f(R,L)=aR+bL
    其中a和b是加权系数,可以是固定或者动态的。例如在一种情况下a=b=1/2,其相当于对R和L进行平均。
    在再一个实施例中,该函数是取最小值,例如:
    f(R,L)=min(R,L)
    在又一个另外的实施例中,函数f()可以表达为:
    f(R,L)=Q(R)+Q(L)
    其中如果k=0,Q(k)=0
    如果0<k≤3,Q(k)=1,
    否则Q(k)=2。
    在又一个其他实施例中,可以在确定上下文时替代地或者附加地考虑右下对角线系数组。
    在所有这些实施例中,上下文的确定是模块化的,因为上下文确定不要求重新访问来自各种在先处理的系数组中的系数集合,而是代替地依赖于整体处理在先的系数组时确定的值。此外,上述实施例依赖于来自与当前系数组必然相邻的系数组的系数数据,因此相关性更强。
    现在参考图5,图5示出了使用基于上下文的熵解码器对系数级别数据进行解码的示例处理300。该处理300可以用于以下情况:确定用于解码“大于1”的系数级别标志、“大于2”的系数级别标志、“减3级别”系数级别数据或这些内容的一些或全部的上下文。本领域普通技术人员考虑到这里的讨论应该理解针对特定实施方式的适当修改。
    在操作302中,初始化上下文索引指针。通常,解码器可以维持多个上下文或上下文集合,并且在一些实施例中可以使用上下文索引指针来识别当前或选择的上下文集合。初始化上下文索引指针的值依赖于组织上下文的实施方式或顺序。
    在操作304中,解码器确定来自右侧邻域系数组和来自下方邻域系数组的大于1的系数的个数之和。该值可以表示为Q_sum。如果在操作306中确定Q_sum大于零,那么在操作308中,将上下文索引指针递加1。如果在操作310中发现值Q_sum大于3,在操作312中将上下文索引指针再次递加1。
    在操作314中,上下文索引指针用于识别当前的上下文(或者在一些实施例中,上下文集合),并且在操作316中,识别的上下文用于对来自编码数据比特流的系数级别进行解码。这可以包括针对当前的系数组对大于1的系数级别进行解码。在一些实施例中,也可以或者替代地包括对大于2的标志进行解码。在再一个其他实施例中,也可以或者替代地包括对系数级别减去3的值进行解码。
    在操作318中,基于解码的数据对识别的上下文进行更新。如果在 操作320中确定这是最后一个系数组,那么处理300退出。否则在操作322中,解码器按照组级别扫描顺序移动到下一个系数组,并且返回到操作304以对针对下一个系数组的系数级别进行解码。
    下面提供了用于实现针对系数级别编码的已修订上下文确定的示例语法。这种示例语法只是用于确定上下文索引增量的一种可能实施方式,所述上下文索引增量用于识别在对大于1的系数标志(语法元素coeff_abs_level_greater1_flag)进行解码时使用的上下文。
    这种示例处理的输入是当前子集内的颜色分量索引cIdx、16个系数子集索引i和当前系数扫描索引n。在该示例中,术语系数子集与如上所述使用的术语系数组相对应。这种处理的输出是上下文索引增量ctxIdxInc,与在以上示例中讨论的上下文索引指针相对应。
    变量ctxSet规定了当前上下文集合及下文应用的衍生物。当n等于15时,或者推导出在pos大于n时所有在先语法元素coeff_abs_level_greater1_flag[pos]等于0,应用以下内容(而不是显式解析),即如果这是从比特流解码的系数组中的第一coeff_abs_level_greater1_flag:
    1.如果当前子集索引i等于0或者cIdx大于0,将变量ctxSet初始化为0。否则,如果I大于0并且cIdx等于0,那么ctxXet设置为3。
    2.当子集i不是在变换单元中要处理的第一个子集时,应用以下内容:
    a.如果TU是4x4或8x8,那么变量numGreater1设置为等于针对子集i+1的coeff_abs_level_greater2_flag的上一个上下文推导期间得出的变量numGreater1,ctxSet递增1;如果numGreater1>>1大于0,ctxSet递增1;如果numGreater1>>1大于3并且cIdx等于0,ctxSet递增1。
    b.如果TU是16x16或32x32,那么变量Q_sum设置为等于针对子集i的紧邻右侧和子集i紧邻下方的子集推导出的Q_numGreater1变量之和。如果不存在右侧子集或下方子集(即,落在TU的边界外部),假设它们的相应Q_numGreater1变量为0;如果Q_sum大于0,ctxSet递增1; 并且如果Q_sum大于3,ctxSt递增1。
    3.变量geater1Ctx设置为等于1。
    在标志不是系数组中进行解码的第一个标志时,即coeff_abs_level_greater1_flag[n]不是在当前子集i)进行解析的第一个标志,那么针对ctxSet和greater1Ctx的推导应用以下内容:
    1.变量ctxSet设置为等于在上一次使用这种处理期间推导出的变量ctxSet。
    2.变量greater1Ctx设置为等于在上一次使用这种处理期间推导出的变量greater 1Ctx。
    3.当greater1Ctx大于0时,变量lastGreater1Flag设置为等于在使用这种处理期间已经使用的语法元素coeff_abs_level_greater1_flag,并且如果lastGreater1Flag等于1则将greater1Cts设置为0,否则如果lastGreater1Flag等于0则将greater1Ctx递增1。
    使用当前上下文集合ctxSet和当前上下文greater1Ctx来如下推导上下文索引增量ctxIdxInc:
    ctxIdxInc=(ctxSet*4)+Min(3,greater1Ctx)
    当cIdx大于0时,ctxIdxInc修改如下:
    ctxIdxInc=ctxIdxInc+24
    前述语法说明了在大于1标志(coeff_abs_level_greater1_flag)的情况下针对ctxIdxInc的推导处理。下面是用于在大于2标志(coeff_abs_level_greater2_flag)的情况下推导ctxIdxInc的类似示例处理。
    该示例处理的输入是颜色分量索引cIdx、当前子集内的16个系数子集索引i和当前系数扫描索引n。该处理的输出是ctxIdxInc。变量ctxSet指定了当前上下文集合。
    为了得到系数组中针对第一个已处理系数的ctxSet,可以使用以下处理。也就是说,如果n等于15,或者在pos大于n时推导出所有在先语法元素coeff_abs_level_greater2_flag[pos]等于0而不是显式解析,应用以下内容:
    1.如果当前子集索引i等于0或者cIdx大于0,ctxSet初始化为0。否则,如果i大于0并且cIdx等于0,那么ctxSet初始化为3。
    2.如果TU是16x16或32x32,针对每一个子集保持变量Q_numGreater1的单独示例。
    3.针对第一子集的变量numGreater1设置为等于0。
    4.变量greater2Ctx设置为等于0。
    5.假设子集i不是变换单元中将要处理的第一个子集,应用以下内容:
    a.如果TU是4x4或8x8,那么变量numGreater1设置为等于针对子集i+1的上一次使用这种处理期间推导出的变量numGreater1;然后numGreater1=numGreater1>>1;如果numGreater1大于0,ctxSet递增1;如果numGreater1大于3并且cIdx等于0,ctxSet进一步递增1。
    b.如果TU是16x16或32x32,那么变量Q_sum设置为等于针对子集i的紧邻右侧和子集i紧邻下方的子集推导出的Q_numGreater1变量之和;如果不存在右侧子集或下方子集(即,落在TU的边界外部),假设它们的相应Q_numGreater1变量为0;如果Q_sum大于0,ctxSet递增1;并且如果Q_sum大于3,ctxSt进一步递增1。
    如果标志不是要处理系数组中的第一个标志,即coeff_abs_level_greater2_flag[n]不是在当前子集i内要解析的第一个标志,那么ctxSet和greater2Ctx的推导如下实现:
    1.变量ctxSet设置为等于上一次使用这种处理期间推导出的变量ctxSet。
    2.变量greater2Ctx设置为等于上一次使用这种处理期间推导出的变量greater2Ctx递增1。
    3.变量numGreater1设置为等于上一次使用这种处理期间已经推导出的变量numGreate1递增1。
    如果TU是16x16或32x32并且coeff_abs_level_greater2_flag[n]是当前子集i内要解析的最后一个标志,如果numGreater1=0,则将针对子集i的Q_numGreater1设置为等于0;如果0<numGreater1<=3,则将针对 子集i的Q_numGreater1设置为等于1;否则,将针对子集i的Q_numGreater1设置为等于2。
    使用当前上下文集合ctxSet和当前上下文greater2Ctx来如下推导上下文索引增量ctxIdxInc:
    ctxIdxInc=(ctxSet*3)+Min(2,reater2Ctx)
    当cIdx大于0时,ctxIdxInc修改如下:
    ctxIdxInc=ctxIdxInc+18
    现在参照图6,图6示出了编码器900的示例性实施例的简化框图。编码器900包括:处理器902、存储器904和编码应用程序906。编码应用程序906可以包括存储在存储器904中并包含指令的计算机程序或应用,所述指令用于将处理器902配置为执行诸如本文描述的操作等的步骤或操作。例如,编码应用程序906可以编码并输出根据本文描述的过程所编码的比特流。将理解的是,编码应用程序906可以存储在计算机可读介质上,例如,压缩光盘、闪存设备、随机存取存储器、硬盘驱动器等等。
    现在还参照图7,图7示出了解码器1000的示例性实施例的简化框图。解码器1000包括:处理器1002、存储器1004和解码应用程序1006。解码应用程序1006可以包括存储在存储器1004中并包含指令的计算机程序或应用,所述指令用于将处理器1002配置为执行诸如本文描述的操作等的步骤或操作。解码应用程序1006可以包括熵解码器,被配置为至少部分地基于如这里所述重构有效位系数标志来重构残差数据。将理解的是,解码应用程序1006可以存储在计算机可读介质上,例如,压缩光盘、闪存设备、随机存取存储器、硬盘驱动器等等。
    将清楚的是,根据本申请的解码器和/或编码器可以在多种计算设备中实现,包括但不限于服务器、适当编程的通用计算机、音频/视频编码和回放设备、电视机顶盒、电视广播设备和移动设备。可以通过包含指令的软件来实现解码器或编码器,所述指令用于将处理器配置为执行本文描述的功能。软件指令可以存储在任何合适的非瞬时计算机可读存储器上,包括CD、RAM、ROM、闪存等等。
    将理解的是,可以使用标准计算机编程技术和语言来实现本文描述 的编码器以及实现所描述的用于配置编码器的方法/过程的模块、例程、进程、线程或其他软件组件。本申请不限于特定处理器、计算机语言、计算机编程惯例、数据结构、其他这种实现细节。本领域技术人员将认识到,可以将所描述的过程实现为存储在易失性或非易失性存储器中的计算机可执行代码的一部分、专用集成芯片(ASIC)的一部分等。
    可以对所描述的实施例进行某些调整和修改。因此,上述实施例被认为是示意性而非限制性。
    权利要求书(按照条约第19条的修改)
    1.一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述基于块的系数组具有行和列,所述方法应用于当前系数组内的有效位系数标志,所述方法包括:
    确定针对所述有效位系数标志的上下文,其中所述确定包括:
    设置初始上下文索引;以及
    基于相邻有效位系数标志的值来有条件地递增初始上下文索引,其中所述递增有条件地基于当前系数组内有效位系数标志的位置,以确保在递增中使用的任意相邻有效位系数标志在所述当前系数组内;以及
    使用确定的上下文对所述有效位系数标志进行解码。
    2.根据权利要求1所述的方法,其中所述有条件地递增还基于排除沿反向扫描顺序紧邻所述有效位系数标志之前的相邻有效位系数标志。
    3.根据权利要求1或2所述的方法,其中所述有条件地递增包括:如果有效位系数不在当前系数组的最右侧列中,则将初始上下文索引递增所述有效位系数右侧的相邻有效位系数标志的值。
    4.根据权利要求1至3中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志在当前系数组的最右侧两列的任一列中,则将初始上下文索引递增所述有效位系数标志右侧两个位置的相邻有效位系数的值。
    5.根据权利要求1至4中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志不在最底部行也不在最右列,则将初始上下文索引递增所述有效位系数标志右下对角线的相邻有效位系数的值。
    6.根据权利要求1至5中任一项所述的方法,其中所述有条件地递增包括:如果有效位系数标志不在最底部两行的任一行中,则将初始上下文索引递增所述有效位系数标志下方两个位置的相邻有效位系数的值。
    7.根据权利要求1至6中任一项所述的方法,其中所述有条件地递增包括:
    如果有效位系数标志不在最底部的行中,
    如果有效位系数标志不在最右侧列和次底部行中,以及
    如果有效位系数标志不在系数组的左上角中,
    则将初始上下文索引递增所述有效位系数标志下方紧邻的相邻有效位系数的值。
    8.根据权利要求1至7中任一项所述的方法,其中所述系数组是4x4组。
    9.一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,所述系数组具有列和行,所述方法应用于当前系数组内的有效位系数标志,所述方法包括:
    基于位置上相对于所述有效位系数标志的相邻标志的集合来确定针对有效位系数标志的上下文,其中
    如果所述有效位系数标志不在当前系数组的最右侧列,则所述集合包括所述有效位系数标志的右侧的位置的标志;
    如果所述有效位系数标志不在当前系数组的最底部列中,则所述集合包括所述有效位系数标志下方的位置的标志;
    如果所述有效位系数标志不在当前系数组的最右侧列也不在当前系数组的最底部行,则所述集合包括所述有效位系数标志的右侧一列和下方一行位置中的标志;
    如果所述有效位系数标志不在当前系数组的最右侧列也不在次右侧列,则所述集合包括所述有效位系数标志的右侧两列位置的标志;以及
    如果所述有效位系数标志不在当前系数组的最底部行也不在次底部行中,所述集合包括所述有效位系数标志下方两行位置的标志,以及
    使用确定的上下文对有效位系数标志进行解码。
    10.根据权利要求9所述的方法,其中只有所述有效位系数标志不在当前系数组的最右侧列和次底部行的情况下,所述集合才包括所述有效位系数标志下方位置的标志。
    11.根据权利要求9或10所述的方法,其中只有所述有效位系数标志不在当前系数组的左上角的情况下,所述集合才包括所述有效位系数标志下方位置的标志。
    12.一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为多个基于块的系数组,对于当前系数组内的有效位系数标志,所述当前系数组具有两个右侧列和两个底部行,所述方法包括:
    确定有效位系数标志是否在当前系数组的右下角、最右侧列或次底部行;并且
    如果是,基于其位置确定针对所述有效位系数标志的上下文,
    否则,确定所述有效位系数标志是否在当前系数组的两个右侧列之一、当前系数组的两个底部行之一或当前系数组的左上角,并且如果是,则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第一集合,否则选择相对于所述有效位系数标志的相邻有效位系数标志位置的第二集合;以及根据所选集合中位置中的有效位系数标志之和来确定针对所述有效位系数标志的上下文;
    使用确定的上下文对所述有效位系数标志进行解码。
    13.根据权利要求12所述的方法,其中相邻有效位系数标志位置的第一集合包括相对于所述有效位系数标志的相邻有效位系数标志位置的多个集合之一,并且其中所述多个集合的每一个排除了来自其他系数组的有效位系数标志。
    14.根据权利要求12所述的方法,其中相邻有效位系数标志位置的第一集合包括相对于所述有效位系数标志的相邻有效位系数标志位置的多个集合之一,并且选择相邻有效位系数标志位置的第一集合包括:基于所述两个右侧列之一或所述两个底部行之一内的有效位系数标志的位置来选择相邻有效位系数标志位置的多个集合之一。
    15.根据权利要求12所述的方法,其中选择相邻有效位系数标志位置的第一集合包括:基于当前系数组中所述有效位系数标志的位置来选择相邻有效位系数标志位置的第一集合。
    16.根据权利要求12所述的方法,其中选择相邻有效位系数标志位置的第一集合包括:分配初始上下文索引,以及如果所述有效位系数不在当前系数组的最右侧列中,则将初始上下文索引递增所述有效位系数右侧的相邻有效位系数标志的值。
    17.一种解码器,用于对编码数据的比特流进行解码以重构针对变换单元的系数,所述解码器包括:
    处理器;
    存储器;以及
    解码应用程序,存储在存储器中,并且包含用于配置处理器执行如权利要求1至16中任一项所述方法的指令。
    18.一种非临时处理器可读介质,存储处理器可执行指令,当执行所述可执行指令时,配置一个或多个处理器执行如权利要求1至16中任一项所述的方法。
    19.一种通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码的方法,所述变换单元被划分为基于块的系数组序列,每一个系数组与在比特流中编码的有效位系数组标志以及有效位系数标志的集合相对应,所述方法包括:
    确定设置对应有效位系数组标志所针对的系数组;
    基于与所述系数组相邻的一个或多个系数组的相应有效位系数组标志,确定针对与所述系数组相对应的有效位系数标志集合中的每一个有效位系数标志的上下文;以及
    使用确定的上下文对与所述系数组相对应的有效位系数标志集合的每一个有效位系数标志进行解码。
    20.根据权利要求19所述的方法,其中,与所述系数组相邻的一个或多个系数组包括以下中的至少一个:所述系数组右侧的系数组、所述系数组下方的系数组和所述系数组右下对角线的系数组。
    21.根据权利要求19或20所述的方法,其中确定针对与所述系数组相对应的有效位系数标志集合中的每一个有效位系数标志的上下文,还基于与所述有效位系数标志相对应的系数在所述系数组中的位置。
    22.根据权利要求19至21中任一项所述的方法,其中预先解码所述一个或多个相邻系数组的系数组标志。
    23.根据权利要求19至22中任一项所述的方法,还包括:选择上下文集合,用于解码与所述系数组相对应的有效位系数标志集合。
    24.根据权利要求23所述的方法,其中选择上下文集合是基于变换单元的大小。
    25.根据权利要求23所述的方法,其中选择上下文集合是基于针对所述变换单元的颜色分量索引。
    26.根据权利要求19至25中任一项所述的方法,其中解码与所述系数组相对应的有效位系数标志集合的有效位系数标志还包括:将DC专用上下文用于DC位置的有效位系数标志。
    27.根据权利要求19至26中任一项所述的方法,其中所述系数组各具有正方形形状,并且所述变换单元具有16x16的大小。
    28.根据权利要求19至27中任一项所述的方法,其中确定上下文还包括:选择针对所述系数组的最右侧列中有效位系数标志之一的上下文,其中如果针对所述系数组右侧的系数组重构的有效位系数组标志非零,则所述上下文只可用于选择所述有效位系数。
    29.根据权利要求19至27中任一项所述的方法,其中确定上下文还包括:选择针对所述系数组的底部行中有效位系数标志之一的上下文,并且其中如果针对所述系数组下方的系数组重构的有效位系数组标志非零,则所述上下文只可用于选择所述有效位系数。
    30.一种视频解码器,通过重构针对变换单元的有效位系数标志来对编码视频的比特流进行解码,所述变换单元包括基于块的系数组序列,每一个系数组与在比特流中编码的有效位系数组标志以及有效位系数标志的集合相对应,所述视频解码器包括:
    处理器;
    存储器;以及
    视频解码应用程序,包含处理器可执行指令,当执行所述处理器可执行指令时,使处理器执行如权利要求19至29中任一项所述的方法。
    31.一种非临时处理器可读介质,存储处理器可执行指令,当执行所述处理器可执行指令时,配置一个或多个处理器执行如权利要求19至29中任一项所述的方法。

    关 键  词:
    实现 模块化 处理 上下文 建模 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:实现模块化处理的上下文建模方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-665829.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1