图像压缩编码——香农/哈夫曼编码
一、信息熵
信息百度百科:信息,指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。人通过获得、识别自然界和社会的不同信息来区别不同事物,得以认识和改造世界。在一切通讯和控制系统中,信息是一种普遍联系的形式。1948年,数学家香农在题为“通讯的数学理论”的论文中指出:“信息是用来消除随机不定性的东西”。创建一切宇宙万物的最基本单位是信息。
信息熵百度百科:信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。信息熵这个词是C.E.Shannon(香农)从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。
二、香农-范诺编码
特例
一串消息包含A,B,C,D,E共5类符号,其内容是AABBBBAAAACCCCCCCCCEEEEEEDDDDEEEEEEEEEEEEE,
请问其信息熵是多少?
分析:A6;B5;C9;D4;E19;共43个,其信息熵由公式可求得2.069
2.1 香农-范诺编码简述
- 对于一个给定的符号列表,制定了概率相应的列表或频率计数,使每个符号的相对发生频率是已知。
- 排序根据频率的符号列表,最常出现的符号在左边,最少出现的符号在右边。
- 清单分为两部分,使左边部分的总频率和尽可能接近右边部分的总频率和。
- 该列表的左半边分配二进制数字0,右半边是分配的数字1。这意味着,在第一半符号代都是将所有从0开始,第二半的代码都从1开始。
- 对左、右半部分递归应用步骤3和4,细分群体,并添加位的代码,直到每个符号已成为一个相应的代码树的叶。
2.2 特例详解
- 消息通讯字符集为S{A,B,C,D,E}
- 它们出现的概率为P{0.14,0.12,0.21,0.09,0.44}
- 累加概率为PA{0,0.14,0.26,0.47,0.56}
- 计算对应概率的码长为N=ceil(-log2P){2,3,3,4,4}
- 将累加概率转换为二进制后的码字{00,001,010,0111,1000}
- 香农-范诺编码的平均码长为∑N*P=3.39;四位二进制数等长编码平均长度为4
- 可以得出平均码长是等长码的3.39/4=85%,压缩率即为15%
三、哈夫曼编码
3.1 哈夫曼编码简述
- 由给定的m个权值{w(1),w(2),w(3),…,w(m)},构造m课由空二叉树扩充得到的扩充二叉树{T(1),T(2),…T(m)}。每个T(i)(1<= i <= m)只有一个外部节点(也是根节点),它的权值置为m(i)。概括一下就是把原先的节点封装成二叉树结点的形式。
- 在已经构造的所有扩充二叉树中,选取根结点的权值最小和次最小的两棵,将他们作为左右子树,构造成一棵新的扩充二叉树,它的根结点(新建立的内部结点)的权值置为其左、右子树根结点权值之和。
- 重复执行步骤(2),每次都使扩充二叉树的个数减少一,当只剩下一棵扩充二叉树时,它便是所要构造的哈夫曼树。
3.2 特例详解
- 消息通讯字符集为{A,B,C,D,E}
- 它们出现的概率为{0.14,0.12,0.21,0.09,0.44}
- 根据以上信息可得编码表A:110;B:1111;C:10;D:1110;E:0
- 哈夫曼编码平均长度为2.069;三位二进制数等长编码平均长度为3
- 可以得出平均码长是等长码的2.069/3=69%,压缩率即为31%
四、RGB图像压缩
问
一幅1024*768的24位RGB彩色图像一共在内存中占有多少字节? 如果将其保存为非压缩格式的BMP文件,文件有多少字节?请用实例验证。
首先:
- 8 bit(位)=1 Byte(字节)
- 1024 Byte(字节)=1 KB
- 1024 KB=1 MB
由题
- 1024 * 768 * 24
- =18874368(bit)
- =2359296(byte)
- =2304(KB)
- =2.25(MB)
如下图.jpg
.png
.bmp