上一篇我们讲解了熵编码的另一种方式CABAC,熵编码结束之后,那么整个编码过程的核心过程也就结束了,后续的工作就是为了适配网络发送等做一些封装的工作。本篇对整体的编码过程作一个简单的回顾,整体上感知一下一个像素的矩阵快,是如何一步一步被减肥的,哈哈:

1 DCT变换

编码原理(七) --回顾_第1张图片

经过DCT变换,实现了频率的集中。

2量化

编码原理(七) --回顾_第2张图片

经过量化,我们对DCT变换后的系数进行以QP=28的量化,此时得到了一些左上角集中了非零值的系数矩阵。

3 ZigZag扫描

编码原理(七) --回顾_第3张图片

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%。压缩率还是可以的哈,编码的主要过程就此分析完毕,希望对你有所帮助。