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 ...
随机推荐
- Codeforces Round #325 (Div. 2) D bfs
D. Phillip and Trains time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 转换成的jar文件接收后台的信息乱码cmd解决办法
运行——cmd—— java -jar -Dfile.encoding=utf-8 xxx.jar
- IOS懒加载
1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 ...
- 开始写Effective系列总结一些前端的心得
确实是没有时间整理以及总结和发表自己的感慨.难得中秋银行的事情搞完了自己清闲3天,是时候总结一下从大公司做.NET PC 端网站的开发到现在做移动互联网的银行及政府微信公众号的开发的感触.当时自己的选 ...
- Jenkins的配置(rpm red hat方式)
Jenkins的配置文件位置 #### sudo chown -R admin /usr/lib/jenkins sudo chgrp -R admin /usr/lib/jenkins #### s ...
- Docker学习---ubuntu环境
添加Docker的ATP仓库 sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sour ...
- 用Join子句进行分组联接
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JSBInding+Bridge.NET:把C#编译为Js
编译步骤: 1. 用 VS 2015 打开 BridgeProj/BridgeProj.sln ,编译 2. 将生成 BridgeProj/Bridge/output/bridge.js,对应于 Br ...
- JConsole监控远程Tomcat服务器
为了解决内存溢出的问题,会用到一些监视内存的工具,jconsole这个工具在jdk1.7自带了.这个工具可以查看系统的堆,非堆,线程,等等的一些整体的情况,从而可以判断出系统的一个大概的性能情况. c ...
- 多节点ListView的加载效率
据说实际场景中node数量达到4k~6k,ListView就崩溃了.(怎么个崩溃法未知) 小试了一下,10w个node毫无压力.(win7 vs2010 .net2.0) 有意思的地方在于,动态添加如 ...