在H.265/HEVC中,35种预测模式是在PU的基础上定义的,而具体帧内预测过程的实现则是以TU为单位的。编撰规定PU可以以四叉树的形式划分TU,且一个PU内所有TU共享同一种预测模式的形式划分TU,且一个PU内的所有TU共享同一种预测模式。H.265/HEVC帧内预测可分为以下3个步骤:
**
1.判断当前TU相邻参考像素是否可用并做相应的处理
2.对参考像素进行滤波
3.根据滤波后的参考像素计算当前TU的预测像素值
**


1.相邻参考像素的获取

如图,当前的TU大小为NxN,其参考像素按区域可分为5部分:左下(A)、左侧(B)、左上(C)、上方(D)和右上(E),一共4N+1个点。若当前TU位于图像边界,或Slice、Tile的边界(H.265/HEVC规定在帧内编码中,相邻Slice或Tile不能相互参考),则相邻参考像素可能会不存在或不可用。另外,在某些情形下A或E所在的块可能尚未进行编码,此时这些参考像素也是不可用的。

相邻参考像素位置

当参考像素不存在或不可用时,H.265/HEVC标准会使用最邻近的像素进行填充。例如,若区域A的参考像素不存在,则区域A所有参考像素都用区域B最下方的像素进行填充;若区域E的参考像素不存在,则区域E所有参考像素都用D最右侧的像素进行填充。需要说明的是,若所有参考像素都不可用,则参考像素都用固定值填充,该固定值大小为

                                         R = 1 << (BitDepth -1)

源码解析:
fillReferenceSamples这个函数,它主要功能是在真正进行帧内预测之前,使用重建后的Yuv图像对当前PU的相邻样点进行赋值,为接下来进行的角度预测提供参考样点值。
源码解析可以参考:http://blog.csdn.net/hevc_cjl/article/details/8175721

帧内预测一个很重要的函数initAdiPattern,它的主要功能有三个,(1)检测当前PU的相邻样点包括左上、上、右上、左、左下邻域样点值的可用性,或者说检查这些点是否存在;(2)参考样点的替换过程,主要实现的是JCTVC-J1003即draft 8.4.4.2.2的内容,主要由函数fillReferenceSamples来完成;(3)相邻样点即参考样点的平滑滤波,主要实现draft 8.4.4.2.3的内容。
源码解析可以参考:http://blog.csdn.net/HEVC_CJL/article/details/8184276


2.参考像素的滤波

1.不同大小TU需要进行参考像素滤波的模式
DC模式以及4x4大小的TU都不需要进行参考像素滤波。其他情形介绍如下:
32x32TU:除了模式10(水平)、模式26(垂直)之外的所有角度模式以及Planar模式。
16x16TU:在32x32TU的基础上进一步出去最接近水平个垂直方向的4个模式——模式9、11、25、27
8x8TU:仅对3个45度倾斜方向的模式(模式2、18、34)以及Planar模式进行参考像素滤波。

2.常规滤波与强滤波方法
这部分就是需要满足几个条件进行常规滤波或者强滤波。


2.预测像素的计算

与h.264/avc相比,h.265/hevc增加使用了左下方块的边界像素作为当前块的参考。这是由于h.264/avc以固定大小的宏块为单元进行编码,在对当前块进行帧内预测时,其左下方块很有可能尚未进行编码,无法用于参考;而h.265/hevc四叉树形的编码结构使得这一区域成为可用像素。此外,这一区域像素的使用也提供了更多可能的预测方向,在某些情形下(如倾斜向上方向的纹理等)能够大幅度提高预测精度。

h.264 4x4 luma prediction modes

h.265/hevc 帧内参考示意图


H.265/HEVC亮度分量帧内预测支持5种大小的PU: 4x4, 8x8, 16x16, 32x32, 64x64
每一种大小的PU都有35种预测模式:
1. Planar模式
2. DC 模式
3. 33种角度模式
所有预测模式都使用相同的模板。


1.Planar模式(解决渐变式的平滑纹理区域)

Planar模式是由H.264/AVC中的Plane模式发展而来的,它适用于图像值缓慢变化的区域。Planar模式使用水平和垂直方向的两个线性滤波器,并将二者的平均值作为当前块像素的预测值。

帧内Planar模式预测

a)对应像素的计算公式 b)其计算效果图


2.DC模式(适用于大面积平坦区域)

DC模式适用于大面积平坦区域,其做法与H.264/AVC基本相同。当前块预测值可由其左侧和上方(注意不包含左上角、左上方和右上方)参考像素的平均值得到。

在4X4的非边缘块,即蓝色透明部分


3.角度模式

H.264/AVC使用了8中不同的预测方向(4x4大小),H.265/HEVC则进一步细化了这些预测方向,规定了33种角度预测模式,以更好地适应视频内容种不同方向的纹理。

下图给出了33种角度模式的具体方向,其中V0(模式26)和H0(模式10)分别表示为垂直和水平方向,其余模式的预测方向都可以看成再垂直或水平方向上做了一个偏移,该偏移角的大小可由模式下方的数字计算得出。

33种角度模式的预测方向

θ 为正表示预测方向向左偏移,θ为负表示预测方向向右偏移;对于水平类模式,θ为正表示预测方向向上偏移,θ为负表示预测方向向下偏移。

对于模式1125,当前块的预测需要同时用到上方和左侧的参考像素。为了能够使用一种统一的形式来计算预测像素值,H.264/HEVC标准采用了一种“投影像素”的方法,对于模式1825(垂直类模式),须将左侧参考像素按给定方向偷影至上方参考像素的左侧(水平排列),而对于模式11~17(水平类模式),须将上方参考像素按给定方向投影至左侧参考像素的上方(垂直排列)。

