一、帧内预测,利用当前图像内已经编码的像素生成预测值
二、生成预测值之后,和原始的值相减,得到残差,后续的变换量化等操作就是基于残差进行处理的
三、帧内预测的大致流程是这样的
(1)遍历所有的预测模式,得到每种模式下的残差信号,再对残差信号进行Hadamard变换计算SATD值
(2)利用SATD值计算每种预测模式的率失真代价,选取率失真代价最小的几种模式(与PU大小相关)为预测模式集
(3)将已编码相邻块的预测模式补充到预测模式集中
(4)遍历模式集合中的所有模式,并对残差信号进行正常编码(熵编码),计算率失真代价
(5)选取最优的预测模式作为该PU的最优模式
(6)当亮度块的模式确定之后,把该模式以及DC、planar、水平方向模式、垂直方向模式作为色度块的候选模式,选取最优的模式即可
四、HEVC的帧内预测
1、支持五种大小的PU(PU就是预测单元,由CU分割得来):4x4~64x64
2、每一种PU都有35种预测模式,包括planar模式(模式0) ,DC模式(模式1)和33种角度模式,模式2~17是水平类模式,模式18~34称为垂直类模式
3、HEVC的PU会参考右上角、上面、左上角、左边、左下角的相邻块的边界像素(但是不一定全部都参考)
4、planar模式把水平和垂直方向上的平均值作为当前像素的预测值;DC模式适用于大面积的平坦区域
5、亮度模式的预测
(1)先用率失真优化的方式选取几个代价小的模式作为预测模式集
(2)利用相邻块的预测模式来对当前块的模式进行预测,得到若干模式(存放在candList中),然后添加到预测模式集中
①假设当前块的左边是A,上面的是B     
②如果modeA==modeB
a)modeA和modeB都是planar或者DC模式,那么candList[0] =planar,candList[1]=DC,candList[2]=26
b)modeA和modeB都是角度模式,那么,candList[0]=modeA,candList[1]和candList[2]等于modeA相邻的两个模式
③如果modeA!=modeB,那么candList[0]=modeA,candList[1]=modeB,candList[2]则要分几种情况
a)modeA和modeB都不是planar模式,那么candList[2]=planar
b)当a)不满足,而且modeA和modeB都不是DC模式,那么candList[2]=DC
c)当a)和b)不满足,candList[2]=26
(3)遍历预测模式集,获取最优的模式(假设为modeC),需要进行下面一些处理:
①如果modeC在candList中出现(就是说最优模式modeC是candList的成员),那么只需编码modeC在candList中的位置即可
②如果modeC不在candList中出现,那么按照下面的步骤编码modeC
a)把candList中的模式按照从小到大的顺序重新排序
b)遍历candList的元素,分别与modeC比较,如果modeC >=candList[i],那么modeC自减1
c)对modeC的值进行编码         
6、色度模式的预测
(1)色度模式的候选模式是:planar模式,DC模式、水平模式、垂直模式,对应的亮度分量的模式
(2)调整模式:如果对应的亮度分量的模式和(planar,DC、水平、垂直)这几种模式中的一个重复了,那么把对应亮度分量模式改成模式34
(3)遍历候选的模式,选出最优的模式,然后直接对色度分量的模式的编号进行编码(会经过一定的判断和调整,细节就不说了)。附色度分量的模式的编号:
模式0:planar
模式1:垂直模式(即角度模式26)
模式2:水平模式(即角度模式10)
模式3::DC模式
模式4:对应亮度分量模式
四、实现技术
1、理论上预测模式是在PU的基础上定义的,但是实际的实现中是以TU为单位的,因为PU可以按照四叉树的方式划分成为TU。但是呢,一个PU内的所有TU都是用同一个预测模式(因此实际上还是相当于以PU即单位进行的)
2、判断当前TU相邻参考像素是否可以使用,然后做相应的处理
(1)slice(或者tile)的帧内参考是不能跨越slice边界的,因此处于slice边界的TU的某些参考像素是不可用的
(2)当某些参考像素不可用时,HEVC会使用最邻近的像素进行填充;如果所有的参考像素都不可用,那么使用固定值填充,即把所有的参考值填充为某一个固定值,固定值R=1<<(BitDepth - 1)
3、对参考像素进行滤波
(1)滤波的目的是为了更好利用邻近像素之间的相关性,提高预测精度
(2)针对不同大小的TU选择不同数量的模式进行滤波(所谓滤波就是,如果当前TU选择了某一个模式进行预测,那么需要判断,对于该模式,是否需要对参考像素进行滤波)
①DC模式和以及4x4大小的TU不需要进行滤波
②32x32的TU:除了水平模式(模式10)和垂直模式(模式26),其他模式都需要进行滤波
③16x16的TU:在32x32TU的基础上去除最接近水平和垂直方向的4个模式——模式9、模式11、模式25、模式27
④8x8的TU:仅对3个45度的模式(模式2,18,34)以及planar模式进行滤波
(3)常规滤波,有一个计算的公式,不细讲
(4)强滤波,这是HEVC新增的一个滤波方法,不细讲
4、根据滤波后的参考像素计算当前TU的预测像素值,反正就是根据一些公式计算出预测值

