帧内压缩,解决的是空域数据冗余问题(一张图片内部的数据压缩问题)。
比如:一张天然色背景图片的压缩,背景天然色是可以用一部分很小的数据量存储,解压缩时可以通过很少的数据量还原回去。对于帧内的物体也有实际的算法。
帧间压缩,解决的是时域数据冗余问题
随着时间推移每个时间段是有帧数据的,他们是有参考的。
整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化
CABAC压缩
宏块
宏块是视频压缩的基本单元
帧内、帧间的基本单元
将原始图像划分成很多个宏块单元,如果有很多细节的图片需要划分成更小的宏块。
宏块的尺寸有:16x16 8x16 16x8 8x8 4x8 4x4 8x4
帧内压缩理论
1、相邻像素差别不大,所以可以进行宏块预测
2、人对亮度的敏感度超过色度
3、YUV很容易将亮度与色度分开
根据已知的模块来推测下一个模块的数据。
帧内预测,九种预测模式
从某一个宏块为基础,在这个宏块下边或者右边的宏块是什么,进行推算的时候实际用九种模式的一种来计算,哪种最近接原来的模块就选择哪种模式,有相关的论文。
把所有宏块进行处理,标记每个宏块具体使用的模式。
根据宏块所选用的模式来预测宏块的值,以下是具体的九种模式
上图横向A-H和竖向I-L是已经知道的值,白色方格子就是待预测的宏块,中小写字母的值是待预测填充的部分。
如果是竖向预测,图中第一中,那么小方格的值就是按箭头所指的方向填充,宏块中第一列的值就全是A, 第二例全是B,以此类推。
如果是横向预测,图中第二中,那么小方格的值就是按箭头所指的方向填充,宏块中第一行的值就全是A, 第二行全是B,以此类推。
第三个图就是求平均值,即宏块的值是其周围已经预测宏块横向和竖向所有像素的值。
其他几种模式按箭头方向预测,如上箭头方式类推。
不同模式的预测结果是不一样的,第一个图是垂直预测,第二个水平预测,第三个求平均,如下;
帧内预测举例
1、根据所选定的模式预测各个模块的值,之后得到一张预测图。
2、预测图与原始图进行比较得到残差值。
3、将图片预测时使用的模式信息(prediction mode info ) 和预测的图片残差值(residual)进行压缩,之后进行传输。
4、解码端根据传输过来的I帧和预测模式信息,以及残差值还原图像。
帧内压缩帧类型
I 帧
IDR 帧