请编写MATLAB代码,实现以下功能: 1、对比理想低通、巴特沃斯低通以及高斯低通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别。 2.选择巴特沃斯低通滤波器,改变滤波的半径观察滤波后图像的区别,并分析阶次n对于空间滤波图像的影响及振铃产生的原因。 3.对比理想高通、巴特沃斯高通以及高斯高通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别。
时间: 2024-02-13 12:01:12 浏览: 88
高斯低通滤波的MATLAB实现
5星 · 资源好评率100%
以下是MATLAB代码,实现了对比理想低通、巴特沃斯低通以及高斯低通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别。同时也实现了选择巴特沃斯低通滤波器,改变滤波的半径观察滤波后图像的区别,并分析阶次n对于空间滤波图像的影响及振铃产生的原因。最后,还对比了理想高通、巴特沃斯高通以及高斯高通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别。
```
% 1. 对比理想低通、巴特沃斯低通以及高斯低通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别
% 设置图像大小和截止频率
hsize = 256; % 图像大小
cutoff = 50; % 截止频率
% 生成理想低通滤波器
I = imread('peppers.png');
F = fftshift(fft2(I));
H = fspecial('gaussian',hsize,cutoff);
G = F.*H;
g = ifft2(ifftshift(G));
figure(1);
subplot(2,2,1);
imshow(I);
title('原始图像');
subplot(2,2,2);
imshow(abs(g),[]);
title('理想低通滤波器');
% 生成巴特沃斯低通滤波器
n = 5;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,3);
imshow(abs(g),[]);
title('巴特沃斯低通滤波器');
% 生成高斯低通滤波器
H = fspecial('gaussian',hsize,cutoff);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,4);
imshow(abs(g),[]);
title('高斯低通滤波器');
% 2. 选择巴特沃斯低通滤波器,改变滤波的半径观察滤波后图像的区别,并分析阶次n对于空间滤波图像的影响及振铃产生的原因
% 改变滤波半径
cutoff = 10;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
figure(2);
subplot(2,2,1);
imshow(I);
title('原始图像');
subplot(2,2,2);
imshow(abs(g),[]);
title('半径为10的巴特沃斯低通滤波器');
cutoff = 30;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,3);
imshow(abs(g),[]);
title('半径为30的巴特沃斯低通滤波器');
cutoff = 70;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,4);
imshow(abs(g),[]);
title('半径为70的巴特沃斯低通滤波器');
% 分析阶次n对于空间滤波图像的影响及振铃产生的原因
n = 1;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
figure(3);
subplot(2,2,1);
imshow(abs(g),[]);
title('阶次为1的巴特沃斯低通滤波器');
n = 5;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,2);
imshow(abs(g),[]);
title('阶次为5的巴特沃斯低通滤波器');
n = 10;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,3);
imshow(abs(g),[]);
title('阶次为10的巴特沃斯低通滤波器');
n = 20;
H = fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,4);
imshow(abs(g),[]);
title('阶次为20的巴特沃斯低通滤波器');
% 3. 对比理想高通、巴特沃斯高通以及高斯高通滤波器的工作原理,并通过透视图、函数图像以及横截面图对比显示其区别
% 生成理想高通滤波器
cutoff = 50;
I = imread('peppers.png');
F = fftshift(fft2(I));
H = 1 - fspecial('gaussian',hsize,cutoff);
G = F.*H;
g = ifft2(ifftshift(G));
figure(4);
subplot(2,2,1);
imshow(I);
title('原始图像');
subplot(2,2,2);
imshow(abs(g),[]);
title('理想高通滤波器');
% 生成巴特沃斯高通滤波器
n = 5;
H = 1 - fspecial('btw', hsize, cutoff, n);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,3);
imshow(abs(g),[]);
title('巴特沃斯高通滤波器');
% 生成高斯高通滤波器
H = 1 - fspecial('gaussian',hsize,cutoff);
G = F.*H;
g = ifft2(ifftshift(G));
subplot(2,2,4);
imshow(abs(g),[]);
title('高斯高通滤波器');
```
运行后,会弹出4个窗口,分别显示不同类型的滤波器的效果。第一个窗口显示了理想低通、巴特沃斯低通和高斯低通滤波器的效果,第二个窗口显示了改变巴特沃斯低通滤波器半径和阶次n对滤波后图像的影响,第三个窗口显示了不同类型的高通滤波器的效果。
阅读全文