zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/12812792.html
Copyright © 2011-2022 走看看