编码树单元(英语:Coding Tree Unit,缩写:CTU)是H.265/高效率视讯编码(High Efficiency Video Coding, HEVC)的处理单元。此处理单元类似H.264/高阶视讯编码(Advanced Video Coding, AVC)中的宏区块(Macroblock)。编码树单元的大小可以从16x16到64x64,使用比H.264更大的处理单元得到更好的压缩效果。
输入影像进行编码前会先切割成相等大小的编码树单元再输入编码器进行编码,接着详细介绍编码树单元的相关概念。首先解释单元(Unit)与区块(Block),区块是真正储存资料的地方,许多区块加上语法元素组成一个单元。输入影像采用YUV的格式,所以一个编码树单元是由一个亮度(Luma)编码树区块(Coding Tree Block,CTB)、两个色度(Chroma)编码树区块及语法元素(Syntax Element)。由于输入影像采用4:2:0的取样方式,因此亮度编码树区块的大小为色度编码树区块的四倍,如图一所示。编码树单元与AVC的宏区块最大的不同之为编码树单元可以变得更大且大小可以调整,而宏区块的大小固定为16。HEVC的编码树单元支援更大的大小可以让编码器对高分辨率的影像编码时更有效率。编码树单元的大小定义在序列参数集(Sequence Parameter Set, SPS)内,高效率视讯编码内支援的大小为LxL,其中L=16、32或64。除了编码树单元,高效率视讯编码(HEVC)中还有另外三种单元分别为编码单元(Coding Unit, CU)、预测单元(Prediction Unit, PU)及转换单元(Transform Unit, TU)。下面小节将详细介绍另外三种单元以及所有单元间的关系。
编码树单元(CTU)可以包含有一个编码单元(Coding Unit, CU)或是切割成多个较小的编码单元,如图二(左)所示。高效率视讯编码利用编码单元指出这个单元是利用画面内预测(Intra Prediction)或是画面间预测(Inter Prediction)。这些编码单元可以很方便地利用四分树(Quadtree)的方式呈现,如图二(右)所示。四分树是一种递回结构,四分数上的数字表示这个节点是否继续做分割,若此节点会继续分割则为1,若不继续分割则为0。由图二可看出节点上的数字为0时,此节点为编码单元。换句话说,在编码树内叶子节点(Leaf Node)为编码单元。编码树的顺序如图三左的虚线所示,在编码单元上采用Z-scan的方式,对编码树来说即为深度优先遍历 (页面存档备份,存于互联网档案馆)。编码单元的大小支援2Nx2N,其中N=4、8、16或32,因此高效率视讯编码(HEVC)的四分树最高深度(Depth)为4。
下面为编码单元的简单语法:
coding-tree(x0, y0, log2CbSize, cbDepth){ split-coding-unit-flag if(split-coding-unit-flag){ coding-tree(x0, y0, log2CbSize -1, cbDepth + 1); coding-tree(x1, y0, log2CbSize -1, cbDepth + 1); coding-tree(x0, y1, log2CbSize -1, cbDepth + 1); coding-tree(x1, y1, log2CbSize -1, cbDepth + 1); } else { coding-unit(x0,y0, log2CbSize); }}