HEVC中四叉树划分详解

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

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

                                 

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

                             

       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一直划分划分到最大深度,才进行代价比较吗?还是只要划分一层就比较一次?应该是前者)

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值