一、帧内预测的基本原理

帧间预测主要用于去除图像的时间相关性。帧间预测算法是通过将已编码的图像作为当前图像的参考图像,来获得当前图像的各个块在参考图像中的运动信息,通常用运动矢量和参考帧索引表示,如下图所示。这样可以去除时间冗余,提高压缩效率。目前,参考图像可以是前向、后向或者双向的,使用相关的帧间编码技术得到当前块的运动信息,该过程可以使从邻块直接继承运动信息,也可以是通过运动估计在参考图像中搜索匹配的块以得到对应的运动信息。接着通过运动补偿过程得到当前块的预测值,倘若需要得到当前块的残差仅仅需要预测值是不够的,还需要将此预测值与块像素值进行相减操作。最终,通过熵编码相关的运动信息和残差就可以在解码端恢复出当前块的重建值,最终输出视频信号。

H.266/VVC 的帧间预测编码技术沿用了H.265/HEVC 中的运动估计和运动矢量预测技术,同时在此基础之上,添加了一些更高效的编码技术。


二、HEVC中的帧间预测技术回顾

基础知识:

  • 在 H.265/HEVC 中,帧间预测模块采用了基于块的运动补偿技术。这其中包含一个称为运动估计的技术,具体操作如下:首先选定一个已经编码的图像作为参考图像,用选定的参考图像作为当前图像的编码块的最佳匹配参考块,然后标定参考块的偏移,这个过程中将此偏移量称为运动矢量,将当前编码块与参考块的差值称为预测残差。
  • 早期的视频编码标准如 H.261 定义了两种类型的图像,分别为 I 帧图像和 P 帧图像。其中,I 帧图像仅能使用帧内编码技术进行压缩编码,P 帧图像相比 I帧图像具有更大的选择灵活性,它的编码方式可以在帧内和帧间两种方式中根据需要进行自由选择。在早期标准中,P 帧图像的预测方式必须是将时间域上的前一幅图像作为当前图像的参考图像,但是往往因为图像中会出现一些不可预测的遮挡和运动,而导致当前编码块不能够在前向的参考图像中找到对应的匹配块,这样就降低了编码效率。但实际上,在前向参考图像中难以找到的匹块,往往会在时间域上晚于当前图像的帧上,寻找到对应的匹配块,由此衍生出第三类图像,即 B 图像。该类图像可以对当前图像的编码块同时使用前向和后向两个参考图像,计算对应的两个 MV,最终进行加权得到当前块唯一的预测块。这三类图像的编码如下图所示,H.265/HEVC 和H.266/VVC 都沿用了此三类图像。

H.265/HEVC 的帧间预测编码关键技术

  • 运动估计

对当前编码块在参考图像中寻找对应的匹配块,这一过程称为运动估计技术。运动估计技术可以找到当前块的MV,并在后续流程编码传输到解码端,在解码端,通过 MV 在参考图像中寻找对应的参考块,处理后便可得到当前块的重建块,这样使用MV 代替了需要传输的当前块的像素值,大大减少了需要传输的信息量。在运动估计的过程中,常用最小均方误差(Mean Square Error,MSE),最小平均绝对误差(Mean Absolute Difference,MAD)等参量作为准则来评估两个块之间的相似度。其中由于MAD 准则存在其自身的弊端,比如运算过于复杂等等,慢慢被 SAD 代替。最小 SAD准则因为不含乘除法,利于硬件实现而应用最为广泛。

