实验三,,图像频域变换及滤波实验三图像频域变换及滤波一、实验目的:1.理解傅立叶变换及离散余弦变换在图像处理中的应用2.掌握噪声模拟和空域图像滤波函数的使用方法3.掌握频域滤波的概念及方法4.利用MATLAB程序进行编程实现数字图像的傅立叶变换、DCT变换、空域及频域滤波二、实验内容1.傅立叶变换绘制一个二值图像矩阵,并将其傅立叶函数可视化。f=zeros(30,30);f(5:24,13:17)=1;figure;imshow(f)F=fft2(f);F2=log(abs(F));figure,imshow(F2,[]);F=fft2(f,256,256);%零填充为256×256矩阵figure,imshow(log(abs(F)));F2=fftshift(F);%将图像频谱中心由矩阵原点移至矩阵中心figure,imshow(log(abs(F2)));2.离散余弦变换(DCT)(1)使用dct2对图像‘lena.bmp’进行DCT变换。RGB=imread('lena.bmp');figure;imshow(RGB)I=rgb2gray(RGB);%转换为灰度图像figure,imshow(I)J=dct2(I);figure,imshow(log(abs(J)),[]);(2)将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。RGB=imread('lena.bmp');I=rgb2gray(RGB);%转换为灰度图像J=dct2(I);figure,imshow(I)K=idct2(J);figure,imshow(K,[0255])J(abs(J)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%编码部分:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clearall;I=imread('cameraman.tif');%打开图像文件I=im2double(I);%转换成双精度T=dctmtx(8);%构造离散余弦变换矩阵B=blkproc(I,[88],'P1*x*P2',T,T');%对图像进行DCT变换mask=[11110000111000001100000010000000此资料由网络收集而来,如有侵权请告知上传者立即删除。资料共分享,我们负责传递知识。00000000000000000000000000000000];B2=blkproc(B,[88],'P1.*x',mask);%保留关键系数I2=blkproc(B2,[88],'P1*x*P2',T',T);%做DCT逆变换subplot(121);imshow(I);title('原始图像');subplot(122);imshow(I2);title('DCT变换后图像');%将图像保存在CC2数组中,文件名为cameraman.mat*/%每个8*8块矩阵仅保留10个系数*/CC2=0;%CC2=double(CC2);[row,col]=size(B2);row_count=row/8;col_count=col/8;po=1;forr=0:row_count-1;forc=0:col_count-1CC2(po)=B2(r*8+1,c*8+1);CC2(po+1)=B2(r*8+1,c*8+2);CC2(po+2)=B2(r*8+1,c*8+3);CC2(po+3)=B2(r*8+1,c*8+4);CC2(po+4)=B2(r*8+2,c*8+1);CC2(po+5)=B2(r*8+2,c*8+2);CC2(po+6)=B2(r*8+2,c*8+3);CC2(po+7)=B2(r*8+3,c*8+1);CC2(po+8)=B2(r*8+3,c*8+2);CC2(po+9)=B2(r*8+4,c*8+1);po=po+10;end;end;CC2=CC2*10;CC2=int8(CC2);savecameraman.matCC2;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解码部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clearall;I=imread('cameraman.tif');B2=double(zeros(256,256));loadcameraman.mat;T=dctmtx(8);[row,col]=size(B2);row_count=row/8;col_count=col/8;po=1;CC2=double(CC2);CC2=CC2/10;forr=0:row_count-1forc=0:col_count-1B2(r*8+1,c*8+1)=CC2(po);B2(r*8+1,c*8+2)=CC2(po+1);B2(r*8+1,c*8+3)=CC2(po+2);B2(r*8+1,c*8+4)=此资料由网络收集而来,如有侵权请告知上传者立即删除。资料共分享,我们负责传递知识。CC2(po+3);B2(r*8+2,c*8+1)=CC2(po+4);B2(r*8+2,c*8+2)=CC2(po+5);B2(r*8+2,c*8+3)=CC2(po+6);B2(r*8+3,c*8+1)=CC2(po+7);B2(r*8+3,c*8+2)=CC2(po+8);B2(r*8+4,c*8+1)=CC2(po+9);po=po+10;end;end;I2=blkproc(B2,[88],'P1*x*P2',T',T);subplot(121);imshow(I);title('原图像');subplot(122);imshow(I2);title('解码后的图像');3.噪声模拟及空域滤波增强(1)噪声模拟利用函数imnoise给图像‘eight.tif’分别添加高斯(gaussian)噪声和椒盐(salt&pepper)噪声。I=imread('eight.tif');figure,imshow(I)I1=imnoise(I,'gaussian',0,0.01);figure,imshow(I1)I2=imnoise(I,'salt&pepper');figure,imshow(I2)(2)空域滤波增强对上述噪声图像进行均值滤波和中值滤波,比较滤波效果。I=imread('eight.tif');J=imnoise(I,'salt&pepper',0.02);figure,imshow(J)K1=medfilt2(J,[33]);%3*3中值滤波figure,imshow(K1)K2=filter2(fspecial('average',5),J)...