当前位置: 首页 > news >正文

MATLAB中去除噪声

目录

通过线性滤波去除噪声

使用平均值滤波器和中位数滤波器去除噪声

通过自适应滤波去除噪声


        数字图像容易受到各种噪声的影响。噪声是图像采集过程中存在误差的结果,这些误差导致像素值无法反映真实场景的真实强度。根据图像的创建方式,图像引入噪声的方式有若干种。例如:

  • 如果从用胶片拍摄的照片中扫描图像,胶片颗粒就是噪声源。噪声也可能源于胶片损坏,或由扫描仪本身引起。

  • 如果图像是以数字格式直接获取的,则采集数据的机制(例如 CCD 检测器)可能会引入噪声。

  • 图像数据的电子传输会引入噪声。​

        为了模拟上面列出的一些问题的影响,工具箱提供了 imnoise 函数,您可以使用该函数将各种类型的噪声添加到图像中。本节中的示例使用该函数。​

通过线性滤波去除噪声

        可以使用线性滤波来去除某些类型的噪声。某些滤波器,如平均值滤波器或高斯滤波器,适用于此目的。例如,平均值滤波器可用于从照片中去除颗粒噪声。由于每个像素设置为其邻域中像素的平均值,因此会减少由颗粒引起的局部变化。

使用平均值滤波器和中位数滤波器去除噪声

        此示例说明如何使用平均值滤波器和中位数滤波器从图像中去除椒盐噪声,以便比较结果。这两种类型的滤波都将输出像素的值设置为对应输入像素周围邻域中像素值的平均值。然而,使用中位数滤波时,输出像素的值由邻域像素的中位数(而不是均值)决定。中位数远不如均值对极值(称为离群值)敏感。因此,中位数滤波能够更好地去除这些离群值,而不会降低图像的锐度。

        注意:中位数滤波是顺序统计量滤波的一种特殊情况,也称为秩滤波。有关顺序统计量滤波的信息,可以参考ordfilt2 函数的参考页。

        将图像读入工作区并显示它。

I = imread('eight.tif');
figure
imshow(I)

如图所示:

        对于此示例,向图像中添加椒盐噪声。这种类型的噪声由设置为黑色或白色(数据范围的极值)的随机像素组成。

J = imnoise(I,'salt & pepper',0.02);
figure
imshow(J)

        如图所示:

        使用平均值滤波器对含噪图像J进行滤波并显示结果。该示例使用 3×3 邻域。

Kaverage = filter2(fspecial('average',3),J)/255;
figure
imshow(Kaverage)

如图所示:

        现在使用中位数滤波器对含噪图像 J 进行滤波。该示例还使用 3×3 邻域。将两个滤波后的图像并排显示,以进行比较。请注意,medfilt2 在去除噪声方面做得更好,硬币边缘的模糊更少。

Kmedian = medfilt2(J);
imshowpair(Kaverage,Kmedian,'montage')

如图所示:

通过自适应滤波去除噪声

        此示例说明如何使用 wiener2 函数将 Wiener 滤波器(一种线性滤波器)以自适应方式应用于图像。Wiener 滤波器可自行适应图像局部方差。当方差较大时,wiener2 几乎不执行平滑处理。当方差较小时,wiener2 执行更多平滑处理。

        这种方法通常比线性滤波产生更好的结果。自适应滤波器相比类似的线性滤波器更具选择性,它可保留图像的边缘和其他高频部分。此外,它没有设计任务;wiener2 函数处理所有初步计算,并对输入图像实现滤波器。然而,与线性滤波相比,wiener2 确实需要更多计算时间。

        当噪声是恒定功率(“白色”)加性噪声(如高斯噪声)时,wiener2 效果最佳。以下示例将 wiener2 应用于添加了高斯噪声的土星图像。

        将图像读入工作区中。

RGB = imread('saturn.png');

        将图像从真彩色转换为灰度。

I = im2gray(RGB);

        向图像中添加高斯噪声

J = imnoise(I,'gaussian',0,0.025);

        显示含噪图像。由于图像相当大,因此只显示图像的一部分。

imshow(J(600:1000,1:600));
title('Portion of the Image with Added Gaussian Noise');

如图所示:

        使用 wiener2 函数去除噪声。

K = wiener2(J,[5 5]);

        显示处理后的图像。由于图像相当大,因此只显示图像的一部分。

figure
imshow(K(600:1000,1:600));
title('Portion of the Image with Noise Removed by Wiener Filter');

如图所示:

http://www.xdnf.cn/news/323029.html

相关文章:

  • 安装并运行第一个Spark程序
  • 什么是声明式UI什么是命令式UI?鸿蒙ArkTS为什么是声明式UI-优雅草卓伊凡
  • 如何使用UGUI的EventTrigger
  • IT项目实施方案,软件系统实施方案,信息化项目实施方案,软件文档资料(Word)
  • TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章
  • 如何构建直播美颜SDK?从美颜API调用逻辑到GPU优化实战
  • IEC103 转 ModbusTCP 网关
  • 【STM32F1标准库】理论——通信协议:串口
  • 大数据应用开发和项目实战-电商双11美妆数据分析2
  • 扣子(Coze)的记忆系统详解
  • unity 使用蓝牙通讯(PC版,非安卓)
  • linux 安装ssh server
  • 配电站室智能巡检:机器人 VS 固定摄像头,谁更胜一筹?
  • 聊一聊Qwen3思考模式实现以及背后原理探讨
  • 信息论11:从互信息到最大信息系数——信息论中的非线性关联度量
  • 内网和外网怎么互通?外网访问内网的几种简单方式
  • 在cursor中使用MCP插件生成旅行规划到桌面的执行步骤分析
  • PDF文档压缩攻略
  • Python循环进阶:嵌套与控制的深度解析
  • 详解Redis
  • 第三章—导数和微分错题
  • 【深度学习-Day 7】精通Pandas:从Series、DataFrame入门到数据清洗实战
  • 什么情况下会触发Full GC?
  • 【软件设计师:数据结构】2.数据结构基础(二)
  • Prometheus实战教程:k8s平台-Redis监控案例
  • 微软输入法常用快捷键介绍以及调教技巧
  • 新能源汽车BMS开发工程师视频教程合集(100+节课)
  • 【详细教程】ROC曲线的计算方式与绘制方法详细介绍
  • XMP-Toolkit-SDK 编译与示例程序
  • 大数据处理利器:Hadoop 入门指南