H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别

关于H.265/HEVC和H.266/VVC中的块划分的区别:

一、HEVC中首先需要将一个图像固定划分为多个CTU。

① CTU的尺寸固定划分为64×64,一个CTU由一个亮度CTB和两个色度CTB,再加上相应的语法元素组成。
② CTU可以通过四叉树的方式向下划分为一个个小的CU,一个CU由一个亮度CB和两个色度CB再加上相应的语法元素组成。
③ CTU划分的CU最大尺寸是64×64(即整个CTU可独立作为一个CU),最小尺寸为8×8,CTU最多划分3层,通过划分深度就能确定CU块的大小了。每个CU都是正方形的。
④ CTU根据图像的纹理特征划分为CU后,需要对CU进一步划分为PUTU进行预测和变换,一个PU由一个亮度PB和两个色度PB再加上相应的语法元素组成。
⑤CU划分为PU时有8种固定划分方式(类“四叉树”、“二叉树”),划分的PU最大尺寸是CU的大小,最小尺寸是CU的1/4,从CU到PU的划分最多允许1层。
⑤TU和PU类似,也是在CU基础上划分的,但是TU和PU的划分是独立的,CU划分为TU的方式和CTU划分为CU的方式是一样的,只有四叉树一种,CU四叉树划分成的TU会形成一个残差四叉树,因此CU和TU一样都是方形的。TU最大尺寸为64x64,最小为4x4,但是由于DCT变换运算的最大尺寸为32x32,所以64x64的TU隐含着必须进一步划分成4个32x32的TU。

这里:
亮度CTB大小是:64×64
色度CTB大小是:32×32;

亮度CB大小是:8×8~64×64
色度CB大小是:4×4~32×32

亮度PB的大小是4×4~64×64;
色度PB的大小是2×2~32×32;

亮度TU的大小:4×4~ 64×64(实际是4×4~32×32)
色度TU的大小:2×2~ 32×32(实际是4×4~16×16)
CTU、CU、TU都是方形块,比较单一

二、HEVC到VVC的过度版本JEM

我们需要提前知道的是,在JEM中取消了CU、PU、TU的概念,即CTU划分为CU后不再进行PU和TU的划分,直接对CU进行预测,然后接着进行变换量化!!CU=PU=TU。

VVC打破了HEVC中的划分结构,引入了四叉树+二叉树划分(BT),称之为混合树编码结(MTT),更加灵活。因此,在该QTBT划分结构中,最终划分的CU既有方形块又有矩形块。

VVC中提出亮度块和色度块独立划分,色度不再继承亮度的划分情况。对于P和B Slice,亮度和色度使用同一QTBT结构划分,亮度和色度三个分量属于同一CU;对于I Slice,亮度和色度会使用不同的QTBT结构划分,因此亮度分量和色度分量属于不同的CU中,一个CU包含一个亮度分量或两个色度分量。

JEM中也是需要先将图像固定的划分为多个CTU,以CTU为基本单元进行预测编码。

① CTU的尺寸固定划分为128×128,一个CTU由一个亮度CTB和两个色度CTB,再加上相应的语法元素组成。
②CTU到CU的划分,一个CU由一个亮度CB和两个色度CB再加上相应的语法元素组成:
(1)树形编码块(CTB)根节点先进行四叉树划分
(2)然后在四叉树的叶子节点上再进行二叉树划分。二叉树有两种划分方式:水平对称划分和垂直对称划分。二叉树的叶子节点就是最终的编码单元CU,不用再进一步分割,可以直接用来预测和变换,这就意味着CU、PU和TU在新的编码结构中有相同的块尺寸。
(3)如下图是一个QTBT结构示例,实现表示四叉树划分,虚线表示二叉树划分,而二叉树的每一次划分中用flag来标识划分方式:0为水平划分,1为垂直划分。而四叉树是不用标识的,它总是进行四等分划分。

