showeeks / hm

Other
0 stars 0 forks source link

块结构和平行特性 #2

Open showeeks opened 3 years ago

showeeks commented 3 years ago

在基于块的混合视频编码中,每个图像被划分为样本块,并且图像内的多个块被聚集以形成作为独立可解码实体的切片。在坚持这一基本原则的同时,新的高效视频编码(HEVC)标准在样本聚合块分割和块聚合图片分割方面提供了许多创新特性。本章首先描述了HEVC改进的预测和变换编码的基于四叉树的块划分概念,包括其编码树块(CTBs)、编码块(CBs)、预测块(PBs)和变换块(TBs)的组成部分。此外,针对预测和变换的不同树深度和块大小的选择,评估了不同HEVC配置的编码效率改进。作为该实验评估的一个结果,观察到HEVC相对于其前身H.264 j MPEG-4 AVC的平均比特率节省的一半以上可以归因于其用于预测和变换编码的块划分的增加的灵活性。本章的第二部分着重于HEVC为分组化和并行处理目的而改进的图像分割概念。这包括讨论支持高级并行性的新工具,如瓦片和波前并行处理(WPP)。此外,还提出了将切片分割成相关切片段的新概念,用于并行比特流访问和超低延迟处理,同时总结了WPP和切片的优缺点。

高效视频编码(HEVC)标准是根据基于块的混合视频编码的成功原则设计的。遵循这一原则,首先将图像分割成块,然后通过使用图像内或图像间预测来预测每个块。前一种预测方法仅使用同一画面内的解码样本作为参考,而后一种方法使用已经解码的画面的移位块作为参考。因为画面间预测通常补偿视频序列的画面之间的真实世界对象的运动,所以它也被称为运动补偿预测。虽然图像内预测利用了图像内相邻块之间的空间冗余,但是运动补偿预测利用了图像之间的大量时间冗余。在任一情况下,通过获取原始块与其预测之间的差异而形成的最终预测误差使用变换编码来传输,该变换编码利用块内的空间冗余,并且包括去相关线性变换、变换系数的标量量化以及最终变换系数级别的熵编码。

图3.1示出了基于块的混合视频编码器的框图,该编码器具有HEVC关于其新颖的块划分概念的一些特征成分。HEVC的这一创新特征及其具体的关键要素将是本章的主题之一。在这种新的块分割方法的第一步中,HEVC的每个图像被细分成相同大小的分离的正方形块,每个正方形块用作第一块分割四叉树结构(编码树)的根,因此被称为编码树块。CTB可以沿着编码树结构进一步细分为编码块,编码块是编码器必须在图像内预测和运动补偿预测之间做出决定的实体。将图片分割成CTB和将CTB分割成CBs在第节中描述。分别为3.2.1和3.2.2。这两部分都强调了CTB/CB分区与旧视频编码标准中使用的宏块分区的异同。出于预测目的的CBs划分在很大程度上独立于编码树结构,将在第节中描述。3.2.3.预测残差在CB级的变换编码依赖于第二种嵌套块分割四叉树结构,即所谓的残差四叉树,并将在第节中与其结果变换块一起描述。3.2.4.最后,门派。3.2.5对HEVC的块划分概念的某些方面进行了实验评估,并将HEVC设计与旧视频编码标准的设计进行了比较。

在本章的第二部分,重点是为了分组化和并行处理的目的而进行的图像分割。第3.3.1节描述了从以前的视频编码标准中已知的将图片分割成片段,以及将片段选择性地分割成片段片段的新颖方法。高级并行化的各个方面将在第节中讨论。3.3.2随着瓦片和波前并行处理的新特性(WPP)。此外,描述了如何将这些图像分割特征与切片片段的概念一起使用来改善比特流访问。第3.3.3节从支持超低延迟应用的不同角度讨论了相同的工具组合。最后,在门派。3.3.4,讨论了tiles和WPP的优缺点。全章以3.4结尾。 image

showeeks commented 3 years ago

