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 ...
随机推荐
- Android中ExpandableListView的使用
ExpandableListView是Android中可以实现下拉list的一个控件,具体的实现方法如下: 首先:在layout的xml文件中定义一个ExpandableListView < L ...
- socket reuse
int k = 1; if( SUCCESS != m_socketServer.setSockOptSocket( SO_REUSEADDR, (char*)&k, sizeo ...
- 启用Servlet 3.0新特性——注解支持
Servlet 3.0版本新增注解支持,可是在实际使用中,添加的注解总是不起作用.经过检查,原来是“web.xml”文件的顶级标签“<web-app/>”中的一个叫做“metadata-c ...
- tiny java web server
import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; ...
- 模拟discuz发帖的类实现
一直想弄个discuz的数据采集程序,这2天研究了下discuz发帖涉及的几个数据库表,这里分享一下自己的处理方法. discuz发表主题设计的几个表:(这里列出了主要的几个相关的表) 1.主题表 p ...
- jq 获取元素的宽度时,如何取得小数部分
<!DOCTYPE html> <html> <head> <title></title> <meta name="arti ...
- 一个奇葩的SQL
需求 建表脚本 CREATE TABLE [dbo].[A]( ) NOT NULL, ) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[B]( ) NOT N ...
- 黄聪:日租VPS中FileZilla_Server配置方法
1.关闭VPS中IIS的FTP服务 2.FileZilla_Server 监听端口 21 3.FTP客户端端口为11311(看服务商给出的)
- ext4 disable journal
ext4 disable journal At one high loaded web project I needed a very fast file system. I decided to u ...
- C语言中,定义的含义?声明的含义?它们之间的区别是什么?
在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解! 定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名 ...