VVC中的 Affine motion compensated prediction

在HEVC中,仅应用平移运动模型来进行运动补偿预测(MCP)。 在现实世界中,运动有很多种,例如放大/缩小、旋转、透视运动和其他不规则运动。 在VVC中,应用基于块的仿射变换运动补偿预测。 如图27所示,块的仿射运动场由两个控制点(4参数)或三个控制点运动矢量(6参数)的运动信息来描述。

对于 4 参数仿射运动模型,块中样本位置 (x, y) 处的运动矢量导出为:

对于 6 参数仿射运动模型,块中样本位置 (x, y) 处的运动矢量导出为:

其中,(mv0x,mv0y)是左上角控制点的运动矢量,(mv1x,mv1y)是右上角控制点运动矢量,以及(mv2x,mv2y)是左下角控制点运动矢量。

为了简化运动补偿预测,应用基于块的仿射变换预测。 为了导出每个 4×4 亮度子块的运动矢量,根据上述方程计算每个子块的中心样本的运动矢量(如图 28 所示),并四舍五入到 1/16 分数精度。 然后应用运动补偿插值滤波器来生成具有导出的运动矢量的每个子块的预测。 色度分量的子块大小也设置为4×4。 4×4 色度子块的 MV 计算为对应 8×8 亮度区域中左上和右下亮度子块 MV 的平均值。

与平移运动帧间预测一样,也有两种仿射运动帧间预测模式:仿射Merge模式和仿射 AMVP 模式。

Affine merge prediction

AF_MERGE模式可以应用于宽度和高度都大于或等于8的CU。在该模式下,当前CU的CPMV是基于空间相邻CU的运动信息生成的。 最多可以有五个 CPMVP 候选者,并且用信号发送索引来指示要用于当前 CU 的候选者。 以下三种类型的 CPMV 候选用于形成仿射合并候选列表:

  • 从相邻 CU 的 CPMV 推断的继承仿射merge候选
  • 使用相邻 CU 的平移 MV 导出的构造仿射merge候选 CPMVP
  • 零 MV

在VVC中,最多有两个继承仿射候选,它们是从相邻块的仿射运动模型导出的,一个来自左相邻CU,一个来自上相邻CU。 候选块如图29所示。对于左侧预测器,扫描顺序为A0->A1,对于上面的预测器,扫描顺序为B0->B1->B2。 仅选择双方的第一个继承候选人。 在两个继承的候选者之间不执行修剪检查。 当识别出相邻仿射CU时,其控制点运动矢量用于导出当前CU的仿射merge列表中的CPMVP候选者。 如图30所示,若将相邻左下块A采用仿射方式编码,则得到包含块A的CU的左上角、右上角和左下角的运动矢量v2、v3和v4。 当块A采用4参数仿射模型编码时,根据v2、v3计算当前CU的两个CPMV。 如果块A采用6参数仿射模型编码,则根据v2、v3和v4计算当前CU的三个CPMV。

构造仿射候选是指通过组合每个控制点的邻近平移运动信息来构造候选。 控制点的运动信息是从图 31 中所示的指定空间邻居和时间邻居导出的。CPMVk (k=1,2,3,4) 表示第 k 个控制点。 对于 CPMV1,检查 B2->B3->A2 块并使用第一个可用块的 MV。 对于 CPMV2,检查 B1->B0 块,对于 CPMV3,检查 A1->A0 块。 对于 TMVP,如果可用,则用作 CPMV4。

获得四个控制点的 MV 后,基于这些运动信息构建仿射merge候选者。 使用以下控制点 MV 组合按顺序构建:

{CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4},
{CPMV2, CPMV3, CPMV4}, { CPMV1, CPMV2}, { CPMV1, CPMV3}

3 个 CPMV 的组合构造了 6 参数仿射合并候选,2 个 CPMV 的组合构造了 4 参数仿射合并候选。 为了避免运动缩放过程,如果控制点的参考索引不同,则丢弃控制点MV的相关组合。

在检查继承的仿射合并候选者和构造的仿射合并候选者之后,如果列表仍然未满,则将零个MV插入到列表的末尾。

Affine AMVP prediction

仿射 AMVP 模式可应用于宽度和高度都大于或等于 16 的 CU。在比特流中用信号发送 CU 级别中的仿射标志以指示是否使用仿射 AMVP 模式,然后用信号发送另一个标志以指示是否使用 4 参数仿射或 6 参数仿射。 在此模式下,当前 CU 的 CPMV 与其预测器 CPMVP 的差异在比特流中用信号表示。 仿射AVMP候选列表大小为2,它是按顺序使用以下四种类型的CPVM候选生成的:

  • 从相邻 CU 的 CPMV 推断的继承仿射 AMVP 候选者
  • 使用相邻 CU 的平移 MV 导出的仿射 AMVP 候选 CPMVP
  • 来自邻近 CU 的平移 MV
  • 零 MV

继承的仿射 AMVP 候选的检查顺序与继承的仿射merge候选的检查顺序相同。 唯一的区别在于,对于 AVMP 候选者,仅考虑与当前块中具有相同参考图片的仿射 CU。 将继承的仿射运动预测器插入候选列表时,不应用修剪过程。

构造的 AMVP 候选是从图 31 中所示的指定空间邻居导出的。使用与仿射merge候选构造中相同的检查顺序。 另外,还检查相邻块的参考图片索引。 使用检查顺序中经过帧间编码且具有与当前 CU 中相同的参考图片的第一个块。 只有一个当当前CU采用4参数仿射模式编码,并且mv0和mv1都可用时,将它们作为一个候选添加到仿射AMVP列表中。 当当前CU采用6参数仿射模式编码并且所有三个CPMV都可用时,它们被添加为仿射AMVP列表中的一个候选者。 否则,构建的 AMVP 候选者将被设置为不可用。

如果插入有效的继承仿射 AMVP 候选和构造 AMVP 候选后,仿射 AMVP 列表候选仍然小于 2,则将依次添加 mv0 、 mv1 和 mv2 作为平移 MV 来预测当前 CU 的所有控制点 MV, 有空的时候。 最后,如果仿射AMVP列表仍未满,则使用零MV来填充该列表。

Affine motion information storage

在 VVC 中,仿射 CU 的 CPMV 存储在单独的缓冲区中。 存储的CPMV仅用于为最近编码的CU以仿射Merge模式和仿射AMVP模式生成继承的CPMVP。 从 CPMV 导出的子块 MV 用于运动补偿、平移 MV 的Merge/AMVP 列表的 MV 导出以及去块。

为了避免附加 CPMV 的图像行缓冲区,来自上面 CTU 的 CU 的仿射运动数据继承与来自正常相邻 CU 的继承的处理方式不同。 如果用于仿射运动数据继承的候选CU位于上述CTU行中,则使用行缓冲器中的左下和右下子块MV而不是CPMV来进行仿射MVP推导。 这样,CPMV仅存储在本地缓冲区中。 如果候选CU是6参数仿射编码,则仿射模型退化为4参数模型。 如图 32 所示,沿着顶部 CTU 边界,CU 的左下和右下子块运动向量用于底部 CTU 中 CU 的仿射继承。

HEVC码流中的NALU

翻译自 High Efficiency Video Coding (HEVC) Algorithms and Architectures

HEVC的“high-level syntax”部分包括适用于位流的一个或多个完整Slice或图像的高级信息的信令。例如,高级语法表示视频的空间分辨率,使用了哪些编码工具,并描述了比特流的随机访问功能。除了语法元素的信号外,与语法元素相关的高级工具解码过程也被认为包含在标准的高级语法部分中。示例高级语法解码过程包括参考图片管理和解码图片的输出。

图2.1显示了一个HEVC编码器和解码器。输入图片被送入编码器,编码器将图片编码成比特流。HEVC位流由称为网络抽象层(NAL)单元的数据单元序列组成,每个单元包含一个整数字节。NALU的前两个字节构成NALU头,而NALU的其余部分包含有效载荷数据。一些NALU携带参数集,其中包含应用于一张或多张完整图片的控制信息,而其他NALU携带单个图片中的编码样本。

NALU由解码器解码以产生解码器输出的解码图像。编码器和解码器都将图片存储在已解码的图片缓冲区(DPB)中。这个缓冲区主要用于存储图片,以便以前编码过的图片可以用来生成预测信号,在编码其他图片时使用。这些存储的图片称为参考图片(reference pictures)。

The NAL Unit Header and the HEVC Bitstream

在HEVC中有两类NALU——视频编码层(VCL) NALU和非VCL NALU。每个VCL NALU携带编码图像数据的一个Slice段,而非VCL NALU包含通常与多个编码图像相关的控制信息。一个编码图像,连同与编码图像相关联的非VCL NALU,称为HEVC访问单元(access unit, AU)。没有要求AU必须包含任何非VCL NALU,并且在一些应用程序(如视频会议)中,大多数AU不包含非VCL NALU。但是,由于每个AU都包含一个编码图像,因此它必须由一个或多个VCL NALU组成——编码图像被分割成的每个Slice对应一个单元。

The NAL Unit Header

图2.2显示了NALU Header的结构,它有两个字节长。所有HEVC NALU Header,对于VCL和非VCL NALU,都从这个两字节的NALU头开始,旨在使解析NALU的主要属性变得容易;它是什么类型,以及它属于什么层和时态子层。

NALU报头的第一个位总是设置为’0’,以防止在遗留的MPEG-2系统环境中产生可能被解释为MPEG-2启动代码的位模式。接下来的六位包含NALU的类型,标识NALU中携带的数据类型。6位表示有64种可能的NAL单位类型值。这些值在VCL和非VCL NALU之间平均分配,因此它们各有32种类型。

下面的6位包含一个层标识符,表示NALU属于哪个层,用于将来的可扩展和分层扩展。虽然第一版HEVC于2013年6月发布,支持时间可扩展性,但它不包括任何其他可扩展或分层编码,因此第一版中所有NALU的层标识符(层ID)始终设置为“00000o”。在以后的HEVC版本中,层ID有望用于识别NAL属于哪个空间可扩展层、质量可扩展层或可扩展多视图层。

NALU Header的最后三位包含NALU的时间标识符,表示七个可能的值,其中一个值是禁止的。HEVC中的每个AU都属于一个时间子层,由时间ID表示。由于每个AU属于一个时间子层,所有属于同一AU的VCL NALU在其NALU头中必须具有相同的时间ID。

图2.3显示了编码视频序列中图片的两个不同示例参考结构,两个时态子层都对应于0和1的时态ID值。Slice类型在图中使用I、P和B表示,箭头显示了图片如何参考其他图片。例如,图2.3a中的图B2是使用bi-prediction的图片,参考图片Io和Pl。

VCL NAL Unit Types

表2.1显示了所有32个VCL NALU类型及其NALU类型(图2.2中的NALType)在NAL单元头中的值。所有VCL相同AU的NALU必须具有相同的NALU类型值,该值定义了AU的类型及其编码图。例如,当一个AU的所有VCL NALU的NALU类型都等于21时,则该AU称为CRA AU,编码图像称为CRA图像。在HEVC中有三种基本类型的图像: intra random access point (IRAP) pictures, leading pictures, and trailing pictures.

IRAP Picture

IRAP图像类型由NAL单元类型16-23组成。这包括IDR, CRA和BLA图片类型以及类型22和23,这些类型目前保留供将来使用。所有IRAP图片必须属于时间子层0,并且不使用任何其他图片的内容作为参考数据进行编码(即仅使用intra编码)。注意,但未标记为IRAP的帧内编码图片允许在比特流中出现。IRAP图片类型用于在比特流中提供可能开始解码的点。因此,IRAP图片本身不允许依赖于比特流中的任何其他图片。

比特流的第一张图片必须是IRAP图片,但在整个比特流中可能有许多其他IRAP图片。IRAP图像还提供了切换比特流的可能性,例如当开始观看TV或从一个TV频道切换到另一个频道时。IRAP图片还可以用于在视频内容中实现时间定位——例如,通过使用视频播放器的控制条来移动视频程序中的当前播放位置。最后,IRAP图片还可以、用于在压缩域中从一个视频流无缝切换到另一个视频流。这被称为比特流切换或拼接,它可以发生在两个直播视频流之间,一个直播流和一个存储的视频文件之间,或者两个存储的视频文件之间。从IRAP图像解码并按输出顺序输出任何后续图像始终是可能的,即使按解码顺序在IRAP图像之前的所有图像都从比特流中丢弃。

当为存储和稍后的播放或广播应用程序编码内容时,IRAP图片通常均匀分布,以在整个比特流中提供相似频率的随机接入点。在实时通信应用中,随机访问功能不是那么重要,或者发送IRAP图片所需的相对大量的比特是一个显著的负担,会增加通信延迟,IRAP图片可能很少发送,或者只有当一些反馈信号表明视频数据已经损坏,需要刷新场景时才发送。

Leading and Trailing Pictures

leading picture 是在解码顺序上跟随特定IRAP图并在输出顺序上先于它的图。trailing picture 是在解码顺序和输出顺序上都遵循特定IRAP图片的图片。图2.4展示了leading picture和trailing picture 的例子。在解码顺序上,leading picture和trailing picture 被认为与最接近的IRAP图像相关联,如图2.4中的I1图像。trailing picture必须使用trailing picture NAL单元类型0-5中的一种。特定IRAP图片的trailing picture不允许依赖于任何leading picture或之前IRAP图片的 trailing picture;相反,它们只能依赖于相关的IRAP图片和同一IRAP图片的其他 trailing picture 图片。此外,IRAP图像的所有leading picture必须在解码顺序中位于与同一IRAP图像相关联的所有trailing picture之前。这意味着关联图片的解码顺序总是:(1)IRAP图片,(2)关联的leading picture(如果有),然后(3)关联的trailing picture(如果有)。