自H.261 [14]以来的所有ITU-T和ISO/IEC视频编码标准都遵循基于块的混合视频编码方法,正如上面已经简要讨论过的和图3.1所示。不同代视频编码标准之间的一个显著区别是,它们为样本块提供不同的编码模式集。一方面,所选择的编码模式确定样本块是使用图像内预测还是图像间预测来预测的。另一方面,它还可以确定给定块对用于预测和/或变换编码的子块的细分。用于预测的块通常还与预测参数相关联,例如运动矢量或帧内预测模式。

为了给编码器和解码器产品的开发者尽可能多的自由,同时确保不同制造商的设备之间的互操作性,视频编码标准只规定了比特流语法和解码过程的结果,而编码过程被排除在范围之外。然而,特定编码器的编码效率在很大程度上取决于用于确定写入比特流的语法元素的值的编码算法。这包括选择编码模式、相关的预测参数、量化参数以及变换系数的量化索引。一类概念上简单且非常有效的编码算法基于拉格朗日比特分配[31,39,43]。利用这些方法,通过最小化在一组可用选择 $\mathcal A$ 上得到的失真 $D$ 和相关比特数 $R$ 的加权和来确定所使用的编码参数 $p^*$

$$ p^*=\arg\min_{\forall p\in \mathcal A}D(p)+\lambda R(p) $$

拉格朗日参数 $\lambda$ 是一个常数,它决定了失真 $D$ 和比特数 $R$ 之间的折衷,从而决定了重构视频的质量和比特流的比特率。混合视频编码标准能够实现的编码效率取决于几个设计方面,例如用于子样本插值的插值滤波器、熵编码的效率或所采用的环路内滤波技术。然而,从一个标准代到下一个标准代改进的主要来源通常是对一幅图片或一组样本编码的支持可能性的增加。例如,这包括运动矢量精度的提高、选择图像编码顺序的更大灵活性、可用参考图像的扩展集合、帧内预测模式数量的增加、运动矢量预测器数量的增加、支持的变换大小数量的增加以及运动补偿预测的块大小数量的增加。

在下文中,我们将研究支持将图片划分为运动补偿预测、图片内预测和变换编码的块的选项集。如果我们考虑给定的样本块,用于预测或变换编码的块的不同细分与失真和速率之间的不同权衡相关联。当我们将一个块细分为多个子块并为每个子块选择最佳预测参数时,我们通常会降低预测误差能量,但会增加传输预测参数所需的比特率。细分在率失真意义上是否有利取决于实际的样本块。通过扩展支持的细分模式集,我们通常会提高发送所选模式信号所需的比特率,但会降低编码预测残差的平均率失真成本,假设有合适的编码器决策算法。

$$E\left\{ \min_{\forall p\in \mathcal A} D(p)+\lambda R(p) \right\}$$

如果一组分割模式$\mathcal A$产生典型视频内容的拉格朗日率失真成本的较小期望值,则该组分割模式相对于另一组提高了编码效率。然而,应该注意的是,对于可能的细分模式的更大集合,一般来说,编码器还需要更高的计算复杂度来评估支持的模式集合。因此,在设计标准时,必须在潜在的编码效率和所需的编码器复杂度之间选择合理的折衷方案。

由于计算能力的不断提高,更新的视频编码标准支持更多的编码选项。在HEVC的发展中,人们进一步考虑到高清晰度和超高清晰度视频的编码变得越来越重要。为了处理如此高的分辨率,通常有利的是支持运动补偿预测和变换编码的较大块尺寸。但是为了使块划分适应图片的局部属性,额外支持小块大小也很重要。在HEVC,这两个目标都是通过引入基于简单统一但高效的四叉树语法的分层块划分概念来实现的[27,44]。此外,这种基于四叉树的块划分概念允许在编码器中应用快速最优树修剪算法[5],以根据拉格朗日率失真成本来确定最佳块划分。

showeeks commented 3 years ago

在ITU-T和ISO/IEC的所有现有视频编码标准[11,12,14–17]中,视频序列的每个图像被分割成所谓的宏块。

从 H.261 开始,每个图像会被分割为宏块。这个概念在 HEVC 中被 CTB 代替。

