VVC/VTM的编码结构和块划分
本文参考了JVET-J1002:Algorithm description for Versatile Video Coding and Test Model 1 (VTM 1)
VVC的编码结构
VVC的编码结构和之前的标准相似,VVC有基于块的混合编码结构,包含了帧内、帧间的预测编码,以及变换编码和熵编码,下图展示了VVC编码的流程 。
VVC块划分
图像将被划分成一系列的CTUs(coding tree units),在这里的CTU的概念和HEVC中是一致的,其中最大尺寸的亮度块在CTU中的尺寸是128×128,而最大的亮度变换块尺寸是64×64,一个CTU划分的例子:
使用树形结构对CTUs进行划分
在HEVC中,编码树将会通过使用表示为编码树的四叉树结构将CTU分成CUs,以适应各种不同的局部特征。在叶子CU level使用帧间或帧内预测来决定是否对当前的图像区域进行编码。根据PU的划分类型每一个叶子CU可以进一步被划分成一个、两个或四个PUs。在一个PU内部,应用相同的预测过程,并且基于PU将相关信息发送到解码器。 在通过应用基于PU分裂类型的预测处理获得残余块之后,可以根据类似于CU的编码树的另一个四叉树结构将叶CU划分为变换单元(TU)。 HEVC结构的关键特征之一是它具有多个划分的概念,包括CU,PU和TU。
在VVC中,使用二叉树和三叉树的嵌套多类型树的四叉树分割结构取代了多个分区单元类型的概念,它消除了CU,PU和TU概念之间的鸿沟,除了对于最大变换长度尺寸太大的CU的需要,并且支持CU分区形状的更大灵活性。
首先,一个CTU被划分为四叉树结构,随后四叉树的叶子节点将被划分为多种类型的结构。如下图所示,有四种不同的划分类型:
vertical binary splitting(SPLIT_BT_VER)
horizontal binary splitting(SPLIT_BT_HOR)
vertical ternary splitting(SPLIT_TT_VER)
horizontal ternary splitting(SPLIT_TT_HOR)
多类型的树形结构的叶子节点被称作为编码单元(CUs),并且除非CU的大小对于最大的变换长度来说太大了,否则将不再进行划分,对当前的分割进行预测和变换操作。这就意味着,在大多数情况下,CU、PU、TU在多类型的四叉树编码结构中拥有相同的尺寸,例外是在当最大支持变换的长度小于CU颜色分量的宽或高时。在VTM(Versatile Test Model)中,一个CU包含了一个亮度分量CB和两个色度CBs分量(除非视频是单色的,仅仅拥有一个颜色分量)。
在下图中显示了具有嵌套多类型四叉树编码结构的划分信息的信号机制。一个CTU被看作是树的根节点,首次划分时使用的是四叉树划分。每一个四叉树编码结构(如果足够大的话)将被继续嵌套的多类型树形结构继续划分。在多类型的树形结构中,第一个标志位(mmt_split_cu_flag
)将被发送表明当前的节点是否需要继续划分,第二个标志(mmt_split_cu_vertical_flag
)发送以表明划分的方向,第三个标志位(mmt_split_cu_binary_flag
)被发送表明当前节点是被二分还是三分。基于mmt_split_cu_vertical_flag)
和mmt_split_cu_binary_flag
的值,在下表中导出了多类型树形结构的划分模式。
MttSplitMode | mtt_split_cu_vertical_flag | mtt_split_cu_binary_flag |
---|---|---|
SPLIT_TT_HOR | 0 | 0 |
SPLIT_BT_HOR | 0 | 1 |
SPLIT_TT_VER | 1 | 0 |
SPLIT_BT_VER | 1 | 1 |
在下图中展示了一个CTU使用嵌套的多类型树形编码结构划分为多个CUs,其中加粗的边表示的是四叉树划分,其他的表示的是多类型的树形划分。具有嵌套多类型树划分的四叉树提供由CU组成的内容自适应编码树结构。CU的大小可能和CTU一样大,也可能和4×4的亮度单元一样小,对于4:2:0的采样模式,最大的色度CB的大小为64×64,最小的色度CB的大小为2×2。
在VVC中,支持的最大的亮度TB大小是64×64,支持的最大的色度TB大小是32×32。当CB的宽或高大于小大的变换大小,CB将在水平和垂直方向被自动地划分,以达到TB尺寸的限制。
以下参数由具有嵌套多类型树编码树方案的四叉树的SPS语法元素定义和指定:
CTU size
:四叉树的根节点MinQTSize
:允许的最小的四叉树叶子节点的尺寸MaxBtSize
:允许的二叉树根节点的最大尺寸MaxTtSize
:允许的三叉树根节点的最大尺寸MaxMttDepth
:允许的从四叉树叶子中分割的多类型树的最大层次深度MinBtSize
:允许的最小二叉树叶子节点的尺寸MinTTSize
:允许的最小三叉树叶子节点的尺寸
[Ed. (JC): Currently, MaxTtSize is set sequal to MaxBtSize, and MinTtSize is set equal to MinBtSize]
下面举个例子:当采样格式为4:2:0的时,一个CTU的大小被设置为128×128的亮度分量和64×64的色度分量,MinQTSize
被设置为16×16,MaxBtSize
和MaxTtSize
都被设置为64×64,MinBtSize
和MinTtSize
(对于宽和高)被设置为4×4,MaxMttDepth
被设置为4。四叉树首先被被划分,生成四叉树的叶子节点,叶子节点的尺寸可能从16×16(MinQTSize
)到128×128(CTU
的尺寸)。如果叶子节点的大小是128×128,他将不会被划分为三叉树或者二叉树因为MaxBtSize
和MaxTtSize
的值是64×64。否则的话,四叉树的叶子节点能够更进一步地划分为多种类型的树。所以,此时的四叉树叶子节点同样作为多类型树的根节点,只是说其深度为(mmtDepth)0。当多类型树的深度达到了MaxMttDepth
的时候,将不会被考虑继续划分。当多类型树的节点的宽度和MaxBtSize
相等并且等于或小于2*MinTtSize
时,不考虑进一步的水平划分。相似地,若多类型树的节点的高度和MinBtSize
相等并且小于或等于2 * MinTtSize
的时候,不考虑进一步的垂直划分。
限制多余的CU划分
嵌套的多类型四叉编码树结构提供了灵活的块划分方式。由于编码划分的多种类型,有可能不同的划分模式最终会得到相同的编码块结构。所以在VVC中,一些这样多余的模式将被避免发生。
在下图种展示了四叉树分割和两级二叉树分割之间的重复分割模式。 如图所示,两级连续二叉树分割可以产生与四叉树分割相同的编码块结构。 为了在这种情况下移除冗余,当允许使用四叉树分割父CU时,通过语法阻止针对第二分区的二叉树分割。 另一方面,对于在父级别不允许四叉树分割的情况,仍然可以使用模拟四叉树分割的连续二叉树分割。 更具体地说,在以下两种情况下,允许两级连续二叉树分割:
- 如果四叉树叶子节点的块大小和
MinQTSize
相等,那么四叉树的划分将停止,并允许做进一步的多类型树划分 - 如果多类型树的节点深度
mmtDepth
大于0(指的是多类型树的非根节点),那么四叉树划分将不被允许
在下图示出了二叉树分裂和三元树分裂的冗余分裂模式。在一个方向上的两级连续二进制分裂可以具有与三元树分割相同的编码块结构,随后是中央分区的二叉树分割。 在这种情况下,通过语法防止三元树分割的中央分区的二叉树分割(在给定方向上)。 此限制适用于所有图片中的CU。
在下图中,当相同的多类型树分割模式应用二叉树分割和三元树分割的不同排序时,发生冗余。 在这种情况下,语法阻止了为第二个分区分割的相应三元树。 此限制适用于P帧和B帧的CU。
当如上所述禁止某些分割时,修改相应语法元素的信令以考虑禁止的情况。 例如,当识别出上图中的情况时(即,在某个方向上禁止对CU进行三元分割)时,不用信号通知指定分割是二进制分割还是三元分割的语法元素mtt_split_cu_binary_flag
,而是由解码器推断为等于1。
VVC/VTM的编码结构和块划分相关推荐
- H.266/VVC的编码结构和块划分
一.将一帧图像划分成CTUs VVC中一帧图像分成许多编码树单元(CTU).CTU的概念与HEVC的相同.对于一帧具有三通道的图像,CTU由一个N×N的亮度样本块和两个相应的色度样本块组成.图1显示了 ...
- VVC系列(二)编码结构和块划分准则
文章目录 VVC的编码结构 VVC 块划分准则 VVC针对边界处CU划分的处理 VVC针对CU冗余划分的限制 VVC从硬件效率的角度对CU Size的限制 相关语法元素 VVC的编码结构 同HEVC类 ...
- VVC中块划分的快速编码
新一代视频编码标准VVC中,灵活的分区是关键技术之一.与HEVC相比,仅分区就节省了8.5%的比特率.但是,增加的灵活性是以大量搜索空间扩展为代价的.本文概述了VVC中块划分的快速编码器选择策略,总共 ...
- 2105_TIP_DeepQTMT:一种VVC帧内编码块划分的深度学习方法
论文题目:Deep QTMT_一种VVC帧内编码块划分的深度学习方法 来源:2021,TIP,BUAA 概述 需要解决的问题:简化在VVC中占据了编码时间的97%以上的编码块划分过程 本文的贡献: 创 ...
- H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别
关于H.265/HEVC和H.266/VVC中的块划分的区别: 一.HEVC中首先需要将一个图像固定划分为多个CTU. ① CTU的尺寸固定划分为64×64,一个CTU由一个亮度CTB和两个色度CTB ...
- 【一】VVC理论知识之图像块划分
一.VVC中的CTU: H.266/VVC 中将每帧图像划分为一系列的 CTU,CTU 的概念和 HEVC 中一致.一帧图像通常分为 3 个采样阵列(一个亮度图像和两个色度图像),一个 CTU 也包含 ...
- icem网格划分如何给内部面网格_icem结构化网格划分 ICEM里面设置一下就可以自动划分网格,为什么要用块?...
ICEM里面设置一下就可以自动划分网格,为什么要用块? 块划分方法是结构化网格划分,相比于非结构化网格有较规则形状的网格质量可以做的很高,进行数值计算时也可以采用更高阶的格式(非结构化最高二阶精度). ...
- 视频编码中编码块划分
编码块划分 CTU划分 现在的视频编码都是基于块进行的,将一帧视频划分成不同的块,然后对每个块再分别进行编码处理.由于原始YUV格式视频有3个通道,一个亮度通道Y,两个色度通道UV,这里块的划分以亮度 ...
- VVC/VTM:帧间预测——Combined inter and intra prediction (CIIP)
Combined inter and intra prediction (CIIP) CIIP,顾名思义,就是说对编码块进行帧间预测Pred_inter和帧内预测Pred_intra,将两个预测块加权 ...
最新文章
- OpenGL球体的Phong渲染
- MyBatis缓存与Apache Ignite的陷阱
- python读取文件中的内容_python 读取文件夹中的文件内容
- 应用PIC16F1938中IIC读取LM75A温度
- 程序员春节回家装逼指南
- DPDK X710 DDP PPPoE 实践
- 鸿蒙电视rom,鸿蒙系统刷机包
- Spring Boot(04)自定义filter
- java基础-并发理论
- 手机副业哪个好?利用手机赚钱并不难
- 可爱猫咪,用 CSS 告诉你为何大橘为重!!
- 点击父组件按钮 显示子组件_按钮设计用户界面组件系列
- 《计算机图形学》实验报告区域填充扫描线算法
- 【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)
- Zain Iraq通过MATRIXX Software推出突破性数字品牌oodi
- 基于Python Django Mysql 开发的宠物用品商城
- caj转pdf——包含下载链接
- box-shadow使用
- 2D/3D文档查看器ABViewer v12大大提高了PDF转DWG的速度
- JAVA实现简单扫雷游戏
热门文章
- vue3使用vue-count-to组件
- VSCode如何调试TS + node项目
- 2020年有寓意的领证日期_2020年下半年领证寓意好日子,下半年适合领证的时间
- 艾永亮:哔哩哔哩是如何通过超级产品战略搭建各种用户激励体系
- 网页上传到服务器时图片无法显示问题
- 转载:Mac 电脑如何安装mac os 和win7双系统(win7多分区)
- php写相册管理系统代码,php相册系统源代码
- 合肥工业大学计算机转专业,合肥工业大学转专业要哪些条件?
- 在不同的时间段在页面上显示不同图片和不同的问候语。
- 太二跨界出猫粮,是破圈还是噱头?