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相关推荐

  1. 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帧,绕的头疼,写篇博客汇 ...

  2. 【HEVC简介】CTU、CU、PU、TU结构

    参考文献:见<High Efficiency Video Coding (HEVC)>Block Structures and Parallelism Features in HEVC章节 ...

  3. HEVC区域划分Slice Tile CTU CU PU TU

    Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...

  4. HEVC 常用之 CU、PU、TU分析

    本文以下部分为翻译G. J. Sullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand, "Overview of the High Efficiency ...

  5. VTM1.0代码阅读:CU、PU、TU

    VTM中的cu.pu和tu在使用时都是作为CodingStructure类的成员变量来使用的,即作为CS中cus.pus和tus数组中的一个变量来使用的,毕竟VTM中的操作都是以CS作为最基本的类来执 ...

  6. 每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择

    CU PU TU划分以及PU最佳预测模式选择 在HM对CU进行划分(CU模式判别).PU模式选择(划分).以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍. HM进行块划分和模式选择主 ...

  7. 【转载】CU、PU、TU划分显示代码

    转载自  http://blog.sina.com.cn/s/blog_7b7ddaf90101ftvl.html 相信只要是做算法改进的,首先都会遇到这么一个问题:CU,PU及TU这几个在HM中该如 ...

  8. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  9. HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等

    接着来说HEVC的图像分割. HEVC的标准中有这么一段话,翻译过来就是: 图像分成分量(Y,Cb,Cr). 分量分成coding tree blocks 图像分成tile列 图像分成tile行 Ti ...

  10. 浅谈HEVC中的CTU CU PU TU

    从今天开始会陆续写一些对HEVC的认识的文章,小弟初来乍到,希望大家能够多多指点. 这两天看了block partitioning structure in the HEVC standard这篇论文 ...

最新文章

  1. SQL中ISNULL的问题。
  2. androidstudio常见问题
  3. linux内核线程创建销毁机制
  4. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  5. [.NET源码] EF的增删改查
  6. 【每日一题】7月7日题目精讲—最短路
  7. 数学基础 —— 线性代数
  8. ie 调用java的时候报错,关于java的applet在网页中打开的时候出错
  9. centos oracle 修改监听服务名_Oracle-Oracle DB、监听和oem开机启动
  10. php debug pit,start.php
  11. 九宫格日记-2013年02月23日
  12. 阿里云企业邮箱有免费的吗?如何申请?
  13. 史蒂夫·乔布斯的故事:启示录还是警世钟?
  14. 微信开发者工具:代码更新后页面未刷新
  15. vue.js最新版获取QQ音乐播放源
  16. elementUI上传图片后删除
  17. .rs是什么计算机语言,这几句计算机语言是什么意思Dim cnn As ADODB.ConnectionDim rs As ADODB.Reco...
  18. 嵌入式linux分区,嵌入式Linux MTD分区调整
  19. ThinkPHP(5):数据库操作与模型
  20. 安装MongoDB报错Verify that you have sufficient privileges to start system services的解决方法

热门文章

  1. 《蜗居》:海外解读中国新样本
  2. 腾讯云点播视频播放器使用步骤 uniapp
  3. golang中实现RSA(PKCS#1)加密解密
  4. 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
  5. SpringCloud之熔断器Hystrix
  6. 使用xpath批量爬取堆糖图片
  7. 不动产登记收费一览表
  8. 深度解读企业微信与个人微信的区别?
  9. 2014江西理工大学C语言程序竞赛高级组
  10. 写博客必备!手把手教大家搭建免费图床,真香!