一个宏块由16x16个亮度样本块和两个相关的8x8 的色度样本块(每个色度分量一个)组成。宏块可以被认为是这些标准中的基本处理单元。对于图像的每个宏块,编码器必须选择编码模式。所选择的宏块编码模式确定宏块的所有样本是使用画面内预测还是运动补偿预测来预测的。根据实际标准中支持的特征,它还可以确定将宏块划分为用于运动补偿预测或图像内编码的子块。16x16亮度样本的宏块大小代表可用于发信号通知预测参数(如运动数据)的最大块大小。

尽管目前使用H.262 | MPEG-2 Video [16]和H.264 | MPEG-4 AVC [17]等视频编码标准来存储和传输高清(HD)视频内容,具有1280x720或1920x1080亮度样本的典型图像分辨率,但它们主要是为QCIF (176x144个亮度样本)到标准清晰度(720x480或720x576亮度样本)的视频分辨率而设计的。由于高清视频的普及以及人们对分辨率为3840x2160甚至7680x4320亮度样本的超高清(UHD)格式[13]的兴趣日益增长,HEVC [18]的设计重点是高分辨率视频。然而,对于如此大的图像分辨率,如在现有视频编码标准中那样,将可用于发信号通知预测参数的最大块大小限制为16x16亮度样本在率失真意义上是低效的[4,26,37]。对于典型的高清或超高清视频内容,许多可由相同运动参数描述的图像区域比16x16亮度样本的块大得多。为每个16x16宏块发信号通知编码模式已经需要大量的目标比特率。此外,由于高分辨率视频中相邻样本之间的空间相关性增加,使用大于16x16的变换大小来编码残留信号对于许多图像部分也是有利的。支持更大的块尺寸用于图像内预测、运动补偿预测和变换编码是许多HEVC建议的关键方面之一,例如[25,27,44]。

尽管高清和UHD视频编码是HEVC开发的一个重要方面,但该标准旨在为所有现有视频编码应用提供相对于其前身H.264 | MPEG-4 AVC的改进编码效率。虽然增加最大支持块大小的大小对于高分辨率视频是有利的,但是它可能对低分辨率视频的编码效率有负面影响,特别是如果使用不能评估所有支持的子分割模式的低复杂度编码器实现的话。由于这个原因,HEVC包括一个灵活的机制,用于将视频图像分割成大小可变的基本处理单元。

showeeks commented 3 years ago

如前所述,在HEVC,每幅图像被分割成方形编码树块(CTB),使得亮度和色度图像分量的CTB数目相同(假设非单色视频格式)。因此,亮度样本的每个CTB连同其对应的两个色度样本块以及与这些样本块相关联的语法被归入所谓的编码树单元(CTU)。CTU代表HEVC的基本处理单元,在这方面类似于现有视频编码标准中的宏块概念。亮度CTB覆盖2Nx2N个亮度样本的正方形图像区域。在4:2:0色度采样格式中,两个色度CTB中的每一个都覆盖两个色度分量之一的$2^{N-1}\times 2^{N-1}$色度采样的相应区域。参数n在序列参数集中传输,并且可以由编码器在值N=4,5,6中选择,对应于16x16、32x32和64x64亮度样本的CTU大小。更大的CTU尺寸通常提供更好的编码效率,但也可能增加编码器/解码器延迟、存储器需求和编码器过程的计算复杂性。编码器可以自由选择CTU尺寸,为目标应用提供最佳折衷。 为了说明,图3.2显示了将具有1280x720亮度样本的图片分割成16×16宏块和64x64 CTUs。可以看出,一个16×16的宏块只覆盖了一幅图像的非常小的区域,比通常可以用相同的运动参数描述的区域小得多。考虑到一些CTU将被细分以分配不同的预测模式和参数,如下面将更详细描述的,划分成64x64 CTUs提供了更合适的描述。

showeeks commented 3 years ago

在现有的ITU-T和ISO/IEC视频编码标准中,宏块不仅用于分割视频画面;它还表示编码器为其选择编码模式的处理单元。对于每个宏块,决定是使用画面间编码(即,运动补偿预测)还是画面内编码来传输相应亮度和色度块的所有样本。此外,在图像内和图像间编码中,为了预测和发信号通知预测参数,通常可以将宏块细分成更小的块。