HEVC的trailing picture有三种类型:时间子层访问(TSA)图像、逐级时间子层访问(STSA)图像和普通trailing picture (TRAIL)。

Temporal Sub-layer Access (TSA) Pictures

TSA图像是显示时间子层切换点的trailing picture。TSA图片类型只能用于没有在解码顺序中TSA图片之前的,其时间ID大于或等于TSA图片本身的时间ID,用于预测TSA的图片或用于预测与TSA图片在相同或更高的时间子层中的任何后续(解码顺序)图片。例如,图2.5中的图片P6可以使用TSA图片类型,因为只使用时间子层0中的前一张图片来按照解码顺序预测TSA图片本身和后续图片。

当解码器解码位流中时间子层的子集并且遇到时间子层的TSA图像类型正好在它正在解码的最大时间子层之上时,解码器可以切换到并解码任意数量的附加时间子层。对于图2.5中的示例,仅对TSA 图像的时间子层0进行解码的解码器(1)只解码时域子层0,(2)决定开始解码时域子层1和子层0,或(3)开始解码所有三个子层。对于只转发最低的时间子层的网络节点(例如由于先前的网络拥塞情况),可能会有类似的动作。网络节点可以检查具有时间ID等于1的传入图片的NAL单元类型。这并不需要大量的计算资源,因为NAL单元类型和时间ID可以在NAL单元头中找到,并且很容易解析。当遇到时序子层1的TSA图像时,网络节点可以切换到按照解码顺序转发继TSA图像之后的任何时序子层图像,而不会存在解码器由于没有所有必要的参考图像而无法正确解码的风险。

Step-wise Temporal Sub-layer Access (STSA) Pictures

STSA图片类型与TSA图片类型类似,但它只保证STSA图片本身以及在解码顺序上与它后面的STSA图片具有相同时间ID的图片不参考在解码顺序上与它前面的STSA图片具有相同时间ID的图片。因此,STSA图像可以用来标记比特流中可以切换到具有与STSA图像相同时间ID的子层的位置,而TSA图像可以标记比特流中可以切换到任何更高子层的位置。图2.5中STSA图的一个例子是图P2。这张图片不可能是TSA图片,因为P3参考了P1。但图片P2可以是STSA图片,因为P6没有参考任何子层1的图片,解码顺序在P2之后的任何子层1的图片也没有参考解码顺序在P2之前的任何子层1的图片。TSA和STSA图片的时间ID都必须大于0。

还要注意的是,由于在HEVC中禁止从较高的时间子层预测到较低的时间子层,因此在任何图片上总是有可能向下切换到较低的时间子层,无论图片类型或时间子层。

Ordinary Trailing (TRAIL) Pictures

普通trailing图片用枚举类型TRAIL表示。trailing图片可以属于任何时间子层。它们可以参考关联的IRAP图片和与同一IRAP图片关联的其他trailing图片,但它们不能参考leading图片(或与同一IRAP图片关联的任何其他非trailing图片的图片)。在按解码顺序输出下一张IRAP图片后,它们也不能输出。请注意,所有TSA和STSA图片都可以标记为TRAIL图片,所有TSA图片都可以标记为STSA图片。然而,为了表明比特流中存在的所有可能的时间子层切换点,建议跟踪图片应使用最具限制性的类型。

Instantaneous Decoding Refresh (IDR) Pictures

IDR图像是一个完全刷新解码过程并开始一个新的CVS的帧内图像。这意味着,无论是IDR图像还是按解码顺序在IDR图像之后的任何图像,都不能依赖于按解码顺序在IDR图像之前的任何图像。IDR图像有两种子类型,IDR_W_RADL类型可能有关联的随机访问可解码leading(RADL)图像,IDR_N_LP类型没有任何leading图像。请注意,即使IDR图片没有任何leading图片,编码器也允许(但不推荐)使用IDR_W_RADL类型。但是,禁止将IDR_N_LP类型用于具有先导图像的IDR。使用两种不同的IDR图片类型的原因是为了使系统层能够在随机访问时知道IDR图片是否是要输出的第一个图片。IDR图像的POC值总是等于零。因此,与IDR图像相关联的leading图像(如果有的话)都具有负的POC值。

Clean Random Access (CRA) Pictures

CRA图片是一个帧内图片,与IDR图片不同,它不会刷新解码器,也不会开始一个新的CVS。这使得CRA图像的leading图像以解码顺序依赖于在CRA图像之前的图像。允许这样的leading图像通常使包含CRA图像的序列比包含IDR图像的序列更具压缩效率(约6%)。

CRA图像的随机访问是通过对CRA图像进行解码,其leading图像在解码顺序上不依赖于CRA图像之前的任何图像,以及在解码和输出顺序上都遵循CRA的所有图像。注意,CRA图片不一定有关联的leading图片。

Random Access Decodable Leading (RADL) and Random Access Skipped Leading (RASL) Pictures

leading图像必须使用RADL或RASL NAL单元类型发出信号。RADL和RASL图片可以属于任何时间子层,但不允许被任何trailing图片引用。RADL图片是保证在对关联的IRAP图片进行随机访问时可解码的leading图片。因此,RADL图片只允许引用关联的IRAP图片和同一IRAP图片的其他RADL图片。

当从关联的IRAP图像执行随机访问时,RASL图像是可能无法解码的先导图像。图2.6显示了两张RASL图片,由于图片P2在解码顺序上位于CRA图片之前,因此这两张图片都是不可解码的。由于其在解码顺序上的位置,在CRA图片的位置随机访问不会解码P2图片,因此无法解码这些RASL图片并将其丢弃。尽管对于可解码的leading图,如图2.6中的RADL图,不禁止使用RASL类型,但为了更加网络友好,建议在可能的情况下使用RADL类型。只有其他RASL图片被允许依赖于一个RASL图片。这意味着依赖于RASL图像的每个图像也必须是RASL图像。RADL和RASL图像可以按解码顺序混合,但不能按输出顺序混合。RASL图片在输出顺序上必须在RADL图片之前。

IDR_W_RADL图片的所有前导图片必须是可解码的,并且使用RADL类型。RASL图片不允许与任何IDR图片相关联。CRA图可能同时具有关联的RADL和RASL图,如图2.6所示。允许RASL图片引用在相关IRAP图片的IRAP图片,也可以参考在解码顺序中遵循该IRAP图片的其他图片,但不能引用解码顺序中更早的图片。图2.6中的RASL图片无法引用图片P0。

在HEVC中有三个约束,目的是在执行随机访问时消除图像输出不均匀。其中两个约束依赖于为每张图片设置的变量PicOutputFlag,它指示图片是否输出。当一个被称为pic_output的标志出现在slice header中并且等于0时,或者当当前图片是RASL图片并且关联的IRAP图片是CVS中的第一张图片时,这个变量被设置为0。否则,PicOutputFlag被设置为1。

第一个约束是,任何具有PicOutputFlag等于1的图片,在解码顺序上位于IRAP图片之前,必须在输出顺序上位于IRAP图片之前。图2.7a中的结构不受此约束,因为图像P1在解码顺序上位于CRA之前,但在输出顺序上位于它之后。如果允许这样做,并且对CRA图片进行随机访问,则会丢失图片P1,导致输出不均匀。

第二个约束是,任何具有PicOutputFlag等于1的图像,在解码顺序上位于IRAP图像之前,必须在输出顺序上位于与IRAP图像相关联的任何RADL图像之前。一个引用结构,即如图2.7b所示,因为P1在I2之前,但在输出顺序上在P3之后。如果允许这种引用结构,并且对CRA图片进行随机访问,则缺少P1图片将导致输出不均匀。

第三个约束是所有RASL图片必须在输出顺序上先于任何RADL图片。由于RASL图片在随机访问时被丢弃,而RADL图片没有被丢弃,因此在RADL图片之后显示的任何RASL图片在随机访问时可能会导致输出不均匀。

其他类型用的比较少,这里就不写了。

Primary Transform in VVC

VVC中的变换设计主要包括三个方面:primary transform, secondary transform and transform partitioning.。 N点变换是指可以应用于N点输入向量的一维变换,这是使用大小为N×N的变换矩阵来完成的。

VVC 继承了 HEVC 变换编码的几个设计方面(参考HEVC Core Transform Design),包括:1) 使用定点运算,中间数据表示和算术保持为 16 位; 2) 变换过程可以使用直接矩阵乘法或 一种快速方法,例如部分蝶形; 3)通过将变换基缩放为 64√N 并通过较小调整舍入到最接近的整数来设计变换内核,其中变换基的范数为 1,N 是变换大小; 4)较小的DCT-2是较大的DCT-2的一部分,因此所有DCT-2内核都嵌入在64×64 DCT-2变换内核中。

尽管在 VVC 中可以应用高达 128 × 128 的编码块大小,但变换编码被设计为与虚拟管道数据单元 (VPDU) 实现兼容。 在硬件解码过程中,VPDU是不重叠的64×64块,连续的VPDU由多个管道并行处理。

A. Transform Kernels

在VVC中,除了传统的DCT-2之外,还采用了替代变换类型,包括DST-7和DCT-8。 DST-7和DCT-8的基本函数分别用下面的等式(1)和(2)表示:

其中 N 是变换大小,i = 0, 1,…, N−1 指输出向量的元素索引,j = 0, 1,…, N − 1 指输入向量的元素索引。 对于残差的不均匀分布,DST-7 和 DCT-8 通常比 DCT-2 更有效,因为它们的基函数更符合此类统计数据。 DCT-2的大小范围从4点到64点,DST-7/DCT-8的范围从4点到32点。 值得注意的是,DST-7 和 DCT-8 的变换基是彼此翻转的版本,具有交替的符号变化。

VVC中定义的变换内核由8位有符号整数组成,HEVC中的所有主要变换内核(包括4点DST-7和从4点到32点的DCT-2)保持不变。 VVC 中定义的附加整数变换内核是通过将浮点变换内核缩放 64√N 得出的,其中 N 是变换大小,并在舍入后进一步调整 ±1。 64点DCT-2的调整是以包含HEVC中定义的所有DCT-2内核、支持部分蝶形并且针对更好的正交性优化内核元素的方式执行的。

对DST-7/DCT-8核进行调整是为了确保与DST-7/DCT-8相关的三个显著特征,如图1所示,包括特征 1)某些基中的重复段{b,f,i,l,o};2)一个基中的唯一系数值,3)某些基具有固定模式的元组中系数之间的数学关系,保持在具有优化正交性的整数核中。特别地,对于特征3),支持以下公式:

为了将每个系数的 worst-case 乘法与HEVC对齐,对于64点DCT-2和32点DST-7/DCT-8,分别只保留前32个和16个低频系数,并将高频系数归零,这也在最后一个系数位置编码和系数组扫描中考虑。此外,基于DST-7/DCT-8内核的三个特征,VVC中包含了一种支持双重实现的快速变换方案。通过这种方式,快速算法和直接矩阵乘法产生相同的结果。同时,对于16点DST-7/DCT-8,快速方法实现了约50%的乘法运算减少。

在VVC中,primary transform 被指定为可分离变换。 支持五种不同的变换类型组合,包括传统的(DCT-2、DCT-2)和四种新的 MTS 模式组合,即(DST-7、DST-7)、(DST-7、DCT-8)、 (DCT-8、DST-7)和(DCT-8、DCT-8)。 由于有限的编码增益以及引入额外编码器搜索和额外变换组合的复杂性增加,不支持具有额外信令开销的DCT-2和DST-7(或DCT-8)之间的显式组合。 在VVC中,DST-7和DCT-8可以应用于多种编码工具中的亮度块,包括多重变换选择(MTS)、帧内子分区(ISP)[34]和子块变换(SBT) ,这将在下面与变换类型选择相关的小节中详细介绍。 对于色度编码,在 VVC 的开发过程中也研究了 DST-7/DCT-8 的潜在优势。 然而,由于色度分量通常呈现平滑的纹理,而 DCT-2 就足够了,因此编码增益与复杂性的权衡不太有利。

B. Multiple Transform Selection:

在 VVC 中,MTS有两种变体,称为显式 MTS 和隐式 MTS。 显式MTS可以应用于帧内编码块和帧间编码块,而隐式MTS只能用于帧内编码块。 在显式MTS中,DST-7/DCT-8的选择由变换类型的显式信令指示。 在隐式MTS中,基于编码器和解码器都已知的编码信息来选择变换类型,并且不需要变换类型信令。 在序列参数集(SPS)中,有三个控制 MTS 操作的标志。 第一个用于启用 MTS 本身。 第二个用于在显式或隐式内部 MTS 之间进行选择,最后一个用于启用显式间 MTS。 因此,对于后两个标志,如果启用了 MTS,则需要选择四种 MTS 模式组合。 在显式MTS中,索引mts_idx在编码单元(CU)级语法的末尾处用信号通知以指示水平变换(trTypeHor)和垂直变换(trTypeVer)的变换类型。 mts_idx的取值范围是0到4,变换类型的映射如表1所示:

MTS索引,表示为mts_idx,仅当亮度块的非零系数存在于DC系数之外并且在左上角的16×16系数区域之外未识别出非零系数时才发出信号,因为DST-7/DCT-8仅对最低的16×16频率系数有影响。换句话说,识别超过最低16×16系数的非零系数意味着不应用DST-7/DCT-8。此外,当启用多个工具时,包括ISP、SBT和低频不可分离变换(LFNST),mts_idx不会发出信号,变换类型推断为DCT-2或预定义的变换类型。在表II中,总结了不同工具的组合,包括MTS、LFNST、MIP、ISP和SBT,其中“Y/N”表示行和列中的相关编码工具可以/不能组合,“N/A”表示相关组合不适用。

