使用MATLAB完成巴特沃斯高通滤波器对图像进行频域滤波

本文将使用MATLAB实现巴特沃斯高通滤波器对图像进行频域滤波,并分析不同截止频率和阶数对滤波结果的影响。

步骤:

  1. 读入图像: 使用imread函数读入图像'cameraman.tif',并将其转换为双精度数据类型。
  2. 构造巴特沃斯高通滤波器: 设定不同截止频率D0和不同阶数n,利用公式构建巴特沃斯高通滤波器。
  3. 频域滤波: 将图像进行傅里叶变换,并与滤波器相乘,最后进行逆傅里叶变换得到滤波后的图像。
  4. 显示结果: 显示原始图像和滤波后的图像,并对比分析结果。

代码如下:

%% 读入图像
I = imread('cameraman.tif');
I = im2double(I);

%% 构造巴特沃斯高通滤波器
D0 = [10, 30, 50];
n = [1, 3, 5];

for i = 1:length(D0)
    for j = 1:length(n)
        % 构造巴特沃斯高通滤波器
        H = 1./(1+(D0(i)./sqrt((1+((sqrt(2)-1).*(D0(i)./fftshift(freqspace(size(I,1),1))).^n(j)).^2))));
        
        % 频域滤波
        J = fft2(I);
        J = J.*fftshift(H);
        J = ifft2(J);
        
        % 取实部并显示图像
        J = real(J);
        figure;
        subplot(121); imshow(I); title('原始图像');
        subplot(122); imshow(J); title(['D0=', num2str(D0(i)), ', n=', num2str(n(j))]);
    end
end

实验结果:

通过比较不同截止频率和阶数的巴特沃斯高通滤波器的效果,可以发现,随着截止频率D0的增加和阶数n的增加,图像的高频部分被更多地保留下来,图像的细节更加清晰。但是,当D0n取值过大时,可能会出现图像过度锐化或噪声增强等问题,因此需要根据具体情况选择合适的滤波参数。

总结:

本文通过MATLAB代码实现巴特沃斯高通滤波器对图像进行频域滤波,并分析了不同参数对滤波结果的影响。该方法可以有效地增强图像细节,但需要根据具体图像内容选择合适的滤波参数,避免过度锐化或噪声增强。

MATLAB图像处理:巴特沃斯高通滤波器应用

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

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