将一帧图像划分成CTUs
VVC中一个视频帧被划分成许多CTU。CTU的概念和HEVC中相同。对于一个三通道的图像帧,一个CTU包含N×N个亮度样点及对应的两个色度样点块。即每个CTU的大小都相同。如下图所示:
VVC中亮度分量最大的CTU大小是128×128(HEVC是64×64)。需要注意VVC中最大的亮度变换块大小是64×64。
CTU的划分
在HEVC中,一个CTU通过四叉树结构划分成许多子CU,也被称为编码树(coding tree),这么做是为了针对不同的空间特性编码方式(帧内或帧间)能够做出调整。在子CU级决定是采用帧内编码(利用空间相关性)还是帧间编码(利用时间相关性)。
每个子CU可以被进一步划分成一个、两个或四个PU,取决于PU的划分类型。在一个PU内部的样点采用相同的预测方式,相关的预测结果也以PU为单位传输到解码端。在经过对PU的预测并得到残差信息后,一个子CU可以再被划分成若干个TU,这也是通过四叉树划分完成的。HEVC很关键的一个特性就是有多种划分概念:CU、PU和TU。
在VVC中没有了CU,PU和TU的概念,统一采用编码单元(coding unit,CU)的概念。除非是当前的编码块尺寸大于VVC所支持的最大变换的长度(也就是说这种情况下会对CU划分成TU)。同时采用内嵌多类型树的四叉树结构对CTU划分,支持更多形状的CU(除了方形还有矩形)。
CTU首先会进行四叉树划分,接着可以进一步使用多类型树划分(二叉、三叉)。多类型树结构共包含四种划分方式(见下图):竖直二叉划分(SPLIT_BT_VER),水平二叉划分(SPLIT_BT_HOR),竖直三叉划分(SPLIT_TT_VER),水平三叉划分(SPLIT_TT_HOR)。划分的子节点被称为CU。除非CU的尺寸大于最大变换所允许的长度,否则CU不会在预测和变换时被进一步划分成PU和TU