Matlab 图像频域滤波:使用巴特沃斯高通滤波器
%% 读入图像 I = imread('cameraman.tif'); imshow(I); title('原始图像');
%% 构造巴特沃斯高通滤波器 D0 = [20 40 80]; % 截止频率 n = [1 2 3]; % 阶数
for i = 1:length(D0) for j = 1:length(n) % 构造巴特沃斯高通滤波器 [rows,cols] = size(I); u = 0:(rows-1); v = 0:(cols-1); idx = find(u > rows/2); u(idx) = u(idx) - rows; idy = find(v > cols/2); v(idy) = v(idy) - cols; [V,U] = meshgrid(v,u); D = sqrt(U.^2 + V.^2); H = 1./(1 + (D0(i)./D).^(2*n(j)));
% 频域滤波
J = fft2(I);
K = J .* H;
L = abs(ifft2(K));
L = mat2gray(L);
% 显示滤波结果
figure;
subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2);
imshow(L);
title(['高通滤波后图像,D0=' num2str(D0(i)) ',n=' num2str(n(j))]);
end
end
%% 分析实验结果 % 通过观察不同截止频率和阶数的巴特沃斯高通滤波器对图像的滤波结果, % 可以发现随着截止频率的增加和阶数的增加,图像中低频部分被抑制的程度越来越强, % 高频部分得以保留,从而达到了提高图像清晰度的目的。但是当截止频率过高时, % 可能会出现过度滤波的情况,导致图像中有用的高频信息也被滤去,因此需要根据具体应用场景进行调整。
原文地址: https://www.cveoy.top/t/topic/oj3b 著作权归作者所有。请勿转载和采集!