DCT变换与KLT变换在图像压缩中的应用_第1页
DCT变换与KLT变换在图像压缩中的应用_第2页
DCT变换与KLT变换在图像压缩中的应用_第3页
DCT变换与KLT变换在图像压缩中的应用_第4页
DCT变换与KLT变换在图像压缩中的应用_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

DCTDCT变换与KLT变换在图像压缩中的应用#/20hpush=uicontrol(gcf,1S^yle*z•push1,・・・冷制作与歹U衣框配川的按进'position'r[0・7,0・05,0・18,0・15],'string','DCT');set(hpush,*callback*z'jpeg_dct(I,z)')务灰度图像的kit正反变换functiony=klt(xfmask)TM=x;%读取图像IM=im2uint8(IM);务若图像尺寸不是8的整数倍,补0,补成8的整数倍[cclzcc2]=size(IM);%ccl为IM的行数,ccC为IM的歹U数a=8-mod(cclF8);b=8-mod(cc2f8);cc3=ccl+a;cc4=cc2-^b;IM(cc3zcc4)=IM(cclrcc2);IM(I:cclfcc2+l:cc4)=IM(1:cclrcc2-b+l:cc2);IM(ccl+l:cc3zl:cc2)=IM(ccl-a+l:cclrl:cc2);IM(001+1:003,002+1:004)=IM(ccl,cc2);务若图像尺寸不是8的整数倍,补成8的整数倍k=l;for11=1:8:(cc3-7) $将图像矩阵一8X8的矩阵存起來for12=1:8:(cc4-7)F(:,:zk)=IM(11:11+7,12:12+7);k=k+l;end 务将图像矩阵—8X8的矩阵存起来endF=uint8(F);k=k-l;qq=k;d=0;d=uint32(d);IM=uint32(IM);fornl=l:cc3 $求均值forn2=l:cc4d=IM(nlzn2)+d;endendd=d/(ccl*cc2);d=uint8(d); 务求均FlIM=uint8(IM);B2=zeros(64);jz=d;%jz为灰度均值foree=l:qqA=F(:r:ree);TZZ;%调用函数求个8X8的矩阵的持征矩旳B2=B2+B;endB=B2/ee;%B为均方差矩阵(V,D]=eig(B);%求特征向9特征值Q=V';fork=l:qqA=F(:,:fk);ee=l;fornl=l:8 %将元素变换成•维forn2=l:8 %将元素变换成•维X(ee,l)=A(nlzn2);YSZ(ee,1)=mask(nl,n2);%YSZ为mask变换成的•维数组ee=ee+l;end $将元素变换成•维end 务将元素变换成•维X二double(X);Y=Q*X;务变换后的矩阵放在Y中Y=flipud(Y);Y=Y・*YSZ;Y=flipud(Y);Xl(:z:,k)=Q'*Y;%求还原后的矩阵endk=l;for11=1:8:(cc3-7)务将矩阵8X8矩阵放入中for12=1:8:(cc4-7)%将矩阵8X8矩阵放入IM2中H2=X1(:z:rk);ee=l;fornl=l:8forn2=l:8C2(nlzn2)=H2(eez1);ee=ee+l;endendIM2(11:11+7,12:12+7)=C2;k=k+l;end务将矩阵8X8矩阵放入ZM2中end $将矩阵8X8矩阵放入IM2中IM=IM(l:cclrl:cc2);IM2=IM2(1:ccl,1:cc2);y=uint8(IM2);functionjpeg^dct(I,z)tic%I=imread('football.jpgf);务读入原始图像,该图片在安装matlab的目录中找,原图为jpeg图象Y=im2double(I);务图像存储类型转换,matlab读入图像的数据是uint8»而matlab')1数值'般采用double型(64位)存储和运算。所以妥先将图像转为double格式的才能运算T=dctmtx(8)八离散余弦变换矩阵,使用由dctmtx函数返Al的DCT变换矩阵,这种方法较适介于较小的输入方阵(例如8X8或16X16),计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数%B=blkproc(A,[mn],fun,parameter1,parame,ter2, ・・・)驿就是每•个分成的8*8人小的块,Pl*x*P2相当于像素块的处理函数,pl=Tp2=T*厂也就是fun=pl*x*p2 的功能是进行离散余弦变换屁代农儿对•副原始图像,选取它的最左上角8泌的矩阵,并将每•个像素值转换到728到127的范圉内,得到矩阵X.%RGB图像分三个通道,分别处理B(:,:,l)=blkproc(Y(:,:zl)z[88] 叫T・);电将原始图像8x8的像素块转换成代衣不同频率分量的系数集,DCT后的64个DCT系数与DCT前的64个像素块相对应B(:,:,2)=blkproc(Y(:,:,2),[88],'Pl*x*P21zTzT1);B(:,:,3)=blkproc(Y(:,:,3),[88],1Pl*>:*P21zT,T');$对原图像进行DCT变换z=fix(z);化,向0靠拢取整t(l:z)=l;t(z+l:64)=0;mask=jpeg_Dzz8(t);%Z字形扫描B2(:z:zl)=blkproc(B(:,:,1),[88],1Pl. \mask);%H保留DCT变换的左上角1C个数,数据压缩,丢弃右下角高频数据,达到图像压缩的目的B2(:,:z2)=blkproc(B(:,:,2)z[88],1Pl.*x\mask);%^2换后的 ?较人的会集中在区域的左上部,即低频分量都集中在左上部。保留的也是这i部分。B2(::,3)=blkproc(B(::,3),[88]r zmask);务其他部分的系数被舍去,在恢复信号时对它们补0。这样以来,由于保留了人部分图像信号能量,在恢复信号后,其质量不会产生显著变化。务数据压缩,丢弃右下角高频数据I2(:z:zl)=blkproc(B2(:z:,1),[88],'Pl*x*P21,T1zT);%重构图像12(:,:z2)=blkproc(B2(:,:,2),[88],'Pl*x*P21,T',T);12(:,:z3)=blkproc(B2(:z:z3)z[88],'Pl*x*P2'zT1,T);务进行DCT反变换,得到压缩后的图像figure;set(gcfz1unic',1normalized','position1,[0.4,0・5,0•3,0・3]);务设置图形窗人小set(gcfz1menubar1z'none'); $删除图形窗工;H条str='l:化程度';set(gcf,'name',[strsprintf(1%1.4g',z)],'numbertitle1,'off1); 写图形窗名imshow(12)title('DCT变换压缩后的图像1)imwrite(l2z1det.jpg*)输出Jk缩后的图像’文件名为footbailedct・jpga=Coc;uicontrol(1style1z1text1z'unit1z1normalized'z・・・rposition1, [000・20・1], 1string1,num2str(a), ・・・rFontsize\18)务搜索方式:对角的Z字形扫描;二维的图像矩阵利用•维的搜索方式。functiony=jpeg_Dzz8(x)t=l;fork=2:9form=l:k-1ifrem(kz2)==0y(k-m,m)=x(t);t=t+l;elseendendendfork=10:16form=k-8:8ifrem(kz2)==0y(k-m,m)=x(t);t=t+l;elsey(m,k-m)=x(t);t=t+l;endendendfunctioncallcheck{htext,str1,z)set(htext,1scring'z[strl,sprintf(1%1 $更亲斤青态文木框I内?f<2functionjpeg_klt(Izz)tic%I=imread(*football.jpg');%读入原始图像,该图片在安装matlab的目录中找,原图为jpeg图象z=fix(z)化,,向0靠拢取整t(l:z)=l;t(z+l:64)=0;mask=jpeg_Dzz8(t);%Z字形扌I描12(:,:,1)=klt(I(:z:,1),mask);12(:,:,2)=klt(1(:,:,2),mask);12(:,:z3)=klt(1(:,:,3)zmask);figure;set(gcf,'unic1,*normalized1,'position1,[0・2,0・5,0・3,0・3]);殳置图形閔人小set(gcf,•menubar','none1); 电删除图形窗匸具条str=»g化程度';set(gcfz1name1,[strsprintf(1%1・4g\\z)]f1numbertitle'f1off1); 〜丨门;I冬形窗名imshow(12);title('KLT变换压缩后的图像')imwrite(工2Jkit.jpg1);%张[岀Jk缩后的图像,文件名为kit.jpga=toc;uicontrol(1style*, 1text', 'unit1, 1normalized1z・・・rposition1, [000・20・1], 1string*znum2str(a), ・・・1Fontsize1z18)functionjpeg^show(I)%I=imread('football・jpg*);figure;set;(gcf,1unic1,*normalized','position1,[0z0・5,0・3Z0・3]);%役置图形初人小set(gcfz'menubar*z*none'); 总删除图形窗匸具条str='KLTDCT性能比较set(gcf,'name*,str,1numbertitle',*off*); 务书勺了图形窗名imshow(I) %显示原始图像title('原始图像,)务求•个8X8的矩阵的特征矩阵,被调用函数k=l;fornl=l:8%扫描8X8矩阵forn2=l:8fz(k)=A(nl,n2);k=k+l;endend 时I描8X8炬阵k=k-l;aa=64;fork=l:64 务将元索变换成•维X(k,l)=fz(k);end 务将元素变换成•维fork=l:64 %减去均值后的元索值fz(k)=fz(k)-jz;end 务减去均O'l/n'的元索值B=zeros(64);fornl=l:64务求协方差矩阵forn2=l:64B(nl,n2)=fz(nl)*fz(n2);endend 冷求协方差矩阵

%图像性能方差、信息爛及平均梯度。I=imread('dct48・jpg*);%I=im2double(I);%%%%%%%%平均梯度outval=avg_gradient(I)%%%%%%%%信息爛S=shannon(I)%%%%%%%%方差Q=(std2(I))A2functionoutval=avg__gradient(img)%OUTVAL=AVG_GRADIENT(IMG)平均梯度ifnargin==1img=double(img);%G"th?sizeofimg[r,czb]=size(img);dx=1;dy=1;fork=1:bband=img(:,:,k);[dzdx,dzdy]=gradient(band,dxzdy);s=sqrt((dzdx・A2+dzdy.A2)・/2);g(k)=sum(sum(s))/((r-1)*(c-1));endoutval=mean(g);elseerror(rWrongnumberofinput!*);endfunctionS=shannon(img)%信息爛%I=double(I);[CzR]=size(I);务[CzR]=size(I);务求图像的规格Img_size

温馨提示

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

评论

0/150

提交评论