数字图像中高频噪声的滤波

代码解释

本文通过对图像加入高频高斯噪声再通过低通滤波滤除噪声。

本文代码通过MATLAB2020a编写。
person_resize.jpg
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

clear;
clc;

I = imread("person_resize.jpg");  % 读入图像
I = rgb2gray(I);  % 转化为灰度图
I = im2double(I);% 读取的图像矩阵数值类型转化为双精度型
[R,C] = size(I); % 取图像的行与列


%% 生成高频高斯噪声(Gauss noise and High pass filter)
gauss_noise = randn(R,C); % 生成高斯噪声
F_gauss = fft2(gauss_noise); % 对高斯噪声进行傅里叶变换
Fs_gauss = fftshift(F_gauss); %  频域移动
[x,y] = meshgrid(-C/2:C/2-1,-R/2:R/2-1);  %  生成频域网格
z = sqrt(x.^2 + y.^2); %  频域中心距离
D = 200; %截至频率
n = 4; % 滤波器阶次
H = 1./(1+(D./z).^(2*n));%  巴特沃斯高通滤波器
K = Fs_gauss .* H; % 频域滤波
Ks = ifftshift(K); % 频域移动
L = ifft2(Ks); % 傅里叶反变换

figure(1) % 画图
subplot(2,1,1)% 子图
imshow(real(Fs_gauss))
title("高斯噪声高通滤波前频谱图") % 子图题目
subplot(2,1,2)% 子图
imshow(real(K))
title("高斯噪声高通滤波后频谱图")% 子图题目


%% 向图像加入噪声

I_noise = I + L;  %加入噪声

% 加噪后的图像的频谱图
F_I_noise = fft2(I_noise); % 傅里叶变换
Fs_I_noise = fftshift(F_I_noise);% 频谱平移
figure(3)
imshow(real(Fs_I_noise))
title("加噪后的图像的频谱图")


%% 对带噪声图像低通滤波 (Butterworth filter)
H = 1./(1+(z/D).^(2*n));%  巴特沃斯低通滤波器
Fs_I_filter_noise = Fs_I_noise.* H; % 滤波
F_I_filter_noise = ifftshift(Fs_I_filter_noise); % 频谱平移
I_filter = ifft2(F_I_filter_noise); % 傅里叶反变换

%% 显示原始图像、加噪声图像、滤波后图像对比
figure(4) % 建立绘图窗口
subplot(1,3,1) % 建立子图
imshow(I) % 显示图像
title("原始图像")  % 子图题目
subplot(1,3,2)
imshow(I_noise)
title("加高频高斯噪声后图像")
subplot(1,3,3)
imshow(I_filter)
title("低通滤波后图像")

%% 对比原始图像、加噪声图像、滤波后图像之间的误差

% 原始图像与加噪声图像之间的误差
origin_noise_error = abs(I_noise - I);
mean_origin_noise_error = sum(origin_noise_error, 'all')/(R * C); %图像平均误差

% 原始图像与滤波后图像之间的误差
origin_filter_error = abs(I_filter - I);
mean_origin_filter_error = sum(origin_filter_error, 'all')/(R * C); %图像平均误差


% 加噪声后的图像与滤波后图像之间的误差
noise_filter_error = abs(I_filter - I_noise);
mean_noise_filter_error = sum(noise_filter_error, 'all')/(R * C); %图像平均误差

disp("原始图像与加噪声图像之间的平均误差为:")
mean_origin_noise_error
disp("原始图像与滤波后图像之间的平均误差为:")
mean_origin_filter_error



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值