HEVC函数入门(7)——帧内预测-详细概念和HM16.3实现(下)

本文深入探讨HEVC视频编码标准中的帧内预测模式,包括亮度和色度的预测模式,以及预测模式的编码语法结构。HEVC支持33种角度模式和DC、平面模式,通过最可能模式(MPM)选择策略减少传输负载。编码过程涉及率失真优化,与H.264相比,HEVC提供更复杂的预测机制以提高编码效率。
摘要由CSDN通过智能技术生成

首先说明本文引自:http://blog.csdn.net/shaqoneal/article/details/44759561
这里我看的就没有上一篇那么懂了,所以很多地方都只是单纯的复制,另外也有一些个人的理解
(1)亮度帧内预测模式的预测
HEVC对每种PU大小共支持总计33种角度模式,外加上DC和平面模式。由于支持的模式更多,类似于H.264的单一最可能模式在HEVC中效率不高。HEVC针对每种PU大小定义了三个最可能模式,其选择依赖于相邻PU所选的模式。同时,由于最可能模式之外的模式概率分布接近平均,这样也可以由一个不经过CABAC的定长编码表示的结构来从剩余32个模式中指定一个模式。
最可能模式的选择根据左侧和上方的相邻块的模式确定。如果某一个相邻块不是帧内编码或者编码模式为PCM模式,或左边PU处于当前CTU之外,那么该块的模式在这个过程中等同于DC模式。设左侧和上方PU的模式分别为A和B,如果A≠B,那么这两个模式分别设为MPM[0]和MPM[1]。对于MPM[2]的确定需要遵循以下原则:①如果A或B都不是平面模式,那么MPM[2]设为平面模式;②否则,若A或B都不是DC模式,那么MPM[2]设为DC模式;③否则(即AB中有一个平面一个DC模式),MPM[2]设为模式26,即垂直模式。如果A=B,那么确定MPM的方法如下:①如果A和B都不是角度预测模式,那么MPM分别设定为平面、DC和垂直模式;②否则,MPM[0]设为A/B,MPM[1]和MPM[2]选择A的相邻模式,公式如下:
这里写图片描述
三个最可能模式确定后,会按照模式序号进行排序。如果当前预测模式等同于三个最可能模式之一,那么只有该模式在MPM的索引值会传递给解码器,否则将会传递一个5位且不经过CABAC的语法元素表示在MPM之外所选择的帧内预测模式。
该部分的实现如下(这里我先按照自己的想法找这段代码,我认为应该在estIntraPredLumaQT,因为是讲亮度预测的,但是看原文不对O(∩_∩)O哈哈~,不过不要紧,我也建议大家思考一下当前说的代码可能在哪里,有助于理解结构,现在没找到,切到雷神的那个图中去,没找到,所以我切换到TEncCU.cpp找到了TComDataCU这个类,然后在类里搜索getIntraDirLumaPredictor,没找到,想到前面博客中,原博中带Luma的,HM16.3常常不带,于是搜索getIntraDirPredictor成功找到!):

/** Get most probable intra modes
*\param   uiAbsPartIdx    part
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值