图像去噪(高斯低通滤波器)

图像去噪(高斯低通滤波器)

问题一:

  • 对给定图像lena_noise.bmp进行图像的频率域去噪处理,期望去噪后的输出结果尽量接近无噪声的原图lena.bmp。画出原图及有噪声图像的傅里叶谱图像F(需要中心化以及对数变换),分析两幅图像傅里叶谱图像F的不同(显示时建议使用imshow(I,[])命令,I为要显示的图像)。
代码:
clear all;
close all;
clc;
image1 = imread('lena.bmp');
img1 = im2double(image1);
%傅里叶变换
img1 = fft2(img1);
%中心化
img1 = fftshift(img1);
%对数变换
img1 = log(1+abs(img1));
image2 = imread('lena_noise.bmp');
img2 = im2double(image2);
img2 = fft2(img2);
img2 = fftshift(img2);
img2 = log(1+abs(img2));
subplot(221); imshow(image1);title("原图");
subplot(223); imshow(img1,[]);title("原图傅里叶频谱图");
subplot(222); imshow(image2);title("噪声图");
subplot(224); imshow(img2,[]);title("噪声图傅里叶频谱图");
运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pGHnKWBF-1678970644227)(C:\Users\zdsss\AppData\Roaming\Typora\typora-user-images\image-20230316170426551.png)]

分析:
  • 相较于原图,噪声图像的噪声信息十分有规律,这个特点体现在频谱图上就是在原点周围有一圈亮点。

问题二:

  • 噪声图lena_noise.bmp 的傅里叶谱图像中的高亮点对应着噪声,选择合适的频率域滤波器进行操作,给出选择频率域滤波器类型的原因。画出频率域滤波器H,以及H*F。频率域操作后,进行傅里叶反变换(记得去中心化和取实部),画出滤波后空域图的效果(去噪以后的图像)。
代码(选用高斯低通滤波器):
clear all;
close all;
clc;

img = imread("lena_noise.bmp");
subplot(221);imshow(img);title("噪声图");
img1 = im2double(img);
F = fsd(img1);
H = GaussianLowpass(img1,80);
subplot(222);imshow(H);title("频域滤波器");
G = F.*H;
subplot(223);imshow(G);title("H*F");
G = real(ifft2(ifftshift(G)));
G = G(1:size(img,1),1:size(img,2));
subplot(224); imshow(G);title("去噪后图像,D0=80");
%傅里叶频谱
function F = fsd(img)
[m,n] = size(img);
%傅里叶变换
F = fft2(img,m*2,n*2);
%中心化
F = fftshift(F);
end

% Butterworth滤波器
function H = Bfilter(img, D0)
N = 2;
[m,n] = size(img);
P = m*2;
Q = n*2;
H = zeros(P, Q);
a = D0^(2 * N);
for u = 1 : P
    for v = 1 : Q
        d = (u-m)^2 + (v-n)^2;
        H(u, v) = 1 / (1 + (d^N) / a);
    end
end
end

 
%高斯低通滤波器
function H = GaussianLowpass(img,D0)
 
[M,N] = size(img);
H = zeros(2*M,2*N);
 
for u = 1:2*M
    for v = 1:2*N
        D_square = (u-M) * (u-M) + (v-N) * (v-N); 
        H(u,v) = exp(-D_square/(2*D0*D0));        
    end
end
 
end
 
 %理想低通滤波器函数
function H = ILPF(img,D0) 
[m,n]=size(img);
P = 2*m;
Q = 2*n;
H = zeros(P,Q);
for u = 1:P
    for v = 1:Q
        D = ((u-m) * (u-m) + (v-n) * (v-n))^0.5; 
        if D <= D0
            H(u,v) = 1;
        else
            H(u,v) = 0;
        end
    end
end
 
end
运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jOkpIxSx-1678970644227)(C:\Users\zdsss\AppData\Roaming\Typora\typora-user-images\image-20230316192515848.png)]

选择该频率域滤波器的原因:
  • 理想低通滤波器有明显的振铃现象,故弃之不用
  • 高斯低通滤波器和Butterworth滤波器差别不大,选用高斯低通滤波器,下面为二者对比图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ach4tK4i-1678970644228)(C:\Users\zdsss\AppData\Roaming\Typora\typora-user-images\image-20230316190938373.png)]

lena.bmp

lena_noise.bmp

在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值