精华内容
下载资源
问答
  • H264帧内编码与帧间编码
    万次阅读
    2017-02-13 19:14:50

    晚上没事干,无聊,所以想写点什么。

    为了达到节约空间的目的,视频图像都是经过编码,然后用于各种不同的场合,特别是网络传输,因为带宽的限制,为了更好的传输数据,必须对视频进行压缩处理。而目前最流行的当属H264了。

    经过H264压缩的视频,可分为I、B、P三种不同的帧。其中I帧因为不参考其他帧,所以是帧内编码。P帧,要前向参考,而B帧,则要进行双向参考,这两种,都属于帧间编码。

    先说说帧内编码:

    帧内,顾名思义,就是不求外,只求内。不管外部数据如何,仅仅通过自身已有的数据进行编码。一幅图像里面的物体往往具有空间上的相关性,比如,以下图片:

    除了中间的几个字,其他区域都是蓝色的,并且是一模一样的,所以,在空间上,数据就有相当大的冗余。而帧内编码,就是要去除这部分冗余数据。在帧内编码情况下,编码图像仅仅进过DCT(离散余弦变换)、量化器呗编码器就可生成编码比特流。DCT直接用于原始数据。

    下面来说说帧间编码:

    视频,其实就是一张一张图片而已,而这些图片其实都是相似的,仅仅只有很小的区别,这样就可以达到欺骗我们肉眼的效果,给我们一种动画的感觉。而这,就是所谓的时间相关性。比如上图,如果我们把它想象成一个视频,Media这个单词在里面运动,不管Media运动到哪里,他始终都是Media这个单词,样子都没有任何变化,仅仅是位置变了。而变化量、方向,我们可以用一个矢量表示,这就是所谓的运动矢量。帧间编码与帧内编码的不同之处在于他经过预测环节的处理。步骤如下:

    1、计算参考帧与原始帧之间的运动矢量

    2、通过参考帧与运动矢量生成原始帧的预测图像

    3、讲原始图像与预测像素差值生成差分图像数据

    4、对差分图像数据进行DCT变换

    5、经过量化器量化

    6、编码器生成压缩数据

    以上就是笔者对编码的意见简单的理解,后面再有无聊的时候,会对这几个步骤做一些详细的分析

    更多相关内容
  • 利用这个阈值模型,可以在运动估计之前判断P skip模式,从而提出了P_skip模式提前判决的帧间编码算法优化方案.实验结果表明:在几乎无图像质量下降的情况下,编码时间减少大约32%,比特率降低大约0.675%.
  • 由上一章了解到H.264帧内编码的基本原理,本章介绍帧间编码原理 首先看一下视频的下面两帧图片 其中除了车子和镜头在移动,帧间大部分内容并没有发生大的改变,以车子的车牌为例,车牌向左移动了,就是宏块...

    由上一节了解到H.264帧内编码的基本原理,本节介绍帧间编码原理

    所谓帧间编码,顾名思义,就是连续帧的编码方式,最终输出为I、P、B等类型帧。

    为方便解释,我截取了某视频中连续的两帧作为说明:

    上图两帧数据中,除了车子和镜头在移动,大部分内容并没有发生大的改变。

            这里以点盖面,以车子的车牌为例:车牌向左移动了,就是宏块位置发生了变化,在第二帧数据中就不用再次编码宏块的左侧和上侧的像素信息,只需要记录宏块的坐标信息(运动矢量),从而减少编码和传输的数据量(P帧和B帧的来源)。

            由此可以归纳出,假如第一帧图像为I帧,那么第二帧运动矢量图像可能是B帧也可能是P帧,也是取决于H.264内部算法。

    为了方便解释,可以做如下总结:与I帧相似程度高达到95%以上会编码成B帧,相似程度70%编码成P帧。可以得出一个初步结论:

    视频录制/播放顺序:I帧->B帧->P帧

            再结合上一节的编码器来看,当传输缓冲器接收到B帧时会暂时缓冲在传输缓冲器中,直到获取到I帧或P帧时,会将传输缓冲器中的B帧通过编码控制重新经过视频信源编码器、视频复合编码器、传输缓冲器一起依次排在P帧之后通过传输编码器输出。

     由此可以推出另一个结论:

    编码/解码顺序:I帧->P帧->B帧

    注:

    如果在录制视频中P帧之后又产生B帧,这些B帧一定是在下一次再遇到帧或者P帧才会输出

    实质上H.264就是由一个一个NALU组成的,其结构如下:

    帧类型宏块预测数据残差数据
    I帧帧内预测数据宏块上侧、左侧编码数据
    P帧量化变换(差异数据)运动矢量
    B帧运动矢量

    所以论数据量:

    I帧 > P帧 > B帧

    本节内容主要介绍了帧间编码原理,也就是I、P、B帧是如何产生的,下一节介绍H.264码流数据组成以及哥伦布编码

    展开全文
  • 音视频-编解码-H264AVC中帧内编码和帧间编码技术研究.pdf
  • HEVC中帧间编码的复杂度可扩展模式决策算法
  • 为提高编码效率,H.264/AvC标准算法基于率失真优化方法遍历宏块的所有帧内/帧间编码模式,在大幅提高其编码效率和质量的同时也导致了其计算复杂度高的问题,成为了限制其实时应用的瓶颈。帧间预测编码是H.264/AVC中...
  • H264/avc帧间编码算法研究与改进,刘奎,李旭杰,为了减少视频编码的运算量,通过对H.264标准原有帧间编码算法的分析,提出一种改进的帧间编码算法。该算法利用宏块的运动特性和相�
  • HEVC低复杂度帧内帧间编码优化算法研究doc文档合集整理.zip
  • 目前已有较多的快速帧间编码模式选择算法 ,这些算法各有特点。针对帧间编码算法的复杂性 ,提出可以通过比较 3种典型块模式下的率失真优化值的单调性来决定块模式的取向 ,并对复杂度极低的 Skip模式利用零块判决技术...
  • 提出了一种新的嵌入式小波四叉树帧间编码算法。算法对于运动补偿余量误差帧首先进行小波变换 ,并选取适当的阈值 ,用重要图表示大于该阈值的重要系数。根据残差帧小波系数的统计特性 ,用四叉树方法编码重要图 ,并对...
  • 视频帧内帧间编码通用隐写分析卷积神经网络.pdf
  • 帧间编码所利用的是视频的时间冗余,主要编码运动(运动矢量)和纹理(预测残差)信息 压缩率较高 通常在视频信息中,每一帧所包含的物体对象与其前后帧之间存在运动关系,这种物体的运动关系即构成帧与帧

    一、视频的时间冗余

    1、帧内预测与帧间预测编码的区别

    • 帧内编码:
      • 不依赖参考图像,可以独立解码,因而可以作为一个GOP的起点和随机接入点,即IDR帧
      • 输出的码率相对较高,即压缩率较低
      • 帧内编码为了确保可独立解码这一最关键的特性,只利用了图像的空间冗余进行压缩,无法充分利用视频信息前后帧之间的关联
    • 帧间编码:
      • 帧间编码所利用的是视频的时间冗余,主要编码运动(运动矢量)和纹理(预测残差)信息
      • 压缩率较高
      • 通常在视频信息中,每一帧所包含的物体对象与其前后帧之间存在运动关系,这种物体的运动关系即构成帧与帧之间的时间冗余。由于帧与帧之间物体的运动相关性大于一帧内部相邻像素之间的相关性,尤其对于时间相近的图像之间,时间冗余比空间冗余更加明显。
    • 图像之间物体的运动关系可由下图表示:
      在这里插入图片描述

    二、块结构的运动估计

    • H.264:块结构的混合编码
    • 帧间编码一一个宏块为最小执行单位
    • 可分为几个模块:
      • 预测编码(包括运动估计/运动补偿过程)
      • 变换/量化编码
      • 熵编码
      • 参考帧管理
    • 帧间编码中的变换、量化编码:类似帧内编码
    • 预测编码:
      • **基于块的运动估计(Motion Estimation, ME):**通过当前的像素块,然后在参考帧中查找与当前要编码像素块最匹配的参考块;
      • **运动补偿(Motion Compensation, MC):**同运动估计是对应的,主要存在于解码的环路中,根绝解码得到的残差然后通过运动矢量查找到相应的参考块,然后参考块和残差还原出解码后的重建像素块
        在这里插入图片描述为了给后续的帧内预测提供参考帧,还需要内部解码的环路过程,使用运动补偿还原出重建的像素块

    三、运动矢量

    运动估计,有时也称作运动搜索,即在相应参考帧中搜索当前像素块的对应参考像素块,使最终的编码代价最小。为了实现这个目标,相比帧内编码所定义的16×16和8×8两种宏块划分方式,帧间编码定义了更多、更复杂的方法。

    1、运动估计宏块划分

    • 一个宏块将按帧间编码进行编码时,按照预定义的方法进行分割
    • 针对帧间预测,H.264定义了4种宏块分割和4种子宏块分割方式:
      • 宏块分割:16 * 16、16 * 8、8 * 16、8 *8
      • 子宏块分割:8 * 8、8 * 4、4 * 8、4 * 4
    • 当某个宏块配置为8 * 8形式时,每个8 * 8宏块将按照子宏块的分割方法来进一步分割;当某个宏块配置为16 * 16、16 * 8、8 * 16就不再按照子宏块分割了
    • 帧间预测的宏块分割如下图所示:
      在这里插入图片描述

    2、运动矢量

    • 在一个帧间编码宏块中,每一个分割后的子块都会进行相应的运动搜索,在参考帧中查找对应的相同尺寸的像素块作为参考
    • 运动矢量(Motion Vector, MV): 当前像素块在当前帧中的位置同参考块在参考帧总的位置之间的相对位置代表了像素块中的物体在两帧之间的运动轨迹。这个相对位置以两个坐标值组成的矢量(MV_x, MV_y)表示
    • 一个宏块最多可能包含16个MV(因为最多可能为16个4 * 4的像素块)
      在这里插入图片描述
      在上图中某个像素块在参考帧和当前帧中不存在运动关系,因此运动矢量为(0,0)。
      在这里插入图片描述
      参考帧相对于当前帧向下偏移了20,向右偏移了5,因此运动矢量为(20,5)。

    四、运动矢量预测

    • 一个帧内宏块最多可分割为16个子块
    • 每个子块都按照完整的运动信息编码效率较低
    • 运动矢量预测:提升运动信息的编码效率
    • 计算运动矢量的方法:
      • 运动矢量预测:MVP,由相邻像素块信息计算得到
      • 运动矢量残差:MVD,由码流中的语法匀速解析得到

    1、运动矢量预测的计算方法

    当前块同相邻块之间的相互关系可由下图表示:
    在这里插入图片描述
    其中,当前块的MVP由A、B和C块的MV取中间值计算得到。如果像素块C不存在,那么以像素块D取而代之。如果当前宏块采用了SKIP模式编码(即码流中不传递相应的数据),则按照16×16模式宏块的方法计算MVP。(见标准文档8.4.1.3节)‘

    2、亚像素插值

    • 亚像素插值的目的:提升运动搜索的匹配精度
    • H.264相对于前期标准进一步提升了ME(运动估计)精度
    • 在H.264中,亮度分量的MV最高可达1/4像素精度,色度分量的MV最高可达1/8像素精度。无论1/2、1/4或1/8像素位置上的像素值在图像中都是不存在的,只是作为在运动估计过程中的一个临时值存在。
    • 非整数像素:根据相邻像素值计算得到的,理论上存在于实际像素之间的一个中间值
    • 计算方法:当前相邻的几个像素计算加权均值

    2.1亚像素

    大小字母表述的就是图像中实际存在的整数像素,其余的表示通过计算得到的亚像素点,至于这些亚像素点是怎么计算的呢,根据不同的情况进行不同的分析

    • 1/2像素精度的亚像素可由下图表示:
      在这里插入图片描述
      1/4像素精度的亚像素可由下图表示:
      在这里插入图片描述
      1/8像素精度的亚像素可由下图表示:
      在这里插入图片描述

    2.2亚像素的计算方法

    由上图可知,亚像素精度就是根据相邻像素值计算得到的,理论上存在于实际像素之间的一个中间值。其计算方法是由当前相邻的几个像素计算加权均值的方式得到,具体的计算方法定义在标准文档的8.4.2.2.1节中。亮度信息的插值如下图:
    在这里插入图片描述
    对于水平和垂直方向的半像素点b和h:

    b = (( E − 5*F + 20*G + 20*H − 5*I + J) + 16) >> 5; 四舍五入
    h = (( A − 5*C + 20*G + 20*M − 5*R + T) + 16) >> 5;
    

    对于四个像素的中间点j,其计算方法与b和h类似,只是用于计算加权均值的像素变为了同方向上的6个半像素点:

    j = (( cc − 5*dd + 20*h1 + 20*m1 − 5*ee + ff) + 512) >> 10;或
    j = (( aa − 5*bb + 20*b1 + 20*s1 − 5*gg + hh) + 512) >> 10;
    

    对于1/4像素位置的值,其计算方法更为简单,即取其相邻的整像素或半像素的值取平均即可:

    n=(h+M+1)>>2
    

    五、运动搜索快速算法

    完全的运动搜索过程是一种极为耗时的操作,其主要原因有:

    1. 运动搜索过程需要覆盖搜索区中的每个像素和亚像素;
    2. 运动搜索需要在多个参考帧中进行;

    为了解决这个问题,研究人员提出了多种运动搜索的优化算法,旨在降低运动搜索的总运算量。其中比较常见的有:

    1. 三步搜索法;
    2. 菱形搜索法;
    3. 六边形搜索法;

    5.1三步搜索法

    三步搜索法对比全搜索只有约1/10的计算量,而算法性能基本一致。三步搜索法如图所示:
    在这里插入图片描述
    三步搜索法运行过程:
    4. 从搜索窗口中心开始,以4为步长搜索8个点+中心点共9个点,以SAD最小的原则选择一个最佳匹配点;
    5. 以步骤1得到的最佳匹配点为中心点,以2为步长继续搜索相似的9个点,得到第二个最佳匹配点;
    6. 从第二个最佳匹配点开始,以1为步长重复上述步骤,得到最终的运动搜索匹配点;

    5.2菱形搜索法

    菱形搜索法使用大菱形和小菱形两种模板,大菱形包含9个点,小菱形包含5个点,如下图所示:
    在这里插入图片描述
    菱形搜索法执行步骤:
    7. 从搜索窗口中心开始,按照大菱形模板搜索9个点,检查菱形中心点是否是大菱形中的最佳匹配点;
    8. 如果最佳匹配点是菱形的中心点,则进一步按照小菱形模板进行搜索;
    9. 如果最佳匹配点不是菱形中心点,则按照实际的最佳匹配点继续按大菱形模板搜索,直到找到某个最佳匹配点在大菱形模板的中心点,然后按小菱形模板搜索;

    5.3六边形搜索法

    六边形搜索的原理同菱形搜索法类似,区别在于其大模板采用的模板为7个点的六边形形状,而小六边形模板的形状同菱形模板相同,如下图所示:
    在这里插入图片描述
    六边形搜索执行步骤:

    1. 从搜索窗口中心开始,按照大六边形模板搜索9个点,检查菱形中心点是否是大六边形中的最佳匹配点;
    2. 如果最佳匹配点是六边形的中心点,则进一步按照小六边形模板搜索;
    3. 如果最佳匹配点不是六边形中心点,则按照实际的最佳匹配点继续按大六边形模板搜索,直到找到某个最佳匹配点在大六边形模板的中心点,然后按小六边形模板搜索;
    展开全文
  • 3D-HEVC帧间编码的低复杂度算法
  • 音视频-编解码-H264视频编码中帧间编码的研究.pdf
  • 音视频-编解码-视频帧间编码技术研究与实现.pdf
  • 音视频-编解码-H26L的帧间编码的探讨与实现.pdf
  • 基于分布式压缩感知的H.264帧间编码
  • 视频编码中快速帧间编码算法的研究,王洪彬,杨志钢,本文提出一种自适应方向性搜索与快速模式选择相结合的快速帧间编码方案,以降低H.264视频编码中帧间编码的计算复杂度。运动估计过�
  • I帧在帧间编码中通常作为B/P帧的参考数据,如果I帧编码出现错误,将影响B/P帧的编码结果 二、早起视频压缩标准的帧内编码 1、简介 在早期的视频编码标准MPEG-1/MPEG-2中,帧内编码已经发挥重要作用,只不过是比H...

    一、帧内编码的重要意义

    • 帧内编码时I帧主要的压缩编码方法,帧内编码的性能对视频整体编码结果具有重要影响
      • I帧在编码时只采用当前帧的图像内部数据,体积通常比B/P帧更大,对整体码率的影响很大
      • I帧在帧间编码中通常作为B/P帧的参考数据,如果I帧编码出现错误,将影响B/P帧的编码结果

    二、早起视频压缩标准的帧内编码

    1、简介

    • 在早期的视频编码标准MPEG-1/MPEG-2中,帧内编码已经发挥重要作用,只不过是比H264简单的多。MPEG-1/MPEG-2中已经定义了三种帧类型:
      • I帧:帧内编码帧
      • P帧:帧间编码帧
      • B帧:双向帧间预测编码帧

    2、MPEG-1/MPEG-2的帧内编码

    • 在H.264/AVC之前的标准中,编码I帧时并未采用预测编码,只有编码P/B帧时采用了帧间预测编码
    • I帧的编码采用的是DCT-RLC的方法进行编码:离散余弦变换将像素转化为系数矩阵,使用游程编码来编码离散余弦变换之后的系数,通过这种方式将变换系数中的0系数进行压缩。
    • 将一帧图像分割为多个8*8大小的块,每个块进行DCT变换,变换为一个Z字型扫描的系数矩阵,这里面有很多个0系数,使用游程编码对0系数压缩。
      在这里插入图片描述

    3、游程编码

    • 游程编码其实也是熵编码的一种
    • 基本思想: 是将重复且连续出现多次的字符使用(连续出现次数,某个字符)来描述
    • 比如一个字符串:
    AAAAABBBBCCC
    

    使用游程编码将其描述为:

    5A4B3C
    
    • 如果连续的字符没有那么多,压缩效率就比较低了

    三、预测编码

    1、简介

    • 在前面的博文中所述,视频信息中通常包含的冗余有三种:空间冗余时间冗余统计冗余。处理这三种冗余信息通常采用不同的方式:
      • 空间冗余:采用帧内预测编码压缩:直到H264才真正的使用起来
      • 时间冗余:采用运动搜索和运动补偿压缩:前期标准已经使用
      • 统计冗余:采用熵编码压缩。

    2、预测编码的基本思想

    • 预测编码对于处理前后相关的信息非常有效
    • 预测编码输出的不再是原始的信号值,而是信号的预测值与实际值的差。
    • 对于前后相关的信号,则易于通过预测算法构建相似与输入数据的预测数据
    • 理想的预测数据,其输入数据的残差中包含大量的0,可以节省数据体积

    3、预测编码举例

    • 例1:
      假设有下面的一串数字:
    1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3
    

    我们可以用如下的信息来表示这串数字信息:

    Pred = 1;
    Residual = { (1, 5), (2, 11) };
    

    这些信息表示,目标信号的预测值为1,在第5和12个元素的位置存在残差,分别为1和2。

    • 例2:
      假设有下面一串数字:
    0, 1, 2, 3, 5, 5, 6, 7, 8, 9, 10, 9, 12
    

    对于这部分信号,可以如下表示:

    Pred = n;
    Residual = {(1, 4), (-2, 11)};
    
    • 从另一方面考虑,视频信息在输出码流之前需要经过量化操作。量化完成后的信息用数字化表示,其所需要的位数与表示信息的范围与方差有关。对于取值范围小、方差较小的信息,量化器所需要的比特范围就更小,每个像素数的比特位数便更小。统计表明,相比于原始的图像像素,预测残差的方差与动态范围远小于原始图像像素。通过预测编码,不仅降低了表示像素信息所需要的比特数,还可以保留视频图像的画面质量不至于降低。
    • 例如:上例中数值范围本应是0-12,求出残差之后则只需要表示出-2到1的范围即可

    四、H264的帧内预测模式

    在H.264/AVC中,帧内编码采用了全新的、更复杂的算法,相比早期标准的压缩比率大大提高。在H.264中采用的算法主要可分为预测编码模式和PCM编码模式。

    4.1H.264帧内预测编码

    4.1.1、简介

    • H.264对不同的颜色分量与不同的宏块模式定义了不同的帧内预测模式:
      • 对亮度分量的4 * 4模式:定义9种预测模式
      • 对亮度分量的16 *16模式:定义4种预测模式
      • 对于色度分量:类似亮度16 * 16模式,定义4种模式

    4.1.2、4×4亮度分量预测

    • 对于每一个帧内预测宏块,其编码模式可以分为I_4x4和I_16x16两种。对于I_4x4模式,该宏块的亮度分量被分为16个4×4大小的子块,每一个4×4大小的子块作为一个帧内预测的基本单元,针对每一个4×4像素块进行过预测与编码。
    • 帧内预测会参考每一个像素块的相邻像素来构建预测数据。对于某一个4×4的子块而言,该子块上方4个、右上方4个、左侧4个以及左上方顶点的1个像素,共13个像素会作为参考数据构建预测块。预测块同参考像素的位置关系如下图所示:
      在这里插入图片描述
      在上图中,a~p表示预测块中的像素,A/B/C/D表示上方参考像素,E/F/G/H表示右上方的参考像素,I/J/K/L表示左方参考像素,Q表示左上方的参考像素。对于4×4亮度分量的帧内预测,共定义了9种不同预测模式。
    • 1、垂直模式和水平模式
      在这里插入图片描述
    • 2、均值DC模式
      在这里插入图片描述
    • 3、45度左下和右下模式:多角线上的宏块预测值相等
      在这里插入图片描述
    • 4、右垂直、下水平、左垂直、上水平
      在这里插入图片描述

    4.1.3、色度分量与16×16亮度分量

    • 1、垂直模式:
      在这里插入图片描述
    • 2、水平模式
      在这里插入图片描述
    • 3、均值模式
      在这里插入图片描述
    • 4、平面模式

    4.2H.264的I_PCM编码模式

    • 除了帧内预测编码之外,H.264还定义了一种特殊的编码模式,即为I_PCM模式
    • I_PCM模式不对像素块进行预测-变换-量化操作,而是直接传输图像的像素值
    • 在有些时候(如传输图像的不规则纹理信息,或低量化参数条件下),该模式比预测编码模式效率更高
    展开全文
  • 中南大学电子信息工程,13级视频信号论文快速帧间编码翻译 题目:An Effective CU Size Decision Method for HEVC Encoders
  • 在宏块级别使用帧间和帧内相关的多描述视频编码
  • “纸上得来终觉浅,绝知此事要躬行”,只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会! 链接地址:H.264/AVC视频编解码技术详解 GitHub代码地址:...
  • 这篇文档主要是介绍mpeg的数据结构,同时介绍了帧间编码的相关技术。主要是I帧B帧以及P帧的相关概念、技术、编解码
  • 帧内、帧间预测编码效率比较

    千次阅读 2017-08-22 16:30:21
    在之前的各种文献中都看到过这样的结论:帧间预测的编码增益要高于帧内预测。可是从来没看过详细解释,今天来总结一下。首先来看原理: 帧内预测——基于同一帧内已编码块预测,构造预测块,计算与当前块的残差,对...
  • 对于选择帧间预测的编码单元,编码端需传输由运动矢量、参考帧索引、参考帧列表,以及VVC种新的编码技术所需的附加信息组成的运动参数,在解码端利用这些信息就可生成帧间预测像素值。当使用skip模式对CU进行帧间...
  • 帧编码和场编码

    2018-05-16 15:15:05
    原始视频(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频:连续或隔行视频,隔行视频包括顶场和底场,连续(遂行)...一般情况下,遂行进行帧编码,隔行可在帧编码和场编码间选取。
  • 然后,基于帧间预测模式,CTU空间域相关性以及亮度和色度之间的关系,我们提出了一种快速终止SAO过程的快速算法。 实验结果表明,该算法可节省72.2%的SAO处理时间,而BDBR仅增加0.52%或0.014 dB的BDPSNR损失可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,298
精华内容 18,119
关键字:

帧间编码

友情链接: fractaldim.zip