浅识信息熵与压缩编码

目录

一、信息熵

什么是信息熵?

1、理论提出

信息熵是香农于1948年提出的概念,用来描述信源的不确定度,是从热力学中借用过来的概念。
一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之不确定性就大。

Shannon 借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。

2、基本内容

在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。若信源符号有n种取值:U1…Ui…Un,对应概率为:P1…Pi…Pn,且各种符号的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-logPi的统计平均值(E),可称为信息熵,即
在这里插入图片描述
式中对数一般取2为底,单位为比特。

3、二元信源

最简单的单符号信源仅取0和1两个元素,即二元信源,其概率为P和Q=1-P,该信源的熵即为如图1所示。
由图可见,离散信源的信息熵具有:
①非负性:即收到一个信源符号所获得的信息量应为正值,H(U)≥0
②对称性:即对称于P=0.5
③确定性:H(1,0)=0,即P=0或P=1已是确定状态,所得信息量为零
④极值性:因H(U)是P的上凸函数,且二阶导数在P=0.5时等于0,所以当P=0.5时,H(U)最大。
在这里插入图片描述

4、信息含义

一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度来看,信息熵可以表示信息的价值。

信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;
反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。

二、信息熵计算实例与压缩编码

一串消息包含A,B,C,D,E共5类符号,其内容是AABBBBBBBAAAACCCCCCCCEEEEEEDDDDDDDDDEEEEEEEE, 请问其信息熵是多少?如果分别采用香农-凡诺编码,霍夫曼编码,压缩率分别是多少?

1、信息熵计算

lg2=0.301,求对数时利用换底公式取三位有效数字计算。
在这里插入图片描述

题目所得基本信息列表:

符号 A B C D E 总数
出现次数 6 7 8 9 12 42
概率 6 42 \frac{6}{42} 426 7 42 \frac{7}{42} 427 8 42 \frac{8}{42} 428 9 42 \frac{9}{42} 429 12 42 \frac{12}{42} 4212 1
小数表示(三位有效数字) 0.143 0.167 0.190 0.214 0.286 1
取三位有效数字求对数值(log) -2.81 -2.58 -2.40 -2.22 -1.81

求得信息熵为: H = − P ( A ) log ⁡ 2 P ( A ) − P ( B ) log ⁡ 2 P ( B ) − P ( C ) log ⁡ 2 P ( C ) − P ( D ) log ⁡ 2 P ( D ) − P ( E ) log ⁡ 2 P ( E ) H=-P(A) \log_2 P(A)-P(B) \log_2 P(B)-P(C) \log_2 P(C)-P(D) \log_2 P(D)-P(E) \log_2 P(E) H=P(A)log2P(A)P(B)log2P(B)P(C)log2P(C)P(D)log2P(D)P(E)log2P(E)=-[-(0.143* 2.81+0.167* 2.58+0.190* 2.40+0.214* 2.22+0.286* 1.81)]=(0.401+0.431+0.456+0.475+0.518)=2.281

由上述计算过程可知,该信息熵约为2.281.

2、香农—范诺编码

编码方式
二分法香农-范诺编码方法的步骤如下:
(1)将信源符号按照其出现概率从大到小排序;
(2)从这个概率集合中的某个位置将其分为两个子集合,并尽量使两个子集合的概率和近似相等,给前面一个子集合赋值为0,后面一个子集合赋值为1;
(3)重复步骤(2),直到各个子集合中只有一个元素为止;
(4)将每个元素所属的子集合的值依次串起来,即可得到各个元素的香农编码。
按概率大小排序(由小到大)

符号 A B C D E
出现次数 6 7 8 9 12
概率 6 42 \frac{6}{42} 426 7 42 \frac{7}{42} 427 8 42 \frac{8}{42} 428 9 42 \frac{9}{42} 429 12 42 \frac{12}{42} 4212
小数表示(三位有效数字) 0.143 0.167 0.190 0.214 0.286

划分集合并画树形图
集合1{A,B,C};集合2{D,E}
在这里插入图片描述
符号编码列表:

