文章目录

  • VVC的编码结构
  • VVC 块划分准则
  • VVC针对边界处CU划分的处理
  • VVC针对CU冗余划分的限制
  • VVC从硬件效率的角度对CU Size的限制
    • 相关语法元素

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_flag mtt_split_cu_vertical_flag
水平三叉树划分 0 0
水平二叉树划分 0 1
竖直三叉树划分 1 0
数值二叉树划分 1 1

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

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

  1. VVC/VTM的编码结构和块划分

    本文参考了JVET-J1002:Algorithm description for Versatile Video Coding and Test Model 1 (VTM 1) VVC的编码结构 V ...

  2. H.266/VVC的编码结构和块划分

    一.将一帧图像划分成CTUs VVC中一帧图像分成许多编码树单元(CTU).CTU的概念与HEVC的相同.对于一帧具有三通道的图像,CTU由一个N×N的亮度样本块和两个相应的色度样本块组成.图1显示了 ...

  3. VVC中块划分的快速编码

    新一代视频编码标准VVC中,灵活的分区是关键技术之一.与HEVC相比,仅分区就节省了8.5%的比特率.但是,增加的灵活性是以大量搜索空间扩展为代价的.本文概述了VVC中块划分的快速编码器选择策略,总共 ...

  4. qt绘制二维网格_【史上最全轴承结构化网格划分系列】第四弹——滑动球面轴承(文末附模型领取方式)...

    点击上方蓝字关注我们! 一.结构化网格划分思路 1.检查模型 1)观察模型(是否为对称模型,是否需要采用壳/线单元)2)简化模型(去除非关键位置圆角,去除破面与多余线体)2.绘制引导面网格1)切分实体 ...

  5. 【一】VVC理论知识之图像块划分

    一.VVC中的CTU: H.266/VVC 中将每帧图像划分为一系列的 CTU,CTU 的概念和 HEVC 中一致.一帧图像通常分为 3 个采样阵列(一个亮度图像和两个色度图像),一个 CTU 也包含 ...

  6. H.266/VVC相关技术学习笔记4:HEVC和VVC中块划分的差别

    关于H.265/HEVC和H.266/VVC中的块划分的区别: 一.HEVC中首先需要将一个图像固定划分为多个CTU. ① CTU的尺寸固定划分为64×64,一个CTU由一个亮度CTB和两个色度CTB ...

  7. 2105_TIP_DeepQTMT:一种VVC帧内编码块划分的深度学习方法

    论文题目:Deep QTMT_一种VVC帧内编码块划分的深度学习方法 来源:2021,TIP,BUAA 概述 需要解决的问题:简化在VVC中占据了编码时间的97%以上的编码块划分过程 本文的贡献: 创 ...

  8. 编码结构光三维视觉测量系统(二)

    一.摘要 结构光三维视觉测量方法不需要直接接触被测物体,不会磨损被测物体表面,且具有速度快.精度高.实用性高等特点,是进行三维测量的最佳方法之一.而单目结构光视觉测量系统与双目相比,具有成本低.算法简 ...

  9. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    http://blog.csdn.net/qinysong/article/details/1179489 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记 ...

最新文章

  1. Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题
  2. 欢乐纪中某B组赛【2019.1.25】
  3. SpringMVC错误:No mapping found for HTTP request with URI [xxxx] in DispatcherServlet
  4. Springboot 启动时Bean初始化,启动异常-Assert.isTrue(condition,message) 报错
  5. 快速傅立叶变换(FFT)算法(原来这就是蝶形变换)
  6. OpenCV 填充多边形 fillConvexPoly 和 fillPoly
  7. McAfee麦咖啡8.5企业版高级教程
  8. Linux中安装VIM命令
  9. MCU通过UART实现OTA在线升级流程
  10. freemaker使用三目表达式
  11. 笔记本电脑怎么找计算机硬盘,如何给笔记本电脑硬盘分区
  12. Invalid bound statement (not found): com.sxt.sys.mapper.MenuMapper.insert
  13. android edittext底线,android – 更改edittext的底线颜色
  14. 运用简单的HTML、CSS建立一个音乐网站模板
  15. Java招聘网站源码+页面
  16. 微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据 下篇
  17. PHP服务器端API原理及示例(接口开发)
  18. GMSL高带宽视频数据接入的方法
  19. 编辑器进化 VSCode + Vim
  20. PowerShell的力量,第1部分

热门文章

  1. PHP MySQL 中文帮助 在线手册
  2. 广东惠州市地方税务局同城异址容灾备份建设项目
  3. VUE Element UI 父组件调用子组件方法变量,子组件使用父组件变量
  4. Nordic如何将服务特征的UUID设置为128位?
  5. thinkphp3 搬家迁移服务器后提示目录错误Warning: include(): Failed opening ‘D:\
  6. linux查看哪个网卡插着网线,查看linux系统下网卡是否连接网线的状态
  7. 【新学期】双非本科大三学长经验分享
  8. mysql主键_mysql主键是什么?
  9. Service中启动Activity我们这边Settings是直接在程序里添加的
  10. centos查看网络速率_Centos系统在speedtest进行网速测试