大家好,我是林译川,今天我们来聊聊VVC编码中图像的划分和处理。VVC,也就是Versatile Video Coding,是一种新的视频编码标准,它比HEVC更加高效。那么,它是如何将一帧图像划分成不同的单元,并进行编码的呢?让我们一起来看看。
一、CTU的划分
首先,VVC将一帧图像划分成许多编码树单元(CTU)。CTU的概念与HEVC的相同,它由一个N×N的亮度样本块和两个相应的色度样本块组成。为了适应4k、8k等视频编码的需要,CTU中的亮度块的最大允许尺寸被指定为128×128。
二、图像的进一步划分
一帧图像可以分为一个或多个tile行和一个或多个tile列。Tile是CTU的一个序列,覆盖了图像的一个矩形区域。slice由整数个完整的tiles或图像的tile内连续完整的CTU行组成。subpictures包含一个或多个slices,这些slices共同覆盖图片的矩形区域。
三、CTU的划分细节
在VVC中,CTU首先进行四叉树划分,然后利用多类型树结构进一步划分四叉树的叶节点。这种多类型树结构有四种分裂类型:垂直二叉划分、水平二叉划分、垂直三叉划分和水平三叉划分。多类型树的叶节点被称为编码单元(CUs),并且除非CU大于最大变换块尺寸,否则该划分直接用于预测和变换处理而不进行任何进一步划分。
四、图像边界的CU划分
当树节点块的一部分超过底部或右侧图片边界时,树节点块被强制划分,直到每个编码CU的所有样本都位于图片边界内。VVC中应用了以下划分规则:
- 如果树节点块的任何部分超出图片底部或右侧边界,则不允许TT拆分。
- 如果树节点块的任何部分超出图片底部或右侧边界,并且由于块大小限制而不允许任何QT和BT划分,则强制使用QT划分模式划分该块。
- 否则,如果树节点块的一部分超出底部和右侧图片边界,根据不同情况,可能需要使用QT、BT或SPLIT_BT_HOR模式划分块。
五、VPDUs
虚拟管道数据单元(VPDUs)被定义为图像中不重叠的单元。在硬件解码器中,连续的vpdu由多个流水线级同时处理。在VVC中,三叉树和二叉树的划分会导致VPDU大小的增加。为了使VPDU的大小保持为64x64亮度块的大小,在VTM中应用了以下规范的分区限制。
六、帧内色度划分和预测限制
在VVC中,为了提高最坏情况下的吞吐量,通过限制帧内色度CB的划分来禁止小于16个像素的色度帧内CB和宽度小于4个色度像素的色度帧内CB。
好了,今天我们就聊到这里。如果你对VVC编码还有其他疑问,欢迎在评论区留言。我是林译川,我们下期再见!
—— 来自「新派编程网」(www.xjpbg.com)的林译川
