H.266/VVC技术描述_1-块划分

1、 CTU划分

  与HEVC类似,视频帧首先被划分为CTU(Coding Tree Units),包括一个亮度块和两个色度块。CTU的亮度块最大允许128x128(最大的亮度变换块是64x64)。
H.266/VVC技术描述_1-块划分_第1张图片

图1 CTU划分示例

2、 划分为slices, tiles, bricks

  一帧图片可以划分为多个tile。tile是一个矩形区域,包含一组CTU。一个tile可以划分为多个brick,每个brick包含一些CTU行,也就是说tile分割为brick只能水平分割。
  一个slice含有一帧图片中的多个tile或者一个tile中的多个brick。slice有两种模式,光栅扫描模式和矩形模式。对于光栅扫描模式,一个slice含有多个按照光栅扫描顺序排列的tile。对于矩形模式,slice为一个矩形区域,包含多个brick。
H.266/VVC技术描述_1-块划分_第2张图片

图2 slices光栅扫描模式

H.266/VVC技术描述_1-块划分_第3张图片

图3 slices矩形模式

H.266/VVC技术描述_1-块划分_第4张图片

图4 slices矩形模式与bricks

3、 CU划分

参考:https://blog.csdn.net/huster1446/article/details/87907480

  在HEVC中,一个CTU通过四叉树结构划分成许多子CU,也被称为编码树(coding tree),这么做是为了针对不同的空间特性编码方式(帧内或帧间)能够做出调整。在子CU级决定是采用帧内编码(利用空间相关性)还是帧间编码(利用时间相关性)。
  每个子CU可以被进一步划分成一个、两个或四个PU,取决于PU的划分类型。在一个PU内部的样点采用相同的预测方式,相关的预测结果也以PU为单位传输到解码端。在经过对PU的预测并得到残差信息后,一个子CU可以再被划分成若干个TU,这也是通过四叉树划分完成的。HEVC很关键的一个特性就是有多种划分概念:CU、PU和TU。
  在VVC中没有了CU,PU和TU的概念,统一采用编码单元(coding unit,CU)的概念,除非是当前的编码块尺寸大于VVC所支持的最大变换的长度(也就是说这种情况下会对CU划分成TU)。同时采用内嵌多类型树的四叉树结构对CTU划分,支持更多形状的CU(除了方形还有矩形)。
  CTU首先会进行四叉树划分,接着可以进一步使用多类型树划分(二叉、三叉)。多类型树结构共包含四种划分方式(见下图):竖直二叉划分(SPLIT_BT_VER),水平二叉划分(SPLIT_BT_HOR),竖直三叉划分(SPLIT_TT_VER),水平三叉划分(SPLIT_TT_HOR)。划分的子节点被称为CU。除非CU的尺寸大于最大变换所允许的长度,否则CU不会在预测和变换时被进一步划分成PU和TU。也就是说大多数情况下,CU、PU、TU的尺寸都一样。
H.266/VVC技术描述_1-块划分_第5张图片
  下图解释了内嵌多类型树的四叉树结构划分机制。CTU首先被当作四叉树的根节点并进行划分。每一个四叉树的子节点都可以进一步通过多类型树(MTT)划分。首先通过标志(mtt_split_cu_flag)来表示是否会进行MTT划分。如果进一步划分,则通过标志(mtt_split_cu_vertical_flag)来表示划分的方向,并通过标志(mtt_split_cu_binary_flag)来表示是二叉划分还是三叉划分。上述两个标志就能确定MTT的划分类型。划分机制示意图如下:
H.266/VVC技术描述_1-块划分_第6张图片

  内嵌MTT的四叉划分使得CU的形状更能适应图像的内容。CU的亮度分量尺寸最大可以和CTU尺寸相同,最小为4×4。如果是4:2:0的YUV序列,则色度分量的CB最大为64×64,最小为2×2。
  在VVC中,亮度分量所支持的最大变换尺寸为64×64,色度分量所支持的最大变换尺寸为32×32。如果一个CB的尺寸超过限制,那么该CB会自动进行水平或(和)垂直划分以满足对应方向上变换尺寸的要求。
  为了VVC硬件解码器上64×64的亮度块和32×32的色度块能够实现管道设计,当亮度块的宽或高大于64时禁止进行三叉树(TT)划分。当色度块的宽或高大于32时也是禁止进行TT划分的。
  在VTM3中,亮度分量和色度分量的块划分结构是可以不同的,VTM4中,对于P slices和B slices,同一CTU中的亮度CTB和色度CTB必须有相同的划分结构,而I slices中的亮度和色度分量是可以有着独立的划分结构的。
  当亮度和色度分量的划分结构不同时,亮度分量和色度分量使用两个编码树结构将CTB划分成CU。也就是说I slice中的CU可能仅包含一个亮度分量的CB,或者仅包含两个色度分量的CB。而P slice和 B slice中的CU始终会包含一个亮度分量的CB和两个色度分量的CB(对于三色彩分量的视频序列而言)。

4、 图片边界CU划分

  与HEVC相同,当划分块超过边界时,会进一步划分,划分规则为:
–如果既超出下边界又超出右边
   --如果是QT节点并且block size>MinQTSize ,QT模式划分
  --否则BT水平模式划分
–如果只超出下边界
   --如果是QT节点并且block size>MinQTSizeblock并且size>MaxBtSize,QT模式划分
  --如果是QT节点并且block size>MinQTSize&block size<=MaxBtSize,QT模式或者BT水平划分
  --其余,BT水平模式划分
–如果只超出右边界
   --如果是QT节点并且block size>MinQTSize并且block size>MaxBtSize,QT划分
   --如果是QT节点并且block size>MinQTSize并且block size<=MaxBtSize,QT划分或者BT垂直划分
  --其余,BT垂直划分

5、 多余CU划分限制

  MTT提供了相当灵活的划分结构,不同的划分方式可能导致相同的结果。因此VVC中一些多余的模式被限制。例如图5中,QT中间的块被禁止使用垂直BT模式,因为这与BT模式产生重复结果。
H.266/VVC技术描述_1-块划分_第7张图片

图5 BT和QT划分中多余的模式

6、 VPDUs

  VPDUs(Virtual pipeline data units)是图像中不重叠的单元,在硬件中使用同时使用流水线处理。VPDUs决定了流水线缓存大小,因此希望VPDUs尽量小。为了保持VPDUs为64x64,VVC中为BT和QT划分作出限制。
  –CU长或宽>=18,禁止QT模式
  –CU大小128xN且N<=64, 禁止水平BT模式
  –CU大小Nx128且N<=64, 禁止垂直BT模式

7、 帧内色度划分和预测限制

  VVC允许2x2, 4x2和2x4的chroma块,但是在硬件中处理帧内较小的块较为困难。
  HEVC中8x8的块可以划分为4x4的亮度块,但是对应的4x4的色度块不能划分为4x4的块,所以最差的情况下编码4x4的块。在VVC中,定义了最小色度预测单元smallest chroma intra prediction unit (SCIPU)。SCIPU一种编码树节点,它的色度块大于等于16个采样点并且含有至少一个小于64点的子亮度块。SCIPU中所有CB均为帧间或非帧间。
  对于非帧间SCIPU,亮度还可以继续划分,色度不再继续划分,这样实现了对2x2, 4x2和2x4的chroma块的移除。SCIPU判断为非帧间的条件是,当前slice为I-slice或者或者下一次划分中会出现4x4亮度块(因为VVC帧间模式不允许划分为4x4)。SCIPU的类型(帧间或非帧间)在解析CU时用一个flag表示。
  另外,为了避免帧的角点出现2x2/2x4/4x2帧内色度块,帧的宽和高会被认为是max (8, MinCbSizeY)的倍数。

你可能感兴趣的:(视频编码,图像压缩,H.266/VVC)