(1) 读入图像

cameraman = imread('cameraman.tif'); imshow(cameraman);

(2) 添加高斯噪声

cameraman_noise = imnoise(cameraman,'gaussian',0,0.01); imshow(cameraman_noise);

(3) 构造不同截止频率D0,不同阶数n的巴特沃斯低通滤波器

D0 = [10,20,30,40,50]; n = [1,2,3,4,5];

(4) 在频域中,用构造的巴特沃斯低通滤波器分别对图像进行滤波

for i=1:length(D0) for j=1:length(n) H = butterworth_lowpass_filter(size(cameraman_noise,1),size(cameraman_noise,2),D0(i),n(j)); cameraman_filtered = apply_filter_in_frequency_domain(cameraman_noise,H); figure subplot(1,3,1) imshow(cameraman) title('Original Image') subplot(1,3,2) imshow(cameraman_noise) title('Image with Gaussian Noise') subplot(1,3,3) imshow(cameraman_filtered) title(['Butterworth Lowpass Filter (D0=' num2str(D0(i)) ',n=' num2str(n(j)) ')']) end end

(5) 将滤波结果变换回图像空间域,并显示原始图像、含噪图像、滤波后图像

function filtered_image = apply_filter_in_frequency_domain(image, filter) % Convert image to frequency domain image_fft = fft2(image); % Apply filter in frequency domain filtered_image_fft = image_fft .* filter; % Convert filtered image to spatial domain filtered_image = real(ifft2(filtered_image_fft)); end

(6) 对比不同截止频率和阶数的低通滤波器的滤波结果,并分析

从结果中可以看出,随着截止频率的增加和阶数的增加,图像的高频噪声被逐渐去除,图像变得更加平滑。但是,随着截止频率和阶数的增加,图像的细节也逐渐丢失,因此需要根据具体应用场景选择合适的截止频率和阶数

1、利用巴特沃斯低通滤波器对图像进行频域滤波1读入图像‘cameramantif’注意图像矩阵中数据格式;2为图像添加高斯噪声;3构造不同截止频率D0不同阶数n的巴特沃斯低通滤波器;4在频域中用构造的巴特沃斯低通滤波器分别对图像进行滤波;5将滤波结果变换回图像空间域并显示原始图像、含噪图像、滤波后图像;6对比不同截止频率和阶数的低通滤波器的滤波结果并分析。利用matalab解题

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

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