VVC系列(二)编码结构和块划分准则

VVC的编码结构

同HEVC类似,VVC的编码结构从大到小,分别是 Slice、Tile、Brick、CTU和CU,但是CU的尺寸从128到4,因此VVC并不区分TU、PU和CU的概念。

VVC支持两类Slice,分别是 raster-scan slice mode 和 rectangular slice mode,分别如图所示(粗实线划分的灰色区域是一个Slice,细实线划分的矩形是一个Tile,虚线表示一个Brick)

在这里插入图片描述
在这里插入图片描述

其中只有raster-scan slice 可能不是矩形,Tile和Brick也不一定都是正方形。

VVC 块划分准则

多类型树(Multi-type tree,MTT),包括 二叉树(binary tree,BT)和 三叉树(ternary tree,TT)和四叉树(QT)。

一个CTU首先按四叉树方式进行一次划分(128→64),四叉树的每个叶子节点可以进一步按照多类型树方式进行划分,有4种多类型树划分方式水平二叉树划分(SPLIT_BT_HOR),垂直二叉树划分(SPLIT_BT_VER),水平三叉树划分(SPLIT_TT_HOR),垂直三叉树划分(SPLIT_TT_VER)。

三叉树划分是按照1:2:1的比例划分的

在这里插入图片描述

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

但是,因为考虑到色度信号的亚采样,色度信号在单独划分时禁止出现2×2、2×4和4×2的尺寸。

VVC针对边界处CU划分的处理

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

  • 如果一个块的一部分超过了下边界或者右边界,但是因为块尺寸的限制,不能进行任何三叉树、二叉树和四叉树划分,此时进行四叉树划分

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

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,则该块被强制进行四叉树划分
    • 否则该块被强制进行SPLIT_BT_HOR模式划分
  • 如果一个块只超出了下边界

    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸大于最大的二叉树节点尺寸,该块被强制进行四叉树划分
    • 如果该块是一个四叉树节点且尺寸大于最小四叉树节点尺寸,且该块尺寸小于等于最大的二叉树节点尺寸,该块被强制进行四叉树划分或SPLIT_BT_HOR模式划分
    • 否则(该块是一个二叉树节点或尺寸小于等于最小四叉树节点尺寸),该块被强制进行SPLIT_BT_HOR模式划分
  • 如果一个块只超出了右边界

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

总结:1)判断该块是否是四叉树节点很重要,决定了是否要尝试QT划分,如果不是QT节点,后续都进行MTT划分,2)四叉树节点存在最小尺寸,二叉树节点存在最大尺寸 3)边界情况不涉及TT划分 4)边界处的CTU有可能划分深度大于MaxMttDepth(在SPS参数层定义,默认等于3)

VVC针对CU冗余划分的限制

VVC禁止在三叉树划分的中间部分进行同方向的二叉树划分,因为这和在该方向进行两次连续的二叉树划分效果相同。
在这里插入图片描述

VVC从硬件效率的角度对CU Size的限制

VPDU(Virtual Pipeline data units)是图像中不重叠的单元,在硬件解码器中,连续的VPDU要同时被多阶段流水线并行处理,而只有当VPDU size和buffer size的尺寸相同的时候,硬件效率最高。

在大部分硬件解码器中VPDUsize被设置为最大的TB size (64)。但是VVC内三叉树(TT)和二叉树(BT)划分模式可能导致VPDU size变大。

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

  • 如果CU的宽或高等于128,则不进行TT划分
  • 对于128xN的CU,N<=164,不进行水平BT划分
  • 对于Nx128的CU,N<=164,不进行垂直BT划分

在这里插入图片描述

以上都是不允许的划分模式。总结一下,只要宽或高大于128,就不能使用TT划分;如果是128×128的CTU经过BT划分后,则不能在同方向再使用BT划分。

总结一下,只要宽或高大于128,就不能使用TT划分;如果是128×128的CTU经过BT划分后,则不能在同方向再使用BT划分。

相关语法元素

VVC通过四个划分标识控制划分类型,分别是split_cu_flag(是否划分)、split_qt_flag(是否划分成四叉树)、mtt_split_cu_binary_flag(是否是二叉树划分)和mtt_split_cu_vertical_flag(是否是竖直MTT划分),后两者共同决定了MTT划分类型,如下表所示

mtt_split_cu_binary_flagmtt_split_cu_vertical_flag
水平三叉树划分00
水平二叉树划分01
竖直三叉树划分10
数值二叉树划分11

在SPS参数集中,对CU的MTT划分进行了限制,包括QT划分的最小允许尺寸、MTT划分的最大允许尺寸、从QT Leaf Node开始的MTT划分最大深度MaxMttDepth

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值