HEVC帧间预测原理

一、帧间预测基本原理

   主要原理是为当前图像的每个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计( Motion Estimation,ME)。其中用于预测的图像称为参考图(Reference Frame),参考块到当前像素块的位移称为运动向量(Motion Vector, MV),当前像素块与参考块的差值称为预测残差( Prediction Residual )。

二、原理展开

    如果说按照每个像素去参考帧上面去找一个最匹配的像素,然后传输像素到参考像素的位移信息,那么编码处理的数据将非常大。在HEVC中处理是将图像划分成一个一个块,这些块就称为pu块。然后基于块去找匹配块,每个块传输一个块的位移信息。 块怎么划分的?块是基于一定的准则进行,这个准则就是在编出来的码流大小和编码误差取到一个平衡点。

  • 怎么提高帧间预测的精度

  1. 1 CU块划分成PU

    为了尽量提高运动补偿的精度,HEVC帧间预测的编码块 支持更多的预测块划分模式。基于不同的划分模式 ,每个 CU 可以经过不同的划分,得到多个 PU。不同大小块的组合 使得编码器可以根据视频内容自适应地选择块大小,例如对于多细节运动区域以及两个具有不同运动形式的不规则物体的边界处可以使用小块,而静止区域或大面积共同运动区域可以使用较大的块。            

  1. 2、亚像素插值

    在实际场景中,由于物体运动的距离并不一定是像素的整数倍,因此需要将运动估计的精度提升到亚像素级别。H.265/HEVC沿用了,上一代标准H.264/AVC所使用的1/4 像素精度运动估计,并进一步发展了其亚像素插值算法。相比于H.264/AVC中的6抽头滤波器(用于半像素精度)以及两点内插(用于1/4像素精度)方法,H.265/HEVC使用了更多的邻近像素点进行亚像素精度插值。 为实现 1/K 像 素精度估计,必须将这些分数像素点的值近似内插出来,即对参考帧的行方向和列 方向进行 K 倍内插。如 K=2,须在 1/2 像素处进行插值,在插值后的图像中进行搜 索,称为半像素精度估计。

  • 怎么去减少帧间预测的数据量

       从前面的基本原理知道,帧间模块生成的码流数据包括两个部分 一个是预测残差一个运动向量mv。残差由后面的变化 量化过程去减少数据量。

      mv则需要其他技术来减少数据量。hevc利用Merge 和AMVP 技术,利用时域或空域的mv来预测当前mv。 merge 不需要传输mv的残差(mvd),AMVP 需要传输(mvd)。

      总的来说虽然运动估计的帧间预测大大压缩了原始视频的数据量,但仍然需要将运动矢 量本身的数据传送到解码器,若对每个块的运动矢量都进行编码,那么编码也极其 复杂。视频图像中的物体往往会覆盖多个块,基于运动的一致性,邻近块之间应该 存在着很强的相关性。利用此相关性在先前已编码的邻近块的运动矢量进行预测, 此时,只需将当前运动矢量和预测运动矢量之间的差值传输到解码器,就可以有效 地压缩运动矢量的编码比特数。

运动矢量的预测方式有两种:空域预测和时域预测。

  •  空域预测方式

       空域候选从与当前PU相邻的5个PU中,挑选最多4个PU的运动信息添加到候选列表中,如图所示的A0、A1、B0、B1和B2。但并非所有的空域相邻PU都可得,当相应的候选不可用,不被添加到候选列表中。加入候选列表的顺序为A1、B1、B0、A0和

B2。                    

HEVC帧间预测原理_第1张图片

  •    时域预测方式

    记当前预测单元为Cur_PU,参考帧列表中距离当前帧最近的一个参考帧为Col_Pic,其中“同一位置”上的预测块为Col PU, Col_PU的参考帧为Col_Ref. tb分别表示当前图像cur_ pic、同位图像col_ pic 与二者参考图像cur_ ref、col_ ref 之间的距离。则当前PU的时域候选MV可由下式计算:

       curMV =(td/tb)*colMV

其中colMV为“同一位置”PU的MV。

HEVC帧间预测原理_第2张图片

同一位置”的选择如下图所示,首先选择C3,若Co不可用则选择H。

HEVC帧间预测原理_第3张图片

  •     1、merge技术

    merge顾名思义 就是融合,就是本来应该是每个pu一个mv,现在因为pu之间的相关性,使得空域或者时域上面多个pu用的都是同一个mv了。多个pu就相当于融合一个pu了。

    Merge 模式下,HEVC 在时间域、空间域预测得到运动矢量,比特流中不含有任何运动信息,解码端对当前编码块进行时间域及空间域的预测形成一个候选列表,由编码器选择其中最优的一个作为当前块的运动参数并编码其索引值。另一个不同点是,MERGE模式侧重于将当前块与周边已编码的预测块进行融合,形成运动参数一致的不规则区域,从而改进四叉树分解中固定的方块划分的缺点。

     融合的目标候选块有两类:空间上相邻的已编码块和时间上相邻的已编码块。在空间相邻块中最多可以从5个不同位置上选择其中的4个;在时间相邻块中最多可以从2个中选择一个。在候选块的选择过程中要去除其中运动参数重复的候选块,同时还要去除其中使得与当前预测块融合后形成一个等同于2N x 2N的预测块的候选块。当候选块的个数不超过设定的最大值时,由已有的候选块的运动参数产生新的运动参数或者用0进行填补。

  •        2、AMVP技术

        对于AMVP模式的帧间预测模式,运动向量的预测器同样也是从几个候选值中选取。在对运动向量进行差分编码时,需要传输所选最优候选预测器的索引值以及运动向量的预测残差。AMVP模式空域候选值与MERGE模式中空域候选值的位置一样,不同的是,AMVP模式从{A0,A1}和{B0,B1, B2}中分别按顺序选择第一个可用的加入到候选预测器列表中。AMVP模式候选预测器的个数固定为2个,当以上选择的候选预测器少于2个时,则加入时域上相邻块的运动向量,选择的方法与MERGE模式相同。最后,若候选预测器的个数仍然小于2,则用值为0的运动向量填补。对于空间相邻块得到的运动向量预测器,根据其参考帧与当前参考帧的不同做相应的缩放。实际的运动向量需要通过运动估计得到,将预测器的数量减少到2可以降低运动估计的复杂度。同时,因为在AMVP模式中还需要编码运动向量的预测残差,所以减少预测器的数量不会给编码效率带来太大影响。

  • AMVP怎么得到MVD

依周边预测的MV(MVP)为起点 搜索出来失真最小的 点 计算到最佳mv。最佳mv - mvp。

 

你可能感兴趣的:(编解码)