以下是MATLAB代码实现巴特沃斯高斯滤波器,并展示相关图像和频谱:

%% 导入图像并显示原图
I = imread('lena.jpg');
figure('Name','原图');
imshow(I);

%% 计算图像的3D频谱并绘制
F = fftn(double(I));
F2 = fftshift(F);
S = abs(F2);
figure('Name','原图3D频谱');
isosurface(S,mean(S(:))*0.1);
axis([0,size(S,1),0,size(S,2),0,size(S,3)]);
axis equal;
view(3);

%% 巴特沃斯高斯滤波器
D0 = 50; %截止频率
n = 4; %阶数
[m,n] = size(I);
[x,y] = meshgrid(1:n,1:m);
c = (x-(m+1)/2).^2+(y-(n+1)/2).^2;
H = 1./(1+(D0./c).^(2*n));

%% 高斯低通滤波器
G = fspecial('gaussian',size(I),20);
G = G./max(G(:));
GL = G.*H;
FI = F.*ifftshift(GL);
I_low = real(ifftn(FI));

%% 高斯高通滤波器
GH = G.*(1-H);
FI = F.*ifftshift(GH);
I_high = real(ifftn(FI));

%% 显示低通滤波后图像及其3D频谱
figure('Name','高斯低通滤波器');
imshow(I_low,[]);
figure('Name','低通滤波后图像3D频谱');
F = fftn(double(I_low));
F2 = fftshift(F);
S = abs(F2);
isosurface(S,mean(S(:))*0.1);
axis([0,size(S,1),0,size(S,2),0,size(S,3)]);
axis equal;
view(3);

%% 显示高通滤波后图像及其3D频谱
figure('Name','高斯高通滤波器');
imshow(I_high,[]);
figure('Name','高通滤波后图像3D频谱');
F = fftn(double(I_high));
F2 = fftshift(F);
S = abs(F2);
isosurface(S,mean(S(:))*0.1);
axis([0,size(S,1),0,size(S,2),0,size(S,3)]);
axis equal;
view(3);

运行结果如下图所示:

结果展示

MATLAB实现巴特沃斯高斯滤波器:图像处理与频谱分析

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

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