HEVC中四叉树划分详解

     偶然看到一篇论文,关于四叉树划分,感觉写的挺清楚的,随手记录下。

      HEVC中,一帧图像被分割为多个互补重叠的LCU,LCU大小一般设为64*64。每个LCU又可按照四叉树的方式递归划分为多个子CU。编码器编码时,需要判断当前CU是否已经进行划分。当前CU的划分情况由语法元素split_flag的值给出,其值为1表示CU已经划分,否则表示为进行子CU划分。

                                 HEVC中四叉树划分详解_第1张图片

      默认情况下,编码器遍历搜索LCU所有的子CU划分,通过对比当前CU与子CU的率失真代价获得最终的CU划分。CU划分过程可分为自上而下的CU分割过程和自下而上的合并过程。

                             HEVC中四叉树划分详解_第2张图片

       CU分割过程主要完成最优帧内预测模式的选择以及最优预测模式下的率失真代价的计算。CU合并过程自下而上的比较4个子CU率失真代价之和同当前深度CU率失真代价,判断当前CU是否划分为4个子CU。

       CU划分结束后,编码器根据每层CU选定的划分方式,选定的最优预测模式,进行最终的熵编码。

       CU自上而下进行划分,首先按照下列式子计算当前PU的35个帧内预测模式下的率失真代价Jmode,选择是Jmode 最小的帧内预测模式K作为最优预测模式,同时保存当前CU最优预测模式极其率失真代价RDCost_00。

                                    J mode=(SSEluma +w*SSE chroma)+λ*Bmode

   然后按照光栅扫描顺序分别计算当前CU四个子CU所对应的四个PU的最小率失真代价RDCost_10,RDCost_11,RDCost_12,RDCost_13以及最优预测模式K1,K2,K3,K4,并计算四个子CU的率失真代价之和得到Jsub。继续分割子CU直至CU的尺寸为标准所允许的最小尺寸。

      CU自下而上合并时,对比当前CU同子CU的率失真代价之和,若

                                            

则当前CU划分为4个子CU,置split_flag为1,否则不进行划分。

(疑问:是将当前CU一直划分划分到最大深度,才进行代价比较吗?还是只要划分一层就比较一次?应该是前者)

你可能感兴趣的:(HM)