• H.264的SliceSlice类型

    2016-04-15 17:30:56
    一、基本概念 一个视频图像可编码成一个或更多个条带,每个条带包含整数个宏块(MB),即每个条带至少一个MB,最多时每个条带包含整个图像的宏块。总之,一幅图像中每个条带的宏块数不一定...Slice的类型如表1所示
    一、基本概念

    一个视频图像可编码成一个或更多个条带,每个条带包含整数个宏块(MB),即每个条带至少一个MB,最多时每个条带包含整个图像的宏块。总之,一幅图像中每个条带的宏块数不一定固定。设条带的目的是为了限制误码的扩散和传输,应使编码条带相互间是独立的。某个条带的预测不能以其它条带中的宏块为参考图像,这样某一条带中的预测误差才不会传播到其它条带中去。

    Slice的类型如表1所示

    表1 Slice的类型


    说明:

    1、I宏快是指每个块或宏块是通过其所在的Slice中的之前的已经编码过的数据进行预测的;

    2、P宏块是指宏快或宏块分割是通过List0中的一个参考图像来进行预测的;

    3、B宏快是指宏快或宏块分割是通过List0和/或List1中的参考图像来进行预测的;

    4、SI和SP:即Switch I和Switch P,是一种特殊的编解码条带,可以保证在视频流之间进行有效的切换,并且解码器可以任意的访问。比如,同一个视频源被编码成各种码率的码流,在传输的过程中可以根据网络环境进行实时的切换;

    5、SI宏块是一种特殊类型的内部编码宏块,按Intra_4x4预测宏块编码。

    二、条带头语法元素slice_type

    slice_type是条带头语法元素,用于标识条带的编码类型,如表2所示:

    表2 slice_type的类型关联

    可能会感觉有些奇怪,0到4与5到9不是重复了么?是这样,slice_type的值在5到9的范围内表示,除了当前条带的编码类型,所有当前编码图像的其他条带的slice_type的值应与当前条带的slice_type的值一样,或者等于当前条带的slice_type的值减5。

    对于IDR图像,slice_type的值应为2、4、7或者9。

    如果num_ref_frames的值为0,slice_type的值应为2、4、7或者9。其中,num_ref_frames是SPS的语法元素,规定了可能在视频序列中任何图像帧间预测的解码过程中用到的短期参考帧和长期参考帧、互补参考场对以及不成对的参考场的最大数量。

    展开全文
  • 《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此事要躬行...

    《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!

    “纸上得来终觉浅,绝知此事要躬行”,只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会!

    链接地址:H.264/AVC视频编解码技术详解

    GitHub代码地址:点击这里

    H.264中的条带(Slice)

    1. Slice的概念

    我们已经知道,整个H.264的码流结构可以分为两层:网络抽象层NAL和视频编码层VCL。在NAL层,H.264的码流表示为一系列的NAL Units,不同的NAL Units中包含不同类型的语法元素。前面两篇中所解析的序列参数集SPS和图像参数集PPS就是其中重要的两个部分,其中包含了控制解码过程的一些通用的参数。

    实际保存原始视频的图像数据的部分保存在其他的VCL层的NAL Units中。这部分数据在码流中称作是条带(Slice)。一个Slice包含一帧图像的部分或全部数据,换言之,一帧视频图像可以编码为一个或若干个Slice。一个Slice最少包含一个宏块,最多包含整帧图像的数据。在不同的编码实现中,同一帧图像中所构成的Slice数目不一定相同。

    在H.264中设计Slice的目的主要在于防止误码的扩散。因为不同的slice之间,其解码操作是独立的。某一个slice的解码过程所参考的数据(例如预测编码)不能越过slice的边界。

    2. Slice的类型

    根据码流中不同的数据类型,H.264标准中共定义了5总Slice类型:

    • I slice: 帧内编码的条带;
    • P slice: 单向帧间编码的条带;
    • B slice: 双向帧间编码的条带;
    • SI slice: 切换I条带,用于扩展档次中码流切换使用;
    • SP slice: 切换P条带,用于扩展档次中码流切换使用;

    在I slice中只包含I宏块,不能包含P或B宏块;在P和B slice中,除了相应的P和B类型宏块之外,还可以包含I类型宏块。

    3. Slice的组成

    每一个Slice总体来看都由两部分组成,一部分作为Slice header,用于保存Slice的总体信息(如当前Slice的类型等),另一部分为Slice body,通常是一组连续的宏块结构(或者宏块跳过信息),如下图所示:
    在这里插入图片描述

    4. Slice Header结构

    Slice header中主要保存了当前slice的一些全局的信息,slice body中的宏块在进行解码时需依赖这些信息。其中比较常见的一些语法元素有:

    1. first_mb_in_slice: 当前slice中包含的第一个宏块在整帧中的位置;
    2. slice_type:当前slice的类型;
    3. pic_parameter_set_id:当前slice所依赖的pps的id;
    4. colour_plane_id:当标识位separate_colour_plane_flag为true时,colour_plane_id表示当前的颜色分量,0、1、2分别表示Y、U、V分量。
    5. frame_num:表示当前帧序号的一种计量方式。
    6. field_pic_flag:场编码标识位。当该标识位为1时表示当前slice按照场进行编码;该标识位为0时表示当前slice按照帧进行编码。
    7. bottom_field_flag:底场标识位。该标志位为1表示当前slice是某一帧的底场;为0表示当前slice为某一帧的顶场。
    8. idr_pic_id:表示IDR帧的序号。某一个IDR帧所属的所有slice,其idr_pic_id应保持一致。该值的取值范围为[0,65535]。
    9. pic_order_cnt_lsb:表示当前帧序号的另一种计量方式。
    10. delta_pic_order_cnt_bottom:表示顶场与底场POC差值的计算方法,不存在则默认为0;
    11. slice_qp_delta:用于计算当前slice内所使用的初始qp值。

    整个slice header的结构如下表所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • H.265仍然采用混合编解码编解码结构域H.264基本一致, 主要的不同在于: 1.编码块划分结构:采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。 2.基本细节:各功能块的内部细节有...

    硕士毕业后,一直从事算法工程师,具有丰富的深度学习,图像视频处理经验,因此录制了一些课程,欢迎大家观看,有问题可以找我私聊:QQ:81664352,谢谢
    基于web端的人脸识别算法视频教程
    1.掌握深度学习图像处理(基于keras、tensorflow、opencv)
    2.掌握web前后端设计(基 于flask框架)
    3.开发基于web端的深度学习图像,把web端应用与人工智能相结合
    [视频教程]
    https://edu.csdn.net/course/detail/28400/391614?pre_view=1

     

    H.264与H.265的主要差异

    H.265仍然采用混合编解码,编解码结构域H.264基本一致,

    主要的不同在于:

    1.编码块划分结构:采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。

    2.基本细节:各功能块的内部细节有很多差异

    3.并行工具:增加了Tile以及WPP等并行工具集以提高编码速度

    4.滤波器:在去块滤波之后增加了SAO(sample adaptive offset)滤波模块

     

    H.265的框架图

     

    PSNR计算方式

    各模块技术差异汇总

    HEVC定义了33种预测角度的集合,其精度为1/32。根据经验,图像内容中水平和垂直一致通常出现的概率超过其他方向一致。相邻方向之间的角度差越接近这两个方向便越小,越靠近对角线方向便越大,其目的在于在接近水平和垂直模式时可以提供更加精准的预测结果,而在出现机会较低的对角方向减小预测的运算负荷。

    DC模式,所有预测像素值都是同一个值,也即参考数据的均值,这也是DC模式命名的由来。

    Plane模式,二维预测除了利用本行的相邻像素点进行预测外,还使用前一行的像素点进行预测。通过给不同行的像素值赋予相应的加权值,最后获得预测值。

    首先从参考数据中获取的是顶行和左列的数据,并记录一下左下角和右上角的两个像素值。然后计算底行和右列的数据,方法是用左下角的像素减去顶行相应位置的像素得到底行,右上角的像素减去左列相应位置的像素得到右列。预测块中每个像素的数据,就是对应的四个边的像素值的平均

    我们假设左上角起,上方那一行是17个像素是a1 b2 c3 d4 e5 f6 g7 h8 i9 j8 k7 l6 m5 n4 o3 p2 q1,用这17个像素计算一个H值。

    我在上面标了1~9~1的数字,有数字相同的8对像素,后面计算的时候,都是一对对的计算的。

    i9;j8 - h8;k7 - g7;l6 - f6;m5 - e5;n4 - d4;o3 - c3;p2 - b2;q1 - a1,这九对分别乘以权重0到8(也就是i9这个像素没有用到),而最左边和最右边两个像素权重最大。

    同理V值,也是一样的算法,从上到下像素记作带'的(当然a1' = a1)。

    然后计算一个A值,它等于右上角(q1)和左下角(V值计算时候对应的那个q1')的和乘以16

    计算一个B值,它等于(5*H+32)/64,计算一个C值,C=(5*V+32)/64,这种后面加了32又除以64的,其实都是用来四舍五入的。

    然后就能计算我们的预测值了。

    i00 = A - 7*B -7*C + 16

    pix[0][0] = i00 / 32(超出0到255范围的要截断成0或者255)

    然后计算第一行十六个像素分别是i00 + B到i00 + 15*B,然后除以32(然后截断到0~255)

    第二行是在第一行基础上加了一个C,一直到第16行,加了15个C,于是这256个像素都算出来了。

     

     

     

      

    块划分结构

    在H.265中,将宏块的大小从H.264的16×16扩展到了64×64,以便于高分辨率视频的压缩。

    同时,采用了更加灵活的编码结构来提高编码效率,

    包括编码单元(CodingUnit)、预测单元(PredictUnit)和变换单元(TransformUnit)。

    如下图所示:

     

    其中:

    编码单元类似于H.264/AVC中的宏块的概念,用于编码的过程。

    预测单元是进行预测的基本单元,

    变换单元是进行变换和量化的基本单元。

    这三个单元的分离,使得变换、预测和编码各个处理环节更加灵活,

    也有利于各环节的划分更加符合视频图像的纹理特征,

    有利于各个单元更优化的完成各自的功能。

    RQT是一种自适应的变换技术,这种思想是对H.264/AVC中ABT(AdaptiveBlock-size Transform)技术的延伸和扩展。

    对于帧间编码来说,它允许变换块的大小根据运动补偿块的大小进行自适应的调整;

    对于帧内编码来说,它允许变换块的大小根据帧内预测残差的特性进行自适应的调整。

    大块的变换相对于小块的变换,一方面能够提供更好的能量集中效果,并能在量化后保存更多的图像细节,但是另一方面在量化后却会带来更多的振铃效应。

    因此,根据当前块信号的特性,自适应的选择变换块大小,如下图所示,可以得到能量集中、细节保留程度以及图像的振铃效应三者最优的折中。

     

    帧内预测模式

    本质上H.265是在H.264的预测方向基础上增加了更多的预测方向

    H.265:所有尺寸的CU块,亮度有35种预测方向,色度有5种预测方向

    H.264:亮度 4x4块9个方向,8x8块9个方向,16x16块4种方向,色度4种方向

    H.264的帧内预测方向:

    H.265的帧内预测方向:

    6.    帧间预测

    本质上H.265是在H.264基础上增加插值的抽头系数个数,改变抽头系数值以及增加运动矢量预测值的候选个数,以达到减少预测残差的目的。

    H.265与H.264一样插值精度都是亮度到1/4,色度到1/8精度,但插值滤波器抽头长度和系数不同.

    H.265的增加了运动矢量预测值候选的个数,而H.264预测值只有一个

     

    H.265的空域候选项:

    H.265时域共同位置候选项

    去块滤波

    本质上H.265的去块滤波与H.264的去块滤波及流程是一致的,做了如下最显著的改变:

    Ø  滤波边界: H.264最小到4x4边界滤波;而H.265适应最新的CU、PU和TU划分结构的滤波边缘,最小滤波边界为8x8,

    Ø  滤波顺序:H264先宏块内采用垂直边界,再当前宏块内水平边界;而H.265先整帧的垂直边界,再整帧的水平边界

    ALF自适应环路滤波

    ALF在编解码环路内,位于Deblock和SAO之后,

    用于恢复重建图像以达到重建图像与原始图像之间的均方差(MSE)最小。

    ALF的系数是在帧级计算和传输的,可以整帧应用ALF,

    也可以对于基于块或基于量化树(quadtree)的部分区域进行ALF,

    如果是基于部分区域的ALF,还必须传递指示区域信息的附加信息。

    采样点自适应偏移(Sample AdaptiveOffset)滤波

    SAO(sample adaptive offset)滤波其实就是对去块滤波后的重建像素按照不同的模板进行分类,并对每一种分类像素进行补偿, 分类模板分为BO(Band offset)和EO(Edge offset)。

     

    BO分类:

     

    EO分类模块:

    SAO在编解码环路内,位于Deblock之后,通过对重建图像的分类,对每一类图像像素值加减一个偏移,达到减少失真的目的,从而提高压缩率,减少码流。

    采用SAO后,平均可以减少2%~6%的码流,而编码器和解码器的性能消耗仅仅增加了约2%。

     

    并行化设计

    当前芯片架构已经从单核性能逐渐往多核并行方向发展,因此为了适应并行化程度非常高的芯片实现,HEVC/H265引入了很多并行运算的优化思路, 主要包括以下几个方面:

    (1)Tile

    如图3所示,用垂直和水平的边界将图像划分为一些行和列,划分出的矩形区域为一个Tile,每一个Tile包含整数个LCU(Largest Coding Unit),Tile之间可以互相独立,以此实现并行处理:

    Tile划分示意图

    (2 Entropy slice

    Entropy Slice允许在一个slice内部再切分成多个Entropy Slices,每个Entropy Slice可以独立的编码和解码,从而提高了编解码器的并行处理能力:

    Entropy Slice的概念是Sharp公司提出的,现在改名为lightweighted slice(轻量级slice?),这个提案主要解决的问题是针对H.264 Slice切分的一些缺点:

    1. H.264的熵编码以slice为单位,这可能会造成各个slice之间的编码负担不均衡,有的slice负担重,有的则负担轻。理论上多切分一些slice有助于在多核计算机上提高负载均衡能力。

    2.但是过多的Slice切分会造成压缩效率降低。

    在测试中,一个1080p的图像被分为一个slice和32个entropyslice,编码效率损失极小。

    在提案中sharp还提出了一个CPU+GPU混合编码的方案,熵编码由多核CPU进行而重建则由GPU进行,可以大幅提高编码速度,如下图所示。

     

     

    2) Slice

    Slice是一帧中按光栅扫描顺序排列的CTU序列,一帧可以由多个slice组成,每个Slice可以独立解码,因为slice内像素的预测不能跨越slice的边界。每个slice可按照编码类型的不同分成I/P/B slice。该结构的主要目的是实现在传输中遭遇数据丢失后的重新同步。每个slice可携带的最大比特数通常受限,因此根据视频场景的运动程度,slice所包含的CTU数量可能有很大不同。

    3) Dependent Slice

    Dependent slice,其解码或编码的起始熵编码CABAC上下文状态是以上一个slice为基础,因此它不能完成数据丢失后的重新同步,该技术可以理解为对原先NALU数据的进一步拆分,可以适合更加灵活的打包方式。

    (4)一幅图像可以被划分为若干个Slice,也可以划分为若干个Tile,两者划分的目的都是为了进行独立编码。某些Slice中可以包含多个Tile,同样某些Tile中也可以包含多个Slice。Tile包含的CTU个数和Slice中的CTU个数互不影响。

     

    不同点:

    划分方式:Tile为矩形,Slice为条带形。

    组成结构:Slice由一系列的SS组成,一个SS由一系列的CTU组成。而Tile直接由一系列CTU组成。

     

     

    WPP(Wavefront Parallel Processing)

    上一行的第二个LCU处理完毕,即对当前行的第一个LCU的熵编码(CABAC)概率状态参数进行初始化,如图所示。因此,只需要上一行的第二个LCU编解码完毕,即可以开始当前行的编解码,以此提高编解码器的并行处理能力:

    以一行LCU块为基本的并行单元,每一行LCU为一个子码流

     

    Entropy Slice允许在一个slice内部再切分成多个EntropySlices,这样熵编解码器可以并行编码或解码,从而提高了并行处理能力。

    需要注意的是一个entropy slice不能跨越slice边界,也就是一个slice可以含有多个entropy slice,但是一个entropy slice只能属于一个slice,如下图所示:

     

    码率控制方法

    CBR(Constant Bit Rate)是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定。这种算法优先考虑码率(带宽)。

    这个算法也算是码率控制最难的算法了,因为无法确定何时有motion发生,假设在码率统计窗口的最后一帧发生motion,就会导致该帧size变大,从而导致统计的码率大于预设的码率,也就是说每秒统计一次码率是不合理的,应该是统计一段时间内的平均码率,这样会更合理一些。

      

    VBR(Variable Bit Rate)动态比特率,其码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高,Motion发生时,马赛克很少。码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率(似乎码字更合适),图像内容复杂则分配较多的码字,这样既保证了质量,又兼顾带宽限制。这种算法优先考虑图像质量。

     

     

    展开全文
  • 最近在研究音视频编解码这一块儿,看到@bitbit大神写的【各种音视频编解码学习详解】这篇文章,非常感谢,佩服的五体投地。奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读。大神博客传送门:...

       最近在研究音视频编解码这一块儿,看到@bitbit大神写的【各种音视频编解码学习详解】这篇文章,非常感谢,佩服的五体投地。奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读。大神博客传送门:https://www.cnblogs.com/skyofbitbit/p/3651270.html。若读过@bitbit大神写的【各种音视频编解码学习详解】这篇文章,就不用向后看啦

    在上次对MPEG-2的学习整理中,有一个疑惑,双声道理解,就是左右立体声,但是5.1声道是什么?我们经常看到杜比5.1声道的说法。“0.1”声道具体指什么?今天去wiki查了一下,相关内容也整理入我们的学习笔记。本文档资料来源:

    5.1声道

      使用杜比数字技术下,最标准常用的是5.1声道设置,但杜比数字容许一系列不同声道的选择。全部可供选择的声道如下列所示:

    • 单声道(中央)
    • 双声道立体声(左、右),选择性地交叉应用杜比环回
    • 三声道立体声(左、中、右)
    • 双声道立体声加单环回(左、右、环回)
    • 三声道立体声加单环回(左、中、右、环回)
    • 四声道环回立体声(左前、右前、左后、右后)
    • 五声道环回立体声(左前、中、右前、左后、右后)

      以上所有这些设置可选择性地使用低频效果和杜比数字EX矩阵编码中加入附加后环绕声道。杜比编码技术是向下兼容 的,很多杜比播放器/解码器均备有向下混音作用是发布不同声道至可供使用的扬声器。这包括一些功能例如声音数据通过前扬声器播放(如适用),和当中央扬声器不适用时发布中央频道至左或右扬声器。或当用户只有2.0喇叭时,杜比解码器能把多声道信号混音编码为 2.0立体声。

      在5.1, 7.1 或其他等文字中,'.1'指的是低频LFE声道。

      其实5.1声道就是使用5个喇叭和1个超低音扬声器来实现一种身临其境的音乐播放方式,它是由杜比公司开发的,所以叫做“杜比5.1声道”。在5.1声道系统里采用左(L)、中(C)、右(R)、左后(LS)、右后(RS)五个方向输出声音,使人产生犹如身临音乐厅的感觉。五个声道相互独立,其中“.1” 声道,则是一个专门设计的超低音声道。正是因为前后左右都有喇叭,所以就会产生被音乐包围的真实感。如右图所示。

    MPEG-4

    总体介绍

      MPEG-4是一套用于音频、视频信息的压缩编码标准, 由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“動態影像专家组”(Moving Picture Experts Group,即MPEG) 制定,第一版在1998年10月通過,第二版在1999年12月通過。MPEG-4格式的主要用途在於網上流媒体、光碟、語音傳送(視訊電話),以及電視廣播。MPEG-4作为ISO/IEC14496正式发布。ISO/IEC 14496-Coding of audio-visual object (AV对象编码)。

      为了应对网络传输等环境,传统的 MPEG-1/2 已经不能适应,所以促使了 MPEG-4 的诞生。 与 MPEG-1和MPEG-2相比,MPEG-4的特点是其更适于交互AV服务以及远程监控。MPEG-4是第一个使你由被动变为主动(不再只是观看,允许 你加入其中,即有交互性)的动态图像标准,它的另一个特点是其综合性。从根源上说,MPEG-4试图将自然物体与人造物体相溶合 (视觉效果意义上的)。MPEG-4的设计目标还有更广的适应性和更灵活的可扩展性。 MPEG-4 采用了一系列新技术,来满足在低带宽下传输较高视频质量的需求。DivX,XviD,MS MPEG4 都是采用的MPEG-4 视频编码,除了在 DVDRip 上面的应用,3GPP现在也接纳了 MPEG-4 作为视频编码方案。

      最初MPEG-4的主要目的是用于低比特率下的视频通信,但是作为一个多媒体的编码标准,它的范围最后得到了扩展。在技术方面MPEG-4允许不同的软件/硬件开发商创建多媒体对象来提供更好的适应性、灵活性,为数字电视,动态图像,互联网等业务提供更好的质量。  

      MPEG-4提供范围从每秒几k比特到每秒数十兆比特的,它具有下面功能:

    • 改善MPEG-2的编码效率
      • MPEG-4基于更高的编码效率。同已有的或即将形成的其它标准相比,在相同的比特率下,它基于更高的视觉听觉质量,这就 使得在低带宽的信道上传送视频、音频成为可能。同时MPEG-4还能对同时发生的数据流进行编码。一个场景的多视角或多声道数据流可以高效、同步地合成为 最终数据流。这可用于虚拟三维游戏、三维电影、飞行仿真练习等。
    • 提供混合媒体数据(视频,音频,语音)的编码能力
    • 差错容忍使得内容稳定传输。
      • 当在传输有误码或丢包现象时,MPEG4受到的影响很小,并且能迅速恢复。
    • 提供受众视听场景的互动能力,MPEG-4终端用户提供不同的对象支持各种互动要求。
      • MPEG-4提供了基于内容的多媒体数据访问工具,如索引、超级链接、上传、下载、删除等。利用这些工具,用户可以方便地 从多媒体数据库中有选择地获取自己所需的与对象有关的内容,并提供了内容的操作和位流编辑功能,可应用于交互式家庭购物,淡入淡出的数字化效果等。 MPEG-4提供了高效的自然或合成的多媒体数据编码方法。它可以把自然场景或对象组合起来成为合成的多媒体数据。
    • MPEG-4对传输数据网是透明的,它可以兼容各种网络。
      • MPEG-4提供了易出错环境的鲁棒性,来保证其在许多无线和有线网络以及存储介质中的应用,此外,MPEG-4还支持基于内容的的可分级性,即把内容、质量、复杂性分成许多小块来满足不同用户的不同需求,支持具有不同带宽,不同存储容量的传输信道和接收端。
      • 这些特点无疑会加速多媒体应用的发展,从中受益的应用领域有:因特网多媒体应用;广播电视;交互式视频游戏;实时可视通 信;交互式存储媒体应用;演播室技术及电视后期制作;采用面部动画技术的虚拟会议;多媒体邮件;移动通信条件下的多媒体应用;远程视频监控;通过ATM网 络等进行的远程数据库业务等。

    MPEG-4视频编码核心思想

      在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着 眼于图像信号的统计特性来设计编码器,属于波形编码的范畴。第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷:

    • 将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;
    • 不能对图像内容进行访问、编辑和回放等操作;
    • 未充分利用人类视觉系统(HVS,Human Visual System)的特性。

      MPEG-4则代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。

      AV对象(AVO,AudioVisual Object)是MPEG-4为支持基于内容编码而提出的重要概念。对象是指在一个场景中能够访问和操纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据。在MPEG-4中所见的视音频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些 不同的AV场景由不同的AV对象组成。AV对象是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像。原 始AV对象具有高效编码、高效存储与传输以及可交互操作的特性,它又可进一步组成复合AV对象。因此MPEG-4标准的基本内容就是对AV对象进行高效编 码、组织、存储与传输。AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4的核心编码技术。

      MPEG-4实现基于内容交互的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩。因此视频对象提取即视频对象分割,是MPEG-4视频编码的关键技术,也是新一代视频编码的研究热点和难点。

      MPEG-4不仅可提供高压缩率,同时也可实现更好的多媒体内容互动性及全方位的存取性,它采用开放的编码系统,可随时加入新的编码算法模块,同时也可根据不同应用需求现场配置解码器,以支持多种多媒体应用。

    MPEG-4各部分

      MPEG-4由一系列的子标准组成,被称为部,包括以下的部分。对于媒体编解码,重点关注Part2,Part 3, Part 10。

    第一部(ISO/IEC 14496-1):系统

      描述视訊和音訊的同步以及混合方式(Multiplexing,简写为MUX)。定义了 MP4 容器格式, 支持类似 DVD 菜单这样的直观和互动特性等。

    第二部(ISO/IEC 14496-2):视频

      定义了一个对各种视觉信息(包括视訊、静止纹理、计算机合成图形等等)的编解码器。对视訊部分来说,众多”Profiles”中很常用的一种是Advanced SimpleProfile (ASP),例如XviD编码就 属于MPEG-4Part 2。包括 3ivx, DivX4/Project Mayo, DivX 5, Envivio,ffmpeg/ffds, mpegable, Nero Digital, QuickTime, Sorenson, XviD 等常见的视频格式, 需要注意的是 Divx 3.11, MS MPEG-4, RV9/10, VP6,WMV9 并不属于标准的 MPEG-4 标准。

    第三部(ISO/IEC 14496-3):音频

      定义了一个对各种音訊信号进行编码的编解码器的集合。包括高级音訊编码(Advanced Audio Coding,缩写为AAC) 的若干变形和其他一些音频/语音编码工具。即 AAC 音频标准, 包括 LCAAC, HE AAC 等, 支持 5.1 声道编码, 可以用更低的码率实现更好的效果 (相对于 MP3, OGG 等) 。

    第四部(ISO/IEC 14496-4):一致性

      定义了对本标准其他的部分进行一致性测试的程序。

    第五部(ISO/IEC 14496-5):参考软件

      提供了用于演示功能和说明本标准其他部分功能的软件。

    第六部(ISO/IEC 14496-6):多媒体传输集成框架

      即DMIF:Delivery Multimedia IntegrationFramework

    第七部(ISO/IEC 14496-7):优化的参考软件

      提供了对实现进行优化的例子(这裡的实现指的是第五部分)。

    第八部(ISO/IEC 14496-8):在IP网络上传输

      定义了在IP网络上传输MPEG-4内容的方式。

    第九部(ISO/IEC 14496-9):参考硬件

      提供了用于演示怎样在硬件上实现本标准其他部分功能的硬件设计方案。

    第十部(ISO/IEC 14496-10):进阶视频编码,也即ITU H.264,常写为H.264/AVC

      或称高级视频编码(Advanced Video Coding,缩写为AVC):定义了一个视频编解码器(codec),AVC和XviD都属于MPEG-4编码,但由于AVC属于MPEG-4Part 10,在技术特性上比属于MPEG-4 Part2的XviD要先进。另外从技术上讲,它和ITU-T H.264标准是一致的,故全称为MPEG-4 AVC/H.264。

    第十一部(ISO/IEC 14496-11):场景描述和应用引擎

      可用于多种profile(包括2D和3D版本)的互交互媒体。修订了MPEG-4 Part 1:2001以及Part1的两个修订方案。它定义了应用引擎(交付,生命周期,格式,可下载Java字节代码应用程序的行为),二进制场景格式 (BIFS:Binary Format for Scene),可扩展MPEG-4文本格式(一种使用XML描述MPEG-4多媒体内容的文本格式)系统level表述。也就是MPEG-4 Part21中的BIFS,XMT,MPEG-J。

    第十二部(ISO/IEC 14496-12):基于ISO的媒体文件格式

      定义了一个存储媒体内容的文件格式。

    第十三部(ISO/IEC 14496-13):IP

      知识产权管理和保护(IPMP for Intellectual Property Management and Protection)拓展。

    第十四部(ISO/IEC 14496-14):MPEG-4文件格式

      定义了基于第十二部分的用于存储MPEG-4内容的視訊檔案格式。

    第十五部(ISO/IEC 14496-15):AVC文件格式

      定义了基于第十二部分的用于存储第十部分的视频内容的文件格式。

    第十六部(ISO/IEC 14496-16):动画框架扩展

      动画框架扩展(AFX : Animation Framework eXtension)。

    第十七部(ISO/IEC 14496-17):同步文本字幕格式

      尚未完成-2005年1月达成”最终委员会草案”,FCD: Final Committee Draft。

    第十八部(ISO/IEC 14496-18):字体压缩和流式传输(针对公开字体格式)。

    第十九部(ISO/IEC 14496-19):综合用材质流(Synthesized TextureStream)。

    第二十部(ISO/IEC 14496-20):简单场景表示

      LASeR for Lightweight Scene Representation,尚未完成-2005年1月达成”最终委员会草案”,FCD for Final Committee Draft。

    第二十一部(ISO/IEC 14496-21):用于描绘(Rendering)的MPEG-J拓展

      尚未完成-2005年1月达成“委员会草案”,CD for Committee Draft)。

    Profile和Level

      MPEG-4提供大量的编码方式和丰富的设置。 和MPEG-2一样,应用一般不可能支持MPEG-4全集,通过profile和level来描述子集。这些子集,通过 “profile”来表明解码器要求,为了避免计算的复杂,每个profile都有一个或者多个“level”。profile和level的有效组合使得编码生成器只需实现标准中所需的子集,同时保持与其他MPEG-4设备的互通。(解码支持范围通常比编码支持范围大),检查其他MPEG-4设备是否符 合标准,即一致性测试。

      对于H.264/AVC(也就是MPEG-4 Part 4)提供下面的profile:

    Feature support in particular profiles

    Feature

    CBP

    BP

    XP

    MP

    HiP

    Hi10P

    Hi422P

    Hi444PP

    B slices

    No

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    SI and SP slices

    No

    No

    Yes

    No

    No

    No

    No

    No

    Flexible macroblock ordering (FMO)

    No

    Yes

    Yes

    No

    No

    No

    No

    No

    Arbitrary slice ordering (ASO)

    No

    Yes

    Yes

    No

    No

    No

    No

    No

    Redundant slices (RS)

    No

    Yes

    Yes

    No

    No

    No

    No

    No

    Data partitioning

    No

    No

    Yes

    No

    No

    No

    No

    No

    Interlaced coding (PicAFF, MBAFF)

    No

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    CABAC entropy coding

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    8×8 vs. 4×4 transform adaptivity

    No

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Quantization scaling matrices

    No

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Separate Cb and Cr QP control

    No

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Monochrome (4:0:0)

    No

    No

    No

    No

    Yes

    Yes

    Yes

    Yes

    Chroma formats

    4:2:0

    4:2:0

    4:2:0

    4:2:0

    4:2:0

    4:2:0

    4:2:0/4:2:2

    4:2:0/4:2:2/4:4:4

    Sample depths (bits)

    8

    8

    8

    8

    8

    8 to 10

    8 to 10

    8 to 14

    Separate color plane coding

    No

    No

    No

    No

    No

    No

    No

    Yes

    Predictive lossless coding

    No

    No

    No

    No

    No

    No

    No

    Yes

      level用来表明一个profile的解码器的性能要求的范围,例如最大图片分配了,帧频,比特率等等。对于解码器,一个指定的level要求可以对该level以及低于该level的码流进行解码。(A decoder that conforms to agiven level is required to be capable of decoding all bitstreams that areencoded for that level and for all lower levels. 来源:http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC

    Levels with maximum property values

    Level

    Max macroblocks

    Max video bit rate (VCL)

    Examples for high resolution @ 
    frame rate 
    (max stored frames)

    per second

    per frame

    BP, XP, MP 
    (kbit/s)

    HiP 
    (kbit/s)

    Hi10P 
    (kbit/s)

    Hi422P, Hi444PP 
    (kbit/s)

    1

    1,485

    99

    64

    80

    192

    256

    128×96@30.9 (8) 
    176×144@15.0 (4)

    1b

    1,485

    99

    128

    160

    384

    512

    128×96@30.9 (8) 
    176×144@15.0 (4)

    1.1

    3,000

    396

    192

    240

    576

    768

    176×144@30.3 (9) 
    320×240@10.0 (3) 
    352×288@7.5 (2)

    1.2

    6,000

    396

    384

    480

    1,152

    1,536

    320×240@20.0 (7) 
    352×288@15.2 (6)

    1.3

    11,880

    396

    768

    960

    2,304

    3,072

    320×240@36.0 (7) 
    352×288@30.0 (6)

    2

    11,880

    396

    2,000

    2,500

    6,000

    8,000

    320×240@36.0 (7) 
    352×288@30.0 (6)

    2.1

    19,800

    792

    4,000

    5,000

    12,000

    16,000

    352×480@30.0 (7) 
    352×576@25.0 (6)

    2.2

    20,250

    1,620

    4,000

    5,000

    12,000

    16,000

    352×480@30.7(10) 
    352×576@25.6 (7) 
    720×480@15.0 (6) 
    720×576@12.5 (5)

    3

    40,500

    1,620

    10,000

    12,500

    30,000

    40,000

    352×480@61.4 (12) 
    352×576@51.1 (10) 
    720×480@30.0 (6) 
    720×576@25.0 (5)

    3.1

    108,000

    3,600

    14,000

    17,500

    42,000

    56,000

    720×480@80.0 (13) 
    720×576@66.7 (11) 
    1280×720@30.0 (5)

    3.2

    216,000

    5,120

    20,000

    25,000

    60,000

    80,000

    1,280×720@60.0 (5) 
    1,280×1,024@42.2 (4)

    4

    245,760

    8,192

    20,000

    25,000

    60,000

    80,000

    1,280×720@68.3 (9) 
    1,920×1,080@30.1 (4) 
    2,048×1,024@30.0 (4)

    4.1

    245,760

    8,192

    50,000

    62,500

    150,000

    200,000

    1,280×720@68.3 (9) 
    1,920×1,080@30.1 (4) 
    2,048×1,024@30.0 (4)

    4.2

    522,240

    8,704

    50,000

    62,500

    150,000

    200,000

    1,920×1,080@64.0 (4) 
    2,048×1,080@60.0 (4)

    5

    589,824

    22,080

    135,000

    168,750

    405,000

    540,000

    1,920×1,080@72.3 (13) 
    2,048×1,024@72.0 (13) 
    2,048×1,080@67.8 (12) 
    2,560×1,920@30.7 (5) 
    3,680×1,536@26.7 (5)

    5.1

    983,040

    36,864

    240,000

    300,000

    720,000

    960,000

    1,920×1,080@120.5 (16) 
    4,096×2,048@30.0 (5) 
    4,096×2,304@26.7 (5)

     

    展开全文
  • 视频编解码学习之二:编解码框架 第四章 视频编码基础 1. 压缩码流 语法:码流中各个元素的位置关系 01001001…图像编码类型(01),宏块类型(00),编码系数1001等 语义:每个语法元素所表达的意义。...

    视频编解码学习之二:编解码框架

    第四章 视频编码基础

    1. 压缩码流

    • 语法:码流中各个元素的位置关系
      • 01001001…
      • 图像编码类型(01),宏块类型(00),编码系数1001等
    • 语义:每个语法元素所表达的意义。
      • 例如:图像编码类型

    2. 编码层次

    • 序列(Sequence)
    • 图像组(Group of Pictures,GOP)
    • 图像(Picture)
    • 条带(Slice)
    • 宏块(Macroblock,MB)
    • 块(Block)

    3. 码流结构

    3. PB帧编码

    4. 序列编码对象

    (1)IBBP序列

    • 序列:一段连续编码的并具有相同参数的视频图像。
    • 序列起始码:专有的一段比特串,标识一个序列的压缩数据的开始
      • MPEG-2的序列起始码为十六进制数000001(B3)。
    • 序列头:记录序列信息
      • 档次(Profile),级别(Level),宽度,高度,是否是逐行序列,帧率等。
    • 序列结束码:专有的一段比特串,标识该序列的压缩数据的结束
      • MPEG-2的序列结束码为十六进制数000001(B7)。

    5. 图像组编码对象

    6. 图像编码结构

    • 图像:
    • 图像起始码:专有的一段比特串,标识一个图像的压缩数据的开始
      • MPEG-2的图像起始码为十六进制数000001(00)。
    • 图像头:记录图像信息
      • 图像编码类型,图像距离,图像编码结构,图像是否为逐行扫描。

    7. 图像分块编码

    8. 条带编码结构

    • 条带:多个宏块的组合。
    • 条带起始码:专有的一段比特串,标识一个条带的压缩数据的开始
      • MPEG-2的条带起始码为十六进制数000001(0~AF)。
    • 条带头:记录当前图像的相关信息
      • 条带位置,条带量化参数,宏块编码技术标识等。

    9. 条带编码对象

    10. 宏块编码结构

    • 宏块:16x16的像素块(对亮度而言)。
    • 宏块内容:宏块编码类型,编码模式,参考帧索引,运动矢量信息,宏块编码系数等。

    11. 宏块编码对象

    12. 块编码结构

    • 8x8或4x4块的变换量化系数的熵编码数据。
    • CBP (Coded Block Patten):用来指示块的变换量化系数是否全为零。
      • 对于YUV(4:2:0)编码,CBP通常6比特长,每个比特对应一个块,当某一块的变换量化系数全为零时,其对应比特位值为0,否则为1。
    • 每个块的变换量化系数的最后用一个EOB (End of Block)符号来标识。

    13. 视频编解码关键技术

    • 预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。
    • 变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。
    • 量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量。
    • 扫描:将二维变换量化数据重新组织成一维的数据序列。
    • 熵编码:根据待编码数据的概率特性减少编码冗余。

    14. 预测

    • 空间预测:利用图像空间相邻像素的相关性来预测的方法。
      • 帧内预测技术:利用当前编码块周围已经重构出来的像素预测当前块
      • Intra图像编码(I帧)
    • 时间预测:利用时间上相邻图像的相关性来预测的方法。
      • 帧间预测:运动估计(Motion Estimation,ME),运动补偿(Motion Compensation,MC)
      • Inter图像编码:前向预测编码图像(P帧),双向预测编码图像(B帧)

    15. 帧内预测

    • I帧图像的每个宏块都采用帧内(Intra)预测编码模式。
    • 宏块分成8x8或者4x4块,对每个块采用帧内预测编码,称作Intra8x8或者Intra4x4。
    • 帧内预测有多个预测方向:水平,垂直,左下,右上。
    • 帧内预测还有直流(DC)预测。
    • 色度块预测还有平面预测。

    16. 帧间预测

    • 块基运动估计:为待预测块在参考帧上找到最佳的预测块,并记录预测块在参考帧上的相对位置。
    • 运动矢量(MV):参考帧上的预测块与当前帧上的的待预测块的相对位置。
      • MV有两个分量:(x,y)

    • 分像素运动估计
      • 最佳的预测块不在整像素位置,而在分像素位置;
      • 1/2,1/4,1/8像素插值得到分像素值。

    • 帧间预测流程:

    • 运动补偿:给定MV和参考帧,为待解码块从参考帧上获取预测块。
    • 运动矢量编码
      • MV预测:用当前块的周围可得到邻块的运动矢量来预测当前块的运动矢量
      • 运动矢量差(MV difference,MVD):实际运动矢量与预测运动矢量的差,即:
      • 运动矢量差采用变长编码。

    17. 预测残差

    18. 变换编码

    • 变换编码:通过变换将空域信号转换为频域信号来去除空间信号的冗余信息,减少编码数据。
    • 二维离散余弦变换
      • 4x4变换,8x8变换

    • 二维离散余弦变换

    例:

    • 变换系数:直流(DC)系数,交流(AC)系数

    19. 量化

    • 量化原理:将含有大量的数据集合映射到含有少量的数据集合中。

    • 一般情况下量化后高频部分包含大量的零系数

    • 量化对主观质量的影响

    20. 扫描

    • 扫描:将二维数据转换为一维的数据序列。

    21. 熵编码

    • 熵编码:根据符号出现的概率,对经常出现的符号分配较短的码字,对不常出现的符号分配较长的码字。
    • Level-Run编码:用数据中非零值和其前面非零值之间出现零值的个数重新描述量化系数序列为(Level,Run)二元组序列

    • 变长编码
      • 将Level-Run编码后的(level,run)变长编码成最终的比特串。

    22. 码率控制

    • 受到缓冲区,带宽的限制,编码码率不能无限制的增长,因此需要通过码率控制来将编码码流控制在目标码率范围内。
    • 一般通过调整量化参数的手段控制码率
      • 帧级控制
      • 条带级控制
      • 宏块级控制
    • 码率控制考虑的问题
      • 防止码流有较大的波动,导致缓冲区发生溢出,
      • 同时保持缓冲区尽可能的充满,让图像质量尽可能的好而且稳定
    • CBR(Constant Bit Rate)
      • 比特率稳定,但图像质量变化大
    • VBR(Variable Bit Rate)
      • 比特率波动大,但图像质量稳定
    • 码率控制算法
      • 码率分配
      • 码率控制
    • 码率控制属于非标准技术
      • 编码端有,解码端没有

    第5章 预测

    1. 预测技术

    • 目的:去除空间冗余和时间冗余。
    • 视频存在大量的空间冗余和时间冗余
      • 空间冗余:用帧内预测编码去除
        • 基于块的帧内预测
      • 时间冗余:用帧间预测编码去除
        • 基于块匹配(Block Matching)的帧间预测
    • 预测后得到去除大部分空间或时间冗余的残差

    2. 空间冗余

    • 图像空间相邻像素具有很强的相关性。
    • 帧内预测技术去除空间冗余

    3. 亮度预测模式

    4. 色度预测模式

    5. 时间冗余

    • 视频图像在时间上有较强的相关性,即存在时间冗余
    • 去除时间冗余的编码技术
      • 运动估计(Motion Estimation,ME)
        • 为待编码块搜索最相似的预测块
        • 记录运动矢量(Motion Vector,MV)
        • 记录预测残差:
      • 运动补偿(Motion Compensation,MC)
        • 根据运动矢量获取预测块
        • 根据预测残差计算重构块:

    6. 运动模型

    (1)平移

    7. 匹配准则

    8. 匹配准则简化

    • 简化技术方法
      • 分别计算当前块和预测块的象素值和
      • 根据简化形式,比较当前块和预测块
      • 如果用简化准则对预测块和当前块比较的结果比以前最好的结果差,可以确定预测效果不好,不必对预测块再进行比较。

    9. 运动估计

    • 去除视频图像的时间冗余
    • 运动估计在搜索范围内为当前块寻找匹配最好的预测块
    • 全搜索方式的运动估计计算复杂度高

    10. 全搜索复杂度分析

    • 图像大小:MxM
    • 预测块大小:NxN
    • 搜索范围:(-R,R)
    • 每个搜索点象素比较个数:N2
    • 搜索点个数(2R+1)2
    • 在搜索范围内的象素比较个数总和N2(2R+1)2
    • 一帧图像所有块的全搜索象素比较个数总和N2(2R+1)2(M/N)2=(2R+1)2M2
    • 例:M=512,N=4,R=8,帧率:30帧/秒

      (2R+1)2M2

      =172X5122

      = 75759616次/帧

      = 75759616x30次/秒

      =2272788480次/秒

      采用SSD匹配准则:每次象素比较需1个减法,1个乘法,1个加法,则上述全搜索计算每秒需要2272788480x2次加减法和2272788480次乘法操作。

    11. 快速运动估计

    • 在保持预测精度的同时减少运动估计的搜索次数。
      • 三步搜索(Three Step Search,TSS)
      • 二维Log搜索(2D Logarithmic Search,2DLOG)
      • 正交搜索(Orthogonal Search Algorithm,OSA)
      • 十字搜索(Cross Search Algorithm,CSA)
      • 新三步搜索(New Three Step Search,NTSS)
      • 四步搜索(Four Step Search,FSS)
      • 共轭方向搜索(Conjugate Direction Search,CDS)
      • 梯度下降搜索(Gradient Descent Search,GDS)
      • 层次块搜索(Hierarchical Block Matching Algorithm,HBMA)

    12. 三步搜索

    • 由粗到精搜索最优点,初始步长为R/2.
    • 第一步:检查起始点和其周围步长为R/2的8个点,将最优点作为第二步的起始点;
    • 第二步:以新的起始点为中心检查其周围步长为R/4的8个点,找到最优点作为第三步的起始点;
    • 第三步:以新的起始点为中心检查其周围步长为R/8的8个点,找到最优点,如果R/8=1则搜索终止,最优点位置的预测块作为最优的预测块,否则重复该过程直到R/n2=1;
    • 三步搜索方法检查点的个数为1+8log2(d+1),当d=8时,检查点个数为9+8+8=25

    13. 二维Log搜索

    • 每一步采用十字搜索模式
    • 如果每一步的最优点为中心点或者搜索窗的边界点,搜索步长减半,否则搜索步长不变
    • 当搜索步长为1时,中心点周围的8个点都要检查
    • 两个搜索路径一个需要5+3+3+8=19,另外一个需要5+3+2+3+2+8=23

    14. 正交搜索

    • 起始搜索步长R/2,从起始点开始水平搜索三个点,得到最优点并沿着最优点垂直方向搜索相邻的两个点,得到最优点,以搜索步长为R/4再以同样的方式先水平再垂直搜索,当步长为1时停止搜索
    • 搜索方法检查点的个数为1+4log2(d+1),当d=8时,检查点个数为3+2+2+2+2+2=13。

     

    15. 十字搜索

    • 起始搜索步长R/2,从起始点开始以"X"形十字搜索,当搜索步长降为1时,如果上一步的最优点为中心点,左上点或右下点,则这一步搜索以"+"形状十字搜索,然后结束搜索,否则还是以"X"形十字搜索,然后结束搜索。
    • 十字搜索方法检查点的个数为1+4log22d,当d=8时,检查点个数为5+4+4+4=17

    16. 新三步搜索

    • 与三步搜索方法不同的是,考虑到运动矢量高的中心分布特点,新三步搜索方法,除了围绕起始点为中心搜索步长为R/2的8个点之外,在起始点周围增加了步长为1的8个搜索点,如果最优点为步长为1的8个搜索点之一,则在最优点邻近的三个点中搜索最优点,然后结束搜索,否则,和三步搜索方法过程一样
    • 其中一个搜索路径需要检查点个数为17+3=20,另一个需要17+8+8=33。

     

    17. 块梯度下降搜索

    • 该方法以起始点为中心搜索8个步长为1的相邻点,确定最优点,再以最优点为中心搜索8个步长为1的相邻点,如此循环下去,不限制搜索步骤,但当搜索得到的最优点为中心点或者到搜索窗的边界,搜索终止。

    18. 层次块搜索

    • 对编码图像和参考图像下采样,分别得到编码图像和参考图像的下采样图像,未经采样处理的编码图像和参考图像属于第0层,一次下采样的编码图像和参考图像属于第1层,对第1层图像再进行下采样得到的编码图像和参考图像属于第2层,依次重复上述过程,得到第n层下采样的编码图像和参考图像。
    • 然后在n层下采样参考图像的搜索范围中找到与下采样编码图像块最佳匹配块的MV,该MV作为n-1层的运动估计搜索范围的中心点,依次重复上述过程,直到n=0为止,此时得到的最佳匹配块就是编码图像的预测块,其对应的MV为最终的最优MV。

    19. 搜索算法复杂度比较

    20 . 分像素运动估计与运动补偿

    • 时域运动位置更可能在整象素之间,即分像素上。
    • 利用相邻的整象素可以估计出分象素的值
      • 常用线性或双线性插值得到分象素的值。
    • 分象素运动估计有更高的预测精度,但复杂度也更高,
      • 1/2分象素运动估计,图像存储空间增加4倍,运动矢量需要放大2倍,1/4分象素运动估计,图像存储空间增加16倍,运动矢量需要放大4倍,计算复杂度也成倍增加。

     

    21. 分像素插值

     

    22. 多参考帧预测

    • 有更多的候选图像,搜索更精确的预测块
    • 需要更多的参考图像存储空间
    • 码流需要标识参考帧索引的语法元素

     

    23. 图像分块编码

    • 视频内容的运动非常复杂,图像分块编码可以更好的提高运动预测精度,提高压缩效率。
    • 要在编码块大小和附信息(MV,Mode)编码比特数之间权衡,小的编码块大小会有更好的预测但有更多的附信息比特数。

    23. 双向预测编码

    24. B帧有更好的编码效率

    • B帧有更好的编码效率
      • 新出现的对象参考将来的帧有更好的预测效果
      • 前后两个预测的平均值可以减少预测方差

    25. 全局运动估计

    • 基于全局仿射运动模型
    • 预测精度不如基于块的运动估计
    • MV数目少,适合简单运动场景的运动估计

    展开全文
  • DateL: 2018.10.25 1、JPEG编解码流程 2、MPEG-1编解码流程 3、MPEG-2编解码流程 4、MPEG-4编解码流程 THE END!
  • (在这里,只考虑到帧(frame)的...1.图像序列号POC(picture order count)解码过程. picture order count ,在解B slice时,用来决定参考picture初始化顺序; 在解时间直接模式(temporal direct mode)下的运动矢量,不直接
  • 整理自殷文杰的博客 ...【H.264/AVC视频编解码技术详解】一....【H.264/AVC视频编解码技术详解】二....【H.264/AVC视频编解码技术... 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码 【H.264/AVC视频
  • 《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此事要躬行...
  • 学习视频编解码技术很难吗?视频编解码技术的未来是什么? 明了的说,无论是软件还是硬件设计,视频编解码技术有很多难点,都需要很长一段时间积累才行。 从一开始接触MPEG-2到最新的H.264标准,可算走过了...
  • 视频编解码及H264技术

    2019-09-15 11:27:47
    【H.264/AVC视频编解码技术详解】一. 视频信息与压缩编码 2016年07月31日 21:30:02取次花丛懒回顾阅读数 7460更多 分类专栏:视频编解码先进视频压缩编码(Advanced Video Coding, H.264/AVC) 版权声明:本文为博...
  • MPEG-4_H.264视频编解码工程实践   1.2 视频编码压缩原理及主流算法 2018-11-05 22:23:34 空间域的图像变换到频域,即所谓的变换域,会产生相关性很小的一些变换系数,并可对其进行压缩编码。 2018-11-05 22:...
  • 编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间。尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析、应用开发、释放license收费等等。...
  • 编解码学习笔记二codec类型编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2编解码学习笔记四Mpeg系列Mpeg 4编解码学习笔记五Mpeg系列AAC音频编解码学习笔记六H26x系列编解码学习笔记七微软Windows Media系列编解码学习笔记...
  • 《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此事要躬行...
  • HEVC 编解码框架

    2020-04-27 18:01:43
    一、基本的编解码原理 1、 包含的模块、每个模块的作用、 模块的原理 编码器的流程:首先编码器是将yuv数据经过不同的 协议的 算法 压缩 成对应协议的流。具体来说首先将原始图像进行分块, 然后编码器中的预测...
  • 在 RTC 2018 实时互联网大会上,Visionular Inc 联合创始人兼首席科学家 Zoe Liu 进行了主题演讲,与大家一起分享了一场视频编解码的前沿探索。 1 Why Video Codec Matters? 大家都知道,从技术复杂度来讲,...
  • MediaCodec类可用于访问低级媒体编解码器,即编码器/解码器组件。 它是Android低级多媒体支持基础架构的一部分(通常与MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface和AudioTrack...
  • 一、框架类问题 1. 熟悉264还是265,挑一个简单介绍下编码框架。(字节、爱奇艺、海康) 以HEVC为例,一个视频帧首先进行块划分,然后以CTU为单位进行预测、变换、量化和熵编码: 块划分:CTU大小为64,会递归四...
1 2 3 4 5 ... 20
收藏数 5,995
精华内容 2,398