【matlab图像处理】理想低通滤波器

实验原理:
在一幅图像中,低频部分对应图像变化缓慢的部分即图像大致外观和轮廓,高频部分对应图像变化剧烈的部分即图像细节,图像噪声也属于高频部分。低通滤波器的功能是让低频率通过而滤掉或衰减高频,效果是图像去噪平滑增强,但同时也抑制了图像细节信息,造成图像不同程度上的模糊。对于大小为M*N的图像,频率点(u, v)与频率中心的距离为D(u, v),其表达式为:
在这里插入图片描述

理想低通滤波器的产生公式为:
在这里插入图片描述
其中D0为理想低通滤波器的截止频率,理想低通滤波器在半径为D0的范围内,所有频率都可以没有衰减地通过滤波器,该半径之外的所有频率都完全被衰减掉。
实验代码:

clear;clc;close
%导入原图
img_raw = imread('08.png');
%加入高斯白噪声
img_noise = imnoise(img_raw, 'gaussian');
%imwrite(img_noise,'gaussian08.png')
%对图像做傅里叶变换
fftimg_noise = fft2(img_noise);
fftshiftimg_noise = fftshift(fftimg_noise);
%设置理想低通滤波器的截止频率d0=50
lpfshiftimg_noise = fftshiftimg_noise;
d0 = 40;
%lpf
for i = 1:512
    for j = 1:512
        distance = sqrt((i-256)^2+(j-256)^2);
        if distance <= d0
            h = 1;
        else
            h = 0;
        end
        lpfshiftimg_noise(i,j) = h*fftshiftimg_noise(i,j);
    end
end
%对图像做傅里叶反变换
lpfimg_noise1 = ifftshift(lpfshiftimg_noise);
lpfimg_noise = ifft2(lpfimg_noise1);
%% 画图
subplot(221),imshow(img_noise),title('高斯白噪声')
subplot(222),imshow(log(abs(fftshiftimg_noise)),[]),title('噪声图fft')
subplot(223),imshow(abs(lpfimg_noise),[]),title('滤波后的噪声图')
subplot(224),imshow(log(abs(lpfshiftimg_noise)),[]),title('滤波后的噪声图fft')

实验结果:
【matlab图像处理】理想低通滤波器_第1张图片

你可能感兴趣的:(matlab,图像处理,开发语言)