step:

  1. 对于给定垂直类模式M,使用“投影像素”法将其需要用到的参考像素映射为一维形式,记为Ref.
    2.计算当前像素对应参考像素的Ref中的位置,记为pos:
    pos = (y* offset[M]) >> 5
    3.计算当前像素对应参考像素的加权因子w:
    w = (y * offset[M]) & 31
    其中,&表示按位与运算。
    4.计算当前像素的预测值:
    Px,y = ((32-w)Ref[pos]+wRef[pos+1]+16)>>5
    需要注意的是,对于模式26(垂直模式),预测像素值改由下式计算:
    Px,y = Rx,o +((Ro,y - Ro,o) >> 0)

源码解析:
HM中TComPrediction.cpp文件下有以上模式的函数,具体的解析可以参考:
http://blog.csdn.net/hevc_cjl/article/details/8175721
http://blog.csdn.net/hevc_cjl/article/details/8184276
http://blog.csdn.net/hevc_cjl/article/details/8200793
http://blog.csdn.net/hevc_cjl/article/details/8216065
http://blog.csdn.net/hevc_cjl/article/details/8259844
http://blog.csdn.net/hevc_cjl/article/details/8259844

TComPrediction.cpp

作者:Persistently
链接:https://www.jianshu.com/p/d19d7eb3844a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.H.265/HEVC —— 帧内预测相关推荐

  1. H.265之三 -帧内预测(3)

    今天主要介绍帧内预测一个很重要的函数initAdiPattern,它的主要功能有三个,(1)检测当前PU的相邻样点包括左上.上.右上.左.左下邻域样点值的可用性,或者说检查这些点是否存在:(2)参考样 ...

  2. HEVC帧内预测参考相邻帧代码解析

    作者:66 (转载请注明出处) 参考链接:http://blog.csdn.net/hevc_cjl/article/details/8200793 亮度分量的帧内预测涉及到的模块比较多,CU-> ...

  3. H.266:帧内预测之PDPC(VTM4)

    关于H.266帧内完整过程的总结(来自小小柴): https://blog.csdn.net/cxy19931018/article/details/80635898#commentBox 其中,对角 ...

  4. H.266/VVC帧内预测总结

    一.帧内预测基本原理 帧内预测技术是利用同一帧中相邻像素的相关性,利用当前块相邻区域的重建像素预测当前块中像素的技术,如下图所示,当前CU可以利用相邻A.B.C.D和E位置处的重建像素来预测当前CU中 ...

  5. H.266 VVC 帧内预测中MIP技术更新

    P次会议采纳的MIP技术: (1)P0199, P0289, P0303(解决方案一样,待看) (2)P0803中 固定上采样顺序,先水平,后垂直 不受最大变换尺寸大小(3232/6464)限制,使M ...

  6. HEVC帧内预测参考像素检测获取和滤波

    作者:66 (转载请注明出处) 还是参考HEVC_CJL的博客,理论都清楚,跟着他的进度看代码,感谢前辈的分享,他的代码里没有强滤波过程,在此我稍加补充. 原文链接:http://blog.csdn. ...

  7. 【笔记】H.265/HEVC 视频编码(四)——预测编码

    预测编码时视频编码中的核心技术之一.对于视频信号来说,一幅图像内邻近像素之间有较强的空间相关性,相邻图像之间有较强的时间相关性.因此采用帧内预测和帧间预测的方式,去除视频的空域和时域的相关性.视频编码 ...

  8. H.265/HEVC在Web视频播放的实践

    H.265 以下是百度百科对于H.265的介绍: H.265是ITU-T VCEG继H.264之后所制定的新的视频编码标准.H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对 ...

  9. HEVC算法和体系结构:预测编码之帧内预测

    预测编码之帧内预测(Intra-Picture Prediction) 预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当 ...

最新文章

  1. mysql savepoint是什么_Mysql中的隐式COMMIT以及Savepoints的作用
  2. 双缓冲 android,Android 的 SurfaceView 双缓冲应用
  3. cad中线段求和lisp_cad中连续线段变更圆滑弧形
  4. 软件工程复习提纲——第五章
  5. 事务的隔离级别与锁的申请和释放
  6. 剑指offer题解 带讲解 python版 第二部分
  7. win8 64位 iis8 安装.net1.1
  8. rabbitnq 源码安装_RabbitMQ的安装步骤
  9. PDF区域文本提取工具
  10. matlab电磁场与微波技术仿真pdf,MATLAB电磁场与微波技术仿真
  11. most_common()函数源码解读
  12. ActiveMQ 反序列化漏洞 (CVE-2015-5254) 漏洞复现
  13. 大白菜超级U盘启动盘制作工具V1.7(最新版)
  14. java strlen_字符串长度函数strlen和mb_strlen的区别示例介绍
  15. 基于ssm手机供应商管理系统
  16. 决策树留一法python代码_从实例中归纳决策树_人工智能一
  17. TBB基础之parallel_for
  18. 火车头+php教程,dede使用火车头采集视频教程
  19. Linux配置JDK环境——步骤详解
  20. 小和问题(归并排序的例子)

热门文章

  1. 【电设】常见线性稳压电源设计 - 基本并联稳压电源-稳压二极管
  2. 最好用的coreldraw2020中文版,安装好后不显示评估版,显示已注册
  3. 如何正确在轧钢厂中运用无线测温产品
  4. 电气接点无线测温装置如何在中航光电新建厂房项目中应用
  5. 大数据培训ClickHouse表引擎
  6. 一个基于Web服务器的PoW区块链案例
  7. java 搭建http服务器_搭建简单的HTTP服务器
  8. python Matplotlib中时间刻度标签的设置/主副刻度
  9. 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
  10. JS原生轮播(JS篇)