十五帧内编码:1帧内编码的基本原理

Posted 叮咚咕噜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十五帧内编码:1帧内编码的基本原理相关的知识,希望对你有一定的参考价值。

一、帧内编码的重要意义

  • 帧内编码时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模式不对像素块进行预测-变换-量化操作,而是直接传输图像的像素值
  • 在有些时候(如传输图像的不规则纹理信息,或低量化参数条件下),该模式比预测编码模式效率更高

以上是关于十五帧内编码:1帧内编码的基本原理的主要内容,如果未能解决你的问题,请参考以下文章

十五帧内编码:4生成预测像素块

十五帧内编码:2预测当前块的预测模式

H.264/AVC视频编解码技术详解十六:帧内预测编码的基本原理

H264编码原理之帧间预测与帧内预测

H264编码原理之帧间预测与帧内预测

十九帧间预测编码:帧间预测编码的基本原理