- 实验内容
(1)选择任意一副图像,对其进行傅里叶变换,在频率域中实现二阶 butterworth 低通滤波器的平滑作用,截止频率任意设定。显示原始图像和滤波图像。
(2)选择任意一副图像,对其进行傅里叶变换,在频率域中实现两种不同半径(截止频率) 的高斯高通滤波的锐化效果,显示原始图像和滤波图像,及与原图像叠加的高频增强图像。
- 源程序和结果
(1)选择任意一副图像,对其进行傅里叶变换,在频率域中实现二阶 butterworth 低通滤波器的平滑作用,截止频率任意设定。显示原始图像和滤波图像。
A=imread('lena.bmp');
A=imnoise(A,'salt & pepper');
A=rgb2gray(A);
A1=double(A);
FA=fftshift(fft2(A1));
[M,N]=size(FA);%读取原图像傅里叶变换矩阵大小
D1=5;D2=15;D3=35;D4=65;D5=100;
n=2;%选取巴特沃斯滤波器的阶数为二阶
x0=floor(M/2);%令原点为图像的中点
y0=floor(N/2);
for i=1:M
for j=1:N
D=sqrt((i-x0)^2+(j-y0)^2);%判定相对原点(图像中点)的距离
H1(i,j)=1/(1+(D/D1)^(2*n));%巴特沃斯低通滤波器
H2(i,j)=1/(1+(D/D2)^(2*n));
H3(i,j)=1/(1+(D/D3)^(2*n));
H4(i,j)=1/(1+(D/D4)^(2*n));
H5(i,j)=1/(1+(D/D5)^(2*n));
end
end
FAH1=H1.*FA;%点乘,实现频域滤波
FAH2=H2.*FA; FAH3=H3.*FA; FAH4=H4.*FA; FAH5=H5.*FA;
g1=uint8(real(ifft2(ifftshift(FAH1))));
g2=uint8(real(ifft2(ifftshift(FAH2))));
g3=uint8(real(ifft2(ifftshift(FAH3))));
g4=uint8(real(ifft2(ifftshift(FAH4))));
g5=uint8(real(ifft2(ifftshift(FAH5))));
figure(1);
subplot(2,3,1);imshow(A);title('原图');
subplot(2,3,2);imshow(g1);title('巴特沃斯低通半径5');
subplot(2,3,3);imshow(g2);title('巴特沃斯低通半径15');
subplot(2,3,4);imshow(g3);title('巴特沃斯低通半径35');
subplot(2,3,5);imshow(g4);title('巴特沃斯低通半径65');
subplot(2,3,6);imshow(g5);title('巴特沃斯低通半径100');
(2)选择任意一副图像,对其进行傅里叶变换,在频率域中实现两种不同半径(截止频率) 的高斯高通滤波的锐化效果,显示原始图像和滤波图像,及与原图像叠加的高频增强图像。
I = imread('lena.bmp');
I=rgb2gray(I);
s=fftshift(fft2(I));
[M,N]=size(s);
n=2;
d0=40;%GLPF滤波
d1=5;
n1=floor(M/2);n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
h=1-1*exp(-1/2*(d^2/d0^2));
h2=1-1*exp(-1/2*(d^2/d1^2));
s(i,j)=h*s(i,j);
s2(i,j)=h*s(i,j);
end
end
s=ifftshift(s);
gImg=uint8(real(ifft2(s)));
gImg2=uint8(real(ifft2(s2)));
figure(2);
subplot(231);imshow(I);title('原图');
subplot(232);imshow(gImg);title('40');
subplot(233);imshow(gImg2);title('5');
I=double(I)/256;
gImg=double(gImg)/256;gImg2=double(gImg2)/256;
J=imadd(I,gImg);J1=imadd(I,gImg2);
subplot(234);imshow(J);title('40叠加');
subplot(235);imshow(J1);title('5叠加');