隐式 MTS 变换类型是根据编码块的形状导出的。 如果块宽度(高度)小于32,则应用DST-7作为水平(垂直)变换。否则,使用DCT-2。 同样的规则也用于导出 ISP 编码块的变换。 图 2 显示了不同块大小的隐式 MTS 推导示例。 VVC 中的隐式 MTS 设计可以被视为帧内预测残差的 HEVC 变换推导的扩展,通过将 DST-7 的适用块大小从 4 × 4 扩展到 16 × 16(含)以及其间的其他矩形块大小 。 除了基于块大小的限制之外,仅当 LFNST 和基于矩阵的帧内预测(MIP)索引设置为零时才能应用隐式变换。

隐式 MTS 的优点总结如下: (1) 尽管与显式 MTS 相比,隐式 MTS 提供的编码增益较少,但它在无需任何编码器搜索的情况下提供了比 DCT-2 显着的编码增益。 此功能对于无法适应复杂率失真搜索的简单编码器设计很有吸引力。 (2)隐式MTS为ISP编码和非ISP帧内编码块提供统一的变换推导规则。 (3) 由于隐式 MTS 中不允许 DST-7 的维数超过 16,因此避免了对高频系数的内置归零操作(仅适用于 32 点 DST-7)。

HEVC Core Transform Design

翻译自论文 “Core Transform Design in the High Efficiency Video Coding (HEVC) Standard”

A. Use of Transforms in Block-Based Video Coding

在基于块的混合视频编码方法中,变换应用于帧间或帧内预测产生的残差信号,如图 1 所示。在编码器处,帧的残差信号被划分大小为\(N×N\)的方形块, 其中\(N=2^M\)和M是一个整数。 然后将每个残差块 (\(U\)) 输入到二维\(N×N\)正向变换。 通过分别对每行和每列应用\(N\)点一维变换,可以将二维变换实现为可分离变换。 然后对得到的变换系数(\(coeff\))进行量化(相当于除以量化步长\(Q_{step}\))以获得量化变换系数(\(level\))。 在解码器处,量化的变换系数随后被反量化(这相当于乘以\(Q_{step}\))。 最后,将二维可分离逆变换应用于反量化变换系数(\(coeff_Q\)),从而产生量化样本的残余块,然后将其添加到帧内或帧间预测样本以获得重建块。

通常,正向变换矩阵和逆变换矩阵是彼此转置的,并且被设计为在没有中间量化和去量化步骤的情况下连接时实现输入残差块的近乎无损重建。

在 HEVC 等视频编码标准中,指定了反量化过程和逆变换,而正向变换和量化过程则由实施者选择(受到比特流的约束)。 然而,在下文中,除非另有说明,我们将根据正向变换矩阵讨论 HEVC 核心变换的设计和属性。 逆变换在HEVC标准中被指定为对应的转置矩阵。

B. Discrete Cosine Transform

应用于输入样本\(u_i\)的\(N\)点 1D DCT 的变换系数\(w_i\)可以表示为:

这里\(i=0,…,N-1\),\(c_{ij}\)为DCT变换矩阵\(C\)的系数,定义如下:

这里\(i,j=0,…,N-1\), \(A = 1\) or \(2^{1/2}\) for \( i = 0 \) or \(i > 0\),DCT的基向量\(c_i\)定义为\(c_i=[c_{i0},…,c_{i(N-1)}]^T, i=0,…,N-1\)

DCT 具有多个被认为对于压缩效率和高效实现都有用的属性:

  1. 基向量是正交的,即\(c^T_ic_j=0\)。 该属性对于通过实现不相关的变换系数来提高压缩效率是理想的。
  2. DCT 的基向量已被证明可以提供良好的能量压缩,这对于压缩效率来说也是理想的。
  3. DCT 的基向量具有相等的范数,即\(c^T_ic_i=1\)。 该属性对于简化量化/去量化过程是有利的。 假设需要量化误差的相等频率加权,则基向量的相等范数消除了对量化/去量化矩阵的需要。
  4. 让\(N=2^M\)。 大小为\(2^M×2^M\) DCT 矩阵的元素是 \(2^{(M+1)}×2^{(M+1)}\) DCT 矩阵元素的子集。更具体地,较小矩阵的基向量等于较大矩阵的偶数基向量的前半部分。 此属性对于降低实施成本很有用,因为相同的乘法器可以重复用于各种变换大小。
  5. DCT矩阵可以通过使用少量的唯一元素来指定。 通过检查 (2) 的元素\(c_{ij}\),可以看出大小为 \(2^M×2^M\)的 DCT 矩阵中唯一元素的数量等于 \(2^M-1\)。
  6. DCT的偶数基向量是对称的,而奇数基向量是反对称的。 此属性对于减少算术运算的数量很有用。
  7. DCT 矩阵的系数具有一定的三角关系,可以减少算术运算的数量,超出利用(反对)对称性质所能实现的数量。

C. Finite Precision DCT Approximations

HEVC 的核心变换矩阵是 DCT 矩阵的有限精度近似。 在视频编码标准中使用有限精度的好处是,实值 DCT 矩阵的近似值在标准中指定,而不是依赖于实现。 这可以避免制造商使用略有不同的浮点表示实现 IDCT 所导致的编码器-解码器不匹配。 另一方面,使用近似矩阵元素的缺点是第 B 节中讨论的 DCT 的一些属性可能不再满足。 更具体地说,在与对矩阵元素使用高位深度相关的计算成本和满足第 B 节的一些条件的程度之间存在权衡。

确定 DCT 矩阵元素的整数近似值的一种直接方法是用某个大数(通常在\(2^5\)和\(2^{16}\)之间)缩放每个矩阵元素,然后舍入到最接近的整数。 然而,这种方法并不一定能产生最佳的压缩性能。 如第 D 节所示,对于给定的矩阵元素位深度,近似 DCT 矩阵元素的不同策略会导致第 B 节的一些属性之间的不同权衡。

D. HEVC Core Transform Design Principles

用于 HEVC 核心变换的 DCT 近似是根据以下原则选择的。 首先,B 部分的属性 4、5 和 6 得到满足,没有任何妥协。 这种选择确保了 DCT 的几个实现友好的方面得以保留。 其次,对于属性 1、2、3 和 7,在用于表示每个矩阵元素的位数和满足每个属性的程度之间存在权衡。

为了测量属性 1、2 和 3 的近似程度,为整数点 DCT 近似定义了以下测量,其缩放矩阵元素等于\(d_{ij}\),基向量\(d_i=[d_{i0},…,d_{i(N-1)}]^T, i=0,…,N-1\)

  1. 正交性度量:\(o_{ij}=d^T_id_j/d^T_0d_0, i≠j\)
  2. 与 DCT 的相似性度量:\(m_{ij}=|αc_{ij}-d_{ij}|/d_{00}\)
  3. 范数度量:\(n_i=|1-d^T_id_j/d^T_0d_0|\)

比例因子\(α\)定义为 \(d_{00}N^{1/2}\)。

经过仔细研究,决定用8位(包括符号位)来表示每个矩阵系数,并选择第一基向量的元素等于64(即 ,\(d_{0j}=64\))。 请注意,与正交 DCT 相比,这会导致 HEVC 变换矩阵的比例因子为\(2^{(6+M/2)}\)。 其余矩阵元素进行手动调整(在属性 4、5 和 6 的约束内),以实现属性 1、2 和 3 之间的良好平衡。手动调整执行如下。 首先,推导出实值缩放 DCT 矩阵元素\(αc_{ij}\) 。

接下来,对于结果矩阵中的每个唯一数字,检查\(αc_{ij}\)区间 [-1.5, 1.5] 周围的每个整数值,并计算 \(o_{ij}\)、 \(m_{ij}\)和 \(n_{ij}\)值。 由于变换矩阵中只有 31 个唯一数字(参见第 E 节),因此可以系统地检查各种排列(尽管不是详尽的)。 选择最终的整数矩阵元素是为了在所有测量 \(o_{ij}\)、 \(m_{ij}\)和 \(n_{ij}\)之间提供良好的折衷。 所得到\(o_{ij}\)、 \(m_{ij}\)和 \(n_{ij}\)的最坏情况值显示在表 I 的第二列中。范数被认为足够接近 1(即范数测量\(n_{ij}\)足够接近 0),以证明不使用非平坦默认值是合理的 HEVC 中的去量化矩阵(即所有变换系数均等缩放)。

为了比较的目的,表I的第三列中列出了将实值DCT矩阵元素与\(2^{(6+M/2)}\)相乘并舍入到最接近的整数时的结果测量。从表中可以看出,虽然HEVC变换的矩阵元素距离缩放后的DCT矩阵元素较远,但它们具有更好的正交性和范数性质。

最后,仅使用 8 位表示,B 节的属性 7(矩阵元素之间的三角关系)不容易保留。 作者不知道 HEVC 核心变换的任何三角特性可用于将算术运算数量减少到低于使用(反)对称特性时所需的数量。

E. Basis Vectors of the HEVC Core Transforms

指定32点正向变换的32×32矩阵的左半部分如图2所示。

右半部分可以通过使用基向量的(反)对称性质(B节的性质6)来导出。HEVC的逆变换矩阵被定义为图中矩阵的转置。32×32矩阵包含多达31个唯一数字,如下所示:

这些唯一数字是正向变换矩阵的第一列的元素1至31。请注意,尽管数字90出现了三次,但这是偶然的,通常不是真的。

此外,较小变换矩阵\(N=4,8,16\)的系数可以从 32×32 变换矩阵的系数导出为:

让\(D_4\)表示 4×4 变换矩阵。 利用式(4)和图2,\(D_4\)可得:

8×8 变换矩阵和16×16 变换矩阵可以类似地从32×32 变换矩阵获得,如图2所示,其中使用不同的颜色来突出显示嵌入的16×16、8×8 和4×4 正向变换矩阵。 此属性允许使用相同的架构来实现不同的变换大小,从而促进不同变换大小之间的硬件共享。

请注意,根据 (3) 的唯一数属性和(反对)对称属性,\(D_4\)也等于:

F. Intermediate Scaling

由于与正交DCT变换相比,HEVC矩阵是按比例\(2^{(6+M/2)}\)缩放的,并且为了通过正向和反向二维变换保持残差块的范数,需要应用额外的比例因子\(S_{T1}\)、\(S_{T2}\)、\(S_{IT1}\)、\(S_{IT2}\),如图3所示。请注意,图3基本上是图1中变换和量化的定点实现。虽然HEVC标准规定了逆变换的比例因子(即\(S_{IT1}\)、\(S_{IT2}\)),但HEVC参考软件也规定了前向变换的相应比例因子(例如\(S_{T1}\)、\(S_{T2}\))。比例因子是在以下限制条件下选择的:

  1. 所有缩放因子应为 2 的幂,以允许缩放以右移的方式实现。
  2. 假设输入残差块的全范围(例如,所有样本都具有最大幅度的DC块),每个变换阶段之后的位深度应等于16位(包括符号位)。 这被认为是准确性和实施成本之间的合理权衡。
  3. 由于HEVC矩阵按比例\(2^{(6+M/2)}\)缩放,2D正向变换和逆变换的级联将导致1D行正向变换、1D列正向变换、1D列逆变换和1D行逆变换中的每一个的按比例\(2^{(6+M/2)}\)缩放。因此,为了通过二维正变换和逆变换保持范数,所有比例因子的乘积应等于\((1/2^{(6+M/2)})^4=2^{-24}2^{-2M}\)。

图4以4×4正向变换为例说明了选择正向变换比例因子的过程。当视频具有B bit位深度时,残差将在需要(B+1)位来表示的范围\([-2^B+1,2^B-1]\)内。 在下面的worst case 位深度分析中,我们将假设残差块的所有样本的最大振幅等于正向变换第一阶段的输入。 我们相信这是一个合理的假设,因为所有基向量都具有几乎相同的范数。

还要注意,在worst case 分析中,我们使用\(-2^B\)而不是\(-2^B+1\)或\(2^B-1\),因为它是2的幂。由于所有比例因子都是2的幂,所以假设输入为\(-2^B\)(仍然适合(B+1)位),则比例因子推导变得更简单。对于这种worst case的输入块,输出样本的最大值将为\(-2^B×N×64\)。这对应于第一基向量(长度为N,所有值均等于64)与由等于\(-2^B\)的值组成的输入向量的点积。因此,对于\(N=2^M\),为了使输出适合于16位(即,\(2^{-15}\)的最大值)内,需要\(1/(2^B×2^M×2^6×2^{-15})\)的缩放。因此,第一变换阶段之后的比例因子被选择为\(S_{T1}=2^{-(B+M-9)}\)。

正向变换的第二阶段由第一变换阶段的结果与\(D^T_4\)相乘组成。正向变换第二阶段的输入是第一阶段的输出,该输出是一个矩阵,第一行中的所有元素都具有 \(2^{-15}\)的值。所有其他元素将为零,如图 4(b) 所示。 与\(D^T_4\)相乘的输出将是一个矩阵,其中仅 DC 值等于 \(2^M×2^6×2^{-15}\),所有其余值等于 0。这意味着第二阶段变换后所需的缩放为 \(S_{T2}=2^{-(M+6)}\),以便输出适合 16 位。

