HEVC中的帧内预测

今日对照HEVC标准TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (04/2013)阅读HM代码,代码版本2016-8-18,karls

1. 编码器一次读入一个GOP的图像,再一次编码一帧

2. 编码流程为TEncSlice::compressSlice->TEncCu::compressCtu

3.在编码CTU时,递归调用TEncCu::xCompressCU进行四叉树决策,每递归一次uiDepth+1,并对4个下层CU分别调用TEncCu::xCompressCU

4. 在TEncCu::xCompressCU时,先要判断CU是否超过了边界(标志为bBoundary),如果右下角在图像外了,则当前CU不能直接编码,需要分割成小的CU再判断能否编码

5.在帧间模式判断时,先检测2NX2N模式,再检测Merge/Skip模式,并判断是否earlyDetectionSkipMode。

6. 如果不earlyDetectionSkipMode,再继续检查2NXN,NX2N,NXN,并根据是否使用AMP进行其它模式检查

7. 进行INTRA的2NX2N模式检查,如果uiDepth为最深的层数,则再进行NXN的检查

8. 对选出的RD代价最小的模式,如果PPS限制了DQP,还要进行DQP的调整,重新用新QP编码


注:1. 帧内预测时,预测块的大小为TU块的大小,参见标准 a variable nTbS specifying the transform block size

       2. 编码过程中,为了简化复杂度,在使用RMD方式在帧内预测的35个模式中选择需要做FullRDO的几种模式时,是直接按CU块的大小进行预测(不是TU块大小),这时可能CU是64x64,此时按64x64做的预测以及HARDMAND变换和SAD计算。此时的计算实际上是不符合标准的(因为标准没有64x64的帧内预测),但此时只需要计算预测残差的SAD值用作RMD的比较,不进行变换编码,因此是可行的。

      3. RMD的几种模式和MPM的几种模式合起来做RDO选择最佳模式,此时为了简化TU的计算,将TU块的大小限定为CU块的大小,但如果CU是64x64,则需要分成4个32x32的TU块进行预测,并算出4个TU块的RDO代价相加用为CU块代价。

     4. RDO完成后得到最优模式后再进行编码时,需要将进行TU块的四叉树划分,此时才是真实的RDO的TU划分。

     5. TU在进行变换时是和量化同时进行的。与H264不同,H265的变换与量化是可分离的,两部分可独立完成。

TU的分割:

xRecurIntraCodingLumaQT函数递归调用自己,得到最优的TU划分


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值