在运动估计的过程中,还有一个不可忽视的过程搜索算法。在一些应用领域,通常要求实时性,这就对搜索算法提出了一定的要求,性能完善且效率高的搜索算法得到广泛的研究。这些算法中全搜索算法、二维对数搜索算法、三步搜索法、TZSearch算法等比较常用。在自然界中,物体的运动具有一定的连续性,所以相邻的两幅图像之间的物体运动可能并不是以整数像素为单位的,而有可能是1/2 像素,1/4 像素等等分像素单位。此时若依然使用整数像素进行搜索,则会出现匹配不准确的问题,导致最终的预测值和实际值之间的残差过大,影响编码性能。所以在 H.265/HEVC 中,运动估计的过程都意味着先要对图像进行插值运算,将图像的宽高扩展为原来的 2 倍或者4 倍,这样在运动估计时,使用的就是分像素单位,使用的插值算法为两点临近像素内插方法,如下图 所示;而在 H.266/VVC 中,为了提高运动矢量的精度,通常使用的是 1/16 像素精度,以便于更精确地表示运动。

  • MV预测技术

    ​ 在自然图像中,往往一个运动的物体可能会覆盖多个编码块,这些编码块可能具有相类似的运动信息,导致编码图像空间相邻的邻块具有较强的空间相关性。如果对于当前编码块使用相邻已编码块的 MV 进行预测,将得到的预测 MV 与实际 MV 的差值进行编码,这样就会大幅度减少需要编码一个 MV 所需的比特数,从而大大减少编码码率。同时,由于运动的物体在空间和时间上可能都具有连续性,所以 MV 预测技术也分为时间和空间预测两种。于是,集时域和空域 MV 预测两种思想于一体的Merge 技术和 AMVP 技术被广泛接受并且被收纳在 H.265/HEVC 标准中。这两种技术的核心思想都是通过建立一个MV 候选列表,选取表中性能最优的一个 MV 作为当前编码块的预测 MV。

    对于 Merge 技术,一个包含5个候选 MV的候选列表是由当前算法自动构造生成的,这 5个候选 MV通常包含空域和时域两种类型。如下图所示:

图中 A 是当前编码块,B,C,D,E,F 分别是 A 的空间邻块。Merge技术的核心思想是从头到尾一个个地遍历候选列表中的所有MV,然后通过计算比较和选择具有最小率失真代价的MV 作为最优MV。在解码端,以相同的方式构建该MV候选列表,通过编码端传输的最优MV 在列表中的索引,即可得到相同的MV。具体过程是列表:按照 B→C→D→E(→F)的顺序建立,其中 F 为替补块,当前四个中至少有一个无效时,检查 F 是否有效并添加至候选列表中。

MV 候选列表的时域构建使用下图中所示方式构建。时域最多提供1个候选MV,利用当前编码块在相邻已编码图像中的同位置块的运动信息,通过以下公式的缩放得到:

公式中的curMV为当前编码块的 MV,colMV 为同位块的MV,Td为当前图像和当前参考图像的距离,Tb为同位图像和同位图像的参考图像之间的距离。

注意:MV候选列表的长度为 5,当所有有效的MV不足5个时,通过补0填满。

AMVP 技术则是为当前编码块进行运动估计之前提供一个预测 MV作为运动估计的起始点。顾名思义,编码器的主要任务是用来编码,在AMVP技术当中选择的编码方式为差分编码,对象便是从自己建立的 MV 候选列表中选一个性能最优的与实际的 MV。在解码端,通过相同的方式建立MV候选列表并通过索引将最优MV选择出来,通过编码端差分编码得到的运动矢量差,便可以得到最终的 MV。建立 MV候选列表的过程和 Merge 模式略有不同,AMVP 在当前编码块的左侧和上侧各产生一个候选 MV,左侧的检查顺序为 E→B→scaled E→scaled B,上方的检查顺为 D→C→F(→scaled D→scaled C→scaled F)。scaled 表示对对应MV 进行缩放。若空域候选没有填满候选列表,检查时域候选,时域候选的检查方法与Merge技术相同,如果最终还没有填满,使用零MV进行填补。

  • 运动补偿

对于通过帧间预测技术得到的运动矢量MV,通过运动补偿的过程得到当前编码块的预测值,然后与当前块做差值得到当前块的残差,并进行熵编码传输。运动补偿的过程实际上就是通过当前块的MV插值计算得到与当前块宽高一致的预测块,当MV为分像素 MV时,通过插值得到分像素位置的像素值;当MV为整像素时,直接通过在参考图像中寻找对应位置即可得到预测值。当参考图像为单向时,直接进行单向的运动补偿过程;当参考图像为双向时,分别在两个方向进行运动补偿并得到各自的预测值,最终通过一定的权重进行加权得到最终的预测值。


更多关于视频编码的知识和资源,更精致的文章排版,欢迎关注博主微信公众号,一起交流、学习、进步!!!

