上一篇我们讲解了熵编码的另一种方式 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://www.bubuko.com/infodetail-2490351.html