MATLAB 图像频域滤波:巴特沃斯高通滤波器应用
%% 读入图像 I = imread('cameraman.tif'); imshow(I); title('原始图像');
%% 构造巴特沃斯高通滤波器 D0 = [10 30 50]; % 不同截止频率 n = [1 2 3]; % 不同阶数 for i = 1:length(D0) for j = 1:length(n) % 构造巴特沃斯高通滤波器 [n1, n2] = size(I); [u, v] = meshgrid(1:n2, 1:n1); D = sqrt((u-n2/2).^2 + (v-n1/2).^2); H = 1./(1 + (D0(i)./D).^(2*n(j))); % 在频域中对图像进行滤波 J = fft2(double(I)); K = J.*H; L = abs(ifft2(K)); % 将滤波结果变换回图像空间域,并显示 figure; subplot(1,2,1); imshow(I); title('原始图像'); subplot(1,2,2); imshow(uint8(L)); title(['高通滤波后图像(D0=' num2str(D0(i)) ', n=' num2str(n(j)) ')']); end end
%% 分析实验结果 % 随着截止频率D0的增加,图像中高频部分被越来越多地保留下来,图像变得越来越清晰; % 随着阶数n的增加,高通滤波器的陡峭程度也增加,图像中高频部分被保留的更加明显,但滤波后图像噪声也增加了。
原文地址: https://www.cveoy.top/t/topic/oj23 著作权归作者所有。请勿转载和采集!