VVC块划分

VVC和HEVC与AVC一样,都是基于块的混合编码框架,其编码流程也都类似。下图是VVC的编码架构。

VVC和HEVC的块划分有很多类似的地方,同时划分方式、形状、尺寸等又有很多不同。

1、slices,tiles和bricks划分

VVC里的slice和tile跟HEVC是一样的。

一帧图像被划分为一个或多个tile行和tile列,每个tile是一个矩形区域包含整数个CTU。

每个tile可以被划分为一个或多个brick,每个brick包含该tile里几个CTU行。一个tile如果没有被划分为多个brick,那该tile被看作是一整个brick。

一个slice包含一帧图像的多个tile,或包含一个tile内的多个brick。

VVC支持两种类型的slice, raster-scan slice mode和rectangular slice mode。raster-scan slice mode的slice包含帧内按扫描顺序排列的一系列tile。rectangular slice mode的slice包含一系列brick并形成矩形形状。

上图中图像被划分12个tile(3个 tile列,4个tile行)和3个raster-scan slice mode的slice。

上图中图像被划分为24个tile(6个 tile列,4个tile行)和9个rectangular slice mode的slice。

上图中图像被划分为4个tile(2个 tile列,2个tile行),11个brick(左上角1个,右上角5个,左下角2个,右下角3个),4个rectangular slice mode的slice。

2、CTU划分

在VVC中为了适应4k、8k等视频编码的需要将CTU的最大尺寸提高到128x128,最小尺寸还是4x4。

在HEVC中CTU会按四叉树划分方式被划分为CU,每个CU又可以划分为PU和TU。在VVC中将不在区分CU、PU和TU的概念。

VVC中除了四叉树划分方式外,还引进了多类型树(multi-type tree,MTT)概念,包括二叉树(binary tree,BT)和三叉树(ternary tree,TT)。一个CTU首先按四叉树方式进行一次划分,四叉树的每个叶子节点可以进一步按照多类型树方式进行划分,有4种多类型树划分方式水平二叉树划分(SPLIT_BT_HOR),垂直二叉树划分(SPLIT_BT_VER),水平三叉树划分(SPLIT_TT_HOR),垂直三叉树划分(SPLIT_TT_VER)。

下图是多类型树的几种划分模式。其中三叉树是按1:2:1的方式划分的。

下图是一个CTU划分实例,粗实线是四叉树划分边界,细实线是多类型树边界。

在VTM5中支持亮度和色度块使用不同的划分结构。目前,对于P和Bslice,同一个CTU的亮度和色度CTB划分结构相同,对于I slice同一个CTU的亮度和色度CTB可以按不同的结构进行划分。

3、图像边界处CU划分

当一个块超过图像的右边界或下边界时,该块会被强制进行进一步划分直到所有CU都在图像内部。下面是VTM5内的划分规则:

  • 如果一个块既超出了下边界也超出了右边界

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,则该块被强制进行四叉树划分

    • 否则该块被强制进行SPLIT_BT_HOR模式划分

  • 如果一个块只超出了下边界

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸大于最大的二叉树节点尺寸,该块被强制进行四叉树划分

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸小于等于最大的二叉树节点尺寸,该块被强制进行四叉树划分或SPLIT_BT_HOR模式划分

    • 否则(该块是一个二叉树节点或尺寸小于等于最小四叉树节点尺寸),该块被强制进行SPLIT_BT_HOR模式划分

  • 如果一个块只超出了右边界

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸大于最大的二叉树节点尺寸,该块被强制进行四叉树划分

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸小于等于最大的二叉树节点尺寸,该块被强制进行四叉树划分或SPLIT_BT_VER模式划分

    • 否则(该块是一个二叉树节点或尺寸小于等于最小四叉树节点尺寸),该块被强制进行SPLIT_BT_VER模式划分

4、CU冗余划分的限制

四叉树和多类型树相结合的划分方式使得VVC块划分更加灵活,但也可能造成不同划分方式相结合导致相同的划分结果,这种冗余的划分应该被禁止。

如下图,在同一个方向进行两次连续的二叉树划分,和先进行一次三叉树划分再在中间进行二叉树划分的结果相同。所以VVC禁止在三叉树中间部分进行同方向的二叉树划分。

5、Virtual pipeline data units (VPDUs)

VPDU是图像中不重叠的单元。在硬件解码器中,连续的VDPU要同时被多阶段流水线并行处理。VDPU要和该阶段的buffer size近似成比例时效率最高,所以要保持VDPU size比较小。在大部分硬件解码器中VDPU size被设置为最大的TB size。但是VVC内三叉树(TT)和二叉树(BT)划分模式可能导致VDPU size变大。

为了使VDPU size保持在64x64亮度块的大小,VTM5做了如下限制:

  • 如果CU的宽或高等于128,则不进行TT划分。

  • 对于128xN的CU,N<=164,不进行水平BT划分

  • 对于Nx128的CU,N<=164,不进行垂直BT划分

下图是禁止划分的实例。

感兴趣的请关注微信公众号Video Coding

发布了87 篇原创文章 · 获赞 108 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/Dillon2015/article/details/103364336