符号 A B C D E
编码 111 110 10 01 00
需要的位数 18 21 16 18 24
  • 理论编码位数:3*42=126;
  • 实际编码位数:2.281*42=95.802;
  • 所用到的编码位数:18+21+16+18+24=97;
  • 压缩比:97:126=1:1.30。

编码压缩率
( 120 − 97 ) ÷ 120 = 0.192 (120-97)÷120=0.192 (12097)÷120=0.192

所以编码压缩率为19.2%。

3、霍夫曼编码

编码示例
霍夫曼树常处理符号编写工作。根据整组数据中符号出现的频率高低,决定如何给符号编码。如果符号出现的频率越高,则给符号的码越短,相反符号的号码越长。假设我们要给一个英文单字"F O R G E T"进行霍夫曼编码,而每个英文字母出现的频率分别列在Fig.1。
演算过程
(一)进行霍夫曼编码前,我们先创建一个霍夫曼树。
⒈将每个英文字母依照出现频率由小排到大,最小在左,如Fig.1。
⒉每个字母都代表一个终端节点(叶节点),比较F.O.R.G.E.T六个字母中每个字母的出现频率,将最小的两个字母频率相加合成一个新的节点。如Fig.2所示,发现F与O的频率最小,故相加2+3=5。
⒊比较5.R.G.E.T,发现R与G的频率最小,故相加4+4=8。
⒋比较5.8.E.T,发现5与E的频率最小,故相加5+5=10。
⒌比较8.10.T,发现8与T的频率最小,故相加8+7=15。
⒍最后剩10.15,没有可以比较的对象,相加10+15=25。
最后产生的树状图就是霍夫曼树,参考Fig.2。
(二)进行编码
1.给霍夫曼树的所有左链接’0’与右链接’1’。
2.从树根至树叶依序记录所有字母的编码,如Fig.3。
在这里插入图片描述
由小到大排序列表

符号 A B C D E
出现次数 6 7 8 9 12
概率 6 42 \frac{6}{42} 426 7 42 \frac{7}{42} 427 8 42 \frac{8}{42} 428 9 42 \frac{9}{42} 429 12 42 \frac{12}{42} 4212
小数表示(三位有效数字) 0.143 0.167 0.190 0.214 0.286

编码
在这里插入图片描述
出现次数以及编码列表

符号 A B C D E
编码 110 111 10 00 01
需要的位数 18 21 16 18 24
  • 编码所需字符:3*42=126;
  • 实际所需字符:18+21+16+18+24=97;
  • 压缩比:97:126=1:1.30.
  • 香农-范诺编码和霍夫曼编码的原理相同,都是根据符号集中各个符号出现的频繁程度来编码,出现次数越多的符号,给它分配的代码位数越少。
  • 算术编码使用0和1之间的实数的间隔长度代表概率大小,概率越大间隔越长,编码效率可接近于熵。

三、图片格式切换及所占存储空间

一幅1024*768的24位RGB彩色图像一共在内存中占有多少字节? 如果将其保存为非压缩格式的BMP文件,文件有多少字节?请用实例验证。

1、BMP图片大小计算

24位真彩,即每个像素占24bit,一个字节可以储存8位数据。1024*768个像素点,1024 76824=18874368(bit),再除以8转换为byte(8bit=1byte)=2359296(byte)。
又因为1024byte=1KB,再除以1024等于2304KB,如果再除以1024就是2.25MB了
换算法则

8bit(位)=1Byte(字节)
1024Byte(字节)=1KB
1024KB=1MB

在这里插入图片描述

2、实例验证

1、BMP格式

随机选择一张图片,用画图方式打开
在这里插入图片描述
调整像素,点击确定
在这里插入图片描述
点击文件,选择另存为,选择图片存储格式
在这里插入图片描述
保存后,出现图片
在这里插入图片描述
查看图片属性
在这里插入图片描述

由计算与实例验证可知,非压缩格式的BMP文件,其所在大小为2.25MB。

2、RGB格式

同理可得:
RGB格式所占字节数为
在这里插入图片描述

四、参考资料

信息熵.
信息熵通俗易懂的例子 .
香农-范诺编码.

おすすめ

転載: blog.csdn.net/QWERTYzxw/article/details/117200093