在HEVC中CU的大小包括:64x64、32x32、16x16、8x8。对于一个LCU(最大的CU64x64)可以向下深度为4的划分为子CU,深度为0代表LCU不划分(大小为64x64)、深度为1代表LCU向下四叉树划分一次(大小为32x32)、深度为2代表在32x32的子CU向下划分一次(大小为16x16)、深度为3代表16x16的子CU向下划分一次(大小为8x8)。然后在以下说明CU划分的递归流程。
1、首先编码器对LCU(64x64)进行编码,记录最优预测模式、RDcost以及其他编码信息,对应着深度为0的操作。
2、将LCU进行一次四叉树划分,得到深度为1的四个子CU(32x32)。然后循环编码四个子CU,记录最优预测模式、RDcost等一些编码信息。完成之后向下一深度递归划分。
3、在对深度为2的子CU(16x16)进行循环编码,同样记录最优预测模式、RDcost等一些编码信息。然后向下划分。
4、在最后深度为3的子CU(8x8)同样进行循环编码,记录最优预测模式、RDcost等一些编码信息。完成后不需要再向下划分。
以上工作完成了CU划分递归的“递”的工作,然后需要完成从底层子CU向上“归”的相应工作。
5、先比较四个8x8子CU的总RDcost与其上一层的16x16大小CU的RDcost,经比较决定16x16的CU是否向下划分成四个8x8的子CU。然后循环遍历比较其他8x8的子CU与相应的16x16大小CU的RDcost。
6、在完成所有8x8的子CU与相应16x16的CU比较后,然后对四个16x16子CU的总RDcost与其上一层的32x32大小的RDcost进行比较。通过比较决定32x32的CU是否向下划分成四个16x16的子CU.。同样历经比较所有的16x16的子CU与相应的32x32大小CU的RDcost。
7、接着就是对四个32x32的子CU的总RDcost与64x64的LCU的RDcost进行比较,得出LCU是否向下划分成四个32x32的子CU。
到此,就完成了CU划分的递归工作,编码器会根据实际情况来决定一个LCU的划分。下图就是CU的划分图: