H.265视频编码与技术全析(下)

四.帧内预测模式

共35个(h264有9个),包括Planar,DC,33个方向模式:


除了Intra_Angular预测外,HEVC还和H.264/MPEG-4 AVC一样,支持Intra_Planar, Intra_DC预测模式;

. Intra_DC 使用参考像素的均值进行预测;

. Intra_Planar 使用四个角的参考像素得到的两个线性预测的均值;

划分模式:帧内只能使用PART_2Nx2N、PART_NxN两种

五、帧间预测

Skipped模式:无MV差异和残差信息的帧间预测模式

针对运动向量预测,H.265有两个参考表:L0和L1。每一个都拥有16个参照项,但是唯一图片的最大数量是8。H.265运动估计要比H.264更加复杂。它使用列表索引,有两个主要的预测模式:合并和高级运动向量(Merge and Advanced MV.)。

  1. 运动估计准则

最小均方误差(Mean Square Error,MSE)

最小平均绝对误差(Mean Absolute Difference,MAD)

最大匹配像素数(Matching-Pixel Count,MPC)

绝对误差和(Sum Of Absolute Difference,SAD)

最小变换域绝对误差和(Sum Of Absolute Transformed Difference,SATD)

一般用SAD或者SATD。SAD不含乘除法,且便于硬件实现,因而使用最广泛。实际中,在SAD基础上还进行了别的运算来保证失真率。

  1. 搜索算法

·
dia 菱形

· hex (default) 六边形

· umh 可变半径六边形搜索(非对称十字六边形网络搜索)

· star 星型

· full 全搜索

全搜索:
所有可能的位置都计算两个块的匹配误差,相当于原块在搜索窗口内一个像素一个像素点的移动匹配

菱形搜索: 在x265中实际是十字搜索,仅对菱形对角线十字上的块进行搜索

HM的则是全搜索和TZSearch以及对TZSearch的优化的搜索。

  1. MV预测

HEVC在预测方面提出了两种新的技术–Merge &&
AMVP (Advanced Motion Vector Prediction)都使用了空域和时域MV预测的思想,通过建立候选MV列表,选取性能最优的一个作为当前PU的预测MV,二者的区别:

·
Merge可以看成一种编码模式,在该模式下,当前PU的MV直接由空域或时域上临近的PU预测得到,不存在MVD;而AMVP可以看成一种MV预测技术,编码器只需要对实际MV与预测MV的差值进行编码,因此是存在MVD的。

· 二者候选MV列表长度不同,构建候选MV列表的方式也有所区别

Merge

当前块的运动信息可以通过相邻块的PUs运动信息推导出来,只需要传输合并索引,合并标记,不需要传输运动信息。

空间合并候选:从5个不同位置候选中选择4个合并候选

图中便是5个PU,但是标准规定最多四个,则列表按照A1–>B1–>B0–>A0–>(B2)的顺序建立,B2为替补,即当其他有一个或者多个不存在时,需要使用B2的运动信息。

时间合并候选:从2个候选中选择1个合并候选

从C3、H中选择一个:

AMVP

构造一个时空PUs的运动矢量候选列表,当前PU遍历候选列表,通过SAD选择最优预测运动矢量。

空间运动矢量候选:从5个位置中左侧、上侧分别选1个共2个候选

而AMVP的选择顺序,左侧为A0–>A1–>scaled
A0–>scaledA1,其中scaled A0表示将A0的MV进行比例伸缩。

上方为B0–>B1–B2–>(scaled B0–>scaled B1–>scaled
B2)。

然而,x265并不在乎标准,我们要的就是速度,所以在x265的代码中,只能看到它使用AMVP且对应的变量是

且对左侧和上侧分别if-else,选出两个。

时间运动矢量候选:从2个不同位置候选中选择1个候选

C0(右下) represents the bottom right neighbor and
C1(中心) represents the center block.

Skip vs Merge:

分数像素内插:

用于产生非整数采样位置像素值的预测样本。

六、量化变换

七、其它

熵编码

目前HEVC规定只使用CABAC算术编码。

去块效应滤波器

消除反量化和反变换后由于预测误差产生的块效应,即块边缘处的像素值跳变。

自适应样点补偿

通过对重建图像进行分类,对每一类图像像素值进行加减1,从而达到减少失真,提高压缩率,减少码流的作用。

目前自适应样点补偿分为带状补偿,边缘补偿:

  1. 带状补偿,按像素值强度划分为不同的等级,一共32个等级,按像素值排序,位于中间的16个等级进行补偿,将补偿信息写进码流,其余16个等级不进行补偿,减少码流。

  2. 边缘补偿,选择不同的模板,确定当前像素类型,如局部最大,局部最小,或者图像边缘。

Wavefront Parallel
Processing (WPP)