H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别_第1张图片
③关于QTBT的重要参数:
-CTU Size(CTU所允许的最大尺寸):四叉树根节点尺寸,和HEVC中概念相同。
-MinQTSize:允许的最小四叉树叶子节点尺寸,即四叉树划分后的最小块尺寸。
-MaxBTSize:允许的最大二叉树根节点尺寸,即四叉树划分的叶子节点的最大尺寸,此时二叉树划分深度为0。
-MaxBTDepth:允许的最大二叉树深度。
-MinBTSize:允许的最小二叉树叶子节点尺寸。

例如,在一个QTBT结构中,CTU Size被设置为128x128,MinQTSize设置为16x16,MaxBTSize设置为64x64,MinBTSize(对应宽度和高度)设置为4,MaxBTDepth设置为4。

首先四叉树分割应用于CTU来生成四叉树的叶子节点。四叉树叶子节点可以为16x16(MinQTSize)到128x128(CTU Size)。如果叶子四叉树节点为128x128,大于MaxBTSize,不能进行二叉树划分。当四叉树节点小于等于64x64时,可以进行二叉树划分,四叉树叶子节点也就是二叉树的根节点,它的二叉树深度为0,直到出现以下三种情况,停止二叉树划分:

(1)当二叉树深度到达MaxBTDepth(这里为4)。(2)当二叉树节点的宽度等于MinBTSize(这里为4)。(3)当二叉树节点高度等于MinBTSize

划分的最后:二叉树的叶子节点被称为CU无需进一步分化可进行预测和变换进一步处理,也就没有了CU、PU和TU的划分。

JEM中默认参数如下:
H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别_第2张图片
这里:
亮度CTB大小是:128×128
色度CTB大小是:64×64;

亮度CB大小是:4×4~64×64(但在代码中实际还是会把128×128的块强制划分为64×64)
色度CB大小是:2×2~32×32

三、如今日渐成熟的VVC----VTM

现在的VVC使用的MTT中新加入了三叉树划分

QT+MTT结构中的四叉树划分与HM相同,二叉树/三叉树划分结构示意图如下,就是在JEM的QT+BT基础上增加了三叉树划分,使得划分变得更加灵活。划分后的CU可以为正方形或矩形。
H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别_第3张图片
①在CTU进行划分时,不限定父块的形状,也就是说矩形也可以继续划分二叉树或三叉树。当然也会限制一些划分情况,防止出现多余的划分,比如:
a.当水平BT划分的第一个子CU进一步垂直BT划分时,第二个子CU中的垂直BT划分被禁用,防止划分成四叉树。

b.当垂直BT划分的第一个子CU进一步水平BT划分并且当QT划分可用时时,第二个子CU中的水平BT划分被禁用,防止划分成四叉树。

c…水平TT划分的第二个子CU中的水平BT划分被禁用,防止与两个二叉树划分重合。

d.垂直TT划分的第二个子CU中垂直BT划分被禁用,防止与两个二叉树划分重合。

e.垂直BT划分的第一个子CU进一步水平TT划分时,第二个子CU中的水平TT划分被禁用,防止与二叉树和三叉树划分重合;

f.水平BT划分的第一个子CU进一步垂直TT划分时,第二个子CU中的垂直TT划分被禁用,防止与二叉树和三叉树划分重合。

②划分的步骤如下所示:
首先进行QT划分,当QT划分结束后,会进行MTT(BT+TT)划分。
需要注意的两点是:
1.MTT划分得到的CU不会在进行QT。
2.MTT划分中,BT划分得到的CU可以继续进行TT,TT得到的CU也可以进行BT。

H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别_第4张图片
这里:
亮度CTB大小是:128×128
色度CTB大小是:64×64;

亮度CB大小是:4×4~64×64(但在代码中实际还是会把128×128的块强制划分为64×64)
色度CB大小是:4×4~32×32

在最新的VTM5.0的版本中,将2×2,2×4,4×2色度块给禁用了,因此色度块的最小尺寸是4×4

你可能感兴趣的:(H.266/VVC,视频编码,音视频开发)