CTU划分划分和树结构
H.266/VVC 标准中编码数单元CTU的大小为128x128。
H.266/VVC提出了四叉树和嵌套多类型树(MTT,Multi-Type Tree)划分,MTT包括二叉树(BT, Binary Tree)和三叉树(TT, Ternary Tree),统一了H.265/HEVC 中 CU、PU、TU的概念,并且支持更灵活的CU划分形状。CTU 按照四叉树结构进行划分,叶子节点通过 MTT 进一步划分,划分类型一共有4 种:垂直二划分(SPLIT_BT_VER)、水平二划分(SPLIT_BT_HOR)、 垂 直 1:2:1 三 划(SPLIT_TT_VER)和水平 1:2:1 三划分(SPLIT_TT_HOR)。多类型树叶子节点成为编码单元CU,当CU不大于最大变换单元(64x64)时,后续预测和变换不会再进一步划分。所以大部分情况下,CU、PU、TU 都具有相同的大小。
在编码过程中,需要对图像划分信息进行标识,以便解码端可以正确解码,上图列出了具体的划分标识方法。CTU 为四叉树的根节点,qt_split_cu_flag 标识是否采用四叉树结构划分。四叉树的叶子节点进一步采用 MTT 结构划分,mtt_split_cu_flag 用来标识是否采用 MTT划分,如果采用,mtt_split_cu_vertical_flag 用来标识 MTT 划分方向,“1”代表垂直划分,“0”代表水平划分,再用 mtt_split_cu_binary_flag 标识采用二分还是三分,最终确定该CTU的划分。
虚拟流水线数据单元
在硬件实现中,一般采用流水线数据处理方式,以确保高效性。将图像中非重叠的单元定义为虚拟流水线数据单元(VPDU,Virtual Pipeline Data Units),这些单元在同一时刻相互独立,因此可以实现流水数据处理。VPDU大小与现在大多数流水线缓冲区大小密切相关,考虑到具体实现的限制,VPDU设置为最大变换单元大小 64×64。但 H.266/VVC 中采用的 TT
和 BT 划分可能会导致VPDU尺寸变大,因此在H.266/VVC参考软件平台VTM6.0 中对图像划分做了以下限制:
- CU 的长和宽任意一项为 128 时,TT 禁用;
- CU 宽为 128,高小于 128 时,BT 禁用;
- CU 高为 128,宽小于 128 时,BT 禁用。
上图中给出了 VTM6 中对划分的限制示例,CU 的宽和高均为 128,分成 4 个 64×64 的 VPDU,按照划分限制要求,图中红线为禁用的划分。
所以对128×128的块: - 水平BT,然后对所得的其中一个块垂直BT;
- 垂直BT,然后对所得的其中一个块水平BT;
- QT
CU划分:https://blog.csdn.net/Dillon2015/article/details/103364336