CTU CU CB PU TU
CTU:coding tree unit,编码树单元,LCU
对于YUV=420格式的彩色视频:一个CTU由一个CTB of the luma samples 、2个CTBs of the choma samples和相关的语法元素组成。Luma CTB是一个2^N x 2^N的像素区域,而相应的Choma CTB是2^(N-1) x 2^(N-1)的像素区域,N的值在编码器中确定,并在SPS(sequence parameter set)中传输。N可选4,5,6,表示CTU的大小可取16、32、64。
CTU相当于H.264中的MarcoBlock划分图片的概念,是在编码过程中的独立编码单位,然后可以递归划分成CU。
CU:coding unit,编码单元
每一个CTU,可以进一步均匀划分成4个square CUs,一个CU又可以递归按四叉树结构划分成4个小的CUs。对于YUV=420的彩色视频:一个CU由一个CB of the luma samples、2个CBs of the choma samples和相关的语法元素。一个Luma CB是2^N x 2^N(此处的N与CTU中的N大小不同)的像素区域,而相应的choma CB是2^(N-1) x 2^(N-1)的像素区域,N的值同样在编码器中确定,并在SPS中传输。
编码时,在CTU level,通过传输split_cu_flags标志指明CTU是否进一步划分成四个CU。类似地,对于一个CU,也通过一个split_cu_flags标志指明是否进一步划分成子CU。CU通过split_cu_flags标志指示进行递归的划分,直到split_cu_flags==0或者达到最小的CU尺寸(mininum CU size),对于达到最小尺寸的CU,不需要传输split_cu_flags标志,CU的最小尺寸参数(通过CTU深度确定)在编码器中确定,并在SPS中进行传输。
所以CU的大小范围是:minunum size CU ~CTU,一般情况设置CTU为64,最小CU为8(通过CTU深度确定),所以此时CU大小可取8、16、32、64。一个CTU进行编码时,是按照深度优先的顺序进行CU编码,类似于z-scan,如下图:右边表示CTU的递归四叉树划分,左边表示CTU中CU的编码顺序。
视频序列的分辨率(长和宽参数)也会在SPS中传输,要求长宽必须是mininum CU size的整数倍,但是可以不是 CTU size的整数倍。对于长宽不是CTU size整数倍的情况,图像边界处的CTU被认为已经分割成和图像边界重合(the CTUs at the borders are inferred to be split until the boundaries of the resulting blocks coincide with the picture boundary),对于这种边界处默认的分割,不需要传输split_cu_flags标志。
CU块是进行决策帧间、帧内、Skip/Merge模式的基本单元。
PU:prediction unit,预测单元
在CU level决定prediction mode,并将一个CU的prediction mode传输在bitstream中。而PU是是进行预测的基本单元,有一个PB of the luma、2个PB of the choma和相应的语法元素组成。
如果一个CU的prediction mode是intra prediction(帧内预测):
对于luma CU:有35个可选的帧内预测方向(Plannar(0)、DC(1)和方向预测(2~34)),对于mininum size的luma CB,可以平均划分成4个方形的subblocks,对于每个subblock进行独立的帧内预测,有独立的intra prediction mode。也就是说对于帧内预测的CU,可以进行2Nx2N和NxN两种PU划分模式,且NxN模式只有对mininum size CB可以使用。
一个帧内luma PU块,预测模式确定之后,需要对预测模式进行编码。HEVC中在进行帧内预测模式编码时,先为每个intra PU确定3个最可能模式(确定策略后面介绍),假设为S={M1,M2,M3}。然后通过判断luma PU的帧内预测模式是否在S中,如果在S中,则需要2bit编码预测模式在S中的索引,否则需要5bit编码预测模式在另外32种模式中的索引。
对于luma PU,确定最可能3个预测模式是根据当前PU左边和上边的预测模式,假设左边和上边的预测模式分别是A和B,如果左边或上边PU不是帧内预测模式或是PCM模式,则A或B为DC;另外,如果上边PU块不在当前CTU内,那么B也为DC。确定好A和B之后:
当A=B时,如果A,B都大于2,即A和B都不是Planar或DC,那么:
M1=A;
M2=2+((A-2-1+32)%32)
M3=2+((A-2+1)%32)
当A=B时,如果A,B至少有一个小于2,即A或B是Planar或DC,那么:
M1=Planar,M2=DC,M3=26(竖直方向预测)
当A!=B时,M1=A,M2=B,对于M3按照下面规则决定:
如果A和B都不是Planar,那么M3=Planar;
如果A和B都不是DC,那么M3=DC;
否则,说明{A,B}={Planar,DC},那么M3=26。
对于choma luma:有5个可选的帧内预测方向(Planar/0、DC/1、Vertical/26、Horizontal/10和luma PU的预测方向)。对于预测模式的编码,通过0表示luma PU的预测方向,100、111、101和110分别表示Planar/0、DC/1、Vertical/26和Horizontal/10。
另外,在进行帧内预测时,如果CU是mininum size CU,且将CU划分成4个PU时,那么要保证TU小于等于PU,如下图:表示一个8x8的CU块分成4个PU,那么必须分成四个4x4的TU块,至于每个TU是否进一步划分成更小的TU不作限定,只根据正常TU划分的条件判断。这是为了提高intra预测的精确度。图a表示如果CU不化成4个TU,那么intra预测的距离就会较远。图b则表示了将CU划分成4个TU,这时候预测右边的小PU时,左边的PU已经预测完成,并进行了变换和重建,可以保证预测距离更近。
如果一个CU的prediction mode是inter prediction(帧间预测):
对于inter PU,luma PB和choma PBs拥有相同的PU划分模式和motion parameters(包括运动估计方向数目(1/2),参考帧索引,和对每个运动估计方向的运动矢量MV)。HEVC中有8中PU划分模式(2Nx2N、NxN、2个SMP和4个AMP),如下图所示:
对于NxN模式,只有mininum size CU可以使用,且8x8CU不能使用。
对于AMP模式,只有32x32和16x16的CU可以使用,8x8和64x64的CU不能使用,所以inter PU的最小尺寸为8x4和4x8,这是因为TU最小尺寸为4x4,进行变换的最小单元也是4x4。另外,HEVC可以在SPS中通过一个syntax禁用AMP。
从H.262到HEVC过程中,PU的可选大小变化如下图:
如果一个CU的prediction mode是Skip:
那么PU的划分模式只能是2N x 2N。
PS:对于4x8和8x4,HEVC规定只能用单向预测,不能用双向预测。
在HM1中,实际可以通过inter_4x4_enabled_flag(在SPS中)指示是否使用4x4的PU。
TU:transform unit,变换单元
对于是进行变量的单元,一个CU可以递归按照四叉树结构划分成TUs,CU作为四叉树的root,如下图表示一个CU划分成TUs的结构:
CU划分成TUs中,TU的大小范围取决于max TU size、min TU size和max TU depth三个参数决定,这三个参数在SPS level进行传输。max TU size为5表示最大TU是32x32,min TU size为2表示最小TU是4x4。max depth为3表示CU划分成TU最多划分成3层(如上图10、11、12、13就在第3层)。对于intra predition,要确保PU大于等于TU(即TU不跨多个intra PU),而inter predition没有相应的限制。
另外,对于一个CU,最多有一个trasform tree syntax,所以一个CU的luma CB 和choma CBs拥有相同的TU划分。但是除了对于8x8的luma CB划分成4x4的TB时,4x4的choma CBs不会划分成2x2的TB。
CTU CU CB PU TU相关推荐
- H265/HEVC名词解释-- CTU,CTB,CU,CB,TU,PU,TB,PB,LCU,Slice,Tile,Chroma,Luma,I帧,B帧,P帧
H265/HEVC名词解释 学H265的时候,一堆名词 CTU,CTB,CU,CB,TU,PU,TB,PB,LCU,Slice,Tile,Chroma,Luma,I帧,B帧,P帧,绕的头疼,写篇博客汇 ...
- 【HEVC简介】CTU、CU、PU、TU结构
参考文献:见<High Efficiency Video Coding (HEVC)>Block Structures and Parallelism Features in HEVC章节 ...
- HEVC区域划分Slice Tile CTU CU PU TU
Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...
- HEVC 常用之 CU、PU、TU分析
本文以下部分为翻译G. J. Sullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand, "Overview of the High Efficiency ...
- VTM1.0代码阅读:CU、PU、TU
VTM中的cu.pu和tu在使用时都是作为CodingStructure类的成员变量来使用的,即作为CS中cus.pus和tus数组中的一个变量来使用的,毕竟VTM中的操作都是以CS作为最基本的类来执 ...
- 每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择
CU PU TU划分以及PU最佳预测模式选择 在HM对CU进行划分(CU模式判别).PU模式选择(划分).以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍. HM进行块划分和模式选择主 ...
- 【转载】CU、PU、TU划分显示代码
转载自 http://blog.sina.com.cn/s/blog_7b7ddaf90101ftvl.html 相信只要是做算法改进的,首先都会遇到这么一个问题:CU,PU及TU这几个在HM中该如 ...
- FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU
===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...
- HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等
接着来说HEVC的图像分割. HEVC的标准中有这么一段话,翻译过来就是: 图像分成分量(Y,Cb,Cr). 分量分成coding tree blocks 图像分成tile列 图像分成tile行 Ti ...
- 浅谈HEVC中的CTU CU PU TU
从今天开始会陆续写一些对HEVC的认识的文章,小弟初来乍到,希望大家能够多多指点. 这两天看了block partitioning structure in the HEVC standard这篇论文 ...
最新文章
- SQL中ISNULL的问题。
- androidstudio常见问题
- linux内核线程创建销毁机制
- Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
- [.NET源码] EF的增删改查
- 【每日一题】7月7日题目精讲—最短路
- 数学基础 —— 线性代数
- ie 调用java的时候报错,关于java的applet在网页中打开的时候出错
- centos oracle 修改监听服务名_Oracle-Oracle DB、监听和oem开机启动
- php debug pit,start.php
- 九宫格日记-2013年02月23日
- 阿里云企业邮箱有免费的吗?如何申请?
- 史蒂夫·乔布斯的故事:启示录还是警世钟?
- 微信开发者工具:代码更新后页面未刷新
- vue.js最新版获取QQ音乐播放源
- elementUI上传图片后删除
- .rs是什么计算机语言,这几句计算机语言是什么意思Dim cnn As ADODB.ConnectionDim rs As ADODB.Reco...
- 嵌入式linux分区,嵌入式Linux MTD分区调整
- ThinkPHP(5):数据库操作与模型
- 安装MongoDB报错Verify that you have sufficient privileges to start system services的解决方法