信息论编码课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计说明书(论文)第1页共12页课程设计任务书2013学年第一学期专业:通信工程学号:110250151姓名:边阳课程设计名称:信息论与编码课程设计设计题目:二进制哈夫曼编码的分析与实现完成期限:自2013年11月4日至2013年11月10日共1周一.设计目的1、深刻理解信源编码的基本思想与目的;2、理解哈夫曼编码方法的基本过程与特点;3、提高综合运用所学理论知识独立分析和解决问题的能力;4、使用MATLAB或其他语言进行编程。二.设计内容假设已知一个信源的各符号概率,编写适当函数,对其进行哈夫曼编码,得出M进制码字,平均码长和编码效率,总结此编码方法的特点和应用。三.设计要求1、编写的函数要有通用性;2、信源可以自由选择,符号信源与图像信源均可。四.设计条件计算机、MATLAB或其他语言环境五.参考资料[1]曹雪虹,张宗橙.信息论与编码.北京:清华大学出版社,2007.[2]王慧琴.数字图像处理.北京:北京邮电大学出版社,2007.指导教师(签字):教研室主任(签字):批准日期:年月日课程设计说明书(论文)第2页共12页摘要霍夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。它是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法。在非均匀符号概率分布的情况下,变长编码总的编码效率要高于等字长编码。因为具体规定了编码的方法,能使无失真编码的效率非常接近与1,所以在压缩信源信息率的实用设备中,哈夫曼编码还是比较常用的。本课题利用哈夫曼编码的方法实现了对信源符号的熵、平均码长、传输速率、编码效率等的求解。关键词:哈弗曼编码;信源;哈夫曼树课程设计说明书(论文)第3页共12页目录1课题描述....................................................................................................................42设计原理....................................................................................................................43设计过程...................................................................................................................53.1课题介绍...........................................................................................................53.1.1Huffman编码特点.................................................................................63.1.2哈夫曼编码方法.....................................................................................63.3设计步骤...........................................................................................................74哈夫曼编码的MATLAB实现..................................................................................8总结...........................................................................................................................11参考文献.....................................................................................................................12课程设计说明书(论文)第4页共12页1课题描述huffman编码是一种二进制编码的算法,目的是缩小原来的数据,简单的说就是将出现概率较高的符号分配较少的码字,而出现概率大的符号分配较长的码字,这样起到压缩数据的作用。哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。本课题是利用哈夫曼编码方式来实现对信源符号码字、平均码长及编码效率的求解。开发工具:MATLAB。2设计原理设计原理如下:设数字图像像素灰度级集合为{d1,d2,…,dm},其对应的概率分别为p(d1),p(d2),…,p(dm)。按信息论中信源信息熵的定义,图像的熵定义为:字符bitdilbPdiPHmi)(1(2.1)图像的熵表示像素各个灰度级位数的统计平均值,给出了对此输入灰度级集合进行编码时所需的平均位数的下限。设βi为数字图像中灰度级di所对应的码字长度(二进制代码的位数),其相应出现的概率为P(di),则该数字图像所赋予的平均码字长度为:midiiPR1)((2.2)00100RH(2.3)根据信息论中信源编码理论,可以证明在R≧H条件下,总可以设计出某种无失真编码方法。当然如果编码结果使R远大于H,表明这种编码方法效率很低,占用比特数太多。最好编码结果是使R等于或接近于H。这种状态的编码课程设计说明书(论文)第5页共12页方法,称为最佳编码。压缩比是指编码前后平均码长之比,如果用n表示编码前每个符号的平均码长,通常为用自然二进制码时的位数,则压缩比可表示为:Rnr(2.4)一般来讲,压缩比大,则说明被压缩掉的数据量多。一个编码系统要研究的问题是设法减小编码平均长度R,使编码效率尽量趋于1,而冗余度趋于0。3设计过程3.1课题介绍3.1.1Huffman编码特点凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。哈夫曼(Huffman)编码是最佳变长编码方法的一种,它是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法。进行哈夫曼编码时,为得到码方差最小的码,应使合并的信源符号位于缩减信源序列尽可能高的位置上,以减少再次合作的次数,充分利用短码。哈夫曼码是用概率匹配方法进行信源编码。它有两个明显的特点:一是哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,充分利用了短码;二是缩减信源的最后两个码字总是最后一位不同,从而保证了哈夫曼编码是即时码。哈夫曼编码方法得到的码并非是唯一的,造成并非唯一的原因是:首先,每次对信源缩减时,赋予信源最后两个概率最小的符号,用0和1可以任意的,所以可以得到不同的哈夫曼码,但不会影响码字的长度。其次:对信源进行缩减时,两个概率最小的符号合并后的概率与其他信源符号的概率相同时,这两者在缩减课程设计说明书(论文)第6页共12页信源中进行概率排序,其位置放置次序是可以任意的,故会得到不同的哈夫曼码。此时将影响码字的长度,一般将合并的概率放在上面,这样可以获得较小的码方差。对于多进制哈夫曼编码,为了提高编码效率,就要使长码的符号数量尽量少、概率尽量小,所以信源符号数最好满足rnrm1,其中r为进制数,n为缩减的次数。例如,要进行三进制编码,那么最好信源有7个符号,第1次合并后减少2个成为5个,第2次合并后又减少2个成为3个,这样给每一步赋予三进制符号就没有浪费了。但如果信源只有6个符号时,为了尽量减少最长码的数量,则应该在第1次合并时添置概率为零的虚拟符号1个,事实上只合并2个概率最小的符号,后面每次合并三个,就可以使得最长码的符号数量最少,也就是长码的概率最小,从而得到最高的编码效率。哈夫曼变长码的效率是相当高的,它可以单个信源符号编码或用L较小的信源序列编码,对编码器的设计来说也将简单的多。但是应当注意,要达到很高的效率仍然需要按长序列来计算,这样才能使平均码字长度降低。3.1.2哈夫曼编码方法(1)将信源消息符号按其出现的概率大小依次排列为P1≧P2≧…≧Pn(2)将两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。(3)对重排后的两个概率最小符号重复步骤(2)的过程。(4)不断继续上述过程,直到最后两个符号配以0和1为止。(5)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。3.2设计内容一个有8个符号的信源X,各个符号出现的概率为:X=04.005.006.007.010.010.018.040.087654321概率:符号:uuuuuuuu课程设计说明书(论文)第7页共12页试进行霍夫曼编码,并计算平均码长、编码效率、压缩比、冗余度等。3.3设计步骤最终的各符号的霍夫曼编码如下:u1:1u2:001u3:011u4:0000u5:0100u6:0101u7:00010u8:00011霍夫曼编码时,对同一源图像序列,霍夫曼编码并不是唯一的。如果节标1和标0的对调,则相应的霍夫曼编码变成:u1:0u2:110u3:100u4:1111u5:1011u6:1010u7:11101u8:11100对照两组霍夫曼编码不难看出,尽管两者的组成不同,但两者的平均码长是一致的。再根据以上数据,可分别计算其信源的熵、平均码长、编码效率及冗余度,即熵:bPkkPxHk1)(81=-0.4lb0.4-0.18lb0.18-0.10lb0.1-0.07lb0.07-0.06lb0.06-0.05lb0.05-0.04lb0.04=2.55平均码长:kPkxRk81)(=1×0.04+3×0.18+3×0.10+4×0.10+4×0.07+4×0.06+5×0.05+5×0.04=2.61编码效率:00007.9710061.255.2RH课程设计说明书(论文)第8页共12页压缩之前8个符号需要3个比特量化,经压缩之后的平均码字长度为2.61,因此压缩比为:15.161.23C冗余度为:003.21r对上述信源X的霍夫曼编码,其编码效率已达97.7%,仅有2.3%的冗余。4哈夫曼编码的MATLAB实现在matlab中调用了用户自定义文件humanff.m的文件,其源代码为:function[h,l]=huffman(p)iflength(find(p0))~=0;error('Inputisnotaprob.vector,thereisnegatibecomponent');endifabs(sum(p)-1)10e-10error('Inputisnotaprob.vector,thesumofthecomponentisnotequalto1.');endn=length(p);%得到输入的元素个数q=p;m=zeros(n-1,n);fori=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];endfori=1:n-1,c(i,:)=blanks(n*n);end%以下计算各个元素码字课程设计

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功