CTU CU CB PU TU

CTUcoding tree unit,编码树单元,LCU

        对于YUV=420格式的彩色视频:一个CTU由一个CTB of the luma samples 2CTBs of the choma samples和相关的语法元素组成。Luma CTB是一个2^N  x 2^N的像素区域,而相应的Choma CTB2^(N-1) x 2^(N-1)的像素区域,N的值在编码器中确定,并在SPS(sequence parameter set)中传输。N可选456,表示CTU的大小可取163264

        CTU相当于H.264中的MarcoBlock划分图片的概念,是在编码过程中的独立编码单位,然后可以递归划分成CU

 

CUcoding unit,编码单元

        每一个CTU,可以进一步均匀划分成4square CUs,一个CU又可以递归按四叉树结构划分成4个小的CUs。对于YUV=420的彩色视频:一个CU由一个CB of the luma samples2CBs of the choma samples和相关的语法元素。一个Luma CB2^N x 2^N(此处的NCTU中的N大小不同)的像素区域,而相应的choma CB2^(N-1) x 2^(N-1)的像素区域,N的值同样在编码器中确定,并在SPS中传输。

        编码时,在CTU level,通过传输split_cu_flags标志指明CTU是否进一步划分成四个CU。类似地,对于一个CU,也通过一个split_cu_flags标志指明是否进一步划分成子CUCU通过split_cu_flags标志指示进行递归的划分,直到split_cu_flags==0或者达到最小的CU尺寸(mininum CU size),对于达到最小尺寸的CU,不需要传输split_cu_flags标志,CU的最小尺寸参数(通过CTU深度确定)在编码器中确定,并在SPS中进行传输。

        所以CU的大小范围是:minunum size CU ~CTU,一般情况设置CTU64,最小CU8(通过CTU深度确定),所以此时CU大小可取8163264。一个CTU进行编码时,是按照深度优先的顺序进行CU编码,类似于z-scan,如下图:右边表示CTU的递归四叉树划分,左边表示CTUCU的编码顺序。

CTU CU CB PU TU 

        视频序列的分辨率(长和宽参数)也会在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模式的基本单元。

 

PUprediction unit,预测单元

        CU level决定prediction mode,并将一个CUprediction mode传输在bitstream中。而PU是是进行预测的基本单元,有一个PB of the luma2PB of the choma和相应的语法元素组成。

 

如果一个CUprediction modeintra prediction(帧内预测):

        对于luma CU35个可选的帧内预测方向(Plannar(0)DC(1)和方向预测(2~34)),对于mininum sizeluma CB,可以平均划分成4个方形的subblocks,对于每个subblock进行独立的帧内预测,有独立的intra prediction mode。也就是说对于帧内预测的CU,可以进行2Nx2NNxN两种PU划分模式,且NxN模式只有对mininum size CB可以使用。

        一个帧内luma PU块,预测模式确定之后,需要对预测模式进行编码。HEVC中在进行帧内预测模式编码时,先为每个intra PU确定3个最可能模式(确定策略后面介绍),假设为S=M1M2M3}。然后通过判断luma PU的帧内预测模式是否在S中,如果在S中,则需要2bit编码预测模式在S中的索引,否则需要5bit编码预测模式在另外32种模式中的索引。

        对于luma PU,确定最可能3个预测模式是根据当前PU左边和上边的预测模式,假设左边和上边的预测模式分别是AB,如果左边或上边PU不是帧内预测模式或是PCM模式,则ABDC;另外,如果上边PU块不在当前CTU内,那么B也为DC。确定好AB之后:

        A=B时,如果AB都大于2,即AB都不是PlanarDC,那么:

            M1=A

            M2=2+((A-2-1+32%32

            M3=2+((A-2+1%32

       A=B时,如果AB至少有一个小于2,即ABPlanarDC,那么:

            M1=PlanarM2=DCM3=26(竖直方向预测)

       A=B时,M1=AM2=B,对于M3按照下面规则决定:

            如果AB都不是Planar,那么M3=Planar

            如果AB都不是DC,那么M3=DC

            否则,说明{AB=PlanarDC},那么M3=26

       对于choma luma5个可选的帧内预测方向(Planar/0DC/1Vertical/26Horizontal/10luma PU的预测方向)。对于预测模式的编码,通过0表示luma PU的预测方向,100111101110分别表示Planar/0DC/1Vertical/26Horizontal/10

       另外,在进行帧内预测时,如果CUmininum size CU,且将CU划分成4PU时,那么要保证TU小于等于PU,如下图:表示一个8x8CU块分成4PU,那么必须分成四个4x4TU块,至于每个TU是否进一步划分成更小的TU不作限定,只根据正常TU划分的条件判断。这是为了提高intra预测的精确度。图a表示如果CU不化成4TU,那么intra预测的距离就会较远。图b则表示了将CU划分成4TU,这时候预测右边的小PU时,左边的PU已经预测完成,并进行了变换和重建,可以保证预测距离更近。

 CTU CU CB PU TU

如果一个CUprediction modeinter prediction(帧间预测):

        对于inter PUluma PBchoma PBs拥有相同的PU划分模式和motion parameters(包括运动估计方向数目(1/2),参考帧索引,和对每个运动估计方向的运动矢量MV)。HEVC中有8PU划分模式(2Nx2NNxN2SMP4AMP),如下图所示: 

 CTU CU CB PU TU

        对于NxN模式,只有mininum size CU可以使用,且8x8CU不能使用。

        对于AMP模式,只有32x3216x16CU可以使用,8x864x64CU不能使用,所以inter PU的最小尺寸为8x44x8,这是因为TU最小尺寸为4x4,进行变换的最小单元也是4x4。另外,HEVC可以在SPS中通过一个syntax禁用AMP

        H.262HEVC过程中,PU的可选大小变化如下图: 

CTU CU CB PU TU

如果一个CUprediction modeSkip

        那么PU的划分模式只能是2N x 2N

        PS:对于4x88x4HEVC规定只能用单向预测,不能用双向预测。

                HM1中,实际可以通过inter_4x4_enabled_flag(在SPS中)指示是否使用4x4PU

 

TUtransform unit,变换单元

    对于是进行变量的单元,一个CU可以递归按照四叉树结构划分成TUsCU作为四叉树的root,如下图表示一个CU划分成TUs的结构: 

CTU CU CB PU TU

        CU划分成TUs中,TU的大小范围取决于max TU sizemin TU sizemax TU depth三个参数决定,这三个参数在SPS level进行传输。max TU size5表示最大TU32x32min TU size2表示最小TU4x4max depth3表示CU划分成TU最多划分成3层(如上图10111213就在第3层)。对于intra predition,要确保PU大于等于TU(即TU不跨多个intra PU),而inter predition没有相应的限制。

        另外,对于一个CU,最多有一个trasform tree syntax,所以一个CUluma CB choma CBs拥有相同的TU划分。但是除了对于8x8luma CB划分成4x4TB时,4x4choma CBs不会划分成2x2TB