第三次作业
2.利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a)对Sena,Sensin和Omaha图像进行编码。
答:
| 图片名称 | 压缩前 | 压缩后 | 压缩比 |
| sena | 64.0KB | 56.1KB | 87.6% |
| sensin | 64.0KB | 60.2KB | 94.1% |
| Omaha | 64.0KB | 57.0KB | 89.1% |
4.一个信号源从符号集A={a1,a2,a3,a4,a5}中选择字母,其概率为P(a1)=0.15, P(a2)=0.04, P(a3)=0.26, P(a4)=0.05, P(a5)=0.50.
(a)计算这个信源的熵。
(b)求这个信源的霍夫曼码。
(c)求(b)中代码的平均长度及其冗余度。
答:(a)P(a1)=0.15,P(a2)=0.04,P(a3)=0.26,P(a4)=0.05,P(a5)=0.50
H(x)=-Σp(ai)logp(ai)
H(x)=-p(a1)log2p(a1)-p(a2)log2p(a2)-p(a3)log2p(a3)-p(a4)log2p(a4)-p(a5)log2p(a5)
=-0.15*log20.15-0.04*log20.04-0.26log20.26-0.05log20.05-0.50log20.50
=1.82bit
(b) a1的霍夫曼编码为001
a2的霍夫曼编码为0000
a3的霍夫曼编码为01
a4的霍夫曼编码为0001
a5的霍夫曼编码为1
霍夫曼码:
| 字母 | 概率 | 码字 | 码长 |
| a1 | 0.15 | 110 | 3 |
| a2 | 0.04 | 1111 | 4 |
| a3 | 0.26 | 10 | 2 |
| a4 | 0.05 | 1110 | 4 |
| a5 | 0.5 | 0 | 1 |
(c)平均长度L=3*0.15+4*0.04+2*0.26+4*0.05+1*0.5
=1.83(bit/pel)
冗余度:L-H=1.83-1.82=0.01
2、 思考:为什么压缩领域中的编码方法总和二叉树联系在一起呢?
答:为了使用不固定的码长表示单个字符,编码必须符合“前缀编码”的要求,即较短的编码决不能是较长编码的前缀。要构造符合这一要求的二进制编码体系!