逆变换的第一阶段由正变换的结果与\(D^T_4\)相乘组成。逆变换第一阶段的输入是正变换的输出矩阵,该矩阵是仅 DC 元素等于\(2^{-15}\)的矩阵。 与\(D^T_4\)相乘的输出将是一个矩阵,其第一列元素等于 \(2^6×2^{-15}\)。因此,在逆变换的第一阶段之后,为了使输出适合 16 位,所需的缩放是\(S_{IT1}=2^{-6}\)。

逆变换的第二阶段包括将逆变换的第一阶段的结果与\(D_4\)相乘。 逆变换第二级的输入是逆变换第一级的输出矩阵,该矩阵的第一列元素等于\(2^{-15}\)。与\(D_4\)相乘的输出将是所有元素等于\(2^6×2^{-15}\)的矩阵。 因此,在第二阶段逆变换之后,为了使输出值进入 \([-2^B,2^B-1]\)的原始范围所需的缩放是 \(S_{IT1}=2^{-21-B}\)。

总之,本节中施加的约束会在不同的变换阶段后产生以下比例因子:

  • 在第一个正向变换阶段之后:\(S_{T1}=2^{-(B+M-9)}\)
  • 在第二个正向变换阶段之后:\(S_{T2}=2^{-(M+6)}\)
  • 在第一个逆变换阶段之后:\(S_{IT1}=2^{-6}\)
  • 在第二个逆变换阶段之后:\(S_{IT1}=2^{-21-B}\)
    其中B是输入/输出信号的位深度(例如 8 位), 是\(M=log2(N)\)。

在没有量化/去量化的情况下,比例因子的这种选择可确保在所有变换阶段之后的位深度为 16 位。 然而,量化/反量化过程引入的量化误差可能会将每个逆变换阶段之前的动态范围增加到超过 16 位。 例如,考虑 B = 8 和正向变换的所有输入样本等于 255 的情况。在这种情况下,正向变换的输出将是值等于 \(255<<7 =32640\) 的 DC 系数。对于高 QP 值并使用向上舍入量化器,每个逆变换级的输入很容易超出 [-32768, 32767] 允许的 16 位动态范围。 虽然在去量化器之后clip到 16 位范围被认为是微不足道的,但在第一个逆变换阶段之后被认为是不受欢迎的。 为了允许一定程度的量化误差,同时将两个逆变换级之间的动态范围限制为 16 位,逆变换比例因子的选择最终修改如下:

  • 在第一个逆变换阶段之后:\(S_{IT1}=2^{-7}\)
  • 在第二个逆变换阶段之后:\(S_{IT1}=2^{-20-B}\)

逆变换比例因子的使用如图 5 所示,以 4×4 逆变换为例,假设输入是图 4 的最终输出。

表 II 和表 III 分别总结了与正交 DCT 相比正向变换和反向变换的不同缩放因子。

HEVC规范指定在缩放之前添加的偏移值以进行舍入。 该偏移值等于比例因子除以 2。图 3-5 中未明确显示该偏移。

最后,使用 8 位系数并将中间数据的位深度限制为 16 位的两个有用结果是,所有乘法都可以用具有 16 位或更少的乘法器来表示,并且右移之前的累加器可以用更少的位来实现。 所有变换阶段都超过 32 位。

G. Quantization and De-Quantization

量化由除以量化步长(\(Q_{step}\))组成,逆量化由乘以量化步长组成。类似于H.264/AVC,量化参数(QP)用于确定HEVC中的量化步长。可以取从0到51的52个值。1的增加意味着量化步长增加了大约12%(即\(2^{1/6}\))。增加6导致量化步长增加2倍。除了指定两个连续QP值的步长之间的相对差之外,还需要定义与QP值的范围相关联的绝对步长。这是通过为\(Q_{step}=1\)选择QP=4来完成的。

正交变换的等效量化步长之间的结果关系现在由下式给出:

式(7)也可表示为:

HEVC 量化和反量化基本上是(8)的定点近似。 如图 3 所示,引入了额外的比例因子 \(S_Q\)和 \(S_{IQ}\),以恢复残差块的范数,该范数由于(8)的定点实现中使用的缩放而被修改。

HEVC 中 (8) 的定点近似由下式给出:

这导致

对于量化器输出、level,去量化器在 HEVC 标准中指定为:

这里\(shift1=(M-9+B)\), \(offset_{IQ}=1<<(M-10+B)\).

图3的比例因子\(S_{IQ}\)等于\(2^{-shift1}\),如下所示:当QP=4时,图3中的逆变换和反量化的组合比例在相乘时应产生1的乘积,以通过逆变换和逆量化保持残差块的范数,即

这导致\(S_{IQ}=2^{-(M-9+B)}\)导致\(shift1\)等于右移 \((M-9+B)\) 。 (13) 中的比例因子 D 从表 III 中获得。

对于正向变换的输出样本, coeff,可以按如下方式实现简单的量化方案:

这里\(shift2=29-M-B\),

注意 \(f_{QP\%6} \approx 2^{14}/G_{QP\%6}\)。shift2的值是通过对正向变换和量化器中的组合缩放施加类似的约束来获得的,如(13)中,即 \(S_Q×f_4×2^{(15-B-M)}=1\),这里\(S_Q=2^{-shift2}\).

最后,选择 \(offset_Q\)来实现所需的舍入。

总而言之,选择量化器乘法器\(f_i\)和去量化器乘法器\(g_i\)以满足以下条件

1) 确保\(g_i\)可以用有符号的 8 位数据类型表示。
2) 确保步长从一个QP值到下一个QP值的增加几乎相等(大约 12%)
3) 通过量化和反量化过程确保近似单位增益
4) 为QP=4提供所需的量化步长绝对值。

Sign Hiding

在HEVC中,对于每个变换单元,量化的变换系数以16个系数的组进行熵编码。在sign-hiding 的情况下,对于满足一定条件的系数组,沿扫描路径的第一非零系数的符号不在比特流中显式传输,而是从解码器处该系数组中的所有非零系数之和的奇偶性来推断。为了保证隐藏符号与所有非零系数之和的奇偶性匹配,编码器采用了基于率失真优化或失真最小化的奇偶性调整方法。

1 隐藏符号位的基本原理

在视频编码中,数据隐藏是一种已知的技术,通常用于将一个语法元素隐藏到部分比特流中以提供更好的编码效率。例如,用于帧内预测的MPM索引嵌入量化系数之和的奇偶性中;使用量化系数的奇偶性来传送变换模式的信息。

在将语法元素隐藏到其他语法元素的特定特征中时,必须考虑要隐藏哪个语法元素(源信号)以及要将其隐藏到哪里(目标信号)。为了产生率失真增益,必须考虑几个标准。

首先,从因果关系的角度来看,隐藏必须是可行的。在编码期间,当编码目标信号时源信号必须可用,在解码期间,必须在实际使用源信号之前解码目标信号。

其次,源信号必须代表压缩比特流中不可忽略的部分。从先前关于压缩数据隐藏的研究可知,隐藏数据时可以获得净增益,然而,以速率增益度量,它将仅表示隐藏信号的总速率的一部分。因此,如果数据隐藏要产生任何有价值的增益,则源信号应代表压缩比特流的相当大的比例。

此外,如果用于嵌入信息的目标和源信号特征不相关,则为了从隐藏源信号中获得最大增益,必须考虑其分布条件。当将二进制元素隐藏到目标信号的二进制函数中(例如将位隐藏到奇偶校验中)时,在大约50%的情况下,目标信号将需要改变。因此,由这种变化引起的率失真损失是近似恒定的,并且与源信号的分布无关:例如,隐藏始终等于0的二进制语法元素会导致相同的损失,因为奇偶校验仍然必须改变一半的时间。另一方面,当源信号在比特流中编码时达到其每符号1比特(在二进制元素的情况下)的编码上限时,通过省略源信号的传输而获得的增益是最大的。因此,必须为源信号选择一个等概率语法元素。

目标信号的一个重要条件在于能够找到对率失真性能影响最小的变化,因为在大约一半的情况下需要进行变化。因此,最好使用较大的目标信号,从而增加发现这种变化的机会。例如,将二元元素隐藏到单个量化系数的奇偶性中将在需要改变该系数时产生高率失真损失,当将其隐藏在较大的量化系数集合的和的奇偶性中时,增加了找到非常接近其量化区间边界并且其中量化值的改变将导致中等率失真损失的量化系数的机会。­

最后,希望源信号和目标信号大致成比例:当有更多的数据要隐藏时,应该有更多的目标信号嵌入其中。

量化系数可以做sign-hiding的原因:

  • 在编码器中,当要隐藏的符号已知时,可以修改量化系数的电平,并且在解码器中,在符号比特实际用于解码信号之前,可以使用这些电平。
  • 符号位代表压缩比特流的很大一部分(在HEVC通用测试条件下为15%到20%)。
  • 符号位是等概率的。
  • 在一组量化系数中嵌入符号位可以提供足够的机会找到一个量化系数,该量化系数在修改时会导致中等的率失真损失。
  • 当有更多的符号位要隐藏(源信号)时,有更多的剩余数据(目标信号)要嵌入它们。

2 量化和系数编码

可参考文章:

率失真优化量化 (Rate-Distortion Optimized Quantization RDOQ) – 我受到了惊吓 (mmedia-t.cn)

变换系数编码 – 我受到了惊吓 (mmedia-t.cn)

3 Sign Hiding

3.1 在解码器处推断隐藏符号位

对于每个CG,解码器统计沿扫描路径的第一个非零系数和最后一个非零系数之间的系数数目,并将其与阈值进行比较。如果超过阈值,则从所有非零系数之和的奇偶性推断第一个非零系数的符号。特别地,如果和为偶数,则该符号被推断为正;如果和为奇数,则该符号被推断为负。在这种情况下,不需要为该系数显式传输符号位。否则,以常规方式(每个符号1位)从比特流解码符号位。稍后在讨论编码器侧奇偶校验调整方案时,将详细说明应用这种标准以排除某些CG应用符号隐藏技术的原因。

上述多个符号位隐藏的解码处理针对一个TU内的每个CG重复。由于每个CG具有16个系数,因此对于一个4×4、8×8、16×16或32×32 TU,可分别隐藏多达1、4、16或32个符号位。­

3.2 编码器中隐藏符号位

为了避免失配,编码器执行与解码器相同的检查,以比较具有相同阈值的每个CG的第一非零系数和沿扫描过程的最后非零系数之间的系数数目,以确定是否要编码第一非零系数的符号。如果该数字不大于预定义阈值,则以常规方式编码符号;否则,不显式传输第一个非零系数的符号,因此每CG节省一位。注意,所有非零系数之和的奇偶性并不总是与第一个非零系数的符号匹配。当发生这种情况时,调整量化系数的幅度,以便奇偶性匹配符号。

将一个系数组中的原始变换系数表示为\(c={c_0, c_1, … , c_{N-1}}\),其中N是系数组中的系数总数。将量化和去量化函数分别表示为\(Q(·)\)和\(Q^{-1}(·)\)。量化输出或量化变换系数表示为\(u=Q(c)={u_0, u_1, … , u_{N-1}}\)。设k是沿扫描路径的第一个非零系数的索引,即\(u_k≠0\)且\(u_i=0, 0≤i<k\)。为了优化奇偶调整后的率失真性能,可将多符号位隐藏方案表述为以下优化问题:­­

\(D(c, \hat{c})\)是c与其重构\(\hat{c}\)之间的均方失真,\(R(u)\)表示编码系数向量u所需的速率,sign(x)是符号函数,λ是拉格朗日乘子,表征了距离和编码速率之间的折衷,以及

等式(3)中的问题本质上是矢量量化问题,对于该问题,需要设计矢量量化器以使给定速率约束以及和约束的奇偶性的失真最小化。因此可以应用一般的矢量量化器设计方法,然而通常需要迭代方法并且具有高设计复杂度。

在HEVC参考编码器中,当分别使用RDOQ或HDQ时,采用两种非迭代奇偶调整方案来解决等式(3)中的问题。首先通过RDOQ或HDQ对变换系数进行量化。在和的奇偶性与要隐藏的符号不匹配的情况下,编码器执行线性搜索,并将量化系数之一的幅度调整+1或-1,以使调整后的系数之和的奇偶校验与符号匹配。

第一个奇偶校验调整方案遵循与RDOQ类似的原则,即选择系数和调整方向以最小化调整后的总体率失真代价。第二种方案在不需要准确率信息的情况下,仅使失真最小化,适用于HDQ,且不太复杂。­

Transform Skip Residual Coding (TSRC)

VVC 中的残差编码,分为regular residual coding (RRC)和transform skip residual coding (TSRC)。 TSRC 和 RRC 都建立在 HEVC 中针对可变变换块大小 引入的 4 × 4 子块 (SB) 的概念之上,通常也称为系数组 (CG)。 图 1 说明了将大于 4 × 4 的块分解为 4 × 4 CG 以及 TSRC 的相关对角线扫描模式。 由于 TSRC 设计源自 RRC 设计,因此以下段落简要概述了 RRC 设计以及导致 TSRC 设计的修改。 请注意,由于变换块支持非正方形矩形,因此 VVC 支持非 4×4 子形状,这与仅支持 4×4 SB 的 HEVC 形成对比。 然而,在不失一般性的情况下,以下描述使用术语 CG 在解析过程的变换块内也包括非 4 × 4 子形状

