资源描述:
《数字信号处理图像实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一、数字图像获取imshow(I);fftl=fft2(l);sfftl二fftshift(fftl);RR=real(sfftI);II=imag(sfftI);实验二、图像的傅立叶变换I=imread(4原图像名.gif');%读入原图像文件%显示原图像%二维离散傅立叶变换%直流分量移到频谱中心%取傅立叶变换的实部%取傅立叶变换的虚部A=sqrt(RR.A2+II.A2);%计算频谱幅值a=min(min(A));b=max(max(A));B=(A-a)/(b-a)*225;%归一化figure;%设定窗口imshow(B);%显示
2、原图像的频谱实验三、图像增强a=imread(*1.jpg');%读入原图像I=rgb2gray(a);subplot(2,3,1);Imshow(a);%显75原图像Title『原图像J;%给原图像加标题名subplot(2,3,2);Imshow(I);%显示灰度化图像Title(1灰度图*);%给原图像加标题名Subplot(2,3,3);Imhist(Iz64);%将原图像直方图显示为64级灰度Title('灰度图直方图T;%给原图像直方图加标题名J=histeq(I);%对原图像进行直方图均衡化处理subplot(2,3,5);im
3、show(J);%显示直方图均衡化后的图像Title(*直方图均衡化后的图像,;%给直方图均衡化后的图像加标题名Subplot(2,3,6);Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度Title(*均衡变换后的直方图,);%给均衡化后图像直方图加标题名实验四、图像压缩(1)利用DCT变换进行图像压缩RGB=imread('1.jpg*);I=rgb2gray(RGB);J=dct2(I);%离散余弦变换(DCT)图像压缩imshow(log(abs(J))z[])zcolormap(jet(64)),colorbarJ
4、(mbs(J)<10)=0;K=idct2(J);figure,imshow(I)figure,imshow(K,[0255])2)利用离散余弦变换进行JPEG图像压缩IMG=imread(,l.JPG,);%读入图像1=rgb2gray(IMG);%转换成灰度图像N=8;%子块的大小,可为4,8,16I=im2double(I);%转换为双精度型T=dctmtx(N);%产生二维DCT变换矩阵B=blkproc(I,[N,N];Pl*x*P2T,T);%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个mask=fl11100
5、001110000011000000100000000000000000000000];B2二blkproc(B,[N,N]「Pl.*x;mask);%只保留DCT变换的10个系数12=blkproc(B2,[N,N];Pl*x*P2,,T,,T);%重构图像subplot(1,2,1);imshow(I);titleCJM始图像');subplot(l,2,2);imshow(12);titleC压缩重构后的图像MFigure1.°3)利用行程编码(RLE)进行图像压缩I=checkerboard(10,6);imshow(I)[mn]=s
6、ize(l);J=U;value=l(ij);num=l;forj=2:nifI(iJ)==valuenum二num+1;elseJ=[Jnumvalue];num=l;value=I(ij);endend%I=fJnumvalue00];%添加的行判断位00dispC原图像大小:Jwhos(T);dispC压缩图像大小「)whos('J');dispC图像的压缩比:JNameSizeBytesClassAttributesI压缩图像大小:120x120115200doubleNameSizeBytesClassAttributesJ1x26
7、4021120doubledisp(m*n/length(J))原图橡大小:图像的压缩比:5.4545iTillEdrVieInseToolDesktcWindcHel
8、仝实验五、图像融合调入两幅数字图像,并进行三种方法的图像融合;图像融合的MATLAB程序如下:1)调入、显示两幅图像的程序语句loadtartan;loadsinsin;X2=X;map2=map;Subplot(1,2,1);image(X1),colormap(map1);Title('图像mapf);Subplot(l,2,2);image(X2),colormap(
9、map2);Title('图像map2*);1)两幅图像直接融合的程序语句figure,subplot(L3J);image((X1+X2)/2),colormap