资源描述:
《数字图像处理实验六压缩编码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验六统计压缩编码一、实验目的:1,掌握不等长编码的基本原理及方法2,掌握衡量压缩效果的技术指标3,掌握Huffman编码的方法二,实验条件1,MATLAB2,典型的灰度、彩色图像文件三,原理1.去除数据冗余度可以有效的压缩数据2.图像编码的主要技术指标:压缩比、客观评价值SNR、主观评价值四,实验内容:1,通过MATLAB编程,对8*8图像子块实施Hiffman编码并计算平均码长2,计算上述编码的效率,压缩比并对相应数据作出解释。五,实验步骤1,Huffman编码的方法与步骤如下所示:(1)将概率按
2、从小到大的顺序排列(2)给两个概率最小的信源符号和八〃2)各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和最为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源,称为信源的第一次缩减信源,用S1表不。(3)将缩减信源S1的符号仍按概率从大到小的顺序排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2。(4)重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩的两个符号的概率之和为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所
3、对应的码字。2,假设这个8*8的字块是由0-5这六个像素组成,对这个字块进行概率统计,并按概率从小到大的顺序排列,如下所示:P=(0.250.250.20.150.10.05)则对于假设的字块进行Huffman编码的matlab程序如下所;:n=input('N-);%L=0;H=0;fori=l:nP(i)=input('P=’);%输入像素概率分布s=s+P(i);endifs〜=1errorf不符合概率分布*);endP=sort(P);P=P;mark=zeros(n-l,n);%mark为n
4、-1行,n列矩阵,用来记录甸行概率排列次序fori=l:n-l[P,num]=sort(P);%对输入元素排序并记录mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];P=[P(l)+P(2),P(3:n),l];endfori=l:n-ltable(i,:)=blanks(n*n);%blanks创建空格串endtable(n-l,n)=T;table(n-l,2*n)-0ffori=2:n-ltable(n-i,l:n-l)=table(n-i+1,n*(find(mark
5、(n-i+l,:)==1))-(n-2):n*(find(mark(n-i+l,:)==l)));°/(^mark的记录依次赋值table(n-i,n)='r;table(n-i,n+1:2*n-l)=table(n-i,l:n-l);table(n-i,2*n)-0,;forj=l:i-ltable(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1));%mark
6、的记录依次赋值endend%得到编码后的码字fori=l:nW(i,1:n)=table(l,n*(find(mark(l,:)==i)-1)+1:find(mark(l,:)==i)*n);l(i)=length(find(abs(W(i,:))〜=32));%32表示空字符,要找不是空字符的个数,即为每个数编码的个数L=L+p(i)*l(i);%计算平均码长H=H-p(i)*log2(p(i));%计算信源摘endxiaolv=H/L;%计算编码效率disp(’输出每个概率的编码’);disp(W
7、);disp(’输出平均码长L:•);disp(L);disp(’输出编码效率xiaolv:’);disp(xiaolv);3,计算结果如下:(1)输出每个灰度级的编码00010000001111001(2)计算其平均码长和编码效率平均码长L=2.4500编码效率xiaolv=0.9891KATLABFileEditDebugDesktopWindowHelpDfi?
8、"li舞137CurrentDirectory:C:PrograinFilesHATLAB71work[…jShortcu
9、tsLfJHowtoAddVhtt?sMtwV/orksDaceCommandWindowHLpwijI«!田田田S田田SEcha6dou4dou(4439991HnuaStartCurrentDirectoryWorkspaceCommandHistory