资源描述:
《数字图像处理实验(二)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2010–2011第2学期数字图像处理课程实验报告实验二图像的压缩编码学生姓名:学号:专业:信息与计算科学班级:3已知信源符号a、e、i、o、u、k出现的概率分别为0.2,0.3,0.1,0.2,0.1,0.1。编写MATLAB程序对消息序列aiouke进行Huffman编码和算术编码。1.写出对消息序列aiouke编码的Huffman编码和算术编码MATL程序,并对程序做适当注释说明;%%Huffman编码function[HT,HC,ita,r]=myhuffmantree(p)%%%本程序用于建立huffman树,输出huffman编码%%%这里HT是一个结构体数组,用于存放
2、Huffman树,HC是一个单元数组,用于存放概率序列p对应的编码,ita编码效率,r冗余度。n=length(p);[q,idx]=sort(p);fori=1:nHT(i).weight=q(i);weights(i)=q(i);HT(i).parent=0;HT(i).Ichild=0;HT(i).rchild=0;endm=2*n-1;fori=n+1:m[sw,idxw]=sort(weights);HT(idxw((i-n-1)*2+1)).parent=i;HT(idxw((i-n-1)*2+2)).parent=i;HT(i).Ichild=idxw((i-n-1)
3、*2+1);HT(i).rchild=idxw((i-n-1)*2+2);weights(i)=sw((i-n-1)*2+1)+sw((i-n-1)*2+2);endHC1=cell(1,n);fori=1:m-1f=HT(i).parent;ifHT(f).Ichild==iHC1{i}=['1'];elseHC1{i}=['0'];endend%%%回溯HC=cell(1,n);fori=1:nHC{i}=HC1{i};3d=HT(i).parent;whiled~=mHC{i}=[HC{i}HC1{d}];d=HT(d).parent;endendN=[];fori=1:le
4、ngth(HC)[a,b]=size(HC{i});N=[Nb];endR=p*N';%平均码长I=-log2(p);%信息量H=p*I';%信息熵ita=H/R;%编码效率r=1-ita;%冗余度%算术编码函数suanshubianmafunction[acode,ita,r]=suanshubianma(symbol,ps,inseq)%acode编码结果,ita编码效率,r编码冗余度high_range=[];fork=1:length(ps)high_range=[high_rangesum(ps(1:k))];endlow_range=[0high_range(1:len
5、gth(ps-1))];sbidx=zeros(size(inseq));fori=1:length(inseq)sbidx(i)=find(symbol==inseq(i));endlow=0;high=1;N=[];fori=1:length(inseq)range=high-low;high=low+range*high_range(sbidx(i));low=low+range*low_range(sbidx(i));N=[Nlow];endacode=low;I=-log2(ps);%信息量H=ps*I';%信息熵3I2=ceil(I)+1;R=ps*I2';%平均码长i
6、ta=H/R;%编码效率r=1-ita;%冗余度1.输出对消息序列aiouke的Huffman编码和算术编码的编码结果,计算各种编码方法的编码效率及冗余度。对于消息序列aiouke,与之对应的概率序列为p=[0.2,0.1,0.2,0.1,0.1,0.3];对此序列用Huffman编码可以得到:[HT,HC,ita,r]=myhuffmantree(p)HC='101''001''100''000''11''10'ita=0.9409r=0.0591所以对消息序列aiouke的Huffman编码的编码结果为101,001,100,000,11,10;编码效率为0.9409,冗余度为
7、0.0591.对此序列用算术编码可以得到:symbol=['aeiouk'];ps=[0.2,0.3,0.1,0.2,0.1,0.1];inseq=('aiouke');[acode,ita,r]=suanshubianma(symbol,ps,inseq)acode=0.1156ita=0.6116r=0.3884所以对消息序列aiouke的算术编码的编码结果为0.1156;编码效率为0.6116,冗余度为0.3884.3