• 帧场编码及帧间EC原理


    帧、场编码的个人理解

    一、概述

    原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有着不同的特性和编码特征,产生了所谓的帧编码和场编码。一般情况下,遂行帧进行帧编码,隔行帧可在帧编码和场编码间选取。

     

    在帧编码中,参考为帧图像,采用帧运动补偿,两个场是联合编码在场编码中,参考为场图像,两个场是分别编码,采用场运动补偿

    二、视频序列帧、场编码方式

    1.固定帧编码(全帧)----视频序列的全部帧始终采用帧编码方式。

    2.固定场编码(全场)

    视频序列中帧被分成两个场独立编码。编码规则:

    (1).I帧可编码成两个I场或一个I场和一个P场,即II、IP.

    (2).P帧可编码成两个P场或一个P场和一个B场,即PP、PB.

    (3).B帧可编码成两个B场,即BB.

    3.图像级帧、场自适应编码 (PAFF)

    视频序列能被编码成一个帧或两个场,自适应选择原则是根据采用该种编码方式的每一帧的RD值。

    4.宏块级帧、场自适应(MBAFF)

      为了进一步提高编码效率,采用了宏块级帧场自适应.宏块级采用了宏块对(MBP)为基本编码单元(如图2所示)

     

           H.264采用的MBAFF方案:

     

    在图像中运动比较大的地方采用场编码,运动比较小的地方采用帧编码,编码顺序例子如下:

    帧间EC原理和过程

    出错的宏块(图中灰色表示)根据上、下、左、右四个方向相邻宏块的不同分割情况及预测类型进行插值。将最后的结果中进行比较,选取边界像素差值之和最小者为最优的EC方案。其步骤为:

    1、判断相邻宏块左上角8*8块的预测模式是否大于REGMODE_SPLITTED,如果大于,则表示该宏块由4个不同类型的8*8块组成。否则,说明该宏块4个8*8块预测模式相同。

    2、如果相邻宏块由4个不同类型的8*8块组成,则首先选取第一个最邻近的8*8块(图中用Split1表示)的预测模式和运动向量作为错误宏块的预测模式和运动向量。以该预测模式和运动向量对错误宏块做EC,并计算边界像素差值之和。然后选取第二个最邻近的8*8块(图中用Split2表示)的预测模式和运动向量作为错误宏块的预测模式和运动向量做同样处理。

    3、如果相邻宏块的4个8*8的块预测模式相同,则直接选用左上角8*8块的预测模式和运动向量作为错误宏块的预测模式和运动向量做处理。

    4、最后比较所有预测模式和运动向量计算出的边界像素差值之和,最小者即为最佳。

    预测模式为REGMODE_INTER_COPY:

    既为帧间复制宏块。此时运动向量为0,错误宏块各像素值直接使用参考帧中同样位置的值

    预测模式为REGMODE_INTER_PRED:

    既为帧间预测宏块。

    【说明】:本分析过程是针对JM86进行的。

     

  • 相关阅读:
    程序的版式
    文件结构
    LIB和DLL的区别与使用
    静态链接库
    C++ Vector
    C++ Map
    C++ List
    快速实现十进制向二进制转换
    Fail2ban 运维管理 服务控制
    Fail2ban 配置详解 动作配置
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2613111.html
Copyright © 2020-2023  润新知