对编码视频数据的变换单位的子集编码和解码的方法、设备和系统的制作方法

文档序号:7544713阅读:185来源:国知局
对编码视频数据的变换单位的子集编码和解码的方法、设备和系统的制作方法
【专利摘要】公开了一种用于使用Golomb-Rice解码对编码视频数据的变换单位(例如,400)进行解码的方法。确定变换单位的子集的有效残差系数。选择变换单位的子集的Golomb-Rice解码的预定Rice参数。在所确定的有效残差系数的数量高于预定阈值的情况下,预定Rice参数相对于零设置存在偏移。使用预定Rice参数作为Golomb-Rice解码的初始参数来对变换单位的子集进行解码。
【专利说明】对编码视频数据的变换单位的子集编码和解码的方法、设 备和系统

【技术领域】
[0001] 本发明通常涉及数字视频信号处理,尤其涉及用于对视频数据的变换单位的子集 进行编码和解码的方法、设备和系统。

【背景技术】
[0002] 当前存在包括用于传输和存储视频数据的应用程序的视频编码所用的许多应用 程序。还开发了许多视频编码标准并且其它视频编码标准当前正在开发中。视频编码标准 化的最新进展已导致形成被称为"针对视频编码的联合专家小组"(JCT_VC)的组。该针对 视频编码的联合专家小组(JCT-VC)包括已知为视频编码专家组(VCEG)的国际电信联盟 (ITU)的电信标准化部门(ITU-T)的研究组16、问题6(SG16/Q6)的成员、以及还已知为运 动图片专家组(MPEG)的国际标准化组织/国际电工委员会联合技术委员会1/小组委员会 29/工作组 11(IS0/IEC JTC1/SC29/WG11)的成员。
[0003] 针对视频编码的联合专家小组(JCT-VC)的目标是产生新的视频编码标准以显著 优于目前现有的已知为"H. 264/MPEG-4AVC"的视频编码标准。该H. 264/MPEG-4AVC标准本 身是针对诸如MPEG-4和ITU-T H. 263等的以前的视频编码标准的大幅改进。已将开发中的 新视频编码标准命名为"高效率视频编码(HEVC) "。针对视频编码的联合专家小组JCT-VC 还考虑由于针对高效率视频编码(HEVC)所提出的技术而产生的、在对该标准的实现进行 缩放从而以高分辨率或高帧频进行工作的情况下产生困难的各种实现挑战。
[0004] H. 264/MPEG-4AVC视频编码标准呈现在对用以表示视频数据的残差系数进行编码 的情况下实现高压缩效率的困难。
[0005] 视频数据由帧序列构成,其中各帧具有样本的二维阵列。通常,帧包括一个亮度 (luma)通道和两个色度(chroma)通道。通常使用诸如YUV等的颜色空间来表示颜色信息, 其中Y是亮度通道并且UV是两个色度通道。诸如YUV等的颜色空间给出了如下优点:大部 分帧内容包含在亮度通道中,并且UV通道中所存储的相对较少量的内容足以重建彩色帧。 还可以将色度通道下采样为感知质量损失可忽略的较低的空间分辨率。
[0006] 已知为4:2:0的通常使用的色度格式使得各色度通道具有垂直和水平方向的分 辨率的一半。将各帧分解成最大编码单位(LCU)的阵列。这些最大编码单位(LCU)具有诸 如64个亮度样本等的、边尺寸是2的幂且宽度和高度相等的固定大小。编码树使得能够将 各最大编码单位(LCU)子分割成四个编码单位(CU),其中各编码单位(CU)的宽度和高度 是母最大编码单位(LCU)的宽度和高度的一半。可以将各编码单位(CU)进一步子分割成 相等大小的四个编码单位(⑶)。可以递归地应用这种子分割处理,直到达到最小编码单位 (SCU)大小为止,从而使得能够将编码单位(CU)向下定义为最小支持大小。将最大编码单 位递归子分割成编码单位的层级结构具有四叉树结构并且被称为编码树。将该子分割处理 作为被编码为二进制数(bin)的标志序列而在通信位流中编码。因此,编码单位具有正方 形形状。
[0007] 在没有进行进一步子分割的编码树中存在一组编码单位,从而占据编码树的叶节 点。在这些编码单位中存在变换树。变换树还可以使用如编码树所使用的四叉树结构来对 编码单位进行分解。在变换树的叶节点处,使用变换单位(TU)来对残差数据进行编码。与 编码树相对比,变换树可以将编码单位子分割成具有非正方形形状的变换单位。此外,变换 树结构不要求变换单位(TU)占据母编码单位所提供的所有区域。
[0008] 将编码树的叶节点处的各编码单位子分割成各自已知为预测单位(PU)的预测数 据样本的一个或多个阵列。各预测单位(PU)包含通过应用帧内预测或帧间预测处理所推 导出的输入视频帧数据的一部分的预测。
[0009] 可以使用几种方法来对编码单位(CU)内的预测单位(PU)进行编码。一个预测单 位(PU)可能占据编码单位(CU)的整个区域,或者编码单位(CU)可能在水平方向或垂直方 向上被分割成相等大小的两个矩形预测单位(PU)。另外,可以将编码单位(CU)分割成相等 大小的四个正方形预测单位(PU)。
[0010] 视频编码器通过将视频数据转换成句法元素序列来将视频数据压缩成位流。使 用与在MPEG4-AVC/H. 264视频压缩标准中所定义的算术编码方案相同的算术编码方案,在 开发中的高效率视频编码(HEVC)标准内定义上下文自适应二进制算术编码(CABAC)。在 开发中的高效率视频编码(HEVC)标准中,在上下文自适应二进制算术编码(CABAC)处于使 用中的情况下,将各句法元素表示为二进制数序列。对各二进制数进行旁路编码或算术编 码。使用二进制数同等可能为〇或1的旁路编码。在这种情况下,不存在可实现的进一步 压缩。对于概率分布不相等的二进制数使用算术编码。各算术编码二进制数与已知为"上 下文(context)"的信息相关联。上下文包含可能的二进制数值('valMPS')和概率状态 (映射到可能的二进制数值的估计概率的整数)。根据句法元素创建包括旁路编码二进制 数和算术编码二进制数的组合的这种二进制数序列已知为"二进制数产生(binarising) " 句法元素。
[0011] 在视频编码器或视频解码器中,由于各二进制数可使用单独的上下文信息,因此 二进制数的上下文选择提供了用以改进编码效率的方式。特别地,可以通过选择特定二进 制数来改进编码效率,以使得来自使用关联的上下文信息的二进制数的先前示例的统计特 性与二进制数的当前示例的统计特性相关。这种上下文选择频繁地利用空间本地信息以确 定最佳上下文。
[0012] 在开发中的高效率视频编码(HEVC)标准和H. 264/MPEG-4AVC中,基于来自其它帧 或者来自先前解码后的当前块内的邻接区域的参考样本数据来推导针对当前块的预测。该 预测和期望样本数据之间的差已知为残差。该残差的频域表示是残差系数的二维阵列。按 照惯例,二维阵列的左上角包含表示低频信息的残差系数。
[0013] 在典型的视频数据中,样本值的大部分变化是逐渐的,这导致低频信息在残差内 占主导。这表明位于二维阵列的左上角的残差系数的量值较大。


【发明内容】

[0014] 本发明的目的是大致克服或至少改进现有配置的一个或多个缺点。
[0015] 根据本发明的一个方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的方法,所述方法包括以下步骤:
[0016] 确定所述变换单位的子集的有效残差系数;
[0017] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的 有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移; 以及
[0018] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0019] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的设备,所述设备包括:
[0020] 用于确定所述变换单位的子集的有效残差系数的部件;
[0021] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中 在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设 置存在偏移;以及
[0022] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的部件。
[0023] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的系统,所述系统包括:
[0024] 存储器,用于存储数据和计算机程序;
[0025] 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包 括用于进行以下操作的指令:
[0026] 确定所述变换单位的子集的有效残差系数;
[0027] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的 有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移; 以及
[0028] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0029] 根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计 算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程 序包括以下代码:
[0030] 用于确定所述变换单位的子集的有效残差系数的代码;
[0031] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中 在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设 置存在偏移;以及
[0032] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的代码。
[0033] 根据本发明的另一方面,提供一种用于对视频数据流进行解码以确定解码视频数 据流中的当前残差系数的值的方法,所述方法包括以下步骤:
[0034] 从所述视频数据流接收残差系数的变换单位;
[0035] 确定所述变换单位的当前残差系数的位置;
[0036] 在所述当前残差系数在所述变换单位中的位置大于预定阈值的情况下,使用 无依赖性的Golomb-Rice解码对所述当前残差系数进行解码,其中所述无依赖性的 Golomb-Rice 使用预定 Golomb-Rice 值;
[0037] 在所述当前残差系数在所述变换单位中的位置小于所述预定阈值的情况下,使用 针对当前系数的基于依赖性的Golomb-Rice解码对所述当前残差系数进行解码,其中所述 基于依赖性的Golomb-Rice解码使用先前解码残差系数值以选择Golomb-Rice值;以及
[0038] 使用所选择的Golomb-Rice解码值来确定所述当前残差系数的值。
[0039] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的方法,所述方法包括以下步骤:
[0040] 确定所述变换单位的量化参数;
[0041] 确定所述变换单位的子集的有效残差系数;
[0042] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的 量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
[0043] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0044] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的设备,所述设备包括:
[0045] 用于确定所述变换单位的子集的有效残差系数的部件;
[0046] 用于确定所述变换单位的量化参数的部件;
[0047] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中 在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移; 以及
[0048] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的部件。
[0049] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的系统,所述系统包括:
[0050] 存储器,用于存储数据和计算机程序;
[0051] 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包 括用于进行以下操作的指令:
[0052] 确定所述变换单位的子集的有效残差系数;
[0053] 确定所述变换单位的量化参数;
[0054] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的 量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
[0055] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0056] 根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计 算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程 序包括以下代码:
[0057] 用于确定所述变换单位的子集的有效残差系数的代码;
[0058] 用于确定所述变换单位的量化参数的代码;
[0059] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中 在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移; 以及
[0060] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的代码。
[0061] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的方法,所述方法包括以下步骤:
[0062] 确定所述变换单位的量化参数;
[0063] 确定所述变换单位的宽度和高度;
[0064] 确定所述变换单位的子集的有效残差系数;
[0065] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定 的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况 下,所述预定Rice参数相对于零设置存在偏移;以及
[0066] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0067] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的设备,所述设备包括:
[0068]用于确定所述变换单位的子集的有效残差系数的部件;
[0069] 用于确定所述变换单位的量化参数的部件;
[0070] 用于确定所述变换单位的宽度和高度的部件;
[0071] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中 在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈 值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
[0072] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的部件。
[0073] 根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的 变换单位进行解码的系统,所述系统包括:
[0074] 存储器,用于存储数据和计算机程序;
[0075] 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包 括用于进行以下操作的指令:
[0076] 确定所述变换单位的子集的有效残差系数;
[0077] 确定所述变换单位的量化参数;
[0078] 确定所述变换单位的宽度和高度;
[0079] 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定 的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况 下,所述预定Rice参数相对于零设置存在偏移;以及
[0080] 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码。
[0081] 根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计 算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程 序包括以下代码:
[0082] 用于确定所述变换单位的子集的有效残差系数的代码;
[0083] 用于确定所述变换单位的量化参数的代码;
[0084] 用于确定所述变换单位的宽度和高度的代码;
[0085] 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中 在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈 值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
[0086] 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变 换单位的子集进行解码的代码。
[0087] 还公开了其它方面。

