MATLAB 图像频域滤波:巴特沃斯低通滤波器
使用 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 实现巴特沃斯低通滤波器对图像进行频域滤波,并通过对比不同参数的滤波结果分析了其影响。这为图像处理中选择合适的滤波器参数提供了参考。
原文地址: https://www.cveoy.top/t/topic/ofUr 著作权归作者所有。请勿转载和采集!