(一)
(1) 编码树单元(CTU)和编码树块(CTB)结构:
在之前的标准中,编码层的核心是宏块,一个宏块包含一个16×16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8×8的色度块;而在HEVC中类似的结构为编码树单元(CTU),其尺寸由编码器进行指定且可以比传统的宏块大。一个CTU包含一个亮度CTB和两个对应的色度CTB及句法元素。一个L×L的亮度CTB的L可以设置为16,32或者64。一般来说,L越大,可以获得越好的压缩性能。HEVC支持使用树结构和类四叉树的标志来将CTB划分成更小的块。
(2) 编码单元(CU)和编码块(CB):
CTU的四叉树句法指定了它所属的亮度和色度CB的尺寸和位置。四叉树的根与CTU相关联。因此,亮度CB的最大尺寸为其所属的亮度CTB的尺寸。对于一个CTU来说,其亮度CB和色度CB的划分标志都是使用的同一个。一个亮度CB通常和两个色度CB及它们相关的句法共同组成一个编码单元(CU)。一个CTB可能只包含一个CU,也可能被划分成多个CU,每个CU包含着与之相关联的预测单元(PU)和变换单元(TU)。
(3) 预测单元(PU)和预测块(PB):
决定一个图像区域是以帧间还是帧内方式进行预测是在CU层进行的。一个PU划分结构的根在CU层。根据基本的预测类型,亮度CB和色度CB可以继续进行划分并利用其它的亮度PB和色度PB进行预测。HEVC支持多种PB尺寸,最大为64×64到最小4×4。
(4) 变换单元(TU)和变换块(TB):
预测残差以块变换的方式进行编码。一个变换单元树结构的根在CU层。亮度CB残差的尺寸可能与亮度变换块TB的尺寸相等,也可能会被划分成更小的亮度TB。色度CB的情况也是一样的。定义了与离散余弦变换(DCT)类似的整数变换的基本函数提供给尺寸为4×4,8×8,16×16,32×32的TB。对于尺寸为4×4且残差由帧内预测得到的TB来说,一种以离散正弦变换(DST)为基础的整数变换可供采用。
(二)!!!
HEVC中的图像的分块分割方法
1、条带与区块
在HEVC的视频编解码过程中,一帧图像会被分割成条带(slice),条带片段(slice segment)和区块(tiles)进行处理。条带和区块都是可采取的独立分割形式之一。而条带则是由条带片段组成的元素,包括独立条带元素和依赖性条带元素两类。
上图即为一帧图像分割成条带的示意图。在该图中,该帧图像被分割成两个条带,其中第一个条带包含一个独立条带片段(包含4个树形编码单元CTU)和两个依赖条带片段;第二个条带包含一个独立条带片段。
区块是另一种区域分割方法,某个区块必须为矩形,由整数个CTU组成。对于条带和区块,或者所有同一个条带的CTU均属于一个区块(tiles),或者同属于一个区块的CTU均属于一个条带;类似的,或者同属于一个条带片段的CTU需属于一个区块,或者同属于一个区块的CTU必须属于同一个条带片段。下图是某一帧分割成左右两个区块的示例图,分别表示整帧图像仅包含一个条带,以及每个区块分别包含多个条带的情况。
2、块与四叉树结构
树形编码块(Coding Tree Blocks, CTBs)是一帧中像素组织的基本结构。亮度CTB的边长、色度CTB的长和宽分别由参数CtbSizeY、CtbWidthC和CtbHeightC指定。对于每个CTB,都有一个块分割标识,用来表示预测和变换编码块的大小。分割从根(CTB)开始,进行四叉树分割,直至到达叶子节点(CB)。而CB又是预测树(Prediction tree)和变换树(Transform tree)的根节点,这两个树分别表示预测块和变换块的位置大小。
像素块和相应语法元素的封装格式可能有如下情况:
(1)三个预测块(亮度和色度)或者单一一个预测块(单色图像或separate_colour_plane_flag为1,也就是三个分量当做三个独立图像分别编码),与相应的语法结构组成一个预测单元Prediction unit(PU);
(2)一个或三个变换快(情况与以上类似),与相应的语法结构组成一个变换单元Transform unit(TU);
(3)一个或三个编码块CB,与相应的语法元素组成为一个编码单元coding unit(CU);
(4)一个或三个树形编码块与相应的语法元素组成一个树形编码单元coding tree unit(CTU)
(三)HEVC的条带头解析