编码帧内预测模式

大量增加可选择的预测模式可以提供更高的编码效率,同时要求编码预测模式有更加高效的方法降低更多模式带来的负担。与H.264采用一个最可能模式不同的是,对于亮度分量,三个最可能模式用于预测实际的帧内预测模式。同时,也考虑了三个最可能模式中的冗余信息,重复的模式会使用其他模式进行替换。对于亮度分量,HEVC采用了同亮度分量相同的预测模式。在编码亮度和色度帧内预测模式时,各个语法元素的设计也体现了亮度分量更多的最可能候选模式以及亮度分量的统计特性。

(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之外所选择的帧内预测模式。

该部分的实现如下:

/** Get most probable intra modes
*\param   uiAbsPartIdx
*\param   uiIntraDirPred  pointer to the array for MPM storage
*\param   piMode          it is set with MPM mode in case both MPM are equal. It is used to restrict RD search at encode side.
*\returns Number of MPM
*/
Int TComDataCU::getIntraDirLumaPredictor( UInt uiAbsPartIdx, Int* uiIntraDirPred, Int* piMode  )
{TComDataCU* pcTempCU;UInt        uiTempPartIdx;Int         iLeftIntraDir, iAboveIntraDir;Int         uiPredNum = 0;// Get intra direction of left PUpcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );//获取左方PUiLeftIntraDir  = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX;//左方PU为空或非Intra,左方的PU模式则设置为DC,否则设置为左方PU的模式// Get intra direction of above PUpcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx, true, true );//获取上方PUiAboveIntraDir = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX;//上方PU为空或非Intra,上方的PU模式则设置为DC,否则设置为上方PU的模式uiPredNum = 3;if(iLeftIntraDir == iAboveIntraDir){//模式A和模式B相等的情况if( piMode ){*piMode = 1;}if (iLeftIntraDir > 1) // angular modes{//如果二者都是角度预测,那么MPM[0]设置为该角度模式,MPM[1]和MPM[2]设置为该模式的相邻模式uiIntraDirPred[0] = iLeftIntraDir;uiIntraDirPred[1] = ((iLeftIntraDir + 29) % 32) + 2;uiIntraDirPred[2] = ((iLeftIntraDir - 1 ) % 32) + 2;}else //non-angular{//如果二者都不是角度预测,那么三种模式分别设置为平面、DC和垂直模式uiIntraDirPred[0] = PLANAR_IDX;uiIntraDirPred[1] = DC_IDX;uiIntraDirPred[2] = VER_IDX; }}else{//模式A与模式B不等if( piMode ){*piMode = 2;}uiIntraDirPred[0] = iLeftIntraDir;//MPM[0]和MPM[1]分别设置为这两种模式uiIntraDirPred[1] = iAboveIntraDir;if (iLeftIntraDir && iAboveIntraDir ) //both modes are non-planar{//当两个模式都不是平面模式时,MPM[2]设置为平面模式uiIntraDirPred[2] = PLANAR_IDX;}else{//至少有一个是平面模式时,如果另一个是DC模式,那么MPM[2]设置为垂直模式;如果另一个不是DC模式,那么MPM[2]设置为DC模式uiIntraDirPred[2] =  (iLeftIntraDir+iAboveIntraDir)<2? VER_IDX : DC_IDX;}}return uiPredNum;
}

HEVC intra MPM相关推荐

  1. Fast CU Depth Decision Algorithm for HEVC Intra Coding

    在HEVC 参考代码中,一个CTU块通过xcompressCU()函数进行CU递归得到最优的CU深度. 递归的过程可如下图(from:Fast CU Splitting and Pruning for ...

  2. HEVC intra和inter码率控制的不同

    在compressGOP()函数中 compressGOP() {...for (Int iGOPid=0;iGOPid<m_iGopSize;iGOPid++){m_pcSliceEncode ...

  3. 无电池摄像头如何实现高清晰度视频编码?

    本文来自日本法政大学理工学院副教授 周金佳在LiveVideoStackCon 2019上海大会演讲,介绍了一种可被广泛应用于监控系统的超低功耗的视频采集和编码系统,在保证画质的同时,可大大降低系统的 ...

  4. 深度学习赋能视频编码

    深度学习赋予了诸如计算机视觉等领域新的研究契机,其应用也获得了视频编码领域的诸多关注.在LiveVideoStack线上分享中北京大学信息技术学院 助理研究员王苫社详细介绍了当下深度学习在视频编码中的 ...

  5. 视频千倍压缩背后的技术原理之环路滤波

    随着5G的成熟和广泛商用,带宽越来越高,让传输视频变得更加容易.移动设备算力的提升.存储容量的提升,也使得视频技术的应用越来越广泛.视频相关的技术,特别是视频压缩技术,因其专业性,深入开发的门槛较高, ...

  6. Deep Learning-Based Video Coding: A Review and A Case Study

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...

  7. 音视频技术开发周刊 | 202

    每周一期,纵览音视频技术领域的干货. 新闻投稿:contribute@livevideostack.com. 小提示:链接跳转仅支持公众号相关链接 WebRTC诞生记 距离谷歌正式开源WebRTC实时 ...

  8. 3D-HEVC中的编码关键技术

      图(1) 3D编码框架图 3D-HEVC采用多视角加深度图(MVD)的格式来表示编码的3D视频.其中包括独立视角的编码(unmodified)上图中的蓝色部分,和修改的HEVC编码器用于减少冗余度 ...

  9. 基于环境光照度和物体距离的数据采集系统设计

    视频演示链接:labview上位机和FPGA下位机的心得_哔哩哔哩_bilibili 目录 基于环境光照度和物体距离的数据采集系统设计 第1章 绪论 1.1课题目的与现状 第2章 硬件平台基本概述及编 ...

最新文章

  1. 解决由于DNS解析导致Emacs启动巨慢的问题
  2. [HNOI2007]分裂游戏
  3. 【译】Notes on Blockchain Governance
  4. IDEA中部署Tomcat设置访问路径
  5. 下位机和上位机是什么意思_单反无反选择高速机是什么意思?什么是高速机
  6. springboot启动报错LoggerFactory is not a Logback LoggerContext but Logback...
  7. springmvc5.3 之后版本 舍弃AntPath地址匹配模式通配符 “**”用法改变。
  8. 全志R40 串口485 控制操作
  9. Windows音频编程:Win32 Wave API 的使用
  10. 蚂蚁支付宝小程序开发从零开始[含demo]
  11. TCP的三次握手与四次挥手理解
  12. pytonh mysql_python操作Mysql实例代码教程(查询手册)
  13. 基于AM5728 DSP+ARM阵列麦克风解决方案
  14. 豪沃轻abs12v电是什么系统_小汽车显示abs是什么问题,ABS系统介绍
  15. 黑客组织 LAPSUS$ 认领,英伟达超7万员工信息遭泄露时间线
  16. Flink (四) Flink 的安装和部署- Flink on Yarn 模式 / 集群HA / 并行度和Slot
  17. matlab 连续下标表示,MATLAB通过下标访问多个数组元素
  18. Vue.js学习笔记 2022 04 17
  19. thunderbird 日历
  20. 简单爬取链家上广州的租房信息

热门文章

  1. one 主格 复数 宾格_主格和宾格的复数形式到底怎么写请说出答案
  2. Python杀死了Excel
  3. linux下免费远程控制工具,ToDesk Linux版下载
  4. 有人说程序员是一个很高大上又高不可攀的职业,你认同吗?
  5. 华为手机灭屏也能看时间吗?很多技巧你不知道,2分钟就能学会
  6. 【实战】电商后台管理系统:路由封装基础布局
  7. 张寓博当选山东省收藏者协会副主席兼美术评论委员会主任
  8. SECOND: Sparsely Embedded Convolutional Detection
  9. zblogphp登录和注册_zblog如何设置会员注册功能
  10. 喜欢计算机专业的理由英语,计算机专业的英文自我介绍