




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书(论文)课程设计任务书2013学年第一学期专业: 通信工程 学号: 110250151 姓名: 边阳 课程设计名称: 信息论与编码课程设计 设计题目: 二进制哈夫曼编码的分析与实现 完成期限:自 2013 年 11月 4日至 2013 年 11 月 10 日共 1 周一设计目的1、深刻理解信源编码的基本思想与目的;2、理解哈夫曼编码方法的基本过程与特点;3、提高综合运用所学理论知识独立分析和解决问题的能力;4、使用MATLAB或其他语言进行编程。二设计内容 假设已知一个信源的各符号概率,编写适当函数,对其进行哈夫曼编码,得出M进制码字,平均码长和编码效率,总结此编码方法的特点和应用。三设计要求1、编写的函数要有通用性;2、信源可以自由选择,符号信源与图像信源均可。四设计条件计算机、MATLAB或其他语言环境五参考资料1曹雪虹,张宗橙.信息论与编码.北京:清华大学出版社,2007.2王慧琴.数字图像处理.北京:北京邮电大学出版社,2007.指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘 要 霍夫曼编码是可变字长编码(VLC)的一种。 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。它是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法。在非均匀符号概率分布的情况下,变长编码总的编码效率要高于等字长编码。因为具体规定了编码的方法,能使无失真编码的效率非常接近与1,所以在压缩信源信息率的实用设备中,哈夫曼编码还是比较常用的。本课题利用哈夫曼编码的方法实现了对信源符号的熵、平均码长、传输速率、编码效率等的求解。关键词:哈弗曼编码;信源;哈夫曼树目 录1课题描述42设计原理43 设计过程53.1课题介绍53.1.1 Huffman编码特点63.1.2哈夫曼编码方法63.3设计步骤74哈夫曼编码的MATLAB实现8总 结11参考文献121课题描述 huffman编码是一种二进制编码的算法,目的是缩小原来的数据,简单的说就是将出现概率较高的符号分配较少的码字,而出现概率大的符号分配较长的码字,这样起到压缩数据的作用。哈夫曼编码是可变字长编码(VLC)的一种。 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。 本课题是利用哈夫曼编码方式来实现对信源符号码字、平均码长及编码效率的求解。开发工具: MATLAB。2设计原理设计原理如下: 设数字图像像素灰度级集合为d1,d2,dm,其对应的概率分别为 p(d1),p(d2),p(dm)。按信息论中信源信息熵的定义,图像的熵定义为: (2.1) 图像的熵表示像素各个灰度级位数的统计平均值,给出了对此输入灰度 级集合进行编码时所需的平均位数的下限。 设i为数字图像中灰度级di所对应的码字长度(二进制代码的位数),其相应出现的概率为P(di),则该数字图像所赋予的平均码字长度为: (2.2) (2.3) 根据信息论中信源编码理论,可以证明在RH条件下,总可以设计出某种无失真编码方法。当然如果编码结果使R远大于H,表明这种编码方法效率很低,占用比特数太多。最好编码结果是使R等于或接近于H。这种状态的编码方法,称为最佳编码。 压缩比是指编码前后平均码长之比,如果用n表示编码前每个符号的平均码长,通常为用自然二进制码时的位数,则压缩比可表示为: (2.4) 一般来讲,压缩比大,则说明被压缩掉的数据量多。一个编码系统要研究的问题是设法减小编码平均长度R,使编码效率尽量趋于1,而冗余度趋于0。3 设计过程3.1课题介绍3.1.1 Huffman编码特点凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。哈夫曼(Huffman)编码是最佳变长编码方法的一种,它是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法。进行哈夫曼编码时,为得到码方差最小的码,应使合并的信源符号位于缩减信源序列尽可能高的位置上,以减少再次合作的次数,充分利用短码。哈夫曼码是用概率匹配方法进行信源编码。它有两个明显的特点:一是哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,充分利用了短码;二是缩减信源的最后两个码字总是最后一位不同,从而保证了哈夫曼编码是即时码。哈夫曼编码方法得到的码并非是唯一的,造成并非唯一的原因是:首先,每次对信源缩减时,赋予信源最后两个概率最小的符号,用0和1可以任意的,所以可以得到不同的哈夫曼码,但不会影响码字的长度。其次:对信源进行缩减时,两个概率最小的符号合并后的概率与其他信源符号的概率相同时,这两者在缩减信源中进行概率排序,其位置放置次序是可以任意的,故会得到不同的哈夫曼码。此时将影响码字的长度,一般将合并的概率放在上面,这样可以获得较小的码方差。对于多进制哈夫曼编码,为了提高编码效率,就要使长码的符号数量尽量少、概率尽量小,所以信源符号数最好满足,其中r为进制数,n为缩减的次数。例如,要进行三进制编码,那么最好信源有7个符号,第1次合并后减少2个成为5个,第2次合并后又减少2个成为3个,这样给每一步赋予三进制符号就没有浪费了。但如果信源只有6个符号时,为了尽量减少最长码的数量,则应该在第1次合并时添置概率为零的虚拟符号1个,事实上只合并2个概率最小的符号,后面每次合并三个,就可以使得最长码的符号数量最少,也就是长码的概率最小,从而得到最高的编码效率。哈夫曼变长码的效率是相当高的,它可以单个信源符号编码或用L较小的信源序列编码,对编码器的设计来说也将简单的多。但是应当注意,要达到很高的效率仍然需要按长序列来计算,这样才能使平均码字长度降低。3.1.2 哈夫曼编码方法(1) 将信源消息符号按其出现的概率大小依次排列为P1P2 Pn (2)将两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。 (3) 对重排后的两个概率最小符号重复步骤(2)的过程。 (4) 不断继续上述过程,直到最后两个符号配以0和1为止。 (5) 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。3.2设计内容一个有8个符号的信源X,各个符号出现的概率为:X= 试进行霍夫曼编码,并计算平均码长、编码效率、压缩比、冗余度等。3.3 设计步骤最终的各符号的霍夫曼编码如下:u1: 1 u2: 001 u3: 011 u4: 0000u5: 0100 u6: 0101 u7:00010 u8: 00011霍夫曼编码时,对同一源图像序列,霍夫曼编码并不是唯一的。如果节标1和标0的对调,则相应的霍夫曼编码变成:u1: 0 u2: 110 u3: 100 u4: 1111u5: 1011 u6: 1010 u7: 11101 u8: 11100 对照两组霍夫曼编码不难看出,尽管两者的组成不同,但两者的平均码长是一致的。再根据以上数据,可分别计算其信源的熵、平均码长、编码效率及冗余度,即熵: =0.4lb 0.40.18lb 0.180.10lb 0.10.07lb 0.070.06lb 0.06 0.05lb 0.050.04lb 0.04 =2.55平均码长: =10.04+30.18+30.10+40.10+40.07+40.06+50.05 + 50.04 =2.61编码效率: 压缩之前8个符号需要3个比特量化,经压缩之后的平均码字长度为2.61,因此压缩比为: 冗余度为: 对上述信源X的霍夫曼编码,其编码效率已达97.7,仅有2.3的冗余。 4 哈夫曼编码的MATLAB实现在matlab中调用了用户自定义文件humanff.m的文件,其源代码为:function h,l=huffman(p)if length(find(p10e-10 error(Input is not a prob.vector,the sum of the component is not equal to1.);endn=length(p); %得到输入的元素个数q=p;m=zeros(n-1,n);for i=1:n-1, q,e=sort(q); m(i,:)=e(1:n-i+1),zeros(1,i-1); q=q(1)+q(2)+q(3:n),e;endfor i=1:n-1, c(i,:)=blanks(n*n);end%以下计算各个元素码字c(n-1,n)=0;c(n-2,2*n)=1;for i=2:n-1; c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1)-(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n)=0; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=1; for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)=j+1)-1)+. 1:n*find(m(n-i+1,:)=j+1);end在计算信源平均信息量的时候调用了message函数,在计算信源平均信息量的时候调用了message函数,message函数的源代码为:function r=message(x,n) %参数x是概率分布,n是离散信源的分布值数目r=0;for i=1:n r=r-x(i)*log(x(i)/log(2);enddisp(此离散信源的平均信息量为);r通常哈夫曼编码学的效率是小于1的,但当信源为某些特殊情况时,可以是效率达到1,当然是不可能超过1的。如:分别调用huffman和message函数如下:clear all;p=1/3,1/6,1/15,1/15,11/30 %定义概率序列p= 0.3333 0.1667 0.0667 0.0667 0.3667截图为:总 结通过该课程设计,我掌握了编译程序的原理以及步骤,还有编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,构造工具及其相关的技术。课本上的知识是机械的,抽象的。在本次课程设计, 我有很大的收获。这首先体现在理论知识的完善上:采用等长编码的优点是编码过程和解码过程简单,可是这种方法没有考虑各个符号出现的概率,实际上就是将它们当做等概率事件处理的,所以它的编码效率比较低,而哈夫曼编码是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法,它的平均码长最小,消息传输速率最大,编码效率最高;同时实践能力和动手能力有了质的飞跃!设计中,我自感知识的缺陷,不断的上网查阅资料,翻阅各类相关书籍,自己动手,自己设计,让我的思维逻辑更加清晰。在上机操作中,靠这次设计我熟练掌握了计算机编程,将理论变为实际开了一个好头。在我设计好之后,老师对我进行指导,使得我的课程设计进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年十八项医疗核心制度考试试题库及参考答案
- 辽宁省沈阳市康平县2024-2025学年八年级下学期期末语文试题(解析版)
- 小学技术考试试题及答案
- 2025培训中心合作协议模板
- 2025授权代理协议书全新版
- 2025劳动合同解除证明书电子版
- 搬运作业培训课件
- 搜寻动人事课件
- 2025执业医师合同范本
- 时政面试全攻略:如何应对最近时政面试题
- 七年级数学(上)有理数混合运算100题(含答案)
- 园林制图(高职)全套教学课件
- 强化训练四川峨眉第二中学物理八年级下册期末考试综合训练试卷(含答案详解版)
- 五年级(上册)道德与法治全册教案
- 网约车营运损失起诉状模板
- 镶贴工施工材料质量控制详细办法培训
- 浅谈第三次农业普查的表式和指标设置
- 宁夏长爪沙鼠资源调查
- 【实习护生社交焦虑现状及影响因素实证7500字(论文)】
- 三对三篮球赛记录表
- 城市发展史起源演变和前景概述课件
评论
0/150
提交评论