matlab2022a简单程序读入一幅图像,分别使用理想高通滤波、巴特沃斯高通滤波(n=2)、高斯高通滤波处理,显示原始图像和滤波后的图像,并标注滤波器类型和截止频率。
时间: 2024-02-09 19:11:02 浏览: 110
好的,以下是 matlab2022a 的简单程序,实现读入一幅图像,分别使用理想高通滤波、巴特沃斯高通滤波(n=2)、高斯高通滤波处理,显示原始图像和滤波后的图像,并标注滤波器类型和截止频率。
```matlab
% 读入图像
I = imread('lena.jpg');
% 显示原始图像
figure, imshow(I), title('原始图像');
% 计算图像的傅里叶变换
F = fft2(I);
F = fftshift(F);
% 理想高通滤波器
D0 = 50; % 截止频率
H = hpfilter('ideal', size(I), D0);
G = H .* F;
G = ifftshift(G);
I_hp = real(ifft2(G));
% 显示理想高通滤波器处理后的图像
figure, imshow(I_hp), title(['理想高通滤波器,D0 = ' num2str(D0)]);
% 巴特沃斯高通滤波器
n = 2; % 阶数
D0 = 50; % 截止频率
H = hpfilter('btw', size(I), D0, n);
G = H .* F;
G = ifftshift(G);
I_btw = real(ifft2(G));
% 显示巴特沃斯高通滤波器处理后的图像
figure, imshow(I_btw), title(['巴特沃斯高通滤波器,D0 = ' num2str(D0) ', n = ' num2str(n)]);
% 高斯高通滤波器
D0 = 50; % 截止频率
H = hpfilter('gaussian', size(I), D0);
G = H .* F;
G = ifftshift(G);
I_gaussian = real(ifft2(G));
% 显示高斯高通滤波器处理后的图像
figure, imshow(I_gaussian), title(['高斯高通滤波器,D0 = ' num2str(D0)]);
```
其中 `lena.jpg` 是一张常用的测试图像,可以自行下载使用。在程序中,我们使用了 `hpfilter` 函数来生成不同类型的高通滤波器,函数的第一个参数是滤波器类型,可以是 `'ideal'`(理想)、`'btw'`(巴特沃斯)或者 `'gaussian'`(高斯),第二个参数是图像的大小,第三个参数是截止频率,对于巴特沃斯滤波器还需要指定一个阶数。最后,我们使用 `ifft2` 函数将滤波后的频域图像转换回空域图像,并使用 `imshow` 函数显示图像。
阅读全文