十五帧内编码: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帧内编码的基本原理的主要内容,如果未能解决你的问题,请参考以下文章