在广泛使用的H.264 | MPEG-4 AVC高配置文件中,支持三种帧内宏块编码模式4,分别称为帧内4×4、帧内8×8和帧内16×16。在帧内4×4编码模式下,宏块的亮度分量被细分为4×4块。基于已经编码的相邻块的样本来预测每个4×4块的样本,并且使用4×4变换来编码预测残差。当使用帧内8×8模式时,对8×8块进行亮度分量的帧内预测和变换编码。对于帧内16x16模式,使用已经编码的相邻宏块的样本来预测整个16x16亮度块,并且使用两阶段变换来编码预测残差,这可以被解释为16x16变换的低复杂度变体。在所有三种帧内宏块模式中,预测整个8×8色度块,并使用8×8变换的两阶段变体对残差进行编码。图3.3的底部示出了用于画面内编码的宏块的亮度分量的划分。

对于运动补偿预测,H.264 | MPEG-4 AVC支持四种分区模式,分别称为Inter-16x16、Inter-16x 8、Inter-8x16和Inter-8x8编码模式,如图3.3顶部所示。在16x16帧间模式下,所有亮度和色度样本的运动补偿预测都是使用同一组运动参数完成的。对于Inter-16x8和Inter-8x16模式,宏块的亮度和色度块分别被水平和垂直分割成两个相同大小的矩形,两个结果块中的每一个都与一组单独的运动参数相关联。当使用8×8帧间模式时,宏块被分成四个子宏块,每个子宏块的大小为8×8亮度样本。每个最终的子宏块可以使用单个运动参数集被编码为单个8×8块,或者它们可以被进一步分成两个8×4、两个4×8或四个4×4块。请注意,8×8子宏块支持的细分与宏块的细分相同。为了对图像间编码宏块的亮度预测残差进行编码,H.264 | MPEG-4 AVC的高配置文件支持基于4×4和8×8块的变换编码,所选择的变换大小在宏块级别上用信号通知。如果宏块以8×8帧间模式被编码,并且至少一个子宏块被进一步细分,则不发送通知变换大小的语法元素,而是推断4×4变换的使用;不支持用于运动补偿预测的跨块边界的变换编码。画面间编码模式中的色度残留信号总是使用4x4变换进行编码。

在HEVC,视频图像被分割成的基本处理单元可以大到64x64亮度样本。将H.264 | MPEG-4 AVC宏块语法直接应用于HEVC的编码树单元会引起一些问题。一方面,对于大块,在图像内预测和运动补偿预测之间进行选择在率失真意义上是不利的。在P和B切片中,通常使用运动补偿预测可以很好地预测大多数样本。仅对于少量样本,图像内编码在率失真意义上是有利的。如果该标准允许仅在编码树单元的级别上在运动补偿预测和图像内编码之间进行选择,这将导致编码效率的显著损失。实际上,已经表明[21,35]能够以小于16×16宏块的单位在图像内和图像间编码之间进行判定可以提高编码效率。另一方面,为了允许像在H.264 | MPEG-4 AVC中那样的用于运动补偿预测的精细块结构,宏块和子宏块模式的概念将不得不在额外的层级上扩展,从而产生复杂的语法。此外,如果变换大小不能在编码树块内改变,则编码器不能很好地适应视频画面中的局部统计。

为了克服这些潜在的问题,HEVC引进了另一种被称为编码单元的处理单元。如图3.4中的例子所示,一个CTU可以被分成多个可变大小的编码单元。为此,每个CTU包含一个四叉树语法,也称为编码树,它指定了它对CUs的细分。与CTU类似,CU由一个方形亮度样本块、两个相应的色度样本块(对于非单色视频格式)以及与这些样本块相关联的语法组成。CU中包含的亮度和色度样本阵列称为编码块。CTU的色度CTB的细分始终与亮度CTB的色度CTB对齐。因此,在4:2:0色度采样格式中,每个$2^N\times 2^N$亮度CB与两个$2^{N-1}\times 2^{N-1}$色度CBs相关联。