HEVC学习之二CTU, CU, CTB, CB, PB, TB

在H264标准中,编码层的核心是宏块,一个宏块大小为16X16,包含一个16X16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8X8的色度块。相对应的在HEVC中类似的结构为编码树单元(CTU),其尺寸可以由编码器指定,最大可以支持到64X64,最小可以支持到16X16。对于高分辨率视频的编码中,使用较大尺寸的CTU可以获得更好的压缩性能。这里以最大的64X64大小的CTU为例说明HEVC的编码树结构。
HEVC先根据编码器设置的CTU大小对整帧的图像进行分块,如图所示每一个CTU大小都是64X64,类似于H264的16X16的宏块划分。

一个编码树单元(CTU)包含了同一位置处的一个亮度编码树块(CTB)和两个色度编码树块(CTB),以及一些相应的语法元素。如图所示,根据CTU大小可以为16X16,32X32,64X64,则亮度CTB的大小也可以是16X16,32X32,64X64,并且始终与CTU的大小相对应,此处亮度CTB大小为64X64,色度为32X32。

在HEVC中编码树块CTB可以直接作为一个编码块CB,也可以进一步以四叉树的形式划分为多个小的编码块CB,因此在HEVC中编码块CB的大小是可以变化的,在设置CTU大小为64X64的情况下,一个亮度CB最大为64X64即一个CTB直接作为一个CB,最小为8X8,则色度CB最大为32X32,最小为4X4。大的CB可以使得平缓区域的编码效率大大提高,在细节部分采用小的CB又可以使复杂的图像预测更加准确。一个亮度CB和两个色度CB,以及一些相关语法元素共同组成一个编码单元(CU).如图:

一幅图像根据编码器设置的CTU大小,可以划分为若干个互不重叠的CTU,在CTU内部,采用基于四叉树的循环分层结构。同一层次上的编码单元具有相同的分割深度。一个CTU可以值包含一个CU即没有进行划分,也可以被划分为多个CU。每个CU包含着与之相关联的预测单元(PU)和我变换单元(TU).对于一个2NX2N的CU模式,帧内预测单元的可选模式有两种2NX2N和NXN,帧间预测模式则有8中,4中对称模式2NX2N,NXN,NX2N,2NXN,4中非对称模式2NXnU,2NXnD,nLX2N,nRX2N(其中U,D,L表示上下左右四个方向),其中nLX2N,nRX2N为左右1:3,3:1的比率划分,2NXnU,2NXnD为以上下1:3,3:1的比率划分。还有一种模式为skip模式,是帧间预测的一种,当需要编码的运动信息只有运动参数集索引(采用运动合成技术),编码残差信息不需要编码。一个预测单元PU包含一个亮度预测块PB和两个色度预测块PB,还有一些相关语法元素。如图:

变换单元是独立完成变换和量化的单元,其尺寸也是灵活变化的。HEVC可以支持4X4到32X32的编码变换,基本单元为变换单元(TU).变换单元的大小依赖于CU模式,一个CU内部,可以允许TU跨越多个PU,以四叉树的形式地柜划分。大块的TU可以使能量更好的集中,小块的的TU可以保留更多的细节,灵活的分割方式。一个变换单元TU包含一个亮度变换块TB和两个色度变换块TB,还有一些相关语法元素。如图:

HEVC学习之二CTU, CU, CTB, CB, PB, TB的更多相关文章
- (转)Maven学习总结(二)——Maven项目构建过程练习
孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- crawler4j 学习(二)
crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...
- HEVC学习之一编码框架
接触H265时间不是很长,看了一些东西,但是一直没有时间静下心来整理.H265的学习主要是参考万帅.杨付正的<新一代高效视频编码 H265/HEVC 原理.标准与实现>移书,这本书对H26 ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- Android Animation学习(二) ApiDemos解析:基本Animators使用
Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
随机推荐
- emgucv文字识别
今天讲如何通过emgucv中的函数来实现文字识别.总体的过程可以分为以下几步: 1.读取要识别的图片 2.对图片进行灰度变换 3.调用emgu.cv.ocr的类tessract中的recognize方 ...
- asd
弹出输入提示框 :window.prompt(); 24. 指定当前显示链接的位置 :window.location.href="URL" 25. 取出窗体中的所有表单的数量 :d ...
- 解决导入myeclipse的项目注释和中文是乱码
1.先说真正解决我所遇到的问题的办法. 用记事本打开——另存为——格式改为UTF-8——保存后在myeclipse就正常显示了. 2.以下是网上找到的办法,试了一些并没有解决问题,但或许是中间必须的步 ...
- 关于HTML页面布局要注意的问题
1.用百分比设定元素宽度可能造成的错误 很多同学习惯使用百分比来设定页面元素(例如div,以下称作盒子,方便介绍)的宽度,这样做可能造成未知的错误,最常见的就是当页面被缩小,或者屏幕分辨率降低时,由于 ...
- DOCTYPE声明的作用是什么?严格模式与混杂模式如何区分?
HTML语言已经存在太久了,目前必然会有一些不同版本的文档存在,为了能够让浏览器清楚你的文档的版本类型和风格,需要在文档的起始用DOCTYPE声明制定当前文档的版本和风格.如果在网页中提供了版本信息, ...
- HDU 5936 Difference
题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...
- 关系与导航属性(摘自微软MSDN)
关系与导航属性 本主题概述实体框架如何管理实体间的关系.还对如何映射和操作关系提供了一些指南. 关系.导航属性和外键 在关系数据库中,表之间的关系(也称为关联)是通过外键定义的.外键 (FK) 是用于 ...
- Spell-DBC
Spell.dbc 1 ID2 Attributes 属性3 AttributesEx 属性 4 AttributesExB ...
- android 获取SD卡相关信息
Object localOb; String str1 = null; try { localOb = new FileReader("/sys/block/mmcblk0/device/t ...
- build配置
buildTypes { debug { // 显示Log buildConfigField "boolean", ...