• 4.1总结


    帧选择相关内容

    1. 帧间和帧内编码自动判断准则

    可以看出帧类型是有编码器自适应判断出来的,通过公式判断帧间的相关性(VAR)VAR

    值越小相关性越大,看其值和64做比较,当VAR<64的时候才用帧间模式,VAR>64的时候才用帧内模式。

    有特殊情况,当过去帧方差大(部分像素值变化大的时候),也会导致残差较大时候,可以才用帧间编码处理, 另外一个公示 当VAR>64,但是另外一个参数大于等于VAR的时候也才用帧间编码  详见(毕厚杰4.2.2.2)

    1. 然后如果才用帧间预测的话,由于使用的最小部分为宏块,所作预测是在宏块基础上做预测。首先根据过去帧和当前帧宏块匹配时候,求出该宏块的运动矢量x和y,分别表示帧的最佳匹配宏块比当前帧的宏块右移x个像素和下移y个像素,构成了当前帧的亮度预测帧。色度做x/2和y/2位移,组成当前色度预测帧。

    接着讲相应的当前帧块和预测帧块想减得到帧误差信号(残差信号)在对此帧误差信号进行DCT变换,量化厚传送到符合编码器。

    帧内预测基本步骤

    大概概念 查分脉冲编码(DPCM)在编码端对于提前到的像素点进行

    预测值是周围像素点的加权和

    一个序列的第一个图像叫做IDR图像(即立即刷新图像),有这个图像,如果解码器看到这个帧说明这是一帧新的图像,如果前面还有解码未完成之类的工作,则立刻清空缓存开始进行新的一帧的解析。IDR帧一定是I帧,防止误码传递。

    解码过程  根据这个加深理解

    NAL解码过程

    输入NAL单元  输出 封装在NAL单元中的RBSP语法单元

    8.2.1

    这个过程是输出TopFieldOrderCnt 和 BottomFieldOrderCnt

    图像顺序号是用来在解码B条带时决定参考图像顺序  这里后面应该看完再回来看

    每一个编码帧有两个图像顺序号 分别称为TopFieldOrderCnt和BottomFieldOrderCnt

    每一个编码场有一个图像顺序号,其顶场或底场分别称为TopFieldOrderCnt和BottomFieldOrderCnt

    每一个互补参考场对有两个图像顺序号,

    这两个参数TopFieldOrderCnt 和 BottomFieldOrderCnt分别指明了顶场和底场相对于前一个IDR图像的第一个输出场相对位置

    下一个poc解释,由于H.264使用了B帧预测,使得图像的解码顺序不一定等于播放顺序,但他们之间存在映射关系。H.264中一共定义了三种POC的编码方法,句法元素pic_order_cnt_type就是用来通知解码器改用哪种方法来就散POC,称之为POC类型。

    SPS包含的是针对一连续编码视频序列的参数,如标识符seq_parameter_set_id,帧数,及POC的约束,参考帧的数目,解码图像尺寸和帧场模式选择标识符等等。

    PPS对应的是一个序列中某一幅图像或者某几幅图像,其参数如标识符pic_parameters_set_id。可选的seq_parameter_set_id,熵编码模式选择标示,片组数目,初始量化参数和去方块滤波系数调整标示。

    运动估计

    得到运动矢量的过程称为运动估计

    得到运动估计的方法

    参考帧在时间上可以超前或滞后于当前帧,(后向运动估计,前向运动估计)当在参考帧中搜索到原来帧中的块的最佳匹配的时候,可以得到相应的运动矢量

    H.264编码标准与以往才用的视频压缩标准的最大不同在于,在运动估计过程中采用了多参考帧来提高预测精度。多参考帧预测就是在编解码端建立一个存储M个重建帧的缓存,当前的待编码块可以在缓存内的所有重建帧寻找最优的块进行运动补偿,以便更好的去除时间域的冗余度

    基于块的运动表示法

    一般将图像帧分为多个块,使得每个区域中的运动可以很好的用一个参数化模型表示,这称为块匹配法。即将图像分为nxn快(典型值为16x16宏块),为每一个宏块寻找一个运动矢量MV并进行运动补偿预测编码。

    详细的开始 

    一.预测编码的基本概念

    大体解释:经过压缩编码后传输的不是像素本身的取样值,而是该取样的预测值和实际值之差。

    1.1帧内预测编码

    自己总结过程 

    首先编码的视频时一帧一帧组成,本质就是 图像,图像本身的编码可以使用一种叫预测编码的方法,由于图形一般都有相关性,所以不想本来图像存储的是像素点的值我们要存储的是本身像素点和预测出来的一个值,在本帧之内就是用这种办法。

    另外一种是帧间编码,由于视频的多帧之间也存在相关性。所以对于一帧中可以通过查找的办法,找到跟当前帧块的某一个宏块相似的宏块,但是这两个宏块之间肯定有位移,这个位移就称为运动矢量。

    片类型其实不能决定帧内编码或者帧间编码

    Intra函数里面仍然需要判断一下slice的类型

    首先帧内和帧间预测使用的情景,也就是什么时候使用帧内预测什么时候使用帧间预测,这个是由本来的帧间相关性计算来决定的,通过公式计算出帧帧间的相关性,然后将帧分为IPB三种类型,I也就是intra,P也就是prediction ,b也就是bi-prediction 一般I帧就是使用的帧间预测,p帧一般使用帧内预测,但是只是单向的也就是在当前帧编码之前的帧,B帧一般是双向的可以使用以前的帧叶可以使用此帧之后的帧进行预测。

      帧内预测的难点在于它的搜索方法,每一个搜索方法对应了一个权值,4x4的宏块是十六中预测模式,16x16的宏块有四种预测模式。

    帧间预测的一个难点也在

  • 相关阅读:
    简单实现java线程池 阿里
    下载安装mysql的一些坑 阿里
    [ZZ]]文艺表年装B指南
    台湾前十大科技公司拼不过三星(往后一点三星都不要买啦!)
    [不是面经,胜似面经]条条大路通Google
    ubuntu 下PDA同步解决(SynCE, OpenSync)
    android整体印象
    关系图:Linux演化图,Ubuntu应用图
    linux 版本中 i386/i686/x8664/pcc 等... 的区别
    一个计算机高手的成长历程【转】
  • 原文地址:https://www.cnblogs.com/hatreds/p/2432651.html
Copyright © 2020-2023  润新知