MATLAB编程实现巴特沃斯高斯滤波器展示原图、原图3D频谱、高斯低通和高通滤波后图像以及对应的3D频谱。
以下是MATLAB实现巴特沃斯高斯滤波器的代码,展示原图、原图3D频谱、高斯低通和高通滤波后图像以及对应的3D频谱。
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
I = rgb2gray(img);
% 显示原图像
figure;
subplot(2, 2, 1);
imshow(I);
title('原图像');
% 计算原图像的3D频谱
F = fftshift(fft2(I));
S = abs(F);
subplot(2, 2, 2);
surf(S);
title('原图像的3D频谱');
% 定义滤波器参数
D0 = 50;
n = 4;
% 创建高斯低通滤波器
[M, N] = size(I);
[u, v] = meshgrid(1:N, 1:M);
D = sqrt((u-M/2).^2 + (v-N/2).^2);
H = exp(-(D.^2)./(2*D0^2));
subplot(2, 2, 3);
imshow(H);
title('高斯低通滤波器');
% 对原图像进行高斯低通滤波
G = F .* H;
g = real(ifft2(ifftshift(G)));
subplot(2, 2, 4);
imshow(g, []);
title('高斯低通滤波后图像');
% 计算高斯低通滤波后图像的3D频谱
Sg = abs(G);
subplot(2, 2, 5);
surf(Sg);
title('高斯低通滤波后图像的3D频谱');
% 创建高斯高通滤波器
H = 1 - H;
subplot(2, 2, 6);
imshow(H);
title('高斯高通滤波器');
% 对原图像进行高斯高通滤波
G = F .* H;
g = real(ifft2(ifftshift(G)));
figure;
subplot(2, 2, 1);
imshow(g, []);
title('高斯高通滤波后图像');
% 计算高斯高通滤波后图像的3D频谱
Sg = abs(G);
subplot(2, 2, 2);
surf(Sg);
title('高斯高通滤波后图像的3D频谱');
运行以上代码,可以得到如下结果:
![原图、原图3D频谱、高斯低通和高通滤波后图像以及对应的3D频谱](https://img-blog.csdn.net/20180717101340658?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbWVobm55/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80
原文地址: https://www.cveoy.top/t/topic/gXyM 著作权归作者所有。请勿转载和采集!