您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 小波压缩、编码、重构、信噪比求取(附程序代码)
PROJECT07-01一维哈尔小波变换如M文件haardwt.m所示,一维哈尔逆变换如inhaardwt.m所示。1.以EX7.8为例,J=2,f=[14-30]。调用M文件haardwt.m:posidwt=haardwt(2,[14-30])posidwt=1.00034.0012-2.1216-2.12162.同样,以EX7.8为例,利用其逆变换,重建其原始函数,验证逆变换的正确性。调用M文件inhaardwt.m,输入J=2,W=[14-2.121-2.121];J=2;W=[14-2.121-2.121];Out=inhaardwt(J,W)Out=0.99973.9988-2.99910.0000由结果可以验证该哈尔变换程序和逆程序的正确性。functionposidwt=haardwt(J,f)%writeaprogramtocomputej-scaleDWTswithrespecttoHaarwavelets.%letscalejbeainputparameterandassumea2Mpointsdiscrete%one-dimensionalfunction.%usetheaveraginganddifferencingapproach.%INPUTS:%------------------------------------------------------%%Jscale%fone-dimensionalarrayincluding2Mpoints%------------------------------------------------------%%OUTPUTS:%------------------------------------------------------%%posidwtone-dimensionalarrayincludingMpoints%------------------------------------------------------%ifnargin=1|nargin2error('invalidnumberofoutputargument');endin=f;N=size(in,2);M=N/2;ifJ=0|Jlog2(N)error('invalidnumber,pleaseinputtheappropriatenumber');endxx=mod(N,2);ifxx==1error('thenumberoffmustbeeven,pleaseinputthe2Mpointsdiscretefunctionagain');endforj=1:Jfori=1:Mout(1,i)=[in(1,2*i-1)+in(1,2*i)]/1.414;out(1,M+i)=[in(1,2*i-1)-in(1,2*i)]/1.414;endin=out;M=M/2;endposidwt=out;functionOut=inhaardwt(J,W)%writeaprogramtocomputej-scaleDWTswithrespecttoHaarwavelets.%letscalejbeainputparameterandgivethetransformcoefficient.%usetheaveraginganddifferencingapproach.%INPUTS:%------------------------------------------------------%%Jscale%Wthetransformcoefficient%------------------------------------------------------%%OUTPUTS:%------------------------------------------------------%%indwttheoriginalfunction%------------------------------------------------------%In=W;[m,n]=size(In);Out=zeros(m,n);if(2^Jn)disp('pleaseinputappropriatevalue');endif(m~=1)disp('ÊäÈëάÊý²»ºÏÀí£¬ÇëÊäÈëһάÊý¾Ý£¡');endN=n/(2^J);Out=In*1.414;M=n/2;forj=1:Jif(M==1)break;elsefori=1:MOut(1,i)=Out(1,i)*1.414;endM=M/2;endendforj=1:JIn=Out;fori=1:Nif(N==n)break;endOut(1,2*i-1)=(In(1,i)+In(1,N+i))/2;Out(1,2*i)=(In(1,i)-In(1,N+i))/2;end%In=Out;N=N*2;endProject08-01均方根误差和信噪比的计算程序如M文件criteria.m所示。[M,N]=size(f2);e=double(f1)-double(f2);%得到其输入图像和近似图像ERMS=sqrt(1/(M*N)*sum(sum(e.^2)));%求出其均方根误差SNR=sum(sum(f1.^2))/(sum(sum(f1-f2).^2));%求出其信噪比function[ERMS,SNR]=criteria(f1,f2)%computetheroot-mean-squareerrorandmeansquaresignal-to-noiseratioof%acompressed-decompressedimage.%INPUTS%-------------------------------------------------------------------------%%f1theapproxiamatevalue%f2therealvalue%-------------------------------------------------------------------------%%OUTPUTS%-------------------------------------------------------------------------%%ERMStheroot-mean-squareerror%SNRsignal-to-noiseratio%-------------------------------------------------------------------------%[M,N]=size(f2);e=double(f1)-double(f2);ERMS=sqrt(1/(M*N)*sum(sum(e.^2)));SNR=sum(sum(f1.^2))/(sum(sum(f1-f2).^2));Project08-03DFT和DCT的图像压缩程序如M文件imagecoding.m所示。分别进行分块、编码、传送、解码以后,可以得到压缩后的图像。原始图像和压缩后的图像分别由sig1和sig2表示。原始图像大小为512*512,分成8*8小块,当每小块比特分配为8个系数时,调用M文件criteria.m,计算其信息损失量。1.对DFT变换和DCT变换,其图像分别如图一和图二所示:图一DFT变换图像图二DCT变换图像分析:对比图一和图二,由主观评估来看,DFT相比DCT具有较好的质量。DFT存在的干扰更小一些。对DFT变换和DCT变换,其均方根误差和信噪比如下表所示:保留8个最大系数DFTDCT均方根误差0.03760.0397信噪比4.83794.0076表一DFT和DCT的信息损失对比表分析:由表一可知,DFT的均方根误差更小一些,而信噪比更大,也说明了基于DFT的压缩变换图像比DCT效果更好。2.逐渐减少保留系数,并同时对DFT和DCT进行对比。可得表二所示:系数保留值DFTDCT均方根信噪比均方根信噪比80.03764.83790.03974.007660.03764.83780.03994.007240.03893.99190.03993.988520.0392-0.0000i0.0392-0.0000i0.03993.9885分析,随着保留最大系数的逐渐减少,可知其均方根误差逐渐增大,信噪比逐渐减少,图像质量更差,产生的干扰更多,对于DCT,当保留系数减小到一定值时,其均方根和信噪比可近似不发生变换。%twodimensionaldiscretewavelettransformsubplot(2,2,1);f=imread('test.tif');imshow(f);title('ÔʼͼÏñ');disp('ѹËõÇ°µÄͼÏñµÄ´óС£º');whos('f')[c,l]=wavedec2(f,J,'bior3.7');cA1=appcoef2(c,l,'bior3.7',1);cH1=detcoef2('h',c,l,1);cD1=detcoef2('d',c,l,1);cV1=detcoef2('v',c,l,1);A1=wrcoef2('a',c,l,'bior3.7',1);H1=wrcoef2('h',c,l,'bior3.7',1);D1=wrcoef2('d',c,l,'bior3.7',1);V1=wrcoef2('v',c,l,'bior3.7',1);c1=[a1h1;v1d1];c1=uint8(c1);subplot(2,2,2);imshow(c1);title('·Ö½âºóµÄµÍƵºÍ¸ßƵÐÅÏ¢');ca1=wcodemat(cA1,440,'mat',0);ca1=uint8(ca1*1);subplot(2,2,3);imshow(ca1);title('µÚÒ»´ÎѹËõºóµÄͼÏñ');disp('µÚÒ»´ÎѹËõºóͼÏñµÄ´óС£º');whos('ca1')cA2=appcoef2(c,l,'bior3.7',2);ca2=wcodemat(cA2,440,'mat',0);ca2=uint8(ca2*1);subplot(2,2,4);imshow(ca2);title('µÚ¶þ´ÎѹËõºóµÄͼÏñ');disp('µÚ¶þ´ÎѹËõºóµÄͼÏñ´óС£º');whos('ca2')Project08-041.利用二维小波信息,进行量化、编码、重构,对图像进行压缩该过程可见M文件twodct.m。图三尺度J=5时的图像压缩前的图像的大小:NameSizeBytesClassAttributesf512x512262144uint8第一次压缩后图像的大小:NameSizeBytesClassAttributesca1263x26369169uint8第二次压缩后的图像大小:NameSizeBytesClassAttributesca2139x13919321uint8分析,第一次压缩提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小,约为四分之一左右。第二次压缩是提取第一层分解低频部分的低频部分,压缩比变大,约为1/13.5。随着分解层数的增加,压缩比递减,视觉效果变差。
本文标题:小波压缩、编码、重构、信噪比求取(附程序代码)
链接地址:https://www.777doc.com/doc-2142122 .html