【专利附图】

【附图说明】
[0088] 现在将参考以下附图来说明本发明的至少一个实施例,其中:
[0089] 图1是示出视频编码器的功能模块的示意框图;
[0090] 图2是示出视频解码器的功能模块的示意框图;
[0091] 图3A和3B形成可以分别实践图1的编码器和图2的解码器的通用计算机系统的 示意框图;
[0092] 图4A和4B示出示例变换单位的空间结构;
[0093] 图5是示出示例变换单位的句法元素结构的示意框图;
[0094] 图6A是示出对变换单位(TU)进行编码的方法的示意框图;
[0095] 图6B是示出对变换单位(TU)进行解码的方法的示意流程图;
[0096] 图7是示出图5的示例变换单位的子集的句法元素结构的示意框图;
[0097] 图8A是示出对变换单位的子集进行编码的方法的示意流程图;
[0098] 图8B是示出对变换单位的子集进行解码的方法的示意流程图;
[0099] 图9是示出利用Golomb-Rice (哥伦布-莱斯)码字的残差系数的二进制表示的 表;
[0100] 图1〇是示出利用阶次为零的指数Golomb码字的残差系数的二进制表示的表;
[0101] 图11是示出用于基于Golomb-Rice参数的当前值和先前残差系数的值来确定 Golomb-Rice参数的值的查找表的表;
[0102] 图12A是示出对残差系数进行编码的方法的示意流程图;
[0103] 图12B是示出对残差系数进行解码的方法的示意流程图;
[0104] 图13是示出用于确定如用于使用Golomb-Rice解码对残差系数进行解码的方法 所使用的参数K的值的方法的示意流程图;
[0105] 图14A示出用于针对变换单位(TU)的子集对其余的残差系数量值进行解码的二 值化器;
[0106] 图14B示出用于针对变换单位(TU)的子集对其余的残差系数量值进行解码的另 一二值化器;以及
[0107] 图15示出另一示例变换单位。

