PQ=paddedsize(size(f));%产生滤波时所需大小的矩阵 H=freqz2(h,PQ(1),PQ(2));%产生频域中的‘sobel’滤波器
H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角
imshow(abs(H),[]) %以图形形式显示滤波器 figure,imshow(abs(H1),[])
gs=imfilter(double(f),h); %用模版h进行空域滤波 gf=dftfilt(f,H1); %用滤波器对图像进行频域滤波 figure,imshow(gs,[]) figure,imshow(gf,[]) figure,imshow(abs(gs),[]) figure,imshow(abs(gf),[])
f=imread('number.tif');%读取图片
PQ=paddedsize(size(f));%产生滤波时所需大小的矩阵 D0=0.05*PQ(1); %设定高斯高通滤波器的阈值
H=hpfilter('gaussian',PQ(1),PQ(2),D0);%产生高斯高通滤波器 g=dftfilt(f,H); %对图像进行滤波 figure,imshow(f) %显示原图像 figure,imshow(g,[]) %显示滤波后图像 一、
实验步骤
1. 生成如下图所示的一个二维矩形信号。
黑 白 11
H = zeros(256,256); H(63:192,63:192) = 1; figure;imshow(H); title('lvboqi');
lvboq
2. 利用一维FFT计算二维付里叶变换。分别显示行计算结果和列变换结果。
(立体结果,用mesh(F)显示)
I=imread('cameraname.bmp'); figure;imshow(I); title('原图像'); F1 = fft2(I); C1 = ifft2(F1);
figure;imshow(log(1+abs(C1)),[]); title('2滤波后图像'); figure;mesh(C1);
12
F2 = fft(I); F3 = fft(F2')'; C3 = ifft(F3')'; C2 = ifft(C3);
figure;imshow(log(1+abs(C2)),[]); title('1/1滤波后图像'); figure;mesh(log(1+abs(C2)));
原图像
2滤波后图像
1/1滤波后图像
13
3利用MatLab工具箱中的函数编制FFT频谱显示的函数;
4 a). 调入、显示“实验一”获得的图像;图像存储格式应为“.gif”;
b) 对这三幅图像做FFT并利用自编的函数显示其频谱;
c) 讨论不同的图像内容与FFT频谱之间的对应关系。
5 利用MATLAB提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。
I=imread('cameraname.bmp'); %读入原图像文件 figure;imshow(I); %显示原图像 title('原图像'); [M,N] = size(I); F = fft2(I);
A=fftshift(F); %直流分量移到频谱中心 %figure;imshow(A); H = zeros(M,N); H(63:192,63:192) = 1; figure;imshow(H); title('低通滤波器'); B = A.*H; C = ifft2(B);
figure;imshow(log(1+abs(C)),[]);
14
title('滤波后');
原图像
低通滤波器
滤波后
6利用MATLAB提供的高通滤波器对图像进行处理。
I=imread('cameraname.bmp'); figure;imshow(I); %显示原图像 title('原图像');
J = imnoise(I,'gauss',0.02); %添加高斯噪声
%J = imnoise(I,'salt & pepper',0.02); %添加椒盐噪声 figure;imshow(J); %显示原图像 title('噪声图像'); [M,N] = size(J);
15
A = fft2(J); %figure;imshow(A); H = ones(M,N);
H(63:192,63:192) = 0; figure;imshow(H); title('高通滤波器'); B = A.*H; C = ifft2(B);
figure;imshow(log(1+abs(C)),[]); title('滤波后');
原图像 噪声图像
高通滤波器
滤波后
16