为什么能进行压缩
- 人眼不能识别很细微的颜色变化
- 帧和帧之间以及帧内有很多冗余信息
压缩过程
1. 色彩空间转换(RGB –> YUV)
2. 宏块划分(划分成16x16像素的宏块)
3. 冗余信息去除
时间冗余(IPB帧,帧间预测,运动估计)
空间冗余(DCT, Quantization, Zig Zag Scan, Huffman Coding)
采用I帧(intra frame) P帧(predictive,前向预测) B帧(bidirection predictive,双向预测)技术可以去除时间上的冗余性,换句话说时间上邻近的帧的内容有很大的相似性。对于和之前帧中相似的宏块就可以不编码,但副作用是需要大量的运算来查找邻近帧内相似的宏块,用大量的运算来得到更少的bits.
使用DCT把16x16的像素块转换成16x16的系数块,通过Quantization和缩放可以忽略一些高频颜色信息(即细微的色彩变化),还可以把比较大的系数变成比较小的系数,编码时可以节省很多bits. Zig Zag Scan技术可以跳过量化后一些为0的系数,最后通过Huffman Coding还能进一步节省bits.
DCT – Discrete Cosine Transform离散余弦变换
Quantization - 量化
Zig Zag Scan - Z行扫描
Huffman Coding - 霍夫曼编码