信息论霍夫曼、香农-费诺编码_第1页
信息论霍夫曼、香农-费诺编码_第2页
信息论霍夫曼、香农-费诺编码_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息论第二次作业数据压缩算法的实现 班别:1307011班 学号姓名:黄丹丹实验目的:通过该实验,利用香农编码-费诺编码和霍夫曼编码实现图像数据压缩。二、实验原理:香农-费诺编码 首先,将 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=41568 t /_blank 信源符号以概率递减的次序排列进来,将排列好的信源符号划分为两大组,使第组的概率和近于相同,并各赋于一个二元码符号”0”和”1”.然后,将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近于相同,并又分别赋予一个二元码符号。依次下去,直至每一个小组只剩下一个信

2、源符号为止。这样,信源符号所对应的码符号序列则为编得的码字。译码原理,按照编码的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=111776 t /_blank 二叉树从树根开始,按译码序列进行逐个的向其 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=56076517 t /_blank 叶子结点走,直到找到相应的信源符号为止。之后再把指示标记回调到树根,按照同样的方式进行下一序列的译码到序列结束。如果整个译码序列能够完整的译出则返回成功,否则则返回译码失败。2、霍夫曼编码 霍夫曼编码属于码词长度可变的编码类,是霍

3、夫曼在1952年提出的一种编码方法,即从下到上的编码方法。同其他码词长度可变的编码一样,可区别的不同码词的生成是基于不同符号出现的不同概率。生成霍夫曼编码算法基于一种称为“编码树”(codingtree)的技术。算法步骤如下:(1)初始化,根据符号概率的大小按由大到小顺序对符号进行排序。(2)把概率最小的两个符号组成一个新符号(节点),即新符号的概率等于这两个符号概率之和。重复第2步,直到形成一个符号为止(树),其概率最后等于1。从编码树的根开始回溯到原始的符号,并将每一下分枝赋值为1,上分枝赋值为0。三、实验环境 matlab7.1实验内容对于给定的信源的概率分布,用香农-费诺编码实现图像压

4、缩对于给定的信源的概率分布,用霍夫曼编码实现图像压缩五、实验过程1.香农-费诺编码编码1function c=shannon(p) %p=0.2 0.15 0.15 0.1 0.1 0.1 0.1 0.1 %shannon(p) p,index=sort(p) p=fliplr(p) n=length(p) pa=0 for i=2:n pa(i)= pa(i-1)+p(i-1) end k=ceil(-log2(p) c=cell(1,n) for i=1:n ci=” tmp=pa(i) for j=1:k(i) tmp=tmp*2 if tmp=1 tmp=tmp-1 ci(j)=1 e

5、lse ci(j) = 0 end end end c = fliplr(c) c(index)=c编码2clc;clear;A=0.4,0.3,0.1,0.09,0.07,0.04;A=fliplr(sort(A);%降序排列m,n=size(A);for i=1:nB(i,1)=A(i);%生成B的第1列end%生成B第2列的元素a=sum(B(:,1)/2;for k=1:n-1if abs(sum(B(1:k,1)-a)=abs(sum(B(1:k+1,1)-a)break;endendfor i=1:n%生成B第2列的元素if i=kB(i,2)=0;elseB(i,2)=1;end

6、end%生成第一次编码的结果END=B(:,2);END=sym(END);%生成第3列及以后几列的各元素j=3;while (j=0)p=1;while(p=n)x=B(p,j-1);for q=p:nif x=-1break;elseif B(q,j-1)=xy=1;continue;elsey=0;break;endendendif y=1q=q+1;endif q=p|q-p=1B(p,j)=-1;elseif q-p=2B(p,j)=0;END(p)=char(END(p),0;B(q-1,j)=1;END(q-1)=char(END(q-1),1;elsea=sum(B(p:q-1

7、,1)/2;for k=p:q-2if abs(sum(B(p:k,1)-a)=abs(sum(B(p:k+1,1)-a);break;endendfor i=p:q-1if i=kB(i,j)=0;END(i)=char(END(i),0;elseB(i,j)=1;END(i)=char(END(i),1;endendendendp=q;endC=B(:,j);D=find(C=-1);e,f=size(D);if e=nj=0;elsej=j+1;endendBAENDfor i=1:nu,v=size(char(END(i);L(i)=v;endavlen=sum(L.*A)2.霍夫曼编码functionc=huffman(p)n=size(p,2)if n=1 c=cell(1,1) c1= returnendp1,i1=min(p)index=(1:i1-1),(i1+1:n)p=p(index)n=n-1p2,i2=min(p)index2=(1:i2-1),(i2+1:n)p=p(in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论