代码解释

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

本文代码通过MATLAB2020a编写。



代码

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

数字图像中高频噪声的滤波相关推荐

  1. OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波)

    系列文章目录 OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) Op ...

  2. matlab对有周期性噪声的图像去噪,数字图像中去除周期性噪声研究.doc

    摘要:图像增强是数字图像处理相对简单却最具艺术性的领域之一,其目的是消除噪声,显现被模糊的细节或突出感兴趣区域.经常采用的手段分空域和频域两类,其中频域更是给我们提供了不同的视角,简化了许多复杂的算法 ...

  3. 如何将高频噪声从信号中滤除掉?

    我们经常会在模拟电路中用到滤波器,比如音频信号.心电图信号.传感器等等信号中滤除不想要的信号频段.相对来说,数字信号对噪声的容忍度会高一些,但有时在应用中我们也希望在信号链的某个点滤除不需要的数字波形 ...

  4. 数字图像中关于添加噪声及噪声处理

    数字图像中关于添加噪声及噪声处理 MATLAB源代码 图像处理结果 分析 说明 MATLAB源代码 A = imread('yuantu.jpg'); A = rgb2gray(A); A1 = im ...

  5. 数字图像中的高频和低频

    数字图像中的高频和低频 简单地说,图像信号中的高频分量,指的就是图像信号强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓):图像信号中的低频分量,指的就是图像强度(亮度/灰度)变换平缓的地 ...

  6. SMOTE-IPF:通过带滤波的重采样方法解决不平衡分类中的噪声和边界样本问题

    SMOTE-IPF:通过带滤波的重采样方法解决不平衡分类中的噪声和边界样本问题 本篇文章主要针对合成技术中噪声的产生,在smote的众多变体中被广泛使用. 作者José A. Sáeza, Juliá ...

  7. 深度CV基础——图像噪声和滤波

    一,图像噪声 1.图像噪声的概念: 图像噪声是图像在获取或是传输过程中受到随机信号干扰,妨碍人们对图像理解及分析处理的信号.很多时候将图像噪声看做多维随机过程,因而描述噪声的方法完全可以借用随机过程的 ...

  8. CS131专题-2:高斯核、噪声、滤波

    目录 1 高斯核 1.1 一维定义 1.2 二维定义 1.2.1 应用高斯核的过程 1.2.2 不同σ值的高斯核情况 1.2.3 不同核宽度情况 1.2.4 高斯核(滤波)特性 1.2.5 使用高斯核 ...

  9. c# 傅里叶变换 频域_傅里叶变换在MATLAB中的应用(频域滤波)

    点击上方蓝字  关注我们 本文主要讲述如何在MATLAB中实现频域滤波,那么,怎么实现呢,我们这里讲的所有的滤波都是通过傅里叶变换在频域中实现的,所有这部分和傅里叶变换渊源很深,至于傅里叶变换本身,我 ...

最新文章

  1. SecureCRT窗口输出代码关键字高亮设置
  2. mysql获取配置文件信息,四种获取MySQL数据库配置文件加载顺序
  3. [经验总结]源代码管理=Ubuntu+Apache+SVN
  4. nagios+cacit 整合(rpm)
  5. js基本包装类型和引用类型
  6. BigDecimal类整除报错的解决方案
  7. 从工具到平台|默安科技研发安全一体化管理平台正式发布
  8. 新来的大神用策略模式把if else给优化了,技术总监说:能不能想好了再改?...
  9. Mac远程连接Linux桌面教程
  10. ros清华源_ROS操作系统学习(一)ROS安装
  11. python导入第三方库失败_史上最详细 Python第三方库添加方法 and 错误解决方法
  12. html武侠文字游戏源码,执剑行!最新武侠文字mud游戏
  13. 以下11條小建議,幫助你們的異地戀一直保持活力
  14. 为了提高忠诚度,企业应该从客户关系衡量转向客户关系健康管理
  15. sublime Text3去除文本重复行
  16. 计算机输入输出接口形式,输入输出接口-微计算机原理-电子发烧友网站
  17. 雷军:向小米手机1首批用户每人赠送1999元红包
  18. 一、TF2 常用命令
  19. python基础: os.path.realpath()、os.path.getcwd()、 os.path.abspath() 的区别
  20. Leetcode P44 java一次遍历

热门文章

  1. 分布式流控介绍和实现原理
  2. 利用Jsoup解析HTML
  3. 关于RNNLM的思考,特别是与HMM,n-gram的区别
  4. 自然语言处理中的词性标注全称
  5. TensorFlow使用--MNIST分类学习(BP神经网络)
  6. 华为为何还没鸿蒙,华为鸿蒙2.0正式发布,但无第三方公开支持,华为的路该怎么走?...
  7. sed 之简单用法小记
  8. HANA中SQL之truncate 、delete与drop区别
  9. linux 系统命令和方法
  10. Linux卸载jdk