在看文章的时候看到这篇在知网上面的作者写的这篇文章。可以很清晰的介绍了H.264/AVC、H.265/HEVC、H.266/VVC 视频编码标准中图像划分技术的演进过程,分析不同编码标准图像划分技术的差异。
目前的视频编码标准都采用了基于块的混合编码方式,这种编码方式先以块为基本单元进行帧内或帧间的预测,然后对预测残差进行变换量化,最后将分块模式、预测信息以及量化后残差等进行熵编码,得到编码码流。随着编码标准的不断演进,分块技术也在不断地发展中,分块的方式呈现出从小块到大块,从简单划分到复杂划分的整体趋势,以达到不断提升编编码性能的目的。
在 H.264/AVC 编码标准中, 将输入图像划分成固定的尺寸的块作为编码的基本单元,并把它称为宏块(MB,Macro Block), 包括一个亮度块和两个色度块, 亮度块大小为16×16。为简单起见,文中所描述的块大小均为亮度块的大小, 如果采用 4 :2 :0 采样,色度块大小为亮度块大小的一半。
在预测环节,根据预测模式的不同,将宏块进一步划分为用于预测的小块。帧内预测中可以把宏块划分成 16×16、8×8、4×4 的小块,每个小块分别进行帧内预测。帧间预测模式中分块方式有两个层级,首先可以把宏块划分为 16×16、16×8、8×16、8×8 的小块。若划分方式为 8×8,则把分成的四个块称为子宏块,子宏块可进行再次划分,划分为 8×8、8×4、4×8、4×4 的小块。每个小块均可独立进行运动估计, 但每个子宏块内的小块只能参考同一个参考帧。
在变换量化环节,将宏块划分为 4×4 或 8×8 的小块,将每个小块中的预测残差分别进行变换和量化,得到量化后系数。
此外,为了限制误码扩散和传输,H.264/AVC 中提出了条带(slice)的概念,将一幅图像划分为一个或多个 slice,每个slice 中的宏块按照光栅扫描的顺序进行编码。每个 slice 可以单独编码和传输,不受其他 slice 的影响,因此也有利于并行运算。
HEVC的基本编码原理和H.264/AVC基本一致,即预测加变换的分块编码;在编码细节上和前者也很相似,包含帧内预测、帧间预测、运动估计与运动补偿、DCT变换、量化、环路滤波、熵编码和重建等编解码模块。但是与H.264/AVC相比。HEVC在每个编码环节都采取了重要的改进措施。
一幅图像被分割成编码树单元(CTU,Coding Tree Unit), CTU 是编码的基本单元(概念上对应H.264/AVC 中的宏块)。一个 CTU 包含一个亮度编码树块(CTB,Coding Tree Block) 和两个色度编码树块,H.265/HEVC 标准中 CU 的最大尺寸一般为 64×64。
2.2Slice和Tile划分
H.265/HEVC 标准中每个 slice 可以进一步被划分为 slice 片段(segment),slice 片段包含独立 slice 片段(independent slice segment)和非独立 slice 片段(dependent slice segment)。一个 slice 可以包含一个或者多个 slice 片段,这些片段以独立slice 片段开始,跟随多个非独立 slice 片段。独立 slice 片段头的编码语法与前序 slice 片段无关,而非独立 slice 片段中部分编码语法元素值需要从解码顺序更前的 slice 片段头中导出。
图 3 中给出了 slice 划分的一个示例,该图像包含 11×9 个 CTU,划分为两个 slice,第一个 slice 由一个独立 slice 片段和两个非独立 slice 片段组成,第二个 slice 包含一个独立 slice 片段。
H.265/HEVC 编码标准在 H.264/AVC 基础上,还新增了 tile(片)的概念,与 slice 的条带状划分不同,tile 可以将图像水平和垂直划分为多个矩形区域,每个 tile 包含一个或多个 CTU, 按照扫描顺序进行编码,可以进一步增强并行处理的能力。图 4 中图像被垂直划分为两个 tile,左图中图像包含一个slice,该 slice 包含一个独立 slice 片段和 4 个非独立 slice 片段; 右图中第一个 tile 中包含两个 slice,第二个 tile 包含一个 slice。
为了适应多种多样的视频内容和视频特征,CTU 采用四叉树(QT,Quadro Tree)方式迭代划分为一系列编码单元(CU, Coding Unit),CU 是帧内/ 帧间编码的基本单元。一个 CU 包含一个亮度编码块 (CB,Coding Block) 和两个色度编码块及相关语法结构,最大 CU 大小为 CTU,最小 CU 大小为 8×8
经过 2.3 编码树划分得到的叶子节点 CU 根据预测方式的不同,可分为三种类型 :帧内预测的 intra CU、帧间预测的inter CU 和 skipped CU。skipped CU 可以看作是 inter CU 的特例,不包含运动信息和残差信息。叶子节点 CU 包含一个或者多个预测单元(PU,Prediction Unit),H.265/HEVC 支持 4×4〜 64×64 大小 PU,一共有八种划分模式。
对于帧内编码模式,可能的划分模式有两种 :Part_2Nx2N 和 Part_NxN。当且仅当 CU 的大小为最小 CU(SCU,Smallest CU)时,帧内预测才存在 Part_NxN 的划分,即可将一个 CU 划分为 4 个相同大小的 PU。
对于帧间编码模 式,可能的划分模式有八种 : Part_ 2Nx2N, Part_ 2NxN, Part_ Nx2N, Part_ 2NxnU, Part_2NxnD,Part_nLx2N,Part_nRx2N,Part_NxN 。 其 中 , Part_2NxnU,Part_2NxnD,Part_nLx2N,Part_nRx2N 属于非对称运动划分,当 CU 大于 SCU 时,才存在非对称划分模式。而对于 Part_NxN 划 分, 当且仅当当前 CU 为 SCU 且 SCU 大于 8×8 时才存在。对于 8×4 和 4×8 的划分,也仅在单向预测时存在
对于残差信号,CU采用残差四叉树划分为变换单元TU。结构如图6所示。
一个 TU 包含一个亮度变换块(TB,Transform Block)和两个色度变换块。仅允许方形的划分,将一个 CB 划分为 1 个或者 4 个 PB。同一个 TU 具有相同的变换和量化过程,支持的大小为 4×4 到 32×32。与之前的编码标准不同,在帧间预测中,TB 可以跨越 PB 的边界,这样可以进一步最大化帧间编码的编码效率。
3、VVC/H.266视频编码图像划分
VVC/H.266视频编码图像首先划分跟HEVC相似的编码树单元 CTU,但是最大尺寸从 H.265/ HEVC 标准中的 64×64 提高到了 128×128, 可以适配更大的图像尺寸。
H.266/VVC 提出了四叉树和嵌套多类型树(MTT,Multi-Type Tree)划 分,MTT 包括二叉树(BT,Binary Tree)和三叉树(TT, Ternary Tree), 统 一 了 H.265/HEVC 中 CU、 PU、TU 的概念,并且支持更灵活的 CU 划分形状。CTU 按照四叉树结构进行划分,叶子节点通过 MTT 进一步划分,划分类型一共有4 种 :垂直二划分(SPLIT_BT_VER)、水平划分(SPLIT_BT_HOR)、垂直 1 :2 :1 三划分(SPLIT_TT_VER)和水平 1 :2 :1 三划分(SPLIT_TT_HOR),如图 6 所示。多类型树叶子节点成为编码单元 CU,当 CU 不大于最大变换单元(64×64)时,后续预测和变换不会 再进一步划分。所以大部分情况下,CU、PU、TU 都具有相同的大小。
在编码过程中,需要对图像划分信息进行标识,以便解码端可以正确解码,图 7 列出了具体的划分标识方法。CTU 为四叉树的根节点,qt_split_cu_ fag 标识是否采用四叉树结构划分。四叉树的叶子节点进一步采用 MTT 结构划分,mtt_split_cu_fag 用来标识是否采用 MTT 划分,如果采用,mtt_split_cu_vertical_fag 用来标识 MTT 划分方向,“1”代表垂直划分,“0”代表水平划分,再用 mtt_ split_cu_binary_fag 标识采用二分还是三分,最终确定该 CTU 的划分。
图 8 中给出了一种四叉树和嵌套多类型树的划分结构图, 这种划分方式可以根据图像内容自适应的划分,提升了划分灵活性。最大 CU 大小为 CTU,最小 CU 大小为 4×4,最大变换块大小为 64×64
在硬件实现中,一般采用流水线数据处理方式,以确保高效性。将图像中非重叠的单元定义为虚拟流水线数据单元(VPDU,Virtual Pipeline Data Units),这些单元在同一时刻相互独立,因此可以实现流水数据处理。VPDU 大小与现在大多数流水线缓冲区大小密切相关,考虑到具体实现的限制,VPDU 设置为最大变换单元大小 64×64。但 H.266/VVC 中采用的 TT 和 BT 划分可能会导致 VPDU 尺寸变大,因此在最新的 H.266/VVC参考软件平台 VTM6.0 中对图像划分做了以下限制 :
图 9 中给出了 VTM6 中对划分的限制示例,CU 的宽和高均为 128,分成 4 个 64×64 的 VPDU,按照划分限制要求, 图中红线为禁用的划分。
3.3 色度分离树
考虑到亮度和色度的不同特性和具体实现的并行度,色度可以采用单独的划分树结构,而不必和亮度划分树保持一致。H.266/VVC 中I 帧的色度划分采用色度分离树,P 帧和 B 帧色度划分则与亮度划分保持一致。采用I 帧色度分离树划分后, 色度块的大小可能为 2×2、4×2 和 2×4,导致硬件实现流水线编码路径过长,不利于实际应用。因此,采用色度分离树划分时,禁用 2×2、4×2 和 2×4 的小块。
3.4 Slice,tile 和 brick 结构
H.266/VVC 编码在 H.265/HEVC 基础上,将 tile 进一步划分为 brick(砖块)。一个 tile 可以划分为一个或者多个 brick,一个 brick 包含一个 tile 的多行 CTU。
Slice 支持两种模式,一种是扫描顺序(raster-scan)slice 模式,另一类是矩形 slice 模式。扫描顺序 slice 模式与H.265/ HEVC 一致,一个 slice 可以包含一个或多个按照图像扫描模式顺序划分的 tile。矩形 slice 模式中,一个 slice 可以包含由图像矩形区域组成的多个 brick。
图 10 左图中一幅图像被水平和垂直划分为 12 个 tile,包含 3 个按照扫描顺序划分的 slice ;右图包含 4 个 tile,左上角的 tile 包含一个 brick,右上 tile 包含 5 个 brick,左下 tile 包含2 个 brick,右下 tile 包含 3 个 brick,一共包含 4 个矩形 slice。
4.不同编码图像划分技术对比分析
随着图像划分技术的不断演进,划分结构从简单的宏块结构到复杂的四叉树、二叉树、三叉树递归结构,亮度和色度从一致的划分结构发展为可分离划分,块组织结构从简单的 slice 扩充到 tile、brick 等新结构,编码、预测、变换块的大小和划分形状也更加丰富和灵活,不同编码标准对应的图像划分技术对比见表 1 所示
表1 图像划分技术对比 |
|||
编码标准图像划分 |
H.264/AVC |
H.265/HEVC |
H.266/VVC |
划分结构 |
宏块和子宏块 |
四叉树递归(CU/PU/TU 结构 ) |
四叉树和嵌套多类型树递归 |
亮度色度划分一致性 |
一致 |
一致 |
I 帧亮度色度可分离划分 |
块组织方式 |
扫描顺序slice |
扫描顺序slice、 slice 片段、tile |
扫描顺序slice、 slice 片段、矩形 slice、tile、brick |
最大亮度编码块尺寸 |
16×16 |
64×64 |
128×128 |
最小亮度编码块尺寸 |
4×4 |
8×8 |
4×4 |
最大亮度预测块尺寸 |
16×16 |
64×64 |
128×128 |
最小亮度预测块尺寸 |
4×4 |
4×4 |
4×4 |
最大亮度变换块尺寸 |
8×8 |
32×32 |
64×64 |
最小亮度变换块尺寸 |
4×4 |
4×4 |
4×4 |
帧内预测块划分形状 |
方形 |
方形 |
方形 + 非方形 |
帧间预测块划分形状 |
对称 |
对称 + 单层非对称 |
对称 + 多层非对称 |
5.总结
随着 4K、8K 超高清等视频应用的出现,视频数据量爆发式增长,对编码技术提出了更高的需求。作为混合编码技术框架的基础,图像划分从单一、固定划分不断朝着多样、灵活的划分结构发展,能够更加高效的适配高分辨率图像的编解码处理。此外,新的图像划分采用了更加丰富的图像组织结构,有利于抗误码和并行处理的实现。但复杂的划分一般也会导致复杂度的显著提升,对编解码实现提出了更高的挑战,因此需要针对实际应用场‰对图像划分做一定的限制和优化,寻求编码性能和编码复杂度之间的平衡。
(若有侵权,立即删除!!!)