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

本教程演示如何使用 MATLAB 编程实现巴特沃斯低通滤波器对图像进行频域滤波,并通过对比不同截止频率和阶数的滤波结果分析其影响。

1. 读入图像并添加高斯噪声

im = imread('cameraman.tif');
im = double(im);

im_noise = im + randn(size(im))*20;

2. 构造巴特沃斯低通滤波器

D0 = 10;  % 截止频率
n = 2;   % 阶数
[B,A] = butter(n,D0/128,'low');

3. 在频域中进行滤波

im_f = fft2(im_noise);
im_f_filter = im_f.*fftshift(B);
im_filter = real(ifft2(im_f_filter));

4. 显示原始图像、含噪图像和滤波后图像

figure;
subplot(1,3,1);imshow(uint8(im));title('原始图像');
subplot(1,3,2);imshow(uint8(im_noise));title('含噪图像');
subplot(1,3,3);imshow(uint8(im_filter));title('滤波后图像');

5. 对比不同截止频率和阶数的滤波结果

D0 = [10, 20, 30];
n = [1, 2, 3];
figure;
for i = 1:length(D0)
    for j = 1:length(n)
        [B,A] = butter(n(j),D0(i)/128,'low');
        im_f_filter = im_f.*fftshift(B);
        im_filter = real(ifft2(im_f_filter));
        subplot(length(D0),length(n),(i-1)*length(n)+j);
        imshow(uint8(im_filter));title(['D0=',num2str(D0(i)),' n=',num2str(n(j))]);
    end
end

分析:

通过对比不同截止频率和阶数的低通滤波器的滤波结果,发现当截止频率较小时,滤波效果较好;当阶数较高时,滤波效果也较好。但过高的阶数会导致滤波器过于锐利,出现了明显的振铃效应。因此,选择合适的截止频率和阶数是非常重要的。

总结:

本教程展示了如何使用 MATLAB 实现巴特沃斯低通滤波器对图像进行频域滤波,并通过对比不同参数的滤波结果分析了其影响。这为图像处理中选择合适的滤波器参数提供了参考。

MATLAB 图像频域滤波:巴特沃斯低通滤波器

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

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