【具体实施方式】
[0108] 在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况下,除非 出现相反意图,否则这些步骤和/或特征是为了本说明书的目的而具有相同的功能或操 作。
[0109] 可以通过二值化方案来使用在残差系数的二维阵列的左上角占主导的低频信息 的特性,以使残差系数在位流中的大小最小。
[0110] 二值化的一个方面是选择上下文以用于对与各个标志相对应的句法元素进行编 码。一个标志可以使用一个以上的上下文。确定哪个上下文应当用于标志的特定示例依赖 于其它已可用的信息并且已知为"上下文建模"。上下文建模是选择最准确地表示标志的 当前示例的统计特性的上下文的处理。例如,频繁地,标志的值受到同一标志的邻接示例的 值所影响,其中在这种情况下,可以基于标志的邻接示例的值来选择上下文。由于大部分帧 信息包含在亮度通道中,因此相对于色度通道,上下文建模经常针对亮度通道使用单独的 上下文。然而,由于两个色度通道的统计特性相对相似,因此通常在色度通道之间共用上下 文。
[0111] 高效率视频编码(HEVC)测试模型的版本6 ( "HM-6. 0")将变换单位(TU)分割成 多个子集并且对各子集中的残差系数进行两遍扫描。第一遍对将残差系数的状态表示为非 零值(有效)或零值(无效)的标志进行编码。该数据已知为有效性映射。第二遍对已知 为系数等级的有效残差系数的量值和符号进行编码。
[0112] 所提供的扫描模式使得能够将残差系数的二维阵列扫描成一维阵列。在HM-6.0 中,使用所提供的扫描模式来对有效性映射和系数等级这两者进行处理。通过使用所提供 的扫描模式扫描有效性映射,可以确定最末有效系数在二维有效性映射中的位置。扫描模 式可以是水平的、垂直的或对角的。
[0113] HM-6. 0提供针对(还已知为具有正方形形状和非正方形形状这两者的变换单位 (TU)的)残差块的支持。各变换单位(TU)包含一组残差系数。具有相等大小的边尺寸的 残差块已知为正方形变换单位(TU),并且具有不等大小的边尺寸的残差块已知为非正方形 变换单位(TU)。
[0114] HM-6.0 中所支持的变换单位(TU)的大小是 4X4、8X8、16X16、32X32、4X16、 16X4、8X32和32X8。通常针对亮度样本说明变换单位(TU)的大小。然而,在使用4:2:0 的色度格式的情况下,各色度样本占据2X2个亮度样本的区域。因此,扫描变换单位(TU) 以对色度残差数据进行编码使用了水平尺寸和垂直尺寸的一半的扫描模式,诸如针对4X4 亮度残差块的2X2等。为了对残差系数进行扫描和编码的目的,将16X 16、32X32、4X 16、 16X4、8X32和32X8的变换单位(TU)分割成多个子块、即大小为4X4的变换单位(TU) 扫描的下层,其中在HM-6. 0内存在相应的映射。
[0115] 在HM-6. 0中,上述变换单位(TU)大小的子块与变换单位(TU)中的子集位于同一 位置处。在另一实现中,子集可能与大小不同于上述子块的大小的子块不位于同一位置处。 将位于一个子块内并排配置的有效性映射的一部分内的所设置的有效系数标志称为有效 系数组。
[0116] 对于 16X16、32X32、4X16、16X4、8X32 和 32X8 的变换单位(TU),有效性映射 编码利用两级扫描。上级扫描进行诸如后向对角左下扫描等的扫描,以编码或推断表示各 子块的有效系数组的标志。在这些子块内,进行诸如后向对角左下扫描等的扫描,以针对 具有1值的有效系数组标志的子块来编码有效系数标志。对于16 X 16变换单位(TU),使 用4X4上级扫描。对于32X32变换单位(TU),使用8X8上级扫描。对于16X4、4X16、 32X8和8X32的变换单位(TU)大小,分别使用4X1、1X4、8X2和2X8的上级扫描。
[0117] 在各变换单位(TU)中,可以将残差系数数据编码在位流中。各"残差系数"是表 示频域(DCT)的变换单位内的图像特征并且在该变换单位内占据独特位置的数字。变换单 位是可以在空间域和频域之间进行变换的残差数据样本的块。在频域中,变换单位(TU)将 残差数据样本编码为残差系数数据。按二(2)的幂来确定变换单位的边尺寸的大小(针对 "亮度"通道为4个样本?32个样本、并且针对"色度"通道为2个样本?16个样本)。变 换单位(TU)树的叶节点可以包含变换单位(TU)、或者在不需要残差系数数据的情况下可 以什么也不包含。
[0118] 由于变换单位的空间表示是残差数据样本的二维阵列,因此如以下详细所述,根 据诸如改进的离散余弦变换(DCT)等的变换所得的频域表示还是残差系数的二维阵列。变 换单位(TU)内的典型样本数据的频谱特性使得频域表示与空间表示相比更加紧凑。此外, 变换单位(TU)中典型的较低频率的频谱信息的占主导导致了较大值的残差系数向着变换 单位(TU)的表示低频残差系数的左上方聚集。
[0119] 可以使用改进的离散余弦变换(DCT)或改进的离散正弦变换(DST)来实现残差变 换。残差变换的实现被配置为支持所需的各变换单位(TU)大小。在视频编码器中,对来自 残差变换的残差系数进行缩放和量化。该缩放和量化使残差系数的量值缩小,由此导致以 降低图像质量为代价来缩小编码在位流中的数据的大小。
[0120] 在进行残差变换之后,进行量化处理。量化处理的目的是通过降低残差系数的量 值的精度来实现较高的压缩率。量值精度的该降低是有损处理,因而会对视觉质量产生影 响。利用量化参数(QP)来控制精度降低的等级。该参数的值越高,视觉质量所受到的影响 越大。可以通过使用如以下所述的delta-qp句法元素,针对变换单位(TU)等级来修改量 化参数。
[0121] 开发中的高效率视频编码(HEVC)标准正寻求视频数据的高效率压缩。可以使用 估计和统计数据分析来实现视频数据的高效率压缩。开发中的高效率视频编码(HEVC)标 准正寻求以高的位率对视频数据进行编码或解码。开发中的高效率视频编码(HEVC)标准 中所采用的上下文自适应二进制算术编码(CABAC)方案支持被称为"旁路编码"的"等概 率"运算模式。在该模式中,二进制数不与来自上下文模型的上下文相关联,因而不存在上 下文模型更新步骤。在这种模式中,假定对各二进制数进行旁路编码从而提高吞吐量,则可 以并行地从位流读取多个相邻二进制数。例如,硬件实现可以并行地进行相邻旁路编码数 据的组的写入/读取,以提高对位流进行编码/解码的吞吐量。
[0122] 图1是示出视频编码器100的功能模块的示意框图。图2是示出相应的视频解码 器200的功能模块的示意框图。如图3A和3B所示,可以使用通用计算机系统300来实现 视频编码器100和视频解码器200,其中可以利用计算机系统300内的专用硬件、利用计算 机系统300内可执行的软件、或者可选地利用专用硬件和计算机系统300内可执行的软件 的组合来实现各种功能模块。
[0123] 如图3A所示,计算机系统300包括:计算机模块301 ;诸如键盘302、鼠标指示器装 置303、扫描器326、照相机327和麦克风380等的输入装置;以及包括打印机315、显示装 置314和扬声器317的输出装置。计算机模块301可以使用外部调制器-解调器(调制解 调器)收发器装置316来经由接线321与通信网络320进行通信。通信网络320可以是广 域网(WAN),诸如因特网、蜂窝电信网络或私有WAN等。在接线321是电话线的情况下,调制 解调器316可以是传统的"拨号上网"调制解调器。可选地,在接线321是高容量(例如, 线缆)接线的情况下,调制解调器316可以是宽带调制解调器。还可以使用无线调制解调 器来进行向着通信网络320的无线连接。
[0124] 计算机模块301通常包括至少一个处理器单元305和存储器单元306。例如,存 储器单元306可以具有半导体随机存取存储器(RAM)和半导体只读存储器(ROM)。计算机 模块301还包括多个输入/输出(I/O)接口,其中这多个输入/输出(I/O)接口包括:音 频-视频接口 307,其连接至视频显示器314、扬声器317和麦克风380 ;1/0接口 313,其 连接至键盘302、鼠标303、扫描器326、照相机327以及可选的操纵杆或其它人机接口装置 (未示出);以及外部调制解调器316和打印机315所用的接口 308。在一些实现中,调制 解调器316可以内置于计算机模块301内、例如内置于接口 308内。计算机模块301还具 有本地网络接口 311,其中该本地网络接口 311允许计算机系统300经由接线323连接至已 知为局域网(LAN)的局域通信网络322。如图3A所示,局域通信网络322还可以经由接线 324连接至广域网320,其中该局域通信网络322通常包括所谓的"防火墙"装置或具有相似 功能的装置。本地网络接口 311可以包括以太网(Ethernet?)电路卡、蓝牙(Bluetooth?) 无线配置或IEEE 802. 11无线配置;然而,对于接口 311,可以实践多种其它类型的接口。
[0125] I/O接口 308和313可以提供串行连接和并行连接中的任一个或这两者,其中前 者通常根据通用串行总线(USB)标准来实现并且具有相应的USB连接器(未示出)。设置 有存储装置309,并且存储装置309通常包括硬盘驱动器(HDD) 310。还可以使用诸如软盘 驱动器和磁带驱动器(未示出)等的其它存储装置。通常设置有光盘驱动器312以用作数 据的非易失性源。作为向着系统300的数据的适当源,可以使用例如光盘(例如,⑶-ROM、 DVD、蓝光盘(Blu-ray Disc?))、USB-RAM、便携型外部硬盘驱动器和软盘等的便携型存储器 装置。通常,HDD 310、光盘驱动器312、网络320和322或者照相机327中的任意均可用于 针对要编码的视频数据的源,或者连同显示器314 -起用于要存储或再现的解码视频数据 的目的地。
[0126] 计算机模块301的组件305?313通常经由互连总线304并且以得到相关领域技 术人员已知的计算机系统300的传统操作模式的方式进行通信。例如,处理器305使用接 线318连接至系统总线304。同样,存储器306和光盘驱动器312通过接线319连接至系统 总线304。可以实践所述配置的计算机的示例包括IBM-PC和兼容机、Sun Sparcstation、 Apple Mac?或相似的计算机系统。
[0127] 在适当或期望的情况下,可以使用计算机系统300来实现编码器100和解码器200 以及以下所述的方法,其中可以将编码器100和解码器200以及要说明的处理作为计算机 系统300内可执行的一个或多个软件应用程序333来实现。特别地,利用在计算机系统300 内执行的软件333中的指令331 (参见图3B)来实现编码器100、解码器200和所述方法的 各步骤。可以将软件指令331形成为各自用于进行一个或多个特定任务的一个或多个代码 模块。还可以将软件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法, 并且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。
[0128] 例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质中。将软件 从计算机可读介质载入计算机系统300,然后由计算机系统300来执行。记录有这种软件或 计算机程序的计算机可读介质是计算机程序产品。优选地,在计算机系统300中使用该计 算机程序产品实现了用于实现编码器100、解码器200和所述方法的有利设备。
[0129] 通常将软件333存储在HDD 310或存储器306中。将该软件从计算机可读介质载 入计算机系统300,并且由计算机系统300来执行。因而,例如,可以将软件333存储在光盘 驱动器312所读取的光学可读盘存储介质(例如,⑶-ROM) 325上。
[0130] 在一些示例中,将应用程序333以编码在一个或多个⑶-ROM 325上并且经由相应 的驱动器312进行读取的方式供给至用户,或者可选地,可以由用户从网络320或322读取 应用程序333。此外,还可以将软件从其它计算机可读介质载入计算机系统300。计算机可 读存储介质是指将所记录的指令和/或数据提供至计算机系统300以供执行和/或处理的 任何非瞬态有形存储介质。这种存储介质的示例包括软盘、磁带、CD-R0M、DVD、蓝光盘、硬盘 驱动器、ROM或集成电路、USB存储器、磁光盘、或者诸如PCMCIA卡等的计算机可读卡等,而 与这些装置在计算机模块301的内部还是外部无关。还可以参与将软件、应用程序、指令和 /或视频数据或编码视频数据提供至计算机模块301的瞬态或非有形计算机可读传输介质 的示例包括:无线电或红外线传输通道及向着其它计算机或联网装置的网络接线、以及包 括电子邮件发送和网站上所记录的信息等的因特网或内联网等。
[0131] 可以执行上述的应用程序333的第二部分和相应的代码模块来实现要渲染或呈 现在显示器314上的一个或多个图形用户界面(⑶I)。通过典型地对键盘302和鼠标303 进行操作,计算机系统300的用户和应用程序可以以在功能上可适应的方式对界面进行操 作,以将控制命令和/或输入提供至与这些GUI相关联的应用程序。还可以实现在功能上 可适应的其它形式的用户界面,诸如利用经由扬声器317所输出的语音提示和经由麦克风 380所输入的用户声音命令的音频界面等。
[0132] 图3B是处理器305和"存储器"334的详细示意框图。存储器334表示图3A中的 计算机模块301可以访问的(包括HDD 309和半导体存储器306的)所有存储器模块的逻 辑聚合。
[0133] 在初始对计算机模块301通电的情况下,上电自检(power-on self-test, POST) 程序350执行。通常将POST程序350存储在图3A的半导体存储器306的ROM 349中。有 时将诸如存储有软件的ROM 349等的硬件装置称为固件。POST程序350检查计算机模块 301内的硬件以确保适当工作,并且通常检查处理器305、存储器334 (309, 306)和通常还存 储在ROM 349中的基本输入-输出系统软件(BIOS)模块351,以进行正确操作。一旦POST 程序350成功运行,BIOS 351启动图3A的硬盘驱动器310。启动硬盘驱动器310使得经由 处理器305执行驻留在硬盘驱动器310上的引导装入程序352。这样将操作系统353载入 RAM存储器306,其中在该RAM存储器306上,操作系统353开始工作。操作系统353是处 理器305可执行的系统级应用程序,以实现包括处理器管理、存储器管理、装置管理、存储 管理、软件应用程序接口和通用用户界面等的各种高级功能。
[0134] 操作系统353管理存储器334(309, 306),以确保计算机模块301上运行的各处理 或应用程序具有在不会与分配至其它处理的内存冲突的情况下执行的充足内存。此外,必 须适当使用图3A的系统300中可用的不同类型的存储器,以使得各处理可以高效地运行。 因此,聚合存储器334并不意图例示如何分配存储器的特定区段(除非另外说明),而是提 供计算机系统300可访问的存储器的概述图以及如何使用该存储器。
[0135] 如图3B所示,处理器305包括多个功能模块,其中这多个功能模块包括控制单元 339、运算逻辑单元(ALU) 340和有时称为高速缓冲存储器的本地或内部存储器348。高速缓 冲存储器348在寄存器区段中通常包括多个存储寄存器344?346。一个或多个内部总线 341从功能上使这些功能模块相互连接。处理器305通常还具有用于使用接线318来经由 系统总线304与外部装置进行通信的一个或多个接口 342。存储器334使用接线319连接 至总线304。
[0136] 应用程序333包括可以包含条件分支指令和循环指令的指令序列331。程序333 还可以包括执行程序333时所使用的数据332。将指令331和数据332分别存储在存储器 位置328、329、330和335、336、337中。根据指令331和存储器位置328?330的相对大小, 如存储器位置330中示出的指令所描述的,可以将特定指令存储在单个存储器位置中。可 选地,如存储器位置328和329中示出的指令段所描述的,可以将指令分割成各自被存储在 单独的存储器位置中的多个部分。
[0137] 通常,向处理器305赋予一组指令,其中在该处理器305内执行该组指令。处理 器305等待下一输入,其中处理器305通过执行另一组指令来对该下一输入作出反应。可 以从一个或多个源提供各输入,其中该输入包括一个或多个输入装置302、303所生成的数 据、从外部源经由网络320、302其中之一所接收到的数据、从存储装置306、309其中之一所 检索到的数据或者从插入相应的读取器312内的存储介质325所检索到的数据(所有这些 组件均在图3A中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉 及将数据或变量存储至存储器334。
[0138] 编码器100、解码器200和所述方法使用存储在存储器334内的相应存储器位置 355、356、357中的输入变量354。编码器100、解码器200和所述方法产生存储在存储器334 内的相应存储器位置362、363、364中的输出变量361。可以将中间变量358存储在存储器 位置 359、360、366 和 367 中。
[0139] 参考图3B的处理器305,寄存器344、345、346、运算逻辑单元以1^)340和控制单 元339 -起工作以进行微操作序列,其中这些微操作序列是针对构成程序333的指令集中 的每个指令进行"提取、解码和执行"周期所需的。各提取、解码和执行周期包括以下操作:
[0140] (a)提取操作,用于从存储器位置328、329、330提取或读取指令331 ;
[0141] (b)解码操作,其中在该解码操作中,控制单元339判断提取了哪个指令;以及
[0142] (c)执行操作,其中在该执行操作中,控制单元339和/或ALU 340执行该指令。
[0143] 之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样,可以进行存 储周期,其中在该存储周期中,控制单元339将值存储至或写入存储器位置332。
[0144] 要说明的处理中的各步骤或子处理与程序333的一个或多个区段相关联,并且通 过处理器305中的寄存器部344、345、347、ALU 340和控制单元339 -起工作以针对程序 333的所述区段的指令集中的每个指令进行提取、解码和执行周期,来进行各步骤或子处 理。
[0145] 可选地,可以在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专 用硬件中实现编码器1〇〇、解码器200和所述方法。这种专用硬件可以包括图形处理器、数 字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者一个或多个微处理器 和关联存储器。
[0146] 如上所述,可以将视频编码器100作为驻留在硬盘驱动器310上并且由处理器305 控制其执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频编码器 100包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块102? 112、114 和 115。
[0147] 尽管图1的视频编码器100是高效率视频编码(HEVC)视频解码流水线的示例,但 模块102?112、114和115所进行的处理阶段对于诸如VC-1或H. 264/MPEG-4AVC等的其 它视频编解码器是共通的。视频编码器100接收未编码的帧数据101作为包括亮度样本和 色度样本的一系列帧。视频编码器1〇〇将帧数据101的各帧分割成例如可表示为编码单位 (CU)树的编码单位(CU)的层级集合。
[0148] 视频编码器100通过从多路复用器模块110输出已知为预测单位(PU) 120的预测 数据样本的阵列来进行工作。差模块115输出预测单位(PU) 120和从帧数据101所接收到 的数据样本的相应阵列之间的差,其中该差已知为残差数据样本122。
[0149] 来自差模块115的残差数据样本122被变换模块102接收到,其中该变换模块 102将该差从空间表示转换为频域表示,以针对变换树中的各变换单位(TU)创建变换系数 124。针对开发中的高效率视频编码(HEVC)标准,使用改进的离散余弦变换(DCT)来实现 向着频域表示的转换,其中在该改进的离散余弦变换中,对传统的DCT进行修改以使用移 位和加法来实现。然后将变换系数124输入至缩放和量化模块103,并且进行缩放和量化以 产生残差系数126。该缩放和量化处理导致精度损失。
[0150] 将残差系数126视为向着逆缩放模块105的输入,其中该逆缩放模块105反转缩 放和量化模块103所进行的缩放以产生作为残差系数126的重新缩放版本的重新缩放变换 系数128。还将残差系数126视为向着熵编码器模块104的输入,其中该熵编码器模块104 将残差系数编码在编码位流113中。由于缩放和量化模块103所引起的精度损失,因此重新 缩放变换系数128与原始变换系数124不一致。然后,将来自逆缩放模块105的重新缩放 变换系数128输出至逆变换模块106。逆变换模块106进行从频域向着空间域的逆变换,以 产生与在解码器处所产生的空间域表示相同的重新缩放变换系数128的空间域表示130。
[0151] 运动估计模块107通过将帧数据101与配置在存储器306内的帧缓冲器模块112 中所存储的先前帧数据进行比较来产生运动矢量132。然后将这些运动矢量132输入至运 动补偿模块108,其中该运动补偿模块108考虑到源自于运动矢量132的空间偏移,通过对 帧缓冲器模块112中所存储的样本进行滤波来产生帧间预测的参考样本134。尽管图1没 有示出,但还将运动矢量132作为句法元素传递至熵编码器模块104以编码在编码位流113 中。帧内预测模块109使用从求和模块114获得的样本138来产生帧内预测的参考样本 136,其中该求和模块114对多路复用器模块110的输出120和来自逆变换模块106的输出 130进行求和。
[0152] 可以使用帧内预测或帧间预测方法来对预测单位(PU)进行编码。根据由此得到 的编码位流113的期望位率和由于帧内预测或帧间预测方法而引入的图像质量失真量之 间的率失真权衡来判断是使用帧内预测还是帧间预测。如果使用帧内预测,则还根据率失 真权衡,从一组可能模式中选择一个帧内预测模式。针对各预测单位选择一个帧内预测模 式。
[0153] 多路复用器模块110根据利用尽管未示出但本领域内众所周知的控制逻辑所确 定的当前预测模式142,来选择来自帧内预测模块109的帧内预测的参考样本136或来自运 动补偿块108的帧间预测的参考样本134。还将预测模式142提供至熵编码器104,并且如 此使用该预测模式142来确定或建立如将说明的变换单位的扫描顺序。帧间预测仅使用对 角扫描顺序,而帧内预测可以使用对角扫描、水平扫描或垂直扫描顺序。
[0154] 求和模块114产生总和138,其中将该总和138输入至去块滤波器模块111。去块 滤波器模块111沿着块边界进行滤波,从而产生写入存储器306内所配置的帧缓冲器模块 112的去块样本140。帧缓冲器模块112是具有用以保持来自多个过去帧的数据以供将来 参考的充足容量的缓冲器。
[0155] 在视频编码器100中,通过求出输入帧数据101的数据样本和输入帧数据101的 数据样本的预测120之间的差来确定一个变换单位(TU)内的残差数据样本122。该差提供 变换单位(TU)的残差系数的空间表示。将变换单位(TU)的残差系数转换成二维有效性映 射。
[0156] 然后,按已知为扫描顺序的特定顺序来扫描变换单位(TU)中的残差系数的有效 性映射,以形成被称为有效系数标志的列表的标志值的一维列表。可以描述该扫描顺序,或 者可以通过诸如利用预测模式142从帧内预测模块109所接收到的扫描模式等的扫描模式 来指定该扫描顺序。扫描模式可以是水平、垂直、对角或折线的。
[0157] 高效率视频编码(HEVC)测试模型的版本6(即,"HE_6.0")进行后向方向上的扫 描。然而,还可以进行前向方向上的扫描。在HEVC参考模型版本6.0(即,"HE_6.0")中, 扫描操作开始最末有效系数之后(其中,"之后"是在残差系数的后向扫描的方向上)的一 个残差系数,并且继续直到到达有效性映射的左上位置为止。具有该特性并且符合HEVC参 考模型版本6. 0的扫描操作已知为"后向扫描"。在HEVC参考软件版本6. 0 (即,"HE_6. 0") 中,通过对变换单位(TU)中的系数的坐标进行编码来用信号通知最末有效系数的位置。该 上下文中的形容词"最末"的使用依赖于扫描的特定顺序。根据一个扫描模式可以作为"最 末的"非零残差系数或相应的1值有效系数标志的内容根据其它扫描模式可能不是"最末 的"。
[0158] 将表示最末有效系数之前的各残差系数的有效性的有效系数标志的列表编码在 位流中。由于针对最末有效系数标志的位置的先前编码隐含表示该残差系数是有效的,因 此不要求将最末有效系数标志值明确编码在位流中。
[0159] 较大值的残差系数向着变换单位(TU)的左上方的聚集导致列表中较早的大部分 有效性标志是有效的,而稍后在列表中发现较少的有效性标志。
[0160] 如上所述,视频编码器100还包括实现熵编码方法的熵编码器模块104。熵编码器 模块104根据从缩放和量化模块103接收到的传入残差系数数据(或残差系数)126产生 句法元素。熵编码器模块104输出编码位流113,并且以下将更详细地进行说明。对于开发 中的高效率视频编码(HEVC)标准,将编码位流113描绘成网络抽象层(NAL)单位。帧的各 片包含在一个NAL单位中。
[0161] 针对熵编码器模块104中所实现的熵编码方法,存在几个替代方案。开发中的 高效率视频编码(HEVC)标准支持上下文自适应二进制算术编码(CABAC),其中在H. 264/ MPEG-4AVC中发现上下文自适应二进制算术编码(CABAC)的变形。替代的熵编码方案已知 为概率区间划分熵(PIPE)编码器。
[0162] 对于支持多个视频编码方法的视频编码器100,根据编码器100的结构来选择所 支持的熵编码方法其中之一。此外,在对来自各帧的编码单位进行编码时,熵编码器模块 104编写编码位流113,以使得各帧具有一个或多个片,其中各片包含该帧的一部分的图像 数据。针对每帧产生一个片,这样减少了与描述各片边界相关联的开支。然而,还可以将帧 分割成多个片。
[0163] 可以将图2的视频解码器200作为驻留在硬盘驱动器310上并且由处理器305来 控制其执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频解码器 200包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块202? 208和210。尽管参考高效率视频编码(HEVC)视频解码流水线来描述视频解码器200,但 模块202?208和209所进行的处理阶段对于采用诸如H. 264/MPEG-4AVC、MPEG-2和VC-1 等的熵编码的其它视频编解码器而言是共通的。
[0164] 诸如编码位流113等的编码位流被视频解码器200接收到。可以从存储器306、硬 盘驱动器310、⑶-ROM、蓝光(Blu-ray?)盘或其它计算机可读存储介质读取编码位流113。 可选地,可以从诸如连接至通信网络320的服务器或射频接收器等的外部源来接收编码位 流113。编码位流113包含表示要解码的帧数据的编码句法元素。
[0165] 将编码位流113输入至熵解码器模块202,其中该熵解码器模块202从编码位流 113中提取句法元素,并且将这些句法元素的值传递至视频解码器200中的其它块。可以存 在诸如参考熵编码器模块104所述等的在熵解码器模块202中所实现的多个熵解码方法。 将表示残差系数数据的句法元素数据220传递至逆缩放和变换模块203,并且将表示运动 矢量信息的句法元素数据222传递至运动补偿模块204。逆缩放和变换模块203对残差系 数数据进行逆缩放以创建重建变换系数。然后,诸如参考逆变换模块106所述的逆变换等, 模块203进行逆变换以将重建变换系数从频域表示转换成空间域表示,从而产生残差样本 224。
[0166] 运动补偿模块204将来自熵解码器模块202的运动矢量数据222与来自存储器 306内所配置的帧缓冲器块208的先前帧数据226相组合使用,以产生作为输出解码帧数据 的预测的针对预测单位(PU)的帧间预测参考样本228。在句法元素表示使用帧内预测对当 前编码单位进行编码的情况下,帧内预测模块205使用在空间上邻接预测单位(PU)的样本 来产生针对预测单位(PU)的帧内预测的参考样本230。根据从求和模块210输出的总和 232来获得在空间上邻接的样本。多路复用器模块206根据利用编码位流113中的句法元 素所表示的当前预测模式来选择针对预测单位(PU)的帧内预测参考样本或帧间预测参考 样本。利用求和模块210将从多路复用器模块206输出的样本阵列234与来自逆缩放和变 换模块203的残差样本224相加,以产生总和232,然后将该总和232分别输入至去块滤波 器模块207和帧内预测模块205。与编码器100相对比,帧内预测模块205从熵解码器202 接收预测模式236。多路复用器206从熵解码器202接收帧内预测/帧间预测选择信号。 去块滤波器模块207沿着数据块边界进行滤波以使沿着数据块边界可见的伪影平滑化。将 去块滤波器模块207的输出写入存储器306内所配置的帧缓冲器模块208。帧缓冲器模块 208提供用以保持多个解码帧以供将来参考的充足存储量。还从帧缓冲器模块208输出解 码帧209。
[0167] 将参考图4A和图4B来说明示例的变换单位(TU) 400的空间结构。
[0168] 图4A示出示例的变换单位(TU) 400。变换单位400具有矩形空间结构并且大小可 以为4X4?32X32。变换单位(TU)400的宽度和高度取作为二(2)的整数幂的值。
[0169] 如上所述,变换单位(TU)保持残差系数。可以定义将变换单位(TU)400分割成 一个或多个子集401的集合的两级扫描。根据最末有效系数的位置,除可能包含少于十六 (16)个残差系数的按扫描顺序的第一个子集以外,各子集包括按扫描顺序403的十六(16) 个连续残差系数。如从图4B看出,示例的变换单位400相对于扫描顺序403具有最末有效 系数位置451。
[0170] 如从图4A看出,在变换单位400的上级处,通过使用诸如后向对角左下扫描等的 扫描来扫描各下级,进行扫描。在还已知为"子集级"的变换单位400的下级处,可以使用 诸如后向对角左下扫描等的扫描来进行扫描。在变换单位400的上扫描级处,如果下一子 集不包含任何有效残差系数,则可以确定不进行下一子集的下级扫描。
[0171] 变换单位400包含不具有有效残差系数的子集452。在该示例中,可以针对子集 452跳过下级扫描步骤,并且高级扫描按扫描顺序403进入下一子集。变换单位400的左上 子集405具有子集索引零。其它子集按与扫描顺序相反的顺序具有递增索引。
[0172] 将参考图5和图7来说明诸如变换单位(TU)400等的变换单位(TU)的句法元素 结构。位流113的位流部501包含变换单位(TU)400的句法元素并且包括以下句法元素。
[0173] (i) delta_qp 502 :delta_qp句法元素502包含与用于对变换单位(TU) 400进行 量化的量化参数值和预定量化参数值之间的差有关的信息。
[0174] (ii) last_significant_xy 503 :last_significant_xy 句法兀素 503 包含与变换单 位(TU)400中的最末有效残差系数的位置有关的信息。
[0175] (iii)子集残差系数数据504 :子集残差系数数据包括零个或多个块701,并且包 含与变换单位(TU)400的残差系数的值有关的信息。
[0176] 如图7所示,块701包含与变换单位(TU)的一个子集的残差系数的值有关的信 息,并且包括以下句法元素。
[0177] (i) significant_coefT_group_flag 702 :针对各子集对 significant_coeff_ gr〇Up_flag句法元素702进行一次编码,并且在"假"的情况下,推断出子集中的所有残 差系数为零,并且在块701中不存在残差系数数据703、704、705、706和707。否则(在 significant_coeff_group_flag句法元素702为"真"的情况下),子集中的至少一个残差 系数具有非零值,并且在块701中存在残差系数数据703、704、705、706和707的一些组合。
[0178] (ii)零个或多个 significant_coeff_flag 值的块 703 :如果 significant_coeff_ group_flag 702表示块703的存在,则存在块703。除最末有效残差系数以外,针对子集的 每个残差系数在块703中均存在significant_coeff_flag 702的值,以表不给定残差系数 的量值是否大于零。
[0179] (iii)零个或多个 coeff_abs_level_greaterl_flag 值的块 7〇4 :如果 significant_coeff_group_flag 702表示块704的存在,贝U存在块704。针对子集的量值被 表不为大于零的每个残差系数,在块703中存在coeff_abs_level_greaterl_f lag值,以表 示给定残差系数的量值是否大于1。
[0180] (iv)零个或多个 coeff_abs_level_greater2_flag 值的块 705 :如果 significant_coeff_group_flag 702表示块705的存在,则存在块705。针对子集的量值被 表不为大于1的每个残差系数,在块705中存在coeff_abs_level_greater2_flag值,以表 示给定残差系数的量值是否大于2。
[0181] (v)零个或多个 coeff_sign_flag 值的块 706 :如果 significant_coeff_group_ flag 702表示块706的存在,则存在块706。针对量值被表示为大于零的每个残差系数,在 块706中存在coeff_sign_flag值,以表示给定残差系数的算术符号。
[0182] (vi)零个或多个coeff_abs_level_remaining值的块707 :针对残差系数量 值-3的给定值(即,剩余残差系数量值),块707的各coeff_abs_level_remaining值 是 Golomb-Rice 码字。如果 significant_coeff_group_flag 702 表示块 707 的存在,贝丨J存 在块707。针对量值被表示为大于2的各残差系数,在块707中存在C〇eff_abs_l evel_ remaining值。coeff_abs_level_remaining值针对给定残差系数的剩余残差系数量值,指 定Golomb-Rice码字的值。
[0183] 现在将参考图6A来说明对变换单位(TU)进行编码的方法650。可以将方法650 作为编码器100的熵编码器模块104的一部分来实现。如上所述,构成编码器100的软件 代码模块102?112、114和115驻留在硬盘驱动器310上,并且由处理器305控制这些模 块的执行。
[0184] 将参考图5的位流部501来以示例方式说明方法650。方法650将delta_qp502、 last_significant_xy503和数据504编码在位流部501中。
[0185] 方法650从对delta-qp值进行编码的步骤651开始,其中在该步骤651中,在处 理器305的执行下,利用编码器模块104对delta-qp值进行编码,并且存储在存储器306 中。
[0186] 然后,在对最末有效位置进行编码的步骤652中,在处理器305的执行下,利用编 码器模块104将最末有效残差系数的位置编码在位流部501中。可以将位流部501存储在 存储器306中。使用最末有效残差系数的位置、变换单位的宽度和高度和与扫描顺序403 有关的信息来确定要编码在变换单位(TU)中的子集的数量。
[0187] 方法650在对子集进行编码的步骤653中继续,其中在该步骤653中,利用编码器 模块104对子集数据504进行编码并且存储在存储器306内。
[0188] 然后,在确定步骤654中,编码器模块104基于与变换单位(TU)中的最末有效残 差系数的位置和所使用的扫描顺序403有关的信息,判断是否应将更多子集504编码在位 流部501中。如果编码器模块104判断为存在要编码的更多子集504,则方法650返回至对 子集进行编码的步骤653。如此,方法650迭代地进行步骤653和654,直到处理了从包含 最末有效系数的子集到第一个子集的所有子集为止。否则,方法650结束。
[0189] 将参考图6B来说明对变换单位(TU)进行解码的方法600。可以将方法600作为 解码器200的熵解码器模块202的一部分来实现。如上所述,构成解码器200的软件代码 模块202?208和210驻留在硬盘驱动器310上,并且由处理器305控制执行这些模块的 执行。
[0190] 再次,将参考根据方法650进行编码后的图5的位流部501来以示例方式说明方 法600。方法600从位流部501解码数据块502、503、504。
[0191] 该方法从对delta-qp值进行解码的步骤601开始,其中在该步骤601中,在处理 器305的执行下,利用解码器模块202确定delta-qp标志的值。可以将delta-qp标志值 存储在存储器306中。
[0192] 然后,在对最末有效位置进行解码的步骤602中,利用解码器模块202确定变换单 位(TU)中的最末有效残差系数的位置。使用最末有效残差系数的位置、变换单位的宽度和 高度以及与扫描顺序403有关的信息来确定在变换单位(TU)中要解码的子集的数量。
[0193] 方法600在对子集进行解码的步骤603中继续,其中在该步骤603中,在处理器 305的执行下,利用解码器模块202对子集数据504进行解码。可以将解码后的子集数据存 储在存储器306内。
[0194] 然后,在确定步骤604中,解码器模块202基于与变换单位(TU)中的最末有效残 差系数的位置和所使用的扫描顺序403有关的信息,来判断是否应从位流部501解码更多 子集504。
[0195] 如果解码器模块202判断为存在要解码的更多子集504,则方法600返回至子集步 骤603。否则,方法600结束。
[0196] 现在将参考图8A来说明对变换单位(TU)的子集进行编码的方法850。可以将方 法850作为编码器100的熵编码器模块104的一部分来实现。如上所述,构成编码器100 的软件代码模块102?112U14和115驻留在硬盘驱动器310上,并且由处理器305控制 这些模块的执行。
[0197] 将参考图7的块701以示例方式说明方法850。方法850将块702、703、704、705、 706、707编码在位流部501中。
[0198] 方法850从对有效组标志进行编码的步骤851开始,其中在该步骤851中,编码器 模块104在处理器305的执行下,对significant_coeff_group_flag 702的值进行编码并 将编码值存储在存储器306中。
[0199] 然后,在步骤852中,如果significant_coeff_group_flag 702的值表示子集包含 针对块703、704、705、706、707要编码的数据,则方法850进入步骤853。否则,方法850结 束。
[0200] 在编码步骤853中,编码器模块104在处理器305的执行下,对significant# C〇eff_flag值的块703进行编码。编码器模块104针对子集的除变换单位(TU)的最末有 效残差系数以外的各残差系数,确定一个significant_coeff_flag值。可以将significant# coeff_f lag值存储在存储器306中。
[0201] 然后,在编码步骤854中,编码器模块104对coeff_abs_level_greaterl_flag值 的块704进行编码。编码器模块104针对子集的量值大于零的各残差系数,确定一个coeff_ abs_level_greaterl_flag 值。可以将编码后的 coeff_abs_level_greaterl_flag 值存储 在存储器306中。
[0202] 在编码步骤855中,编码器模块104对coeff_abs_level_greater2_flag值的块 705进行编码。编码器模块104针对子集的量值大于1的各残差系数,确定一个c 〇eff_abs_ level_greater2_flag 值。可以将编码后的 coeff_abs_level_greater2_flag 值存储在存 储器306中。
[0203] 然后,在编码步骤856中,编码器模块104在处理器305的执行下,对c〇eff_sign_ flag值的块706进行编码。编码器模块104针对子集的量值大于零的各残差系数,确定一 个coeff_sign_flag值。可以将编码后的coeff_sign_flag值存储在存储器306中。
[0204] 在编码步骤857中,编码器模块104对coeff_abs_level_remaining值的块707进 行编码。编码器模块104针对子集的量值大于2的各残差系数,确定一个 C〇eff_abs_level_ remaining值。可以将编码后的coeff_abs_level_remaining值存储在存储器306中。在 步骤857之后,方法850结束。
[0205] 将参考图8B来说明对变换单位(TU)的子集进行解码的方法800。可以将方法800 作为解码器200的熵解码器模块202的一部分来实现。如上所述,构成解码器200的软件 代码模块202?208和210驻留在硬盘驱动器310上,并且由处理器305控制这些模块的 执行。
[0206] 将参考图7的块701来以示例方式说明方法800。方法800从位流部501解码块 702、703、704、705、706、707。
[0207] 方法800从对有效组标志进行解码的步骤801开始,其中在该步骤801中,解 码器模块202对significant_coeff_group_flag 702的值进行解码。可以将解码后的 significant_coeff_group_flag 702 值存储在存储器 306 中。
[0208] 然后,在步骤802中,如果解码器模块202判断为significant_coeff_group_flag 702的值表示子集包含残差系数数据块703、704、705、706、707,则方法800进入步骤803。 否则,方法800结束。
[0209] 在解码步骤803中,解码器模块202在处理器305的执行下,对significant# coeff_f lag值的块703进行解码。解码器模块202针对子集的除变换单位(TU)的最末 有效残差系数以外的各残差系数,确定一个significant_coeff_flag值。可以将解码后的 significant_coeff_flag 值存储在存储器 306 中。
[0210] 然后,在解码步骤 804 中,解码器模块 202 对 coeff_abs_level_greaterl_flag 值的块704进行解码。解码器模块202针对子集的在步骤803中量值被确定为大于零的 各残差系数,确定一个coeff_abs_level_greaterl_flag值。可以将解码后的coeff_abs_ level_greaterl_f lag值存储在存储器306中。
[0211] 在解码步骤805中,解码器模块202在处理器305的执行下,对coeff_abs_level_ greater2_flag值的块705进行解码。解码器模块202针对子集的在步骤804中量值被确 定为大于1的各残差系数,确定一个coeff_abs_level_greater2_flag值。可以将解码后 的 coeff_abs_level_greater2_flag 值存储在存储器 306 中。
[0212] 然后,在解码步骤806中,解码器模块202对coeff_sign_flag值的块706进行解 码。解码器模块202针对子集的在步骤803中量值被确定为大于零的各残差系数,确定一 个coeff_sign_flag值。可以将coeff_sign_flag值存储在存储器306中。
[0213] 方法800在步骤807中结束,其中在步骤807中,解码器模块202对coeff_abs_ level_remaining值的块707进行解码。解码器模块202针对子集的在步骤805中量值被 确定为大于2的各残差系数,确定一个coeff_abs_level_remaining值。同样在步骤807 中,解码器模块202针对给定残差系数的剩余残差系数量值,确定Golomb-Rice码字的值。
[0214] 在步骤807之后,方法800结束。
[0215] 现在将参考图9、图10、图14A和图14B来说明参数化Golomb-Rice码和这些码在 HEVC参考模型版本6.0中的使用以及这里所述的方法。
[0216] 参数化Golomb-Rice码是用于表示变换单位(TU)的残差系数的剩余残差系数量 值的一类通用前缀二进制码。前缀二进制码是每个二进制码字具有唯一前缀的二进制值表 示。这种唯一前缀使得能够将特定码字与其它码字区分开,这是唯一地识别这些码字所表 示的值所需的。
[0217] 参数化Golomb-Rice码的各码字可以包括参数化截断Rice前缀部分和可能的空 阶次〇指数Golomb后缀部分这两部分。截断Rice前缀部分依赖于可能取值0、1、2、3、4的 参数K。对于参数K的每个值,定义阈值。如果残差系数剩余量值的编码值小于阈值,则利 用无指数Golomb后缀的截断Rice码来对该值进行编码。
[0218] 如果残差系数剩余量值的编码值等于或大于阈值,则对预定截断Rice码字进行 编码,以表示编码值等于或大于阈值。此外,使用阶次0指数Golomb码对与(原始编码 值 -阈值的值)相等的值进行编码。
[0219] 如从图9看出,表900包含针对值为0?15且参数K值为0和1的示例截断Rice 码字。
[0220] 如从图10看出,表1000包含示例的阶次0指数Golomb码字。例如,使用具有参 数 K = 0 的 Golomb-Rice 码,将利用构成 Golomb-Rice 码字"11111111110"的截断 Rice 前 缀"11111111"和阶次0指数Golomb后缀"110"来表示值十(10)。在已知参数K的值的情 况下,可以根据给定二进制序列来唯一地识别Golomb-Rice码字。
[0221] 参数化Golomb-Rice码的每个码字具有依赖于参数K和编码值的固定长度。有限 数量的码字可以具有给定长度。如此,对于编码值的集合,利用较短的码字来表示一些编码 值,而利用较长的码字来表示其它编码值。对于视频数据编码,可以将码字分配至编码值, 从而使编码在位流113中的所有码字的总长度最小。不同的剩余残差系数量值在变换单位 (TU)数据中的出现频率不同。可以通过将码字分配至编码值、以使得码字的长度与编码值 的出现频率相对应来实现总码字长度的缩减。例如,可以向残差系数剩余量值的更频繁值 分配较短的码字,并且可以向频率相同的残差系数剩余量值的值分配长度相同的码字。
[0222] 参数化Golomb-Rice码的参数K使得能够在要控制的码字中分配码字长度。值较 小的参数K将更佳的码字分配至量值较小的值,而值较大的参数K将更佳的码字分配至量 值较大的值。因此,为了大体分配最佳码字,所述方法基于残差系数剩余量值的给定值的出 现频率来确定参数K的值。
[0223] 在开发中的HEVC标准中,预先并不知晓诸如剩余残差系数量值的值等的残差系 数剩余量值的真实频率,因而在子集内进行参数K值的估计。为了确保参数化Golomb-Rice 码字的正确解码,编码器100和解码器200可被配置为使用参数K的相同值来对特定码字 进行解码。如此,频率值的估计局限于解码器200处可利用的信息。
[0224] 频率值的估计可以包括初始估计和自适应这两个阶段。
[0225] 初始估计阶段针对参数K提供初始估计值。由于正对剩余残差系数量值的值进行 解码并且更多信息变得可用于进行分析,因而自适应阶段提供针对参数K的值的进一步校 正。
[0226] 初始估计确保了更佳的码字分配。另一方面,初始估计通常难以以如可利用不对 与剩余残差系数量值的值有关的信息进行解码之前那样的高效方式实现。最初确定参数K 的估计的高效方法可以提供编码效率方面的大幅改进。
[0227] 在参数K的初始估计期间,可以检测进一步自适应将不会对参数K的值产生明显 影响、因此可以跳过该自适应的情况。自适应阶段大体改进编码效率。然而,对于实际情况 的广泛类别,由于初始估计提供参数K的最佳值并且无需进一步的自适应,因此自适应是 冗余的。自适应阶段的一个缺点是无法对coeff_abs_level_remaining值的连续值进行并 行解码,这是因为在不知晓在先前coeff_abs_level_remaining值的解码之后自适应地估 计出的参数K的值的情况下,无法对各值进行解码。
[0228] 现在将参考图11和图12A来说明对变换单位(TU)的子集的coeff_abs_level_ remaining值的块进行编码的方法1250。
[0229] 可以将方法1250作为编码器100的熵编码器模块104的一部分来实现。如上所 述,构成编码器100的软件代码模块102?112、114和115驻留在硬盘驱动器310上,并且 由处理器305控制这些模块的执行。
[0230] 将参考图7的coeff_abs_level_remaining值的块707通过示例来说明方法 1250。方法1250将零个或多个coeff_abs_level_remaining值编码在位流部501的块701 中。
[0231] 方法1250从初始化步骤1251开始,其中在该初始化步骤1251中,在处理器305 的执行下,利用编码器模块104来初始估计Golomb-Rice参数K。可以将K的初始值存储在 存储器306中。此外,在步骤1251中,编码器模块104判断编码期间的参数K自适应的必 要性。
[0232] 然后,在确定步骤1257中,如果编码器模块104判断为需要进行自适应,则方法 1250进入步骤1252。以下将更详细地说明自适应确定步骤1257。否则,方法1250进入步 骤 1255。
[0233] 在确定步骤1252中,如果编码器模块104判断为存在更多要编码的c〇eff_abs_ level_remaining值,则方法1250进入步骤1253。否则,方法1250结束。
[0234] 在编码步骤1253中,编码器模块104如以上参考表900和1000所述,根据 Golomb-Rice参数K的初始值来将Golomb-Rice码字编码在块707中。
[0235] 然后,在更新步骤1254中,编码器模块104进行要用于对下一 coeff_abs_level_ remaining值进行编码的参数K的值的自适应。在步骤1254中,基于参数的当前值Kn和最 后解码的coeff_abs_level_remaining值这两个参数来确定参数Κ的下一值Κ η+1。可以使 用如图11所示的查找表1100来确定步骤1254。可以将查找表1100存储在存储器306和 /或硬盘驱动器310中。查找表1100使用值Κ η作为列并使用残差系数量值作为行来提供 κη+1的值。例如,如果参数Κ的当前值是一(1)并且最后解码的coeff_abs_level_remaining 值是十二(12),则参数K的下一值是三(3)。
[0236] 在确定步骤1255中,如果编码器模块104判断为存在更多要编码的c〇eff_abs_ level_remaining值,则方法1250进入步骤1256。否则,方法1250结束。
[0237] 在编码步骤1256中,编码器模块104将Golomb-Rice码字编码在块707中并将编 码后的Golomb-Rice码字存储在存储器306中。
[0238] 现在将参考图11和图12B来说明对变换单位(TU)的子集的coeff_abs_level_ remaining值的块进行解码的方法1200。根据使用Golomb-Rice解码的方法1200来进行 解码。可以将方法1200作为解码器200的熵解码器模块202?208的一部分来实现。如 上所述,构成解码器200的软件代码模块202?208和210驻留在硬盘驱动器310上,并且 由处理器305控制这些模块的执行。
[0239] 将参考图7的coeff_abs_level_remaining值的块707通过示例来说明方法 1200。方法1200从位流部501的块707解码零个或多个coeff_abs_level_remaining值 (即,残差系数剩余量值的值)。
[0240] 方法1200从初始化步骤1201开始,其中在初始化步骤1201中,在处理器305的 执行下,利用解码器模块202初始确定Golomb-Rice参数K。此外,在步骤1201中,解码器 模块202确定解码期间的参数K自适应的必要性。步骤1201与步骤1251相同。
[0241] 然后,在确定步骤1207中,如果解码器模块202判断为需要进行自适应,则如以下 将说明的,方法1200进入步骤1202。否则,方法1200进入步骤1205。
[0242] 然后,在确定步骤1202中,如果解码器模块202判断为存在更多要解码的coefT_ abs_level_remaining值,则方法1200进入步骤1203。否则,方法1200结束。
[0243] 在解码步骤1203中,解码器模块202从存储器306中所存储的块707解码 Golomb-Rice 码字。
[0244] 然后,在更新步骤1204中,解码器模块202进行要用于对子集的下一 c〇eff_abs_ level_remaining值进行Golomb-Rice解码的参数K的值的自适应。步骤1204中所进行的 自适应的过程与以上所述的步骤1254中所使用的自适应的过程相同。
[0245] 在确定步骤1205中,如果解码器模块202判断为存在更多要解码的c〇eff_abs_ level_remaining值,则方法1200进入步骤1206。否贝丨J,方法1200结束。
[0246] 在解码步骤1206中,解码器模块202使用Golomb-Rice解码来从块707解码 Golomb-Rice码字。可以将解码后的Golomb-Rice码字存储在存储器306中。
[0247] 现在将参考图14A和图14B来说明剩余残差系数量值的自适应和非自适应解码。
[0248] 图14A示出coeff_abs_level_remaining二值化器1400。可以使用计算机系统 300来实现二值化器模块1400,其中在该计算机系统300中,可以利用在计算机系统300内 可执行的软件来实现各种功能模块1414、1413、1406、1407和1410。可选地,可以利用计算 机系统300内的专用硬件来实现二值化器1400。在又一替代中,可以利用专用硬件和在计 算机系统300内可执行的软件的组合来实现二值化器1400。
[0249] 可以将二值化器1400作为解码器200的解码器模块202的一部分来实现。可选 地,还可以将二值化器1400作为编码器100的编码器模块104的一部分来实现。
[0250] 二值化器1400针对变换单位(TU)的子集,对剩余残差系数量值进行解码。
[0251] 二值化器1400使用参数K的自适应估计。二值化器1400包括&的初始估计模 块1414,其中该模块1414如上所述进行参数K的初始估计。
[0252] 模块1413对剩余残差系数量值V。进行解码。模块1413接受所输入的Go lomb-Ri ce 码字1402和参数K的初始估计值1401。一旦模块1413完成了解码,则如从图14A看出,输 出解码剩余残差系数量值1412。
[0253] 模块1406基于参数Κ的初始估计值1401和如上所述利用模块1413进行解码后 的值1404来进行参数K值的自适应。
[0254] 模块1407对剩余残差系数量值Vi进行解码。模块1407接受Golomb-Rice码字 1403和参数K的估计值1405作为输入。一旦模块1407完成了解码,则输出解码剩余残差 系数量值1411。
[0255] 模块1410基于参数K的先前值1405和利用模块1407进行解码后的值1408来进 行参数K值的自适应。
[0256] 可以利用下一 Golomb-Rice解码和自适应模块1415来使用参数K的估计值1409。 模块1410依赖于模块1407所提供的数据,而模块1407依赖于模块1406所提供的数据,而 模块1406依赖于模块1413所提供的数据。如此,难以并行执行解码模块1413和1410。此 夕卜,解码和自适应模块1415也依赖于输入数据1416和参数K的先前估计值这两者。然而, 在参数K的值已是最佳的情况下,诸如步骤1406和1410等的自适应步骤不会影响参数K 的实际值。避免冗余的自适应步骤可以在不会对编码效率产生大幅影响的情况下提高解码 吞吐量。
[0257] 图14B不出另一 coeff_abs_level_remaining二值化器1450。再次,可以使用计 算机系统300来实现二值化器模块1450,其中在该计算机系统300中,可以利用在计算机系 统300内可执行的软件来实现各种功能模块1414、1413、1406、1407和1410。可选地,可以 利用计算机系统300内的专用硬件来实现二值化器1450。在又一替代中,可以利用专用硬 件和在计算机系统300内可执行的软件的组合来实现二值化器1450。
[0258] 再次,可以将二值化器1450作为解码器200的解码器模块202的一部分来实现。 可选地,还可以将二值化器1450作为编码器100的编码器模块104的一部分来实现。
[0259] 二值化器1450不使用参数K的自适应估计。二值化器1450通过针对每个时钟周 期对多个残差系数进行解码来实现平行性。
[0260] 模块1458如上所述进行参数K的初始估计。
[0261] 模块1454如上所述对剩余残差系数量值%进行解码。
[0262] 然后,模块1454接受所输入的Golomb-Rice码字1452和参数K的初始估计值 1451。模块1456对剩余残差系数量值Vi进行解码。模块1456接受Golomb-Rice码字1453 和参数K的初始估计值1451作为输入。
[0263] 此外,解码模块1460还将接受它们相应的输入Golomb-Rice码字1459和参数K 的初始估计值1451。
[0264] 模块1454U456和所有其它解码器模块1460不具有任何数据依赖性并且可以并 行执行。
[0265] 现在将参考图13来说明确定用于对变换单位(TU)的子集的coeff_abs_level_ remaining值的块进行解码的参数K的值的方法1300。
[0266] 方法1300由编码器100和解码器200这两者所使用以确保数据的正确解码。如 此,可以将方法1300作为编码器100的熵编码器模块104的一部分来实现。此外,可以将 方法1300作为解码器200的熵解码器模块202的一部分来实现。
[0267] 将参考解码器200通过示例来说明方法1300。
[0268] 方法1300从步骤1301开始,其中在该步骤1301中,解码器模块202在处理器305 的执行下,分析针对变换单位(TU)的当前子集和先前解码子集的先前解码信息。可以从存 储器306访问针对当前子集的先前解码信息。以下将更详细地说明步骤1301。
[0269] 然后,在步骤1302中,解码器模块202判断解码是否将使用自适应并且确定参数 K的值。以下将更详细地说明步骤1302。
[0270] 在步骤1303中,利用解码器模块202将步骤1302中所估计出的参数K的值分配 至保持参数K的存储器306内所配置的变量。在步骤1303之后,方法1300结束。
[0271] 在一个实现中,步骤1301可以分析当前子集中的非零残差系数的数量是否大于 预定阈值T。如果非零(有效)残差系数的数量大于预定阈值,则向参数K分配偏移值 该偏移值将导致具有非零值的参数K相对于零偏移了值。值可以作为 预定值并且设置为一(1)。否则,向参数K分配零设置值KZOT。。
[0272] 对于HEVC测试模型6.0( "HM-6.0"),用于作出该决定的阈值T将是十四(14)。 参数K的偏移值将是一(1),并且零设置值K_。将是零(0)。
[0273] 在另一实现中,在步骤1301中可以分析量化参数Q的值和当前子集的索引I。在这 种实现中,如果量化参数Q的值小于预定阈值T Q并且子集索引I的值小于预定阈值Isubsrt, 则向参数K分配偏移值Kf#。否则,向参数K分配零设置值K ZOT。。
[0274] 对于HEVC测试模型6. 0 ( "HM-6. 0"),用于作出该决定的量化参数TQ的阈值将是 十(10),并且用于作出该决定的子集索引Isubsrt的值将是一(1)。参数K的偏移值1(。"^将 是一(1)并且零设置值K_。将是零(0)。
[0275] 在步骤1301中可以附加地分析变换单位的宽度和高度的值。在这种实现中,如果 变换单位的宽度和高度的值大于预定阈值T width和TMght,则向参数Κ分配偏移值。否 贝1J,向参数Κ分配零设置值KZOT。。
[0276] 对于HEVC测试模型6. 0( "HM-6. 0"),用于作出该决定的变换单位的宽度和高度 的阈值Twidth和TMght将是八⑶和八(8)。参数K的偏移值1(。"^将是一⑴并且零设置 值Κ ζεΜ将是零(0)。
[0277] 在步骤1302中,可以基于子集的索引来进行与子集的编码或解码期间使用自适 应有关的决定。如果索引等于或大于预定值I max,则在编码器方法1250的步骤1257和解码 器方法1200的步骤1207中,方法进入解码器的步骤1205和编码器的步骤1255,并且不使 用参数K的自适应。具有固定的Rice参数K可被视为无依赖性的Golomb-Rice编码或解 码。否则,方法进入方法1200的步骤1202和方法1250的步骤1252,并且使用参数K的自 适应。具有自适应Rice参数K可被视为基于依赖性的Golomb-Rice编码或解码。
[0278] 对于HEVC测试模型6. 0 ( "HM-6. 0"),索引Imax的阈值将是六(6)。图15示出示 例变换单位1500,其中在该变换单位1500中,在步骤1302中使用索引I max的阈值六(6)以 进行与子集的编码或解码期间使用自适应有关的决定。在图15的示例中假定后向对角扫 描模式。将变换单位1500分割成诸如子集1510等的16个子集。利用字母"A"或字母"F" 来标记图15的每个子集,其中利用字母"A"所标记的子集表示使用自适应Rice参数K进行 编码和解码后的子集;而利用"F"所标记的子集表示在步骤1302中对索引I max使用六(6) 的阈值的情况下、使用固定Rice参数K的子集。针对索引Imax的六的值得到使用子集内的 自适应Ri ee参数K的"A"子集。利用字母"F"所标记的子集表示TU 1500内的如下位置中 的子集:针对索引的阈值六(6)得到使用固定Rice参数的子集。索引Imax的阈值对于 TU 1500中的所有子集相同,并且将TU 1500中的子集的位置与阈值进行比较以判断自适 应Rice参数是否要用于进行编码和解码。使用阈值索引Imax的值来选择图15中的自适应 子集和固定子集之间的边界。子集顺序从左上方子集1520的零(0)开始,并且按逆向扫描 顺序继续作为一(1)的子集1530和作为子集二(2)的子集1540。
[0279] 在另一实现中,在步骤1302中,可以基于先前编码或解码子集中的大于1的残差 系数的数量h和大于2的残差系数的数量G 2来进行与子集的编码或解码期间使用自适应 有关的决定。然而,这种方法不适用于不存在先前编码或解码子集的情况。在存在先前编 码或解码子集的情况下,如果值(G 2_Gi)大于预定阈值T21,则在编码器方法1250的步骤 1257中(或者在解码器方法1200的步骤1207中),方法1250进入编码器方法1250的步 骤1255(或解码器方法1200的步骤1205)并且不使用参数K的自适应。否则,方法1250 进入编码器方法1250的步骤1252(或者方法1200进入解码器方法1200的步骤1200)并 且使用参数K的自适应。
[0280] 对于HEVC测试模型6.0,索引的阈值T21将为四(4)。
[0281] 应用于视频编码器100的情况下的方法1250和1300以及应用于解码器200的方 法1200和1300使得能够进行用以实现诸如帧数据101等的帧数据的更高效压缩的实现。 所述方法还使得能够进行用以实现对诸如编码位流113等的编码位流进行解析的吞吐量 的提高的实现。通过使用Golomb-Rice参数K的更好估计而发生帧数据的更高效压缩,从 而使得能够将较短的码字分配至编码符号。可以通过允许用以使用所述的对Golomb-Rice 码字进行解码的方法的实现来实现较高的吞吐量,其中该方法可以通过消除码字之间的数 据依赖性来一次对一个以上的码字进行解码。
[0282] 产业h的可利用件
[0283] 所述的配置适用于计算机和数据处理行业,特别适用于对诸如视频信号等的信号 进行编码或解码的数字信号处理。
[0284] 前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和精神的情 况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非限制性的。
[0285] 在本说明书的上下文中,词语"包括"意味着"主要但未必仅包括"或"具有"或"包 含",而不是"仅由…组成"。词语"包括(comprising) "的诸如"comprise"和"comprises" 等的词尾变化具有相应的变化含义。
【权利要求】
1. 一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所述 方法包括以下步骤: 确定所述变换单位的子集的有效残差系数; 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的有效 残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
2. 根据权利要求1所述的方法,其中,所述预定阈值是14。
3. -种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所述 设备包括: 用于确定所述变换单位的子集的有效残差系数的部件; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所 确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存 在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的部件。
4. 一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所述 系统包括: 存储器,用于存储数据和计算机程序; 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用 于进行以下操作的指令: 确定所述变换单位的子集的有效残差系数; 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的有效 残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
5. -种记录有计算机程序的计算机可读介质,所述计算机程序用于使用Golomb-Rice 解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码: 用于确定所述变换单位的子集的有效残差系数的代码; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所 确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存 在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的代码。
6. -种用于对视频数据流进行解码以确定解码视频数据流中的当前残差系数的值的 方法,所述方法包括以下步骤: 从所述视频数据流接收残差系数的变换单位; 确定所述变换单位的当前残差系数的位置; 在所述当前残差系数在所述变换单位中的位置大于预定阈值的情况下,使用无依赖性 的Golomb-Rice解码对所述当前残差系数进行解码,其中所述无依赖性的Golomb-Rice使 用预定Golomb-Rice值; 在所述当前残差系数在所述变换单位中的位置小于所述预定阈值的情况下,使用针对 当前系数的基于依赖性的Golomb-Rice解码对所述当前残差系数进行解码,其中所述基于 依赖性的Golomb-Rice解码使用先前解码残差系数值以选择Golomb-Rice值;以及 使用所选择的Golomb-Rice解码值来确定所述当前残差系数的值。
7. -种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所述 方法包括以下步骤: 确定所述变换单位的量化参数; 确定所述变换单位的子集的有效残差系数; 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化 参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
8. 根据权利要求7所述的方法,其中,所述预定阈值是10。
9. 一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所述 设备包括: 用于确定所述变换单位的子集的有效残差系数的部件; 用于确定所述变换单位的量化参数的部件; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所 确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的部件。
10. -种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所 述系统包括: 存储器,用于存储数据和计算机程序; 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用 于进行以下操作的指令: 确定所述变换单位的子集的有效残差系数; 确定所述变换单位的量化参数; 选择所述变换单位的子集的Go 1 omb-Rice解码的预定Rice参数,其中在所确定的量化 参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
11. 一种记录有计算机程序的计算机可读介质,所述计算机程序用于使用 Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码: 用于确定所述变换单位的子集的有效残差系数的代码; 用于确定所述变换单位的量化参数的代码; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所 确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的代码。
12. -种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所 述方法包括以下步骤: 确定所述变换单位的量化参数; 确定所述变换单位的宽度和高度; 确定所述变换单位的子集的有效残差系数; 选择所述变换单位的子集的Go 1 omb-Rice解码的预定Rice参数,其中在所确定的量化 参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所 述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
13. 根据权利要求13所述的方法,其中,所述预定阈值是10。
14. 一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所 述设备包括: 用于确定所述变换单位的子集的有效残差系数的部件; 用于确定所述变换单位的量化参数的部件; 用于确定所述变换单位的宽度和高度的部件; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所 确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的 情况下,所述预定Rice参数相对于零设置存在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的部件。
15. -种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所 述系统包括: 存储器,用于存储数据和计算机程序; 处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用 于进行以下操作的指令: 确定所述变换单位的子集的有效残差系数; 确定所述变换单位的量化参数; 确定所述变换单位的宽度和高度; 选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化 参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所 述预定Rice参数相对于零设置存在偏移;以及 使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的 子集进行解码。
16. -种记录有计算机程序的计算机可读介质,所述计算机程序用于使用 Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码: 用于确定所述变换单位的子集的有效残差系数的代码; 用于确定所述变换单位的量化参数的代码; 用于确定所述变换单位的宽度和高度的代码; 用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所 确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的 情况下,所述预定Rice参数相对于零设置存在偏移;以及 用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单 位的子集进行解码的代码。
【文档编号】H03M7/40GK104221288SQ201380019838
【公开日】2014年12月17日 申请日期:2013年4月12日 优先权日:2012年4月13日
【发明者】沃洛迪米尔·科勒斯尼科夫 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1