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


    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基础上还进行了别的运算来保证失真率。

    2. 搜索算法

    ·       dia 菱形

    • hex (default) 六边形
    • umh 可变半径六边形搜索(非对称十字六边形网络搜索)
    • star 星型
    • full 全搜索

    全搜索: 所有可能的位置都计算两个块的匹配误差,相当于原块在搜索窗口内一个像素一个像素点的移动匹配
    菱形搜索: 在x265中实际是十字搜索,仅对菱形对角线十字上的块进行搜索
    HM的则是全搜索和TZSearch以及对TZSearch的优化的搜索。

    3. 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。

  • 相关阅读:
    跨域是什么
    【剑指offer】05-替换空格
    【剑指offer】04-二维数组中的查找
    【剑指offer】03-变态跳台阶
    【剑指offer】02-青蛙跳台阶
    【剑指offer】01-斐波那契数列
    python面向对象-类和实例
    LibreOffice字体问题解决;从window复制到Ubuntu
    Far manager界面混乱问题解决
    Ubuntu-18.04.2-几个启动错误解决办法
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/12812792.html
Copyright © 2020-2023  润新知