以下是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

MATLAB编程实现巴特沃斯高斯滤波器展示原图、原图3D频谱、高斯低通和高通滤波后图像以及对应的3D频谱。

原文地址: https://www.cveoy.top/t/topic/gXyM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录