图像课设huffman编码

图像课设huffman编码

ID:9796391

大小:139.00 KB

页数:8页

时间:2018-05-10

图像课设huffman编码_第1页
图像课设huffman编码_第2页
图像课设huffman编码_第3页
图像课设huffman编码_第4页
图像课设huffman编码_第5页
资源描述:

《图像课设huffman编码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、设计目的:1.了解Huffman编码的原理.2.通过阅读已有程序,掌握Huffman编码.3.会用Huffman编码对一张图片进行编码和解码4.提高编程能力二、Huffman编码的介绍:它是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。以哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。在计算机信息处理中,“哈夫曼编码”是一

2、种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(

3、bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。三、Huffman编码的步骤设信源X的信源空间为:其中,,现用二进制对信源X中的每一个符号(i=1,2,…N)进行编码。根据变长最佳编码定理,Huffman编码步骤如下:(1)将信源符号xi按其出现的概率,由大到小顺序排列。(2)将两个最小的概

4、率的信源符号进行组合相加,并重复这一步骤,始终将较大的概率分支放在上部,直到只剩下一个信源符号且概率达到1.0为止;(3)对每对组合的上边一个指定为1,下边一个指定为0(或相反:对上边一个指定为0,下边一个指定为1);(4)画出由每个信源符号到概率1.0处的路径,记下沿路径的1和0;(5)对于每个信源符号都写出1、0序列,则从右到左就得到非等长的Huffman码。四、Huffman的举例:一幅20×20的图像共有5个灰度级:s1,s2,s3,s4,和s5,它们的概率依次为0.4,0.175,0.15,0.15

5、和0.125。信源符号出现概率码字码长s10.401S20.1751113S30.151103S40.151013S50.1251003图像熵编码后均码长五、Huffman编码的特点:Huffman编码的特点是:(1)Huffman编码构造程序是明确的,但编出的码不是唯一的,其原因之一是两个概率分配码字“0”和“1”是任意选择的(大概率为“0”,小概率为“1”,或者反之)。第二原因是在排序过程中两个概率相等,谁前谁后也是随机的。这样编出的码字就不是唯一的。(2)Huffman编码结果,码字不等长,平均码字最短

6、,效率最高,但码字长短不一,实时硬件实现很复杂(特别是译码),而且在抗误码能力方面也比较差。(3)Huffman编码的信源概率是2的负幂时,效率达100%,但是对等概率分布的信源,产生定长码,效率最低,因此编码效率与信源符号概率分布相关,故Huffman编码依赖于信源统计特性,编码前必须有信源这方面的先验知识,这往往限制了哈夫曼编码的应用。(4)Huffman编码只能用近似的整数位来表示单个符号,而不是理想的小数,这也是Huffman编码无法达到最理想的压缩效果的原因。六、Huffman编码的MATLAB的源

7、程序clearloadwoman;%读入图像数据%X=imread('girl.bmp','bmp');data=uint8(X);[zipped,info]=huffencode(data);%调用Huffman编码程序进行压缩unzipped=huffdecode(zipped,info,data);%调用Huffman编码程序进行解码%显示原始图像和经编码后的图像,显示压缩比,并计算均方根误差得erms=0,表示是Huffman是无失真编码subplot(121);imshow(data);subplo

8、t(122);imshow(unzipped);%erms=compare(data(:),unzipped(:))cr=info.ratiowhosdataunzippedzipped%huffencode函数对输入矩阵vector进行Huffman编码,返回%编码后的向量(压缩后数据)及相关信息function[zipped,info]=huffencode(vector)%输入和输出都是uni

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。