上一篇我们讲解了熵编码的另一种方式CABAC,熵编码结束之后,那么整个编码过程的核心过程也就结束了,后续的工作就是为了适配网络发送等做一些封装的工作。本篇对整体的编码过程作一个简单的回顾,整体上感知一下一个像素的矩阵快,是如何一步一步被减肥的,哈哈:
1 DCT变换
经过DCT变换,实现了频率的集中。
2量化
经过量化,我们对DCT变换后的系数进行以QP=28的量化,此时得到了一些左上角集中了非零值的系数矩阵。
3 ZigZag扫描
ZigZag扫描,将二维的系数矩阵转换成一维的序列。
4 熵编码
熵编码输入:
9,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0
熵编码输出:
0000 1011 1000 0000 0000 0000 1101 010
用16进制表示为: 0X: B8 00 0D + 010。
编码之前是一个4 * 4的像素块,每个像素占用一个字节的空间,即16 Bytes * 8 = 128 bit,经过编码之后的大小为3个字节(最前边的0无需占用空间)+3个bit = 3 * 8 + 3 = 27 bit。简单算一算压缩率, 27 / 128 = 0.210 = 20%。压缩率还是可以的哈,编码的主要过程就此分析完毕,希望对你有所帮助。
原文:http://blog.51cto.com/7335580/2069655