码。
[0038] 在不参考其他帧/切片的情况下,对帧内编码的帧/切片(即,I型)进行编码。换言 之,其不使用时间预测。然而,帧内编码的帧依赖于帧/图像片内的空间预测,如图1中由空 间预测器21所示。也就是说,当对特定块进行编码时,可以将该块中的数据与已经针对该 帧/切片编码的块内的相邻像素的数据相比较。通过使用预测操作,编码器10基于相邻像素 数据创建预测块或单元。存在各种预测模式或预测方向。在一些情形中,可以使用速率失真 优化来选择模式/方向。预测操作中使用相邻像素是重建像素,其先前已被编码和解码,并 存储在反馈环路内的线缓存35中。块和预测块的实际像素数据之间的差是残差块,即,误差 信号。对残差数据进行变换、量化和编码,以在比特流14中发送。
[0039] 帧间编码的帧/块依赖于时间预测,即,使用来自其他帧/图片的重建数据对其进 行预测。编码器10具有反馈环路,反馈环路包括:解量化器28、逆变换处理器30和解块处理 器32。解块处理器32可以包括解块处理器和滤波处理器。这些元件反映了解码器50执行以 再现帧/图像片的解码过程。使用帧存储器34来存储再现帧。通过这种方式,运动预测基于 解码器50处的重建帧将是什么,而不基于原始的帧,由于编码/解码中所涉及的有损压缩, 原始帧与重建帧可能不同。运动预测器36使用帧存储器34中存储的帧/切片作为源帧/图 片,来与当前帧进行比较,以识别相似块。换句话说,执行运动向量搜索以识别另一帧/图 片。该块是预测块/单元的源。预测块和原始块之间的差变为残差数据,残差数据然后被变 换、量化和编码。
[0040] 本领域普通技术人员将清楚用于实现视频编码器的细节和可能变形。
[0041] 解码器50包括熵解码器52、解量化器54、逆变换处理器56和解块处理器60。解块处 理器60可以包括解块和滤波处理器。当帧/图片被解码以便空间补偿器57在帧内编码中使 用时,线缓存59存储重建像素数据。帧缓冲器58存储被完全重建和解块的帧以便运动补偿 器62在应用运动补偿时使用。
[0042]熵解码器52接收并解码比特流14,以恢复量化后的系数。在熵解码处理期间还可 以恢复边信息(包括编码模式信息),并且可以将其中的一些提供给补偿环路,以在创建预 测时使用。例如,熵解码器52可以恢复用于帧间编码块的运动向量和/或参考帧信息,或者 用于帧内编码块的帧内编码模式方向信息。
[0043]然后,解量化器54对量化后的系数进行解量化,以产生变换域系数,然后,逆变换 处理器56对变换域系数进行逆变换,以重构/重建残差像素域数据。空间补偿器57根据预测 方向信息而产生预测的块,所述预测方向信息由比特流和线缓存59中先前重建的附近像素 解码而得到。根据来自相同帧的先前重建的像素数据,空间预测使用与编码器已使用的预 测模式/方向相同的预测模式/方向。基于先前解码的帧/图片和从比特流解码的运动向量, 通过创建预测块来重建帧间编码块。然后,将重建残差数据添加到预测块中以产生重建像 素数据。本文中,空间和运动补偿二者均可以称为"预测操作"。
[0044]然后,可以对重建帧/切片应用解块/滤波处理,如解块处理器60所示。在解块/滤 波后,输出帧/切片作为解码视频帧16,例如以在显示设备上显示。将理解的是,视频回放机 (如计算机、机顶盒、DVD或蓝光播放器和/或移动手持设备)可以在输出设备上显示之前在 存储器中缓冲解码帧。
[0045]在许多视频编码标准中,通过对若干语义元素进行编码,对系数数据进行编码.例 如,在HEVC/H.265中,可以使用显著系数标志(significant coefficient flag)对量化后 的系数进行编码,以指示该系数是否非零,可以使用大于1的标志对量化后的系数进行编 码,以指示该非零系数的幅值是否大于1,可以使用大于2标志对量化后的系数进行编码,以 指示该非零系数的幅值是否大于2,并且当标志指示其大于2时(或在不再使用大于2标志的 一些情形中,大于1时),使用指定非零系数幅值的剩余级别整数对量化后的系数进行编码。 除了使用这些各种语义元素对系数幅值进行编码,还对系数的符号进行编码。
[0046] HEVC/H. 265提出一般对每个系数的符号位进行编码和解码。在许多实施例中,每 个系数具有相应的符号位,所述符号位在系数为正时可以设置为〇,在系数为负时可以设置 为1。使用不基于上下文的编码(即,使用等概率编码,有时也称为"旁路(bypass)编码"或清 除式编码(clear coding))对符号位进行编码和解码。在一些情形中,可以推测符号位,例 如通过符号数据隐藏,如申请人拥有的美国专利公开2013/0188725(公开日2013年7月25 日)所描述的。通过引用将美国专利公开2013/0188725的内容并入本文。
[0047] HEVC/H. 265的另一个特征是变换跳过。在一些情形中,编码器可以确定跳过变换 操作并简单地直接在空间域中量化残差数据将会是有益的。然后,量化后的残差数据被当 作系数数据处理,并通过正常过程而编码。变换跳过标志可以用于信号发送块在何时处于 变换跳过激活态。
[0048] 诸如AVC/H.264和HEVC/H.265的视频编解码器提供无损编码模式,其允许绕过变 换、量化和解块操作以及适当的情况下它们的相应逆操作。通过操作员指令或者通过内部 判决过程,编码器可以确定调用这种模式,并在空间域中直接对未量化的残差数据进行编 码。然后,未量化的残差数据被当作系数数据处理,并在正常过程中编码。已存在多种方法 来信号发送该模式,例如,配置编解码器,以将使用为零的每块量化参数视为启用该行为, 或备选地,通过使用标志来信号发送该行为对于块而言是激活的,对编解码器进行配置。
[0049] 根据图片内容,变换跳过的效果与变换跳过模式和变换量化旁路无损模式二者相 似。本说明书中,短语"在跳过变换的情况下"、"变换跳过"、"跳过变换"可互换地使用,其含 义是指示跳过或绕过变换操作并导致空间域编码的方法。
[0050] 发明人已发现,在跳过变换的情形下,不必坚持符号位编码过程底层的假设。具体 地,发明人已发现,虽然在长序列中特定符号位的概率一般是50/50,但在个别块中存在很 大程度的偏离。在正常变换块中,对符号位进行旁路编码,一部分原因是不存在主导符号, 所以并不期望通过上下文自适应的编码得到改进的压缩。但在跳过变换块中,往往符号之 一占据主导。以下表格提供了使用HEVC参考软件进行不同QP编码的多个标准文本序列的变 换跳过块中的主导符号的概率。
[0051 ]表格 1
[0053] 很明显,个别变换块中存在较强的偏离。换句话说,就个别变换块而言,大多数非 零系数具有相同符号的可能性很大。
[0054] 为提高压缩效率,在块跳过变换的情形下,改变符号位的编码过程可能是有利的。 在一些实施例中,这样可以导致使用更少的位来编码视频序列,从而可导致节省带宽和/或 存储器使用。
[0055] 以下将描述用于变换跳过块的各种符号编码过程。在一些情形中,一个或多个过 程可以组合使用。
[0056] 相同符号标志
[0057] 在一个方案中,符号编码过程可以包括:增加语义元素以信号发送变换块中的所 有非零系数都具有相同符号这一特殊情形,即每个非零系数的符号都相同。本说明书中,语 义元素被标记为相同符号标志。如果所有系数都具有相同符号,则针对该块只需要发送一 个符号位或符号标志,以指示非零系数的符号全部为正或全部为负。用于信号发送共同的 符号是正还是负的符号标志可以是与正常符号位相区别的单独语义元素,或者替代使用单 独的语义元素,编码器可以对按照扫描顺序的第一个非零系数的第一符号位进行编码,并 放弃发送其他非零系数的任何其他符号位。在一些情形中,可以例如通过符号数据隐藏来 推测符号标志。
[0058] 现在参考图3,其以流程图的形式示出了在使用变换跳过时在视频编码器中对符 号信息进行编码的示例方法100。所示出的方法100特征在于只有与符号编码直接相关的操 作而不是视频编码中所有相关操作(包括预测操作、量化、或是对显著系数数据和级别信息 的编码)的细节。
[0059] 方法100适用于块跳过变换的情形。将要认识到,在没有使用变换跳过的情况下, 包含方法100的视频编码器可以在不应用方法100的情况下对视频块进行编码。将要认识 到,可以存在附加的条件或测试,用于确定何时对特定视频数据块应用该方法。
[0060] 方法100开始于操作102,编码器确定是否块中的所有非零系数是否都具有共同的 符号。如否,则将语义元素相同符号标志设置为0,并在操作104中编码。可以使用基于上下 文的编码来对相同符号标志进行编码。在一个实施例中,使用专用上下文来对相同符号标 志编码。然后,在操作106中,和往常一样,对块中的非零系数的各个符号标志进行编码。
[0061] 然后在操作108中,当所有非零系数具有共同的符号时,将相同符号标志设置为1 并编码。然后如操作110所示,编码器将一个语义元素编码,以信号发送所有信号是正还是 负。在一个实施例中,存在被编码以信号发送该信息的单独的语义元素(系数块符号标志)。 使用基于上下文的编码,可以对该元素编码,该基于上下文的编码使用其自身专用上下文。 在该实施例中,非零系数的符号位都未被编码。在另一实施例中,一个非零系数(例如,按照 扫描顺序的第一个系数)的符号位可以按照正常方式编码,并且剩余非零系数的符号位不 被编码。
[0062] 图4中以流程图的形式示出了示例解码方法120。结合方法100所述,方法120适用 于变换跳过的情形。当解码器确定已对特定块应用了变换跳过时,当对该块中的非零系数 的符号信息进行解码时,解码器可以使用方法120。
[0063] 方法120开始于操作122,解码器对该块的相同符号标志进行解码。在一些实施例 中,解码可以包括上下文自适应解码。一旦相同符号标志被解码,解码器评估该标志是1还 是0,如操作124所示。如果标志是0,则不是所有符号都相同。因此,在操作126中,解码器重 建该块中的每个非零系数的符号位。符号位的重建可以包括从比特流中解码符号位。在一 些实例中(例如使用符号数据隐藏的一些实例中),符号位的重建可以包括推测一个或多个 符号位的值。在操作128中,根据其相关联的重建的符号位,解码器使用重建的符号位来重 建每个非零系数的有符号值。
[0064] 重建系数的有符号值意味着产生对该系数的有符号值进行表示的重建的有符号 整数。编码器通过将显著系数标志和其他级别的语义元素(例如,大于1标志、级别整数等) 进行解码来重建系数的幅值。重建有符号值可以意味着,将任何重建的幅值的符号改变为 负(或正),如果其重建的符号位指示这样的改变是所需要的。例如,默认,系数幅值的级别 重建将获得正系数。因此,符号位指示需要使哪些非零系数为负。在其他实施方式中,可以 对每个幅值应用以下操作:例如,根据相关联的重建符号位,有效地乘+1或-1。在一些情形 中,用两个值的补数来对值进行表示。在其他情形中,根据实施方式的性质,可以使用不同 的二进制或其他数值表示。所有这些情形都旨在包含于表述"重建系数的有符号值的"的含 义中。
[0065] 如果已解码的相同符号标志被设置为1,即,如果其向解码器指示块中的所有符号 位都具有共同的符号,则在操作130中,解码器对符号语义元素进行解码。如上所述,根据实 施方式,该元素可