HEVC/H.265理论知识(3)——帧内预测相关推荐

  1. HEVC/H.265理论知识(2)——profile、level、tier

    转载自:http://www.itdadao.com/articles/c15a782132p0.html 一.profile(档次).level(水平).tier(等级)存在的目的是为了让不同应用之 ...

  2. H.266/VVC-VTM代码学习-帧内预测05-Angular模式下计算预测像素值xPredIntraAng

    H.266/VVC专栏传送 上一篇:H.266/VVC-VTM代码学习-帧内预测04-Planar模式下计算预测像素值xPredIntraPlanar 下一篇:H.266/VVC-VTM代码学习-帧内 ...

  3. H.264 入门篇 - 05 (帧内预测)

    目录 0.前言 1.帧内预测类型 2.亮度 Intra_4x4 预测 2.1.当前块 Intra4x4PredMode 的推导过程 2.1.1.预测模式获取情况 2.2.获取预测数据 2.3.Intr ...

  4. HEVC(H.265) 基础知识

    最近由于工作需求,需要学习HEVC(High Efficiency Video Coding).最初一头雾水,都不了解这是视频压缩标准的一种.此文章,主要是为了笔者初步学习HEVC而写的学习笔记. 本 ...

  5. 【三】 VVC理论知识之帧间预测(1)

    一.帧内预测的基本原理 帧间预测主要用于去除图像的时间相关性.帧间预测算法是通过将已编码的图像作为当前图像的参考图像,来获得当前图像的各个块在参考图像中的运动信息,通常用运动矢量和参考帧索引表示,如下 ...

  6. H.264学习笔记2——帧内预测

    帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...

  7. H.266/VVC:色度帧内预测模式之CCLM技术

    一.色度模式编码 1.色度预测模式候选列表 VVC中色度分量的预测过程和亮度分量预测过程不同,其首先是构建色度预测模式候选列表如下表,有8种模式,由4种和亮度模式相同的模式.3种CCLM模式和1种DM ...

  8. HEVC/H.265(1)——入门初步了解

    一.引子 说到H.265,个人的初始印象就是比H.264高端了那么一些的编码标准,再就是在学校的BT上下的那个好多播放器都播放不了,只有potplayer等一小部分未来播放器能播放的权利的游戏HEVC ...

  9. HEVC (H.265)介绍(转)

    [Liupin]: 这是一篇简单介绍H.265文章,我接触和开发H.265二年来,H.265技术在行业内接收速度比H.264快多了,现在国际和国内各大公司都在进行H.265应用,不管是IC设计还是H. ...

最新文章

  1. 《对软件工程课程的期望》
  2. ExtJS4.2学习(八)表格限制输入数据的类型
  3. python猜数游戏流程_Python 猜数字游戏
  4. AndroidStudio导入新项目一直卡在Building gradle project
  5. Udemy - Build Apps with React Native
  6. 3 微信公众号开发 接受普通消息
  7. 两种最短路径(测地距离)的算法——Dijkstra和Floyd
  8. 打造×××互连无极限,多WAN口×××防火墙
  9. vue 实例的生命周期
  10. Java 11 中 11 个不为人知的瑰宝
  11. 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究
  12. Python——安装OpenCV2
  13. Java继承_这10道Java面试题!大部分的人回答不出来
  14. 漫谈 Clustering (追忆篇): Regularized GMM
  15. 使用jsencrypt实现参数的前端加密
  16. Java程序性能优化——性能指标
  17. Cobbler批量装机
  18. 【Love2d从青铜到王者】第九篇:Love2d之库(library)
  19. debian10 buster 在thinkpad T470P 上安装指纹驱动 138a:0097 Validity Sensors
  20. java集合中取最大值_Java后台通过Collections获取list集合中最大数,最小数代码

热门文章

  1. CSS动画开启硬件加速
  2. 2021年P气瓶充装证考试及P气瓶充装操作证考试
  3. DIV Display属性和Visibility属性
  4. Java基础-注解机制详解
  5. 在线阅读文库系统开发支持手机在线观看下载文档(一)
  6. 【原创】MacOS 上使用 Vagrant + VirtualBox 安装 Ubuntu 18.04
  7. 【树莓派4B学习】二、树莓派4B介绍与一些必要的软件安装配置
  8. 新手怎样自己DIY一套音质不错的音响?
  9. 华为AX3Pro+旁路由+Zerotier实现外网访问家里设备
  10. FPGA 历险记——xilinx MIG 使用(一)