RRC 设计使用多级显著性指示,即嵌入到 4 × 4 CG 概念中的非零系数的存在,以便为变换和量化的残差信号提供有效的信号。 在处理变换块的变换系数之前,语法元素\( s_{cbf}\) 出现在比特流语法中,表示对整个变换块的显著性,\( s_{cbf}=0\) 暗示变换块内的所有变换系数都等于零。 当 \( s_{cbf}=1\)指示存在至少一个不等于零的变换系数时,则处理使用变量\( v^X_{last}\)和 \( v^Y_{last}\)继续最后有效扫描位置。 正如它们的名称所示,变量分别根据列和行位置指定变换块内最后一个变换系数的位置,当沿对角线扫描模式扫描时,每个相对于变换块的左上角,如下图 1所示。这意味着当沿着对角线扫描模式向块的末端扫描超过最后一个有效扫描位置时,块中没有进一步的有效变换系数。 请注意,两个变量 \( v^X_{last}\)和\( v^Y_{last}\)中的每一个的值都是从两个语法元素重建的,这两个语法元素指定了最后一个变换系数的列或行位置的前缀和(可能为空)后缀部分。

RRC中的变换系数解析过程从最后一个有效扫描位置开始,并使用反向对角线扫描模式来处理位于扫描路径上的所有频率位置朝向DC频率位置。 对于变换块的每个 4 × 4 CG,语法元素 \( s_{csb}\) 指示当前 CG 的显著性。 有两个例外,第一个是覆盖最后一个有效扫描位置的CG,第二个是覆盖 DC 频率位置的 CG,其中符合标准的解码器推断 \( s_{csb}\)。由于最后一个有效扫描位置已经在 CG,解码器可以为相应的 CG 推断 \( s_{csb}\)。 由于 CG 传输覆盖 DC 频率位置的显着水平的可能性很高,由于变换的能量压缩特性,符合标准的解码器总是推断左上角 CG 的\( s_{csb}\)。 然而,对于左上 CG的语法元素\( s_{sig}\)(指定扫描位置的显著性),与其他CG一样,没有推理规则,即,当在前15个扫描位置内没有出现显著水平时,由于 \( s_{csb}=1\),CG的最后一个扫描位置必须是显著的。在4×4变换块的情况下,CG满足上述两个特殊条件,解码器推断\( s_{csb}\)等于1。

1 Processing Order

RRC 和 TSRC 的一个主要区别是处理扫描模式的顺序相反,即使用常规的正向扫描顺序而不是 TSRC 沿对角线扫描模式的反向扫描顺序,如图 1 所示。 因为通常帧内预测对于远离所使用的参考样本(位于当前块的上方和左侧)的样本位置变得效率较低。 这也意味着空间域中的局部残差信号方差随着与参考样本的距离增加而变大,从而导致块右下角的电平值变大。 通过反转反向扫描顺序,即通过使用常规的前向对角线扫描顺序,当在频域中沿反向扫描顺序操作时,显著级别的概率在扫描顺序中增加,类似于 RRC 中的情况。 虽然帧间预测块的好处并不显着,但改变扫描模式方向不会对这种情况下的性能产生不利影响。 请注意,HEVC RExt 中使用的 180° 剩余旋转利用了相同的现象,但由于 SB-wise 处理,它实际上与改变扫描方向不同。

第二个主要区别是消除了 TSRC 中最后一个有效扫描位置的信号通知,导致处理块内的所有扫描位置,如图 1 所示。 然而,多级显著性指示在 \( s_{csb}\) 出现在变换块的所有 CG 的意义上仍然有效,其中变换块的最后一个(右下)CG构成一个例外。对于该特殊CG,一致解码器可以推断\( s_{csb}=1\) ,但仅当\( s_{csb}=0\) 用于所有先前处理的SB时。

2 Level Coding

正如在 RRC 设计中一样,TSRC 的量化索引(级别)的编码和解码在CG内的多个编码通道中进行,即,从解码器的角度来看,解析过程在每个通道上迭代多次,沿着 CG内的扫描模式扫描位置,直到解码器可以重建完整的级别信息。 对于 TSRC,量化索引在3个pass中编码(和解码),前提是不超过上下文编码 bin 的限制。

pass-1以交错方式为每个量化索引包含最多 4 个上下文编码语法元素: \( s_{sig}\)、 \( s_{sign}\)、 \( s_{gt1}\)和 \( s_{par}\),分别是显著性指示、符号、大于 1 标志以及奇偶校验标志。 值得注意的是,RRC 中的 \( s_{sig}\)编码使用了 CABAC 引擎的旁路模式,并作为最终通道出现,而 TSRC 中的 \( s_{sign}\) 编码是采用自适应上下文模型的pass-1编码的一部分。 虽然在 TSRC 中\( s_{sign}\) 的总体概率仍然大致等于 0.5,但对于空间域中变换跳过的残差信号,局部通常会偏向某个方向。 使用利用该统计异常的自适应上下文模型可以提高 TSRC 的编码效率。 请注意,pass-1还包括为网格编码量化 (TCQ)引入的 \( s_{par}\)语法元素(指定级别的奇偶性)。 尽管 TSRC 的 TCQ 不活跃,但 TSRC 的二值化过程保持\( s_{par}\),以便为两个残差编码路径的pass-1编码保持相似的语法元素列表。

TSRC 中的pass-2由最多 4 个额外的 bin 组成,这些 bin 是上下文编码的,指示每个绝对量化索引的greater-than-x (gtx) 属性相对于阈值 x ∈ {3, 5, 7, 9} 与 相关语法元素 sgt3、sgt5、sgt7 和 sgt9。

pass-3最终指定了在前面的编码过程中未完全传输的那些绝对量化索引的剩余部分,并且所有此类相关的 \( s_{rem}\) 语法元素都通过截断 Rice (TR) 和 Exp-Golomb (EG) bin 字符串的串联进行二值化,每个 bin 都像在 RRC 路径中一样进行旁路编码。

从概念上讲,二值化和绝对量化索引编码过程之间存在直接关系。 图 2 说明了 HEVC 和 VVC 中的二值化过程,包括 3 个具有不同参数化的不同前缀代码的串联。 原则上,与截断一元 (TU) bin 字符串相关的所有 bin 使用自适应上下文模型进行上下文编码,而与 TR 和 EG bin 字符串相关的 bin 使用 CABAC 引擎的旁路模式进行编码。 HEVC 和 VVC 二值化过程之间最显着的区别是 TCQ的奇偶\( s_{par}\)语法元素,对于 RRC,当启用 TCQ 时,奇偶标志驱动 TCQ 状态机,其在第一个编码通道中的信号避免了 在知道下一个扫描位置的 TCQ 状态之前,需要重建每个扫描位置的完整级别信息。 请注意,TCQ 状态是 RRC 中 \( s_{sign}\) bin 上下文建模的重要元素。 从二值化的角度来看,每对具有不同奇偶校验的两个连续绝对级别 {(2n, 2n + 1)|n ∈ N+} 共享相同的二进制码字表示。 因此,对于所有 c ≥ 2,必须对图 2 中表示绝对水平值的 c 轴进行二次采样,从而将二值化过程应用于绝对水平集 c ∈ {0, 1}∪{2n|n ∈ N+} 而不是 HEVC 的 c ∈ N0。 另一个结果是,只要 c ≥ 2,就需要通过在适当的 bin 索引处添加表示 \( s_{par}\) 的奇偶校验 bin 来完成生成的 bin 字符串。在 RRC 和 TSRC 中,关联的 TU bin 字符串的索引顺序是这样的奇偶校验 bin 始终放在表示 \( s_{gt1}\) 的大于 1 的 bin 之后。 请注意,对于 TSRC,必须在所有 c ≥ 1 的 \( s_{sign}\) bin 之后添加表示语法元素 \( s_{sign}\) 的另一个 bin,如上文已经讨论的那样。 对于余数编码通道,TSRC 对 TR 和 EG 二值化采用相同的第二阈值 b1 和固定 Rice 参数 k = 1。

3 Context Modeling

对于上下文建模,TSRC 采用类似于 RRC 路径但相邻位置较少的局部模板 T 进行评估。 图3左侧为RRC路径的本地模板和已经处理的相邻频率位置,右侧为TSRC对应的本地模板。 请注意,由于反向对角线扫描模式,局部模板在 RRC 中跨越到右侧和底部,而在 TSRC 中,局部模板是反转的,即它跨越到空间中当前扫描位置的左侧和顶部。 TSRC 中的上下文建模不是评估五个邻居,而是只评估当前扫描位置上方和左侧的空间邻居。

令 χ ∈ X 表示上下文模型集 X 内的上下文记忆偏移量,其中每个上下文模型集 X 具有固定偏移量,因此所有上下文模型集都是不相交的。 进一步,设 TA(s) 和 TL (s) 分别为上邻居和左邻居的评价结果。 然后,语法元素 \( s_{sign}\) 的上下文模型索引 χsig ∈ Xsig 与 |Xsig| = 3 等于

相同的规则适用于 \( s_{gt1}\),但触发单个专用上下文模型的 BDPCM 模式除外 (|Xgt1| = 4)

\( s_{sign}\) 语法元素的上下文建模比较本地模板覆盖的相邻样本值,并选择符号上下文模型集合 Xsign 的第一个上下文模型(χsign = 0)与 |Xsign| = 6 当两个邻居都不重要时 (TA(ssig ) = 0∧TL(ssig ) = 0) 或两个符号值不同 (TA(ssign) ≠TL(ssign))。 请注意,仅当两个相邻位置都包含显着水平时,第二个条件才成立。 当两个相邻位置中的一个由正水平组成时 (TA(ssign) = 1∨ TL(ssign) = 1),上下文建模选择集合的第二个上下文模型 (χsign = 1)。 所有其他情况都会导致使用第三个上下文模型 (χsign = 2)。 请注意,对于 BDPCM 模式,适用于 \( s_{sign}\) 语法元素的相同上下文建模,但固定偏移量等于 3,这意味着对于 BDPCM,使用一组单独的上下文模型。 属于第一个编码通道的 spar 语法元素和第二个编码通道的所有语法元素,即 sgt3、sgt5、sgt7 和 sgt9,使用单个专用上下文模型。

4 Limit on Context-Coded Bins

为了实现具有成本效益和可行的硬件实现,在 RRC 和 TSRC 的设计中纳入了变换块中每个系数的上下文编码箱 (ccb) 的最坏情况限制。 当 N 表示(变换)块中变换系数或样本的数量时,上下文编码箱的最大预算在级别编码开始时设置为 Bccb = 1.75× N。 对于每个上下文编码的编码通道和每个扫描位置,必须在实际执行编码通道之前检查条件 Bccb ≥ 4。 每当扫描位置发生 Bccb < 4 时,剩余电平信息的处理将回退到纯旁路编码模式,仅使用由 TR 和 EG bin 字符串组成的二值化,即图 2 所示的第一变量阈值 b0 是 设置等于 −1 的值.

5 Level Prediction

当当前扫描位置具有在pass-1通道中编码的电平信息时,处理在余数编码通道结束时应用电平预测技术。 从解码器的角度来看,上述和左邻域的绝对水平 (TA(c) 和 TL (c)) 用作预测变量 p = max{T A(c), T L(c)},并且以下三种情况之一适用。 如果当前绝对水平 c 等于 1 且预测变量大于 0 (c = 1 ∧ p > 0),则最终绝对水平等于预测变量值 (c = p)。 最终绝对水平小于或等于预测变量值时减一,否则不变,总结如下:

请注意,级别预测技术等效于二值化过程的修改,即级别预测将 bin 字符串交换为 c = 1 和 c = p。 此外,当 BDPCM 对当前块有效时,不应用电平预测。

样本自适应偏移 Sample Adaptive Offset (SAO)

样本自适应偏移的关键功能是衰减振铃效应,当使用较大的变换大小时,振铃效应更可能出现。SAO通过首先使用所选分类器将区域中的样本分类为多个类别并根据其类别向每个样本添加特定偏移量来减少样本失真。在比特流中用信号通知每个区域的分类器索引和偏移。

HEVC使用两种SAO类型:边界偏移(Edge Offset, EO)和边带偏移(Band Offset, BO)。在EO中,样本的分类基于其邻域,即当前样本与其相邻样本之间的比较。在BO中,分类基于样本值。

边界偏移 Edge Offset

图1显示了吉布斯现象,可用于解释图像和视频编码中振铃效应的出现。横轴表示沿一维线的采样位置,纵轴表示采样值。虚线曲线表示原始样本,而实线曲线表示当由于变换系数的量化而丢弃信号中的最高频率时的重构样本。

局部峰、凸边/角、凹边/角和局部谷用实心圆标记,从图中可以观察到,通过对局部峰值和凸角应用负偏移,对凹角和凹谷应用正偏移,可以减少失真。

EO使用四种单向模式进行样本分类:水平、垂直、135°对角线和45°对角线,如图2所示,其中标签“c”表示当前样本,标签“a”和“b”表示两个相邻样本。这四个样本模式形成四个EO类别。每个启用EO的CTB只能选择一个EO类。基于率失真优化,选择一个EO类,并且在比特流中用信号通知指示选择哪个EO类的索引。

对于具有特定方向的给定EO类别,CTB内的每个样本被分为五类之一。标记为“c”的当前采样值将沿选定的一维模式与其两个相邻值进行比较。下表总结了每个样本的类别分类规则。类别1和4分别与所选一维模式的局部谷和局部峰相关联。类别2和3分别与凹角和凸角相关联。如果当前样本不属于EO类别1至4中的任何一类,则将其分配至类别0,且不应用SAO。请注意,类别是互斥的,一个样本只能属于一个类别。

正负边界偏移的影响如图3所示,解释如下。类别1和类别2的正偏移会导致平滑,因为局部凹谷和凹角会变得更平滑,而这些类别的负偏移会导致锐化。相反,对于类别3和4,负偏移导致平滑,正偏移导致锐化。在HEVC中,不允许在EO中锐化。因此,编码器针对每个EO类别用一个信号通知四个特定偏移的绝对值,偏移的符号从相应的EO类别中隐式导出。EO和BO都使用四个偏移量,这限制了偏移量的数量,以减少对行缓冲器的要求。