WPP的并行技术是以一行LCU块为单位进行的,但是不完全截断LCU行之间的关系,如下图,Thread1的第二个块的CABAC状态保存下来,用于Thread2的起始CABAC状态,依次类推进行并行编码或解码,因此行与行之间存在很大的依赖关系。通常该方法的压缩性高于tiles。

H.265视频编码与技术全析(下)相关推荐

  1. H.265视频编码与技术全析(上)

    H.265视频编码与技术全析(上) 一. 概述 作为新一代视频编解码格式,H.265得到越来越广泛的应用.不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是 ...

  2. H.265视频编码与技术全析

    一. 概述 作为新一代视频编解码格式,H.265得到越来越广泛的应用.不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是简单地增大了屏幕,其采用了H.265 ...

  3. hm编码工具使用_H.265视频编码与技术全析(下)

    H.265视频编码与技术全析(下) 四.帧内预测模式 共35个(h264有9个),包括Planar,DC,33个方向模式: 除了Intra_Angular预测外,HEVC还和H.264/MPEG-4 ...

  4. Linux实现ffmpeg H.265视频编码

    Linux实现ffmpeg H.265视频编码 几乎所有观看的视频,数字地面电视,电缆,卫星或互联网上的压缩.原始的,未压缩的视频太大,会浪费太多的带宽.在DVD和Blu-ray之前,有视频CD(VC ...

  5. 【技术科普】支持H.265视频网页Web播放的EasyPlayer.js设计理念与功能计划

    EasyPlayer.js网页播放器对于H.265支持的研发差不多整整一年了,回想到2019年国庆前后,从用户现场反馈来的需求:目前市面上大部分的IPC摄像机或者NVR录像机设备,都默认H.265编码 ...

  6. 支持H.265视频网页Web播放的EasyPlayer.js设计理念与功能计划

    EasyPlayer.js网页播放器对于H.265支持的研发差不多整整一年了,回想到2019年国庆前夕,从用户现场反馈来的需求:目前市面上大部分的IPC摄像机或者NVR录像机设备,都默认H.265编码 ...

  7. SONY索尼A7S3相机HEVC|H.265视频RSV损坏修复MP4

    继佳能和松下相机HEVC|H.265断电视频文件成功修复后,终于迎来索尼HEVC|H.265编码损坏视频修复.回想以往索尼微单的MP4视频文件,使用的都是H.264视频编码技术,从A7S3微单开始支持 ...

  8. 【Codecs系列】H.266/VVC视频编码标准 技术系列汇总

    DATE: 2020.9.30 文章目录 1.H.266/VCC标准专栏 2.H.266/VCC视频编码标准 技术汇总 1.H.266/VCC标准专栏       视音频技术之H.266/VVC 2. ...

  9. 音视频开发(24)---H.264视频编码基本知识

    H.264视频编码基本知识 一.视频编码技术的发展历程 视频编码技术基本是由iso/iec制定的mpeg-x和itu-t制定的h.26x两大系列视频编码国际标准的推出.从h.261视频编码建议,到 h ...

最新文章

  1. JS实现Echarts的图表保存为图片功能
  2. 【小练习05】HTML+CSS--淘宝商铺小页面
  3. 一个基于SAP Hybris Commerce和微信的社交电商原型介绍
  4. 前端学习(2873):Vue路由权限『前后端全解析』4递归组件
  5. oracle命中率sql语句
  6. Android学习笔记19-ImageView实现图片适屏与裁剪
  7. mybatis 高级映射 - 一对多查询 - collection
  8. 《前沿视点》——2013年最值得关注的网页设计流行趋势
  9. resnet152训练_ResNet改进版来了!可训练网络超过3000层!相同深度精度更高
  10. netty系列之:HashedWheelTimer一种定时器的高效实现
  11. C++setw函数的运用
  12. 将心比心,我要有点骨气
  13. Cao Le的 Emacs org mode 学习笔记
  14. rxjava背压_RxJava背压
  15. 跑通Jetson Nano TensorRt sampleSSD例程
  16. byte java 详解_详解java中的byte类型
  17. Excel的常用查询函数一(Index与match联合查询)
  18. java模拟京东登陆_requests+beautifulsoup模拟登陆京东
  19. 【转载】没有安装Google App,如何与gmial账户同步联系人
  20. 日常运维1w、vmstat、

热门文章

  1. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...
  2. springboot整合swagger2之最佳实践
  3. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)
  4. 2022-2028年中国电子灌封胶行业市场研究及前瞻分析报告
  5. 判断某数组是不是二叉树的前序遍历序列 python递归
  6. Docker学习(五)-----Docker查看日志
  7. Octave Convolution卷积
  8. MindArmour差分隐私
  9. 多级中间表示概述MLIR
  10. 2021年大数据Spark(四十六):Structured Streaming Operations 操作