• H.264学习笔记2——帧内预测


    帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测。

    A、4x4亮度块预测:

      用到的像素和预测方向如图:

        

      a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值。0~8是4x4的亮度块的9个预测方向(模式)。当E~H不可得时,用D代替。

      A~Q在下面情况下不可用:

        》不在当前图像或条带;在该4x4块之前还没有被编码;位于帧间编码宏块,且constrained_intra_pred为1;

      对于9个预测模式,简述如下:

        》模式0:垂直模式,条件:A~D可用。

        》模式1:水平模式,条件:I~L可用。

        》模式2:DC模式,条件:A~D或I~L可用。

        》模式3~8:方向模式,条件和预测值参考书籍。

      其中模式0~5的预测值计算方法如下图:

        

    B、16x16的亮度块预测:

      参考像素为左边16个、上边16个和左上1个共33个像素,分别记为p(-1,y)、p(x,-1)、p(-1,-1)。参考像素在下面情况下不可用:

        》不位于当前图像或条带;位于帧间宏块,且constrained_intra_pred为1;

      预测模式有4种:

        》模式0:垂直预测,条件:p(x,-1)可用;

        》模式1:水平预测,条件:p(-1,y)可用;

        》模式2:DC预测,条件:p(x,-1)或p(-1,y)可用;

        》模式3:平面(plane)预测。

    C、8x8的色度块预测:

      色度块类似16x16的亮度块,参考像素为17个,共垂直、水平、DC和平面1中预测模式。

    D、帧内预测模式的选择:

      亮度和色度的帧内预测,都有多种预测策略,因此实际应用中要选择最优的帧内预测策略。

      对于色度块预测,只能采用8x8的分块大小,只需要比较4中模式的代价(用RDO模型),选择代价最小的模式即可。

      对于亮度块预测,可以采用16x16和4x4的块大小,所以需要先后计算出9中4x4预测模式的最小代价(RDO模型)和4中16x16预测模式的最小代价(SATD公式),然后从中选择较小的预测模式。

    E、4x4亮度块的预测模式编码:

      由于4x4块有9种预测模式,如果完全编码需要4bits,所以根据该块周围(上和左)边的4x4块的预测方式来推断当前块的预测模式。如果推断的预测模式一直,则只需要传输1bit(pred_intra4x4_pred_mode_flags=0),否则传输需要4(rem_intra4x4_pred_mode为4x4亮度块预测模式的编码值)+1(pred_intra4x4_pred_mode_flags=1)=5bits。

  • 相关阅读:
    Markdown编辑器:Typora
    Makefile的编写
    【转】Java基础——成员变量、局部变量和静态变量的区别
    【转】jsp 和 servlet的联系和区别
    【转】keySet和entrySet的区别
    10月25日下午PHP静态、抽象、接口
    10月25日上午PHP继承多态
    10月24日下午PHP封装
    10月24日上午PHP面向对象
    MYSQL存储过程、游标、触发器
  • 原文地址:https://www.cnblogs.com/DwyaneTalk/p/4020729.html
Copyright © 2020-2023  润新知