【三】 VVC理论知识之帧间预测(1)相关推荐

  1. H.266/VVC帧间预测总结

    一.帧间预测基本原理 帧间预测是利用视频帧与帧之间的相关性,去除视频帧间的时间冗余信息.统计表明,帧间差绝对值超过3的像素平均不到一帧像素的4%,因此,采用高效的帧间编码方式,可以很大程度上提高视频压 ...

  2. HEVC参考软件HM源码分析--帧间预测(3)--predInterSearch

    帧间预测基本知识 对帧间预测有所了解的同学应该都知道,帧间预测操作一般都是由两个最基本也是最核心的操作组成:运动估计(ME)和运动补偿(MC). 运动估计:负责找到当前帧和参考帧之间的匹配运动矢量(M ...

  3. 【十六】 H.266/VVC | VVC中帧间预测技术详细总结 | 所有帧间预测技术代码汇总

    前言 ​ 帧间预测是影响视频编码性能的关键环节之一,H.266/VVC帧间预测在传统只能应对简单的平移运动的基础上,采用了仿射运动模型,可以描述更加复杂的缩放.旋转等运动.为了更好的发挥合并模式(Me ...

  4. H.266/VVC帧间预测技术学习:带有运动矢量差的Merge技术(Merge mode with MVD)

    在VVC的扩展Merge模式当中,当前CU生成的Merge list中选择一个率失真代价值最小的候选项直接作为自己的运动信息.除了常规Merge模式,VVC还引入了带运动矢量差(Merge mode ...

  5. H.266/VVC相关技术学习笔记20:帧间预测技术中的MMVD技术(Merge mode with MVD)

    今天介绍一下帧间预测技术中的MMVD技术(Merge mode with MVD),也称带有运动矢量差的融合技术,MMVD也属于基于Merge的技术中的一种,在解码端的语法元素中也属于Merge分支. ...

  6. VVC/VTM:帧间预测——Combined inter and intra prediction (CIIP)

    Combined inter and intra prediction (CIIP) CIIP,顾名思义,就是说对编码块进行帧间预测Pred_inter和帧内预测Pred_intra,将两个预测块加权 ...

  7. VVC帧间预测(十)帧间帧内联合预测CIIP

    帧间帧内联合预测(Combined inter and intra prediction ,CIIP),在HEVC中一个CU在预测时要么使用帧内预测要么使用帧间预测,二者只能取其一.而VVC中提出的C ...

  8. H.266/VVC帧间预测技术学习:帧间和帧内联合预测(Combined inter and intra prediction, CIIP)

    在HEVC中一个CU在预测时要么使用帧内预测要么使用帧间预测,二者只能取其一.而VVC中提出的CIIP技术,是将帧间预测信号与帧内预测信号相结合. 在VVC中,当CU以Merge模式编码时,且CU包含 ...

  9. H.266/VVC相关技术学习笔记21:帧间预测中五种Merge模式的熵编码方式

    今天主要详细讲一下帧间预测中五种Merge模式的熵编码方式,以及对应的VTM的代码中的编码方式的实现.现阶段VTM6.0中Merge模式大致上分为五种,分别是Subblock_Merge.MMVD_M ...

最新文章

  1. 这五款Python工具都是最常用的,尤其是第三种,初学者必须掌握的
  2. [Zjoi2015]诸神眷顾的幻想乡
  3. [转] createObjectURL方法 实现本地图片预览
  4. System.Timers.Timer与System.Threading.Timer
  5. Vue之vue-cli安装与简单调试
  6. 一套完整java项目 后台+管理+前端
  7. 解决Idea中Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:3.1.0配置问题
  8. 【解决】Vsftp匿名上传问题
  9. Java实现redis管道
  10. SLAM 无人车融合 IMU 前与 融合 IMU 后的实测效果演示
  11. DataGridView用法总结
  12. Oracle数据库常用Sql语句大全
  13. 如何将文字转换成二维码?
  14. 音乐频率的划分及播放器均衡器设置
  15. DRF框架(十四)——过滤Filtering,排序
  16. 《Metasploit魔鬼训练营》环境搭建与前两章经历体会
  17. 《易经》对中华文化的影响
  18. 利用ipv6技术,废旧笔记本变成互联网server
  19. 八位计算机最小二进制,八位二进制补码最小值
  20. 学了手内核的位运算(1):test_and_set_bit

热门文章

  1. Spyder 快捷键大全(转)
  2. php微信Emoji表情处理
  3. 2022年二级建造师考试矿业工程练习题及答案
  4. iOS 设计模式系列:Memento – 备忘录模式
  5. 阿里云mysql gtid_深入理解MySQL 5.7 GTID系列(八):GTID带来的运维改变
  6. Docker三剑客之swarm
  7. switch-case
  8. python显示文字框_python-Tkinter画布文本添加边框(轮廓)
  9. c#导出Excel NPOI方式
  10. VS2008序列号/注册码/90天试用版改…