边带偏移 Band Offset

HEVC SAO工具使用的另一个偏移是边带偏移(BO)。将向值属于同一边带(值范围)的所有采样添加一个偏移。样本值范围分为32个相等的边带。对于0到255范围内的8位样本,边带的宽度为8。因此,8k到8k+7的样本值属于边带k,其中k的范围为0到31。可以向解码器发送边带中原始样本和重构样本之间的差异(即,边带的偏移)。BO的偏移符号没有限制。

图4展示了BO如何补偿区域的样本强度偏移。横轴表示样本位置,纵轴表示样本值。虚线曲线表示原始样本,而实线曲线表示重建样本,受预测残差的量化误差和相位偏移的影响,因为编码运动矢量偏离真实运动。

如图4所示,如果重建的运动向量和“真实”运动向量之间存在相移(差异),则与原始信号相比,具有梯度的平滑区域可能会偏移一定值。在该示例中,与原始样本相比,重构样本被向左移动,这导致可以通过BO针对边带k、k+1、k+2和k+3校正的系统负误差,其中范围从k*8到((k+1)*8)-1的样本被分类为属于边带k,并且可以通过使用相应的偏移值来修改。

在HEVC中,只有四个连续边带的偏移和当前区域的起始(或最小)边带位置被发信号给解码器。在BO中用信号通知四个偏移量,这等于EO中用信号发送的偏移量的数量(偏移量的数目被限制以减少线缓冲器的需求)。仅发出四个边带的信号的原因是CTB形成的区域中的样本值范围可能非常有限。

因此,通过发信号通知当前区域的起始边带位置,BO可以识别当前区域中要补偿的最小采样值,以便解码器可以恢复它,如图5中的示例所示。这对于色度CTB尤其如此。在自然图像中,色度分量通常由窄带信号表示,这意味着通过几个边带偏移,编码器可以恢复该区域中的大多数样本。

SAO Parameters Signaling

序列参数集(SPS)中用信号通知的语法元素sample_adaptive_offset_enabled_flag指示在当前视频序列中是否启用了SAO。在Slice header中,两个语法元素slice_sao_luma_flag和slice_sio_chroma_flag指示当前Slice中是否分别为亮度和色度启用了SAO。

低延迟应用可以使用基于编码树单元(CTU)的SAO编码算法。如图6所示,CTU包括其对应的luma CTB、Cb CTB和Cr CTB。语法方面,SAO参数自适应的基本单元始终是一个CTU。如果在当前Slice中启用SAO,则将每个CTU的SAO参数交织到Slice数据中。比特流中的SAO数据在每个CTU的开头用信号通知。CTU级SAO参数包括SAO merge信息、类型信息和偏移信息。

A. SAO Parameters Merging

CTU可以使用三个选项来发送SAO参数:重用left CTU的SAO参数(通过将语法元素SAO_merge_left_flag设置为1),重用top CTU的SAO参数(设置语法元素
sao_merge_up_flag设置为1)或通过发送新的SAO参数。SAO Parameters Merging 由所有三个颜色分量共享。当SAO merge_left或SAO merge_up模式被指示时,来自左侧或上方CTU的所有SAO参数都将被复制,并且当前CTU没有更多信息。这种基于CTU的SAO Parameters Merging 有效地减少了需要用信号通知的SAO消息。

B. SAO Type and Offsets Signaling

如果不使用SAO Parameters Merging,则如图7所示发送当前CTU的信息。首先发送亮度分量的语法元素,然后发送Cb语法元素,再发送Cr语法元素。对于每个颜色分量,发送SAO类型(SAO_type_idx_luma或SAO_type_idx_chrma),表示EO、BO或未应用(SAO已关闭)。如果选择了BO或EO,则传输四个偏移。如果选择了BO,则发信号通知起始边带位置(sao_band_position)。否则,如果选择EO,则用信号通知EO类(sao_EO_class_luma或sao_EO_class_chrma)。

Cb和Cr共享SAO类型(SAO_type_idx_chroma)和EO类(SAO_EO_class_chrma)语法元素,以通过在某些平台上实现更高效的内存访问来减少辅助信息并加快SAO处理。因此,这些语法元素仅针对Cb进行编码。码字(包括“关闭”、“EO类别选择索引”和“BO频带位置索引”)的设计基于概率分布,以减少信息。

C. CABAC Contexts and Bypass Coding

使用基于上下文的自适应二进制算术编码(CABAC)对包括SAO merge信息、SAO类型信息和偏移信息的所有CTU级SAO语法元素进行编码。只有SAO类型的第一个bin(指定在当前CTU中SAO是打开还是关闭)以及SAO merge_left和merge-up标志使用CABAC上下文。所有其他箱都在旁路模式下进行编码,这显著增加了CABAC中的SAO解析吞吐量,而没有很大的编码效率损失。

变换系数编码

与HEVC类似,VVC采用基于上下文的自适应二进制算术编码(CABAC)对所有底层语法元素进行熵编码。非二进制语法元素映射到二进制码字。符号和码字之间的双射映射(通常使用简单的结构化码字)称为二值化。使用二进制算术编码对二进制语法元素和非二进制数据的码字的二进制符号(也称为bin)进行编码。

CABAC支持两种操作模式:规则模式(使用自适应概率模型对bin进行编码)和不太复杂的旁路模式(使用1/2的固定概率)。自适应概率模型也称为上下文,将概率模型分配给单个bin称为上下文建模。注意,所使用的二值化和上下文建模对编码效率都有显著影响。

所需的编码器和解码器的复杂性主要随着上下文编码的bin(即在常规模式下编码的bin)的数量而增加。但是,它们还受到其他方面的影响,例如连续bin之间的依赖程度、所使用的上下文建模的复杂性,或者算术编码引擎的规则模式和旁路模式之间发生切换的频率。

变换块量化索引的熵编码通常称为变换系数编码。由于在典型的视频比特率下,变换系数level消耗了总比特率的主要部分,因此在编码效率和实现复杂度之间找到合理的折衷是重要的。VVC中变换系数编码的基本概念类似于HEVC中规定的系数编码:

  1. coded block flag(CBF)指示变换块是否包括任何非零level
  2. 对于CBF等于1的块,传输前向扫描顺序中最后一个非零level的x和y坐标;
  3. 从指示的最后位置开始,以反向扫描顺序传输level,并将其组织为所谓的系数组(CG)。CG的bin在multiple passes中编码,其中所有旁路编码的bins被分组在一起以实现高效实现

由于VVC比HEVC支持更大范围的变换大小,因此对变换系数编码的一些方面进行了推广。与HEVC相反,扫描顺序不依赖于帧内预测模式,因为发现这种依赖于模式的扫描仅提供可忽略的改进,并且将不必要地使设计复杂化。

此外,表示level的bin的上下文建模与块大小无关。但是,在HEVC中发现的上下文依赖限制被放宽,并且利用level之间的局部统计依赖来提高编码效率。为了能够利用某些TCQ属性,level的二值化包括一个奇偶校验单元,CG的所有上下文编码单元在一个过程中编码。VVC使用基于变换块的上下文编码单元数量限制,以保持与HEVC类似的worst-case复杂度。

A. Coded Block Flag

编码块标志(CBF)以编码引擎的常规模式进行编码。总共使用了9个上下文(4个用于luma,2个用于Cb,3个用于Cr)。每个上下文为BDPCM模式编码的块保留一个上下文。对于luma,两个上下文仅用于在帧内子分区模式中编码的变换块(参见[32]);这里,所选择的上下文取决于同一编码单元内的前一luma变换块的CBF。为了利用色度分量的CBF之间的统计相关性,根据同位Cb块的CBF来选择未在BDPCM模式中编码的Cr块的上下文。

B. Coefficient Groups and Scan Order

W×H变换块的变换系数level{q}分布在W×H矩阵中。为了实现跨越所有块大小的协调处理,而且为了提高变换块的编码效率,其中信号能量被集中到对应于低水平或低垂直频率的变换系数中,变换块被划分为系数组(CG)。使用多个扫描过程以统一的方式对每个CG的level进行编码。由于VVC还支持宽度和高度小于4的块大小,因此CG的形状取决于变换块大小,如表II所示。对于具有至少16个系数的变换块,CG总是包括16个level;对于较小的块,使用2×2级的CG。CG的编码顺序由图3所示的反向对角线扫描给出。与CG大小无关,CG对角线从变换块的右下角到左上角进行处理,其中每条对角线沿左下方向进行扫描。CGs内部level的编码顺序由相同的反向对角扫描指定。

为了限制大变换大小的worst-case解码器复杂性,高频位置的变换系数被迫等于零。非零量化索引只能出现在变换块左上角的min(W,Wn)×min(H,Hn)区域中,其中Wn×Hn表示可以在解码器侧推断的非零输出区域的大小。该区域外的CG未编码,因此被排除在扫描之外,如图3d。在大多数情况下,Wn×Hn等于32×32,这是非零输出区域的最大支持大小。尽管VVC为DCT-II以外的变换指定了较小的非零输出区域,但这通常不会影响变换系数编码,因为指定所用变换的语法元素是在level之后编码的,并且它们取决于某些区域中非零level的存在。唯一的例外是亮度块,最大值为(W,H)≤32,以特殊子块变换模式编码。

如果启用了非DCT-II变换(在序列级别上),则始终使用非DCT-II变换对这些块进行编码,因此,推断出non-zero-out区域的大小等于16×16

C. Last Significant Coefficient Position

与在HEVC中类似,通过以前向扫描顺序(即编码顺序中的第一个非零level)发送最后一个非零level的位置来消除与高频分量相关的系数的零量化索引的显式编码。这不仅提高了编码效率,而且减少了上下文编码的bin的数量。

分别对应于系数level矩阵中的列号和行号的x和y坐标彼此独立地传输。如表III所示,每个component由前缀码字和(可能为空的)后缀码字的组合表示。前缀部分指定值的间隔。使用截断一元(TU)二值化对其进行二值化,并以常规模式对bin进行编码。表示变换块的non-zero-out区域的最后一个间隔的前缀部分被截断。也就是说,如果x坐标的min(W,Wn)或y坐标的min(H,Hn)等于表中最后一列中的数字,则不对表III中括号内的零位进行编码。特别是,如果相应的块宽度或高度等于1,则完全跳过坐标的编码。后缀部分表示前缀部分指示的间隔内的偏移量。它是二值化使用固定长度(FL)二值化和编码在旁路模式。只有值大于3的x和y坐标具有后缀部分。

在解码器侧,导出最后有效level的x和y坐标的值如下。设\(v_{pre}\)是前缀码字中等于1的bin数。然后,要解码的后缀bin的数量\(n_{suf}\)由以下公式导出

\(v_{suf}\)是后缀码字(二进制表示)指定的值,解码后的坐标值last根据

先signal x坐标的前缀部分,然后signal y坐标的前缀部分。对于分组旁路编码bins,后缀部分在前缀码字之后进行编码。x和y坐标的前缀bins使用单独的上下文模型集进行编码。表IV列出了表示集合内使用的概率模型的上下文偏移量。选择的模型取决于是否对亮度块或色度块进行编码、变换块的宽度或高度以及前缀码字内的bin编号。请注意,对于存在zero-out的大型变换块,变换维度(而不是非零输出区域的维度)用于导出上下文偏移。总共有46个上下文(40个用于亮度,6个用于色度)用于编码最后的系数位置。

D. Binarization and Coding Order

从包含最后一个非零level(如x和y坐标所示)的CG开始,CG以编码顺序传输(通过反向对角线扫描给出)。为CG编码的第一个语法元素是sb_coded_flag。如果此标志等于0,则表示CG仅包含零个级别。对于第一个CG(包含最后一个非零level)和最后一个CG(包含DClevel),不编码sb_coded_flag,但推断为等于1。sb_coded_flag以常规模式编码。

选择的上下文取决于右边的CG或下面的CG是否包含任何非零级别,其中为亮度和色度指定了单独的上下文集。总共使用了4个上下文(2个用于亮度,2个用于色度)。对于sb_coded_flag等于1的CGs,按照以下说明对电平值进行编码。

选择系数level的二值化和编码顺序来支持TCQ和常规量化的有效熵编码。由于TCQ中使用的两个标量量化器Q0和Q1的结构不同,电平等于0的概率在很大程度上取决于所使用的量化器。为了在上下文建模中利用此效应,同时分组上下文编码和旁路编码的bin,二值化包括专用奇偶校验标志,用于在熵编码期间确定TCQ状态。

通过另外考虑实现良好编码效率所需的上下文编码bins的数量以及连续bins之间的相关性,选择了表V中所示的二值化。量化索引的绝对值|q|被映射到bin sig(大于0)、gt1(大于1)、par(奇偶性)、gt3(大于3)和非二进制余数rem

CG的语法元素在扫描位置上进行多次编码。与HEVC不同,在HEVC中,每个系数的单个语法元素在每个扫描过程中进行编码,VVC在单个过程中对每个系数最多编码4个语法元素。

pass 1中,上下文编码的存储单元siggt1pargt3以交错方式进行编码(即,在继续下一个扫描位置之前对一个扫描位置的所有存储单元进行编码)。注意,驱动TCQ状态机的奇偶校验bin包括在第一个过程中,以便为TCQ情况启用sig bin的有效编码。对于可以推断sig bin等于1的扫描位置(例如,对于最后一个有效位置),不发送信号。gt1pargt3 bin的存在按照表V中的规定进行控制。非二进制余数rempass 2中进行编码。使用与HEVC中类似的参数码对其进行二值化,并在旁路模式下对产生的bin进行编码。

