一 树形编码块
传统的视频编码都是基于宏块实现的,对于4:2:0采样格式的视频,一个宏块包含一个16x16大小的亮度块和两个8x8大小的色度块,考虑到高清视频/超高清视频的自身特性,H.265/HEVC标准中引入了树形编码单元CTU,其尺寸由编码器指定,而且大于宏块尺寸。同一位置处的一个亮度CTB和两个色度CTB,再加上相应的语法元素形成一个CTU。对于一个大小为LxL的亮度CTB,L的取值可以是16,32或者64.在高分辨率视频的编码中,使用较大的CTB可以获得更好的压缩性能。
为了灵活,高效的表示视频场景中不同的纹理细节,运动变化的视频内容或者视频对象。H265/HEVC为图像划分定义了一套全新的语法单元,包括编码单元CU,预测单元Prediction Unit和变换单元TU,其中编码单元是进行预测,变换,量化的熵编码等处理的基本单元,预测单元是进行帧内/帧间预测的基本单元。变换单元是进行变换和量化的基本单元,这三个单元的分离,不仅仅使得变换,预测和编码各个处理环节更加灵活,也使得各个环节的划分更加符合视频图像的纹理特征,保证编码性能的最优化。
二 编码单元
近年来标清和高清视频产业得到了蓬勃发展,大尺寸图像的一个特点就是平坦区域的面积更大,用较大的块进行编码能够极大的提升编码效率。在H264/AVC中,编码块Coding block的大小是固定的,而在H265/HEVC中,一个CTB可以直接作为一个CB,也可以进一步以四叉树的形式划分为多个小的CB,所以H265 /HEVC中CB的大小是可变的,亮度CB最大为64x64,最小为8x8, 一方面大的CB可以使得平缓区域的编码效率大大提高,另一方面小的CB能很好的处理图像局部的细节,从而可以使复杂图像的预测更加准确,一个亮度CB和相应的速度CB以及它们的相关的句法元素共同组成一个编码单元CU,在H265/HEVC中,一幅图像可以被划分为若干个不重叠的CTU,在CTU内部,采用基本四叉树的循环分层结构,同一层次上的编码单元具有相同的分割深度,一个CTU可能只包干一个CU,也可能呗划分为多个CU,图3.7是一幅图像划分为CTU以及一个CTU划分为CU示意图。
CTU0 | CTU1 | CTU2 | CTU3 | CTU4 | CTU5 |
CTU6 | CTU7 | CTU8 | CTU9 | CTU10 | CTU11 |
CTU12 | CTU13 | CTU14 | CTU15 | CTU16 | CTU17 |
编码单元是否继续划分取决于分割标志位Split flag。对于编码单元CU,假设它的大小位2Nx2N,深度位d,如果它对应的Split flag值位0, 则CUd不再进行四叉树划分,反之,CUd将会被划分为4个独立的编码单元CUd+1。编码单元CUd + 1的深度和大小分别为d + 1和NxN.图示方法与H264 AVC中的宏块划分方法相比有以下优点。
(1)编码单元的大小可以大雨传统的宏块大小,对于平坦区域,用一个较大的编码单元可以减少所用的比特数,提高编码效率。这一点在高清视频领域体现尤为明显。
(2)通过河里的选择CTU大小和最大层次深度,编码器的编码结构可以根据不同的图片内容,图片大小以及应用需求获得较大成都的优化。
(3)所有单元类型都统统叫做编码单元,消除了宏块与亚宏块之分,并且编码单元的结构可以根据CTU大小,最大编码深度以及一系列划分标志SplitFlag简单的表示出来。