matlab最佳前缀码霍夫曼编码,R元HuffMan编码的MATLAB实现

R元HuffMan编码的MATLAB实现

1-77-jpg_6_0_______-512-0-0-512.jpg

1-66-png_6_1_0_627_339_80_20_892.5_1212-268-0-172-268.jpg

1-47-png_6_1_0_64_887_447_18_892.5_1212-1181-0-243-1181.jpg

1-47-png_6_1_0_64_904_447_18_892.5_1212-1181-0-295-1181.jpg

1-47-png_6_1_0_64_922_447_18_892.5_1212-1181-0-347-1181.jpg

1-47-png_6_1_0_64_939_447_18_892.5_1212-1181-0-399-1181.jpg

1-47-png_6_1_0_64_957_447_17_892.5_1212-1181-0-451-1181.jpg

1-47-png_6_1_0_64_974_447_18_892.5_1212-1181-0-503-1181.jpg

1-47-png_6_1_0_64_991_447_18_892.5_1212-1181-0-555-1181.jpg

1-47-png_6_1_0_64_1009_447_18_892.5_1212-1181-0-607-1181.jpg

1-47-png_6_1_0_64_1026_447_18_892.5_1212-1181-0-659-1181.jpg

1-47-png_6_1_0_64_1044_447_17_892.5_1212-1181-0-711-1181.jpg

1-47-png_6_1_0_64_1061_447_18_892.5_1212-1181-0-763-1181.jpg

1-47-png_6_1_0_64_1078_447_18_892.5_1212-1181-0-815-1181.jpg

1-47-png_6_1_0_64_1096_447_18_892.5_1212-1181-0-867-1181.jpg

1-34-png_6_1_0_64_1113_447_13_892.5_1212-1181-0-919-1181.jpg

1-66-png_6_1_0_542_979_300_25_892.5_1212-787-0-958-787.jpg

1-66-png_6_1_0_542_1004_300_25_892.5_1212-787-0-1029-787.jpg

1-66-png_6_1_0_542_1028_300_26_892.5_1212-787-0-1100-787.jpg

1-66-png_6_1_0_542_1053_300_25_892.5_1212-787-0-1171-787.jpg

1-66-png_6_1_0_542_1078_300_25_892.5_1212-787-0-1242-787.jpg

1-61-png_6_1_0_542_1103_300_23_892.5_1212-787-0-1313-787.jpg

1-246-jpg_6_0_______-244-0-77-244.jpg

R元HuffMan编码的MATLAB实现

张月华  崔文超  湖北省宜昌市三峡大学理学院  443002

的码字越短,符号出现的概率越低,被分配的码字越长。

(2)两个出现频率最少的符号将有相同长度的码字,并且他们只有最低有效位不同。

这些编码的平均长度接近于信源的熵。

3. 算法及实现

本算法的r元编码过程实现如下:(1)将q个信源按概率分布大小依递减次序排列:

(2)用0,1,2,…,r-1码符号分别代表概率最小的r个信源符号,并将这r个概率最小的信源符号合并成一个,以得列只包含q-r+1个符号的新信源S1,称为缩减信源;

(3)把缩减信源S1的符号仍按概率大小依递减次序排列,并将其最后r个概率最小的符号合并成一个符号,并分别用0,1,2,…,r-1码符号表示这样就形成了q-2(r-1)个符号的缩减信源S2;

(4)依次继续下去,直至信源最后只剩下r个符号为止。将这最后r个信源符号分别用r进制符号0,1,…,r-1表示;

(5)然后,从最后一级缩减信源开始,向前返回,就得出各信源符号所对应的码符号序列,即相应的码字。

对于r元Huffman编码,为充分利用短码,使Huffman的平均码长最短,必须使最后一个缩减信源有r信源符号,因此,信源S符号的个数n1,需补K个概率为0的符号,则需满足

n1+K=S(r-1)+r

式中,S表示信源缩减的次数。在Matlab中,缩减次数S和补零个数K可由下列语句实现:

n1=length(p);

s=ceil((n1-r)/(r-1));k=(r-1)*s+r-n1;

程序中“m矩阵”记录了每次缩减后新信源的符号概率排序标号。Sort函数实现将符号概率按升序排列,程序中将q

分配具有唯一可译的可变长码字(Variable-length code),降低平均码字长度,以提高信息的传输速度,节省存储空间。

本文在第2部分将结合统计编码(statistic coding)中的最佳编码Huffman编码,讨论其编码的基本原理;第3部分介绍Huffman编码的算法实现(多元);第4 部分将结合本文实验结果讨论Huffman编码的性能;最后,总结文章。

2. Huffman编码(coding)的基本原理

最佳编码定理:在变长编码中,如果码字长度严格按照信息源(source)中符号出现概率大小的相反顺序排列,则平均码字长度一定其他符号顺序排列方式的平均码字长度。基于Shannon的原编码理论,信源(source)可以使用接近信源的熵的平均长度编码对信源进行编码。1952年D.A. Huffman提出的Huffman编码基于对以下两种最佳前缀编码(prefixcode)的观察:

(1)符号出现的概率越频繁,被分配

⒈ 引言

图像数据是一种十分重要且数据量很大的信息源,特别是多媒体及网络技术兴起后,它已成为多媒体信息中最重要的组成部分,其编码压缩技术受到人们的普遍关注。在图像通信、多媒体网络通信等场合,压缩编码已形成一系列静态图像和视频国际标准,它们为信息高速公路的铺设奠定了技术基础。统计编码(statisticcoding)是根据信息源的概率分布特性,

表1  2元Huffman编码生成过程举列

表2  不同进制的Huffman编码结果比较

 哈夫曼编码(Huffman Coding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的字,有时称之为最佳编码,一般就叫作Huffman编码。 以哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。 在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。 例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值