为了增加worst-case下的吞吐量,可在第一次过程中编码的上下文编码bin的数量受到限制。为了允许上下文编码的bin在cg之间的适当分布,在变换块的基础上指定限制。N是变换块非零输出区域中变换系数的数量,上下文编码bin的最大允许数量设置为1.75 N。如果bin预算在CG之间平均分配,则这将对应于每个CG 28个bin,这仅略高于HEVC中规定的限制(25个bin)。

对上下文编码的bins的限制如下所示。如果在扫描位置的开始处,用于变换块的已编码siggt1pargt3 bin的总数超过1.75 ×N – 4,即预算中剩余的bin不到4个,则终止第一个编码过程。在这种情况下,剩余扫描位置的绝对值|q|pass 3中被编码,它们由语法元素decAbsLevel表示,这些元素在旁路模式下被完全编码。

最后,在pass 4中,CG的所有非零level的符号以旁路模式进行编码。如果启用SDH且CG内最后一个和第一个非零level的扫描索引之间的差值大于3,则不发送最后一个非零level的符号。图4示出了将level数据组织到不同扫描过程中。

E. Context Modeling

为了有效地利用条件统计进行算术编码,VVC使用了一组相当大的上下文模型对bin的siggt1pargt3进行编码。除了TCQ状态,上下文建模还利用了空间相邻量化索引之间的统计相关性。

sig的上下文取决于相关的TCQ state \(s_k\)、变换块内系数的对角位置d=x+y,以及图5a所示的局部模板T内部分重建的level的绝对q*的总和。部分重建的绝对level由相邻扫描位置的已编码的bin给出,并且可以根据

对于亮度块,指示所使用的自适应概率模型的上下文索引\(c_{lum}^{sig}\)根据

作为局部模板T内部分重建level q*的函数。对于色度块,仅使用两类对角位置(d<2和d≥2)。上下文索引\(c_{lum}^{chr}\)由

当TCQ未启用时,TCQ state \(s_k\)的值设置为0。总共使用60个上下文模型对sig bin进行编码(36表示luma,24表示色度)。

gt1pargt3选择的概率模型不依赖于TCQ状态,因为发现它只提供很小的好处。计算单个共享上下文偏移量以选择这些语法元素的概率模型。根据系数的对角线位置d(4类luma,2类色度)和max(0,q*-1)之和在本地模板T内选择,使用

作为局部模板T内部分重建level q*的另一个函数,亮度块和色度块的上下文索引\(c_{lum}\)和\(c_{chr}\)分别由下式给出

此外,对于最后一个系数位置,使用单独的上下文(由\(c_{lum}=0\)和\(c_{chr}=0\)给出)。对于每个gt1pargt3 bins,使用32个概率模型(21个用于亮度,11个用于色度)。

F. Binarization of Bypass-Coded Level Data

第二遍中编码的语法元素rem表示绝对level的余数。如果相关的gt3 bin等于1,则仅针对扫描位置发送它们。q*是根据(8)部分重建的level,level的绝对值|q|由下式给出

与HEVC中的余数值类似,使用截短的Rice(TR)和Exp-Golomb(EG)码的组合对表示在第三遍中编码的绝对级别的余数rem和语法元素decAbsLevel进行二进制化。在编码引擎的旁路模式中对生成的bin进行编码。与HEVC不同,TR码的Rice参数是基于本地模板T中的绝对level值|q|的和导出的。使用的本地模板T与第一次编码过程中用于上下文索引导出的模板相同。Rice参数m

其中,\(z_0\)设置为等于4,用于对余数rem进行编码,\(z_0\)设置为等于0,用于对decAbsLevel进行编码。产生这种差异的原因是decAbsLevel的值指定了完整的绝对级别,而余数rem表示差异rem =(|q| – q∗)/2,具有较小的值。

对于每个Rice参数m,小于\(v_{max}=2^m·6\)的值仅使用m(TRm)阶的TR码进行编码;这对应于长度为6的一元前缀的码。对于大于或等于\(v_{max}\)的值,TRm码与顺序为m+1(EGm+1)的Exp-Golomb码相关联。表VI显示了Rice参数m=0和m=3的二值化,以及TRm和EGm+1码的级联。表中粗体的bin对应于二值化的TRm部分。当组合的码长度将超过32个存储单元时,二值化将略微修改。在这种情况下,Exp-Golomb前缀的长度限制为11个bin(参见表VI中带下划线的m=0条目),32位预算的其余15个bin用于表示后缀部分。

为了提高完全旁路编码电平的编码效率,decAbsLevel的值不直接表示绝对电平值|q|,而是导出为

第一个编码过程。Rice参数m由这些值给出,使用与余数rem相同的二值化进行编码。注意,参数\(pos_0\)基本上指定了重新排序的码字表中|q| = 0的码字位置。根据Rice参数m和TCQ状态\(s_k\),根据

G. Transform Skip Residual Coding

除了上述用于变换系数的规则残差编码(RRC)之外,VVC还包括用于Transform Skip模式中的量化索引的专用熵编码,其被称为Transform Skip残差编码(TSRC)。它主要是为了提高屏幕内容的编码效率而设计的,可以在slice级别启用。启用时,TSRC方案用于对TS块的量化索引进行编码;未启用时,使用规则残差编码对TS块的量化索引进行编码。­

与常规残差编码相比,最后一个非零电平的位置不被传输,并且按照前向扫描顺序编码,即从左上角系数开始,然后到右下角系数。与RRC类似,CG的语法元素在扫描位置的多个过程中进行编码,并且对上下文编码的bins的数量应用相同的限制。只要未达到此限制,就使用三个过程对level进行编码,如图6所示。

在第一个过程中,使用自适应概率模型对sigsigngt1par的bin进行交织和上下文编码。如图5b所示,局部模板也应用于TSRC中,用于导出上下文索引,但它仅包括两个相邻的系数位置。因为,在TS块中,连续符号通常具有相似性的值,符号标志包含在第一次传递中,并在编码引擎的常规模式下进行编码。如果在pass 1后仍未达到常规编码bin的限制,则在pass 2时,每个系数最多有四个大于x的标志(gt3gt5gt7gt9)被编码。这些bins也是上下文编码的。最后,在pass 3中,绝对level(rem)的余数以旁路模式编码。注意,根据第二次扫描期间扫描位置是否达到bins限制(因此,无法对gt3 bin进行编码),余数可以具有不同的含义。对于第一次扫描中未传输数据的所有扫描位置,在pass 4中以旁路模式对完全绝对值(decAbsLevel)以及相关符号标志进行编码。rem和decAbsLevel的Rice参数m始终设置为1。

MMVD(Merge mode with MVD)

针对未来的视频编码标准,提出了一种新的运动矢量表达方法,即Merge mode with MVD(MMVD)。在先前的标准中,两种方法通常用于运动矢量表示。在第一种方法中,运动矢量从相邻块中导出,并直接用于运动补偿(HEVC中的Merge模式),在另一种方法中用MVP和MVD(自适应运动矢量预测;HEVC中为AMVP)表示运动矢量。Merge模式通过节省用于表示运动信息的比特而受益。AMVP表示更精确的运动信息,但它需要用信号发送MVD,这会消耗额外的比特。MMVD为运动矢量精度及其开销之间的权衡提供了折衷的解决方案。MMVD可以通过引入简化的运动向量表示来提高运动向量精度。结果表明,该方法提高了VVC的编码效率,平均节省了0.51%的BD码率。

1. INTRODUCTION

与先前的压缩标准H.264/AVC(高级视频编码)[1]相比,最新的视频压缩标准高效视频编码(HEVC)显示出编码效率的显著提高。得益于HEVC,从全高清(FHD)到超高清(UHD)的视频分辨率广播服务的新市场可能会成为下一代广播标准(如ATSC3.0[2])的主要特征。然而,随着先进显示技术的出现,对各种大型视频内容的需求不断增加,如8K UHD、360度虚拟现实、高动态范围(HDR)和宽色域(WCG)。为了满足这些需求,自2014年以来,已经讨论了支持多种视频内容的新视频编码标准[3]。

最终,ITU-T SG 16 Q.6(VCEG)和ISO/IEC JTC 1/SC 29/WG 11(MPEG)的联合视频专家组(JVET)于2018年开始开发新的视频编码标准,即通用视频编码(VVC)[4]。

大约在同一时间,中国AVS(音频视频标准)工作组启动了另一种新的视频编码标准AVS3[5]的开发,作为先前视频标准AVS2的继任者,AVS2在中国广泛用于4K广播[6]。最后,自2019年1月以来,MPEG正在开发MPEG-5基本视频编码(EVC),以更明确地解决许可问题[7]。

在上述三种标准中,与先前的编码标准(如HEVC和AVS2)相比,已观察到显著的编码性能改进。为了提高编码性能,三种标准化中的一种常见方法是减少帧间冗余及其在信令中的表示。仿射运动模型和几何分割的应用可以是减少基于块的平移运动无法覆盖的冗余的新方法的示例。为了改进运动表示,MMVD模式和扩展的Merge模式可以被认为是已经研究过的节省比特的新工具。

在本文中,我们介绍了一种具有简化表达式的运动矢量编码的新方法,该方法已被上述三种正在开发的视频编码标准所采用。

2.  MOTIVATION

2.1 Merge and AMVP modes

在HEVC中,Merge和AMVP模式可以被视为典型的运动向量预测工具,其利用相邻编码块的空间运动相似性来进行运动向量预测。通常,单预测帧的运动信息由运动向量(水平和垂直坐标信息)、参考帧索引和预测方向组成。在双向预测的情况下,要编码的运动信息量加倍。

HEVC中新引入了Merge模式。Merge模式生成由从空间相邻块和时间相邻块收集的运动信息组成的候选列表。仅用信号通知解码器应该用于预测的来自列表的候选的索引。

AMVP模式是为HEVC中的非Merge块设计的。AMVP模式使用更精确的运动向量执行运动补偿预测,这有利于减少残差。然而,由于运动差信息是编码器侧搜索处理的结果,并且不能在解码器侧导出,因此需要用信号通知MVD信息。尽管AMVP模式也使用预测器进行运动矢量编码,但要编码的相应侧运动信息仍然很大,包括预测方向、参考帧索引和运动矢量差(MVD)。

2.2 Motion Vector Inaccuracy of Merge mode

Merge模式的运动信息可能是不准确的,因为它直接从相邻块获得运动信息。相邻块的运动向量可能不是真实的运动,但它可以为速率失真优化提供最佳成本。

在运动参数相似性方面,存在针对HEVC的一系列序列和编码条件的观察结果。根据结果,与具有完全相同运动的先前编码块相邻的块平均占所有像素的40%[8]。其余块具有与相邻块不同的运动参数集。图1显示了2K序列的MVD分布。x轴和y轴的坐标表示AMVP模式下运动向量相对于其运动向量预测器的偏移。大小表示命中率,可以将其视为在相应运动向量偏移处发生的概率。这些MVD应以AMVP模式发出信号。MVD是当前块和相邻块之间的运动差,并且暗示预测精度的不足。这种分布类似于二维高斯分布。大多数MVD位于坐标平面的x轴和y轴上。此分布形状为摄像机拍摄的自然视频序列的特征。此外,更靠近中心的MVD的命中率大于更远离中心的MVDs的命中率。

8K序列的这些差异更明显,因为大分辨率序列的运动通常比小分辨率序列的大得多。因此,运动向量与其对应的预测器之间的差异也变得更大。HEVC中的MVD是用指数Golomb码编码的,占据了比特率的很大一部分。

对于典型运动向量的表示,在下一节中提出了一种新的运动向量表达方法。此表达式为更频繁出现的运动向量生成更短的码字。

3 MERGE MODE WITH MOTION VECTOR DIFFERENCE

在HEVC中,Skip模式也与Merge模式一起定义。Skip模式只是没有任何残差编码的Merge模式,即在Skip模式编码块的运动补偿之后没有重建阶段。以类似的方式,MMVD也可以是Skip模式编码或Merge模式编码。MMVD将额外的新运动向量视为Skip模式或Merge模式的候选。

3.1 Proposed Motion Vector Expression Method

所提出的运动矢量表达方法包括三个部分,即起点、距离和方向。由于运动矢量差也是运动矢量的一种形式,因此它也可以通过所提出的新的运动矢量表达方法来表示。

第一个分量是起点,它被用作进一步细化的绝对运动矢量位置。在MMVD中,用信号通知基本候选索引以指示来自候选列表的Merge候选中的哪一个被用作起点。候选索引的定义如表1所示。

第二个分量是运动向量的大小。该大小是运动向量沿坐标平面的x轴和y轴与起点的距离。预定义的对数缩放距离用于构建MMVD距离列表。如表2所定义的距离索引使用截断一元编码方案进行编码,以缩短频繁出现的距离的码字。

第三个分量是运动向量的方向。如图1所示,大多数MVD沿x轴和y轴分布。因此,仅允许沿x轴和y轴的四个方向。方向索引(如表3所示)将符号分配给相对于起点的MVD的每个分量。它采用固定长度编码方案进行编码。

3.2 MMVD for VVC

本节介绍在VVC的Skip和Merge模式中使用新的运动矢量表达方法。如果用Skip或Merge模式对当前块进行编码,并且如果在当前片中启用了MMVD,则发信号通知MMVD标志以指示MMVD模式是否应用于当前块。运动向量的推导过程基于如下所述使用的基础候选的预测方向而变化。

3.2.1 Uni-prediction

当基本候选是单预测运动向量时,用于MMVD推导的中心位置是基本候选的MV,与基本候选的距离如表2所示,图2显示了可以表达出的各种可能的MV。

3.2.2 Bi-prediction

当基本候选是双预测运动向量时,MMVD应用于具有相同信息的两个参考帧,如图3所示。当当前图片位于时间轴上的两个基准图片帧之间时,可以通过镜像另一个参考帧上MVD的方向来导出一个参考框上的MVD

3.3 MMVD for EVC and AVS3

虽然VVC中的MMVD从Merge候选列表中的基础候选继承预测方向,但EVC中的MMVD另外用信号通知预测方向。每个基础候选有三个可能的预测方向。如果基础候选是单预测的,则通过使用镜像方法导出相反的预测方向。结合两个单预测因子,合成双预测因子作为预测方向的第三候选。如果基础候选是双预测的,则可以将其分为两个单预测因子,用于每个单预测。

AVS3中的MMVD生成其自己的基本候选列表,该列表由相邻块的运动信息组成。其余过程类似于VVC中的MMVD。

4 EXPERIMENTAL RESULTS

低频不可分离变换 (Low Frequency Non-Separable Transform LFNST)

对于所有现代基于块的混合视频编码,变换是去除预测残差块中空间冗余的重要部分。此外,现有的方向性帧内预测导致预测残差中的方向性模式,并且导致变换系数的可预测模式。变换系数中的可预测模式主要在低频分量中观察到。因此,在本文中,引⼊了⼀种称为低频不可分离变换(LFNST)的不可分离变换,以进⼀步压缩低频主变换系数之间的冗余,低频主变换系数是传统方向帧内预测的变换系数.

提议的 LFNST 是直接矩阵乘法,因此它不需要多次迭代,而多次迭代会导致变换处理中出现不希望的延迟。提议的 LFNST 包含在称为通⽤视频编码 (VVC)的下⼀代视频编码标准中。

I. INTRODUCTION

在 HEVC 的第一个版本完成后,已经研究了具有超越高效视频编码标准 (HEVC) 能力的高级视频压缩技术。有关未来视频编码的活动是在ITU-T 视频编码专家组 (VCEG) 和ISO/IEC 运动图像专家组 (MPEG)的联合视频探索小组 (JVET) 内进行的,该专家组开发了联合探索模型(JEM) ),它现在正积极致力于开发称为通用视频编码 (VVC) 的下⼀个视频编码标准。 VVC 的主要⽬标是指定⼀种视频编码技术,其压缩能力大大超过此类标准的前几代,并且还支持在更广泛的应用中使用视频编解码器,包括超高-清晰度视频(例如,具有 3840×2160 或7620×4320 图像分辨率和 10 或 12 位的位深度,如 ITU-R BT.2100建议书所规定),具有高动态范围和宽色域的视频,以及用于身临其境的媒体应⽤,例如 360° 全向视频,以及先前视频编码标准 JVET-O2001[1] 通常解决的应⽤。 VVC中加⼊了许多先进的压缩技术,它包含了更多高级变换技术,例如多变换集 (MTS) 和低频不可分离变换 (LFNST)。本文重点介绍 LFNST 视频编码技术。

变换一直是去除预测残差块中空间冗余的重要编码工具。预测残差的空间冗余特性取决于预测模式。特别是,在帧内编码模式中,当使用仍在VVC 中使用的方向性帧内预测时,已经观察到方向性预测残差模式。方向预测残差产生变换系数,其中⼀些低频分量可能是可预测的模式,具体取决于帧内预测方向。因此,引⼊称为低频不可分离变换(LFNST)的不可分离变换以进⼀步压缩低频主变换系数之间的冗余,低频主变换系数是来自传统定向帧内预测的变换系数。提议的 LFNST 是直接矩阵乘法,因此它不需要多次迭代,而多次迭代会导致不希望的延迟并阻止变换处理中的并行执行。

II. BACKGROUND

在 JEM 中,二次变换应用于前向初级变换和量化(在编码器)之间以及去量化和反向初级变换(在解码器端)之间。 如图 1 所示,执行 4×4(或 8×8)二次变换取决于块大小。 例如,4×4 二次变换适用于小块(即 min (width, height) < 8),8×8 二次变换适用于每个 8×8 块的较大块(即 min (width, height) > 4)。

下面以输入为例描述不可分离变换的应用。 为了应用不可分离变换,4×4 输入块 \(X\)

\(\vec{X} =\begin{Bmatrix}
X_{00} & X_{01} & X_{02} & X_{03}\\
X_{10} & X_{11} & X_{12} & X_{13}\\
X_{20} & X_{21} & X_{22} & X_{23}\\
X_{30} & X_{31} & X_{32} & X_{33}
\end{Bmatrix}\)

首先表示为一维向量\(\vec{X}\)。

不可分离变换计算为\(\vec{F} =T\cdot \vec{X}\),其中\(\vec{F}\)表示变换系数向量,\(T\)是一个 16×16 的变换矩阵。随后使用该块的扫描顺序(水平、垂直或对角线)将 16×1 系数向量\(\vec{F}\)重组为 4×4 块。具有较小索引的系数将与较小的扫描索引一起放置在 4×4 系数块中。总共有 35 个变换集,每个变换集使用 3 个不可分离的变换矩阵(内核)。从帧内预测模式到变换集的映射是预先定义的。对于每个变换集,选择的不可分离次级变换候选者进一步由显式发送的次级变换索引指定。在变换系数之后,每个 Intra CU 在比特流中用信号通知索引一次。为了降低二次变换的复杂度,JVET-B0059 [2] 在二次变换的计算中提出了一种新的超立方给定变换(HyGT)。这种正交变换的基本元素是吉文斯旋转,它由旋转正交矩阵定义。图 2 描绘了二级变换结构。

HyGT 的乘法复杂度很高。 变换的分层结构也给硬件设计带来了问题,因为相邻阶段之间的数据依赖性限制了并行性。

III. ALGORITHM DESCRIPTION OF LFNST

LFNST 最初是在 JVET-K0099 [3](以前称为缩减二次变换或 RST)中引入的。 LFNST 和 HyGT 的原始版本有 35 个变换集,每个变换集有 3 个不可分离的变换矩阵(内核),这需要大量的内存使用,不适合硬件设计。 JVET-L0133 中引入了 4 个变换集(而不是 35 个变换集)映射,最后在 VTM5 中采用的 JVET-N0193 [4] 中引入了每组 2 个内核的 4 个变换集。 在本文中,16×48 和 16×16 矩阵分别用于 8×8 和 4×4 块。 为方便起见,16×48 变换表示为 LFNST8x8,16×16 变换表示为 LFNST4x4。 图 3 表示正向和反向 LFNST。

A. LFNST computation

LFNST或缩减变换(RT)的主要思想是将一个N维向量映射到不同空间中的一个R维向量,其中R/N(R < N)是缩减因子。 RT矩阵是一个R×N矩阵,如下:

其中变换的 R 行是 N 维空间的 R 个基。 RT 的逆变换矩阵是其正向变换的转置。 正向和反向 LFNST 如图 4 所示。

在本文中,应用了缩减因子为 3(1/3 大小)的 LFNST8x8。 因此使用 16×48 直接矩阵,每个矩阵从左上角 8×8 块中的三个 4×4 块中获取 48 个输入数据,不包括右下角 4×4 块(图 5)。我们将此区域称为 LFNST8x8 的感兴趣区域或 ROI8x8 .

换句话说,在解码器端使用 48×16 逆 LFNST 矩阵来生成 ROI8x8 中的核心(主)变换系数。 前向 LFNST8x8 使用 16×48(或 8×48 用于 8×8 块)矩阵,因此它仅在给定 ROI8x8 内的左上 4×4 区域中产生非零系数。 换句话说,如果应用 LFNST,那么除了左上角 4×4 区域之外的 ROI8x8 将只有零系数。 对于 LFNST4x4,应用 16×16(或 8×16 用于 4×4 块)直接矩阵乘法。

当满足以下两个条件时,有条件地应用逆 LFNST:

  • 块大小大于等于给定阈值(W>=4 && H>=4)
  • Transform skip 模式标志等于零.

如果变换系数块的宽度 (W) 和高度 (H) 均大于 4,则将 LFNST8x8 应用于变换系数块的 ROI8x8。 否则,LFNST4x4 可以应用于变换系数块的左上 min(8, W) × min(8, H) 区域。

如果 LFNST 索引等于 0,则不应用 LFNST。 否则,应用 LFNST,使用 LFNST 索引选择内核。 LFNST 选择方法和 LFNST 索引的编码将在以下部分中进行说明。

此外,LFNST 应用于帧内和帧间Slice中的帧内 CU,以及亮度和色度。 如果启用dual tree,Luma 和 Chroma 的 LFNST 索引将分别发出信号。 如果dual tree被禁用,单个 LFNST 索引被发送并用于 Luma 和 Chroma。

在第 13 次 JVET 会议上,采用了帧内子分区 (ISP) 作为一种新的帧内预测模式。 选择 ISP 模式时,禁用 LFNST 并且不发出 LFNST 索引信号,因为即使将 LFNST 应用于每个可行的分区块,性能改进也是微不足道的。 此外,对 ISP 预测的残差禁用 LFNST 可以降低编码复杂度。

B. LFNST selection

LFNST 矩阵是从四个变换集中选择的,每个变换集由两个变换组成。 应用哪个变换集由帧内预测模式确定,如下所示:

  • 如果指示了三种 CCLM 模式之一,则选择变换集 0。
  • 否则,按照表1进行变换集选择:

访问表 1 的索引 IntraPredMode 的范围为 [-14, 83],这是用于广角帧内预测的变换模式索引。

C. LFNST Signaling

R = 16 的前向 LFNST8x8 使用 16×48 矩阵,因此它仅在给定 ROI8x8 内的左上角 4×4 区域中产生非零系数。 换句话说,如果应用了 LFNST,那么除了左上角的 4×4 区域之外的 ROI8x8 只生成零系数。 因此,当在 ROI8x8 中检测到除了左上 4×4(如图 6 所示)之外的任何非零元素时,LFNST 索引不会被编码,因为这意味着没有应用 LFNST。 在这种情况下,LFNST 索引被推断为零。

D. Worse case multiplication handling of LFNST

根据硬件专家的意见,LFNST 需要将每个样本的最坏情况乘法次数限制为小于或等于 8。

如果我们使用 LFNST8x8 和 LFNST4x4,当所有 TU 都由 4×4 TU 或 8×8 TU 组成时,就会出现乘法计数的worst-case情况。 因此,前 8×48 和 8×16 矩阵(换句话说,每个矩阵中从顶部开始的前 8 个变换基向量)分别应用于 8×8 TU 和 4×4 TU。 在块大于 8×8 TU 的情况下,不会发生worst-case的情况,因此 LFNST8x8(即 16×48 矩阵)应用于左上角的 8×8 区域。 对于 8×4 TU 或 4×8 TU,LFNST4x4(即 16×16 矩阵)仅应用于不包括其他 4×4 区域的左上角 4×4 区域,以避免worst-case的情况发生。 在 4xN 或 Nx4 TU (N ≥ 16) 的情况下,LFNST4x4 分别应用于两个相邻的左上角 4×4 块。 通过上述简化,worst-case下的乘法次数变为每个样本 8 次。

IV. EXPERIMENTAL RESULTS

根据 JVET-M1010 [5] 中定义的通用测试条件和 JVET-M1026 [6] 中的核心实验描述,基于 VTM-4.0 参考软件实现了所提出的方法。 执行所有All Intra (AI) 和随机访问 (RA) 测试。
在 A 部分,报告了inter MTS 关闭的 AI、RA 和 LD 结果,其中与 VTM anchor相比,编码时间为 126% (AI)、111% (RA) 和 108% (LD),BD 速率变化为 -1.34% (AI)、-0.69% (RA) 和 -0.22% (LD)。
在 B 部分中,报告了启用 inter MTS 的 RA 和 LD 结果,其中与 VTM anchor相比,编码时间分别为 109% (RA) 和 105% (LD),BD 速率变化分别为 -0.69% (RA) 和 -0.18% (LD)。
最后,在 C 部分报告了 AI 案例的低 qp 结果,其中与 VTM anchor相比,编码时间为 137%,BD 速率变化为 -0.63%。

REFERENCES 

[1] B. Bross, J. Chen, S. Liu, “Versatile Video Coding (Draft 6)”, document JVET-O2001, 15th Meeting: Gothenburg, SE, 3–12 July 2019. 

[2] X. Zhao, A. Said, V. Seregin, M. Karczewicz, J. Chen, R. Joshi, “TU-level non-separable secondary transform”, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Doc. JVET-B0059, 3rd Meeting 

[3] M. Salehifar, M. Koo, J. Lim, S. Kim, “CE 6.2.6: Reduced Secondary Transform (RST)”, document JVET-K0099, Ljubljana, SI, Jul. 2018. 

[4] M. Koo, M. Salehifar, J. Lim, S. Kim, “CE6: Reduced Secondary Transform (RST) (CE6-3.1)”, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC1/SC 29/WG 11 JVET-N0193, 14th meeting, Geneva, CH, 19–27 March 2019. 

[5] F. Bossen, J. Boyce, K. Suehring, X. Li and V. Seregin, “JVET common test conditions and software reference configurations for SDR video”, JVET-M1010, 13th JVET meeting, Marrakech, MA, 9–18 Jan. 2019. 

[6] X. Zhao et al., “Description of Core Experiment 6 (CE6): Transforms and transform signalling”, JVET-M1026, 13th JVET meeting, Marrakech, MA, 9–18 Jan. 2019.