基于Matlab的图像去噪算法仿真

在信息化的社会里,图像在信息传播中所起的作用越来越大。所以,消除在图像采集和传输过程中而产生的噪声,保证图像受污染度最小,成了数字图像处理领域里的重要部分。

本文主要研究分析邻域平均法、中值滤波法、维纳滤波法及模糊小波变换法的图像去噪算法。首先介绍图像处理应用时的常用函数及其用法;其次详细阐述了四种去噪算法原理及特点;最后运用Matlab软件对一张含噪图片(含高斯噪声或椒盐噪声)进行仿真去噪,通过分析仿真结果得出:

一.均值滤波是典型的线性滤波,对高斯噪声抑制是比较好的;

二.中值滤波是常用的非线性滤波方法,对椒盐噪声特别有效;

三.维纳滤波对高斯噪声有明显的抑制作用;

四.对小波系数进行阈值处理可以在小波变换域中去除低幅值的噪声和不期望的信号。

 本论文主要是从两方面展开,首先是图像去噪算法:简要说明了图像噪声的概念及分类,详细阐述了邻域平均法、中值滤波法、维纳滤波法及模糊小波变换法的去噪原理及特点。

 其次是基于Matlab的图像去噪算法仿真:根据邻域平均法、中值滤波法、维纳滤波法及模糊小波变换法原理分析,运用Matlab仿真软件编写代码,对一张含噪图片(含高斯噪声或椒盐噪声)进行仿真去噪,并对结果分析讨论,比较几种方法的优缺点。

本论文仿真时选取一张彩色图片“2010-03-09-2.bmp”,并在图片中加入两种噪声:高斯噪声和椒盐噪声。所谓高斯噪声是指它的概率密度函数服从高斯分布的一类噪声。椒盐噪声是由图像传感器、传输信道、解码处理等产生的黑白相间的亮暗点噪声,属于非平稳噪声。本章利用Matlab软件对含噪图像的去噪算法进行仿真,将应用邻域平均法、中值滤波法、维纳滤波法和模糊小波变换法对含有高斯噪声和椒盐噪声图像的去噪效果进行比较,从而得到相应结论。

    1. 邻域平均法的仿真

    本节选用邻域平均法对含有高斯噪声和椒盐噪声的图片进行去噪,并用Matlab软件仿真。

(1)给图像加入均值为0,方差为0.02的高斯噪声,选择3×3模板去噪

Matlab部分代码:

j=imnoise(x,'gaussian',0,0.02);

h=ones(3,3);

h=h/9;

k=conv2(j,h);

仿真结果如图4-1所示。

图1-1 邻域平均法对高斯噪声去噪的仿真结果

(2)给图像加入噪声密度为0.02的椒盐噪声,选择3×3模板去噪

Matlab部分代码:

j=imnoise(x,'salt & pepper',0.02);

h=ones(3 3);

h=h/9;

k=conv2(j,h);

仿真结果如图1-2所示。

图1-2 邻域平均法对椒盐噪声去噪的仿真结果

从仿真结果可以看出:邻域平均法实现起来很方便,适用于消除图像中的颗粒噪声,但需要指出这种方法既平滑了图像信号,同时使图像的细节部分变得模糊。由以上处理后的图像可以看到:邻域平均法消弱了图像的边缘,使图像变得有些模糊。如图1-1所示,均值滤波对高斯噪声的抑制是比较好的,但对椒盐噪声的抑制作用不好,如图1-2所示,椒盐噪声仍然存在,只不过被削弱了而已。为了改善均值滤波细节对比度不好、区域边界模糊的缺陷,常用门限法来抑制椒盐噪声和保护细小纹理,用加权法来改善图像的边界模糊,用选择平均的自适应技术来保持图像的边界。

    1. 中值滤波的仿真

本节选用中值滤波法对含有高斯噪声和椒盐噪声的图像进行去噪,并用Matlab软件仿真。

(1)给图像加入均值为0,方差为0.02的高斯噪声,分别选择3×3模板、5×5模板和7×7模板进行去噪

Matlab部分代码:

j=imnoise(I,'gaussian',0,0.02);

x=j(:,:,1);

subplot(221);

imshow(x);

title('高斯噪声图片');

k1=medfilt2(x,[3 3]);

k2=medfilt2(x,[5 5]);

k3=medfilt2(x,[7 7]);

仿真结果如图1-3所示。

图1-3 中值滤波法对高斯噪声去噪的仿真结果

(2)给图像加入噪声密度为0.02的椒盐噪声,分别选择3×3模板、5×5模板和7×7模板进行去噪

Matlab部分代码:

i=imread('2010-03-09-2.bmp');

j=imnoise(I,'salt & pepper',0.02);

x=j(:,:,1);

subplot(221);

imshow(x);

title('椒盐噪声图片');

k1=medfilt2(x,[3 3]);

k2=medfilt2(x,[5 5]);

k3=medfilt2(x,[7 7]);

仿真结果如图1-4所示。

图1-4 中值滤波法对椒盐噪声去噪的仿真结果

从仿真结果可以看出:对图像加入椒盐噪声后,应用中值滤波,如图1-4所示,噪声的斑点几乎全部被滤去,它对滤除图像的椒盐噪声非常有效。而对于高斯噪声来说,如图1-3所示,虽然也有一些去噪效果,但效果不佳。由此可知,中值滤波法运算简单,易于实现,而且能较好地保护边界,但有时会失掉图像中的细线和小块区域。并且采用窗口的大小对滤波效果影响很大,窗口越大,图像去噪效果越好,但代价是模糊的程度越大。

    1. 维纳滤波的仿真

选用维纳滤波法对含有高斯噪声和椒盐噪声的图像进行去噪,并用Matlab软件仿真。

(1)给图像加入均值为0,方差为0.02的高斯噪声,选择3×3模板去噪

Matlab部分代码:

i=imread('2010-03-09-2.bmp');

j=imnoise(I,'gaussian',0,0.02);

x=j(:,:,1);

k=wiener2(x);

仿真结果如图1-5所示。

图1-5 维纳滤波法对高斯噪声去噪的仿真结果

(2)给图像加入噪声密度为0.02的椒盐噪声,选择3×3模板去噪

Matlab部分代码:

j=imnoise(I,'salt & pepper',0.02);

x=j(:,:,1);

k=wiener2(x);

仿真结果如图1-6所示。

图1-6 维纳滤波法对椒盐噪声去噪的仿真结果

从仿真结果可以看出:维纳滤波对高斯白噪声的图像滤波与邻域平均法比较, 滤波效果好,它比线性滤波器具有更好的选择性,可以更好地保存图像的边缘和高频细节信息。虽然,维纳滤波在大多数情况下都可以获得满意的结果,尤其对含有高斯噪声的图像。另外维纳滤波对于椒盐噪声去除效果却不尽人意,几乎没有效果。它不能用于噪声为非平稳的随机过程的情况,对于向量情况应用不方便。因此,维纳滤波在实际问题中应用不多。

    1. 基于模糊小波变换法的仿真

选用模糊小波变换法对含有高斯噪声和椒盐噪声的图像进行去噪,并用Matlab软件仿真。

(1)给图像加入均值为0,方差为0.02的高斯噪声,用小波函数coif2对图象进行2层分解,选择3×3模板去噪

Matlab部分代码:

function y=zishiying(x)

x11=medfilt2(x,[3 3]);     

x12=double(x11);

[a,b]=size(x12);

[c,s]=wavedec2(x12,3,'coif2');  

n=[1,2,3];               

p4=0.02*(sqrt(2*log(a*b)));

size(detcoef2('h',c,s,1));  

size(detcoef2('v',c,s,1));

size(detcoef2('d',c,s,1));

p1(1)=detcoef2('h',c,s,1);

p2(1)=detcoef2('v',c,s,1);

p3(1)=detcoef2('d',c,s,1);

p1(2)=detcoef2('h',c,s,2);      

p2(2)=detcoef2('v',c,s,2);

p3(2)=detcoef2('d',c,,s,2);

for i=1:1:2              

   p1(i)=1/((p1(i)-p4)^2+1);  

     if p1(i)>=p4                   

      p1(i)=sign(p1(i))*(abs(p1(i))-p1(i)*p4);

else

p1(i)=0;

end

     if p2(i)>=p4

      p2(i)=sign(p2(i))*(abs(p2(i))-p2(i)*p4);

else

p2(i)=0;

end

   if p3(i)>=p4

      p3(i)=sign(p3(i))*(abs(p3(i))-p3(i)*p4);

else

p3(i)=0;

end

end   

仿真结果如图1-7所示。

图1-7 模糊小波变换法对高斯噪声去噪的仿真结果

(2)给图像加入噪声密度为0.02的椒盐噪声,选择3×3模板去噪

仿真结果如图4-8所示。

图1-8 模糊小波变换法对椒盐噪声去噪的仿真结果

从仿真结果可以看出:为验证本文算法的滤波效果,对加入不同噪声的图像进行了滤波测试。从视觉来看,自适应模糊小波变换算法在保持细节和去噪两方面效果最好。在平滑高斯噪声和有脉冲噪声的图像去噪效果都很显著。本算法相对于其它几种算法其效果都有明显的改进,既能够很好地消除噪声,又能够较好地保持图像边缘细节,而且算法简单,易于实现。目前使用比较广泛。

    1. 几种去噪方法的比较分析

均值滤波是典型的线性滤波算法,其采用的主要方法为邻域平均法。即对待处理的当前像索点

,选择一个模板,该模板由其近邻M个像素组成,求模板中所有像素的均值,再把该均值赋予当前像素的算术平均值

,作为邻域平均处理后的灰度。该方法运算简单,对高斯噪声具有良好的去噪能力。均值滤波可归结为矩形窗加权的有限冲激响应线性滤波器。因此,均值滤波相当于低通滤波器。这种低通性能在平滑噪声的同时,必定也会模糊信号的细节和边缘,即在消除噪声的同时也会对图像的高频细节成分造成破坏和损失,使图像模糊,由以上处理后的图像可以看到:邻域平均法消弱了图像的边缘,使图像变得有些模糊。均值滤波时高斯噪声抑制是比较好的,但对椒盐噪声的抑制作用不好,椒盐噪声仍然存在,只不过被削弱了而已,如仿真结果图1-2所示。为了改善均值滤波细节对比度不好、区域边界模糊的缺陷,常用门限法来抑制椒盐噪声和保护细小纹理,用加权法来改善图像的边界模糊,用选择平均的自适应技术来保持图像的边界。

中值滤波是常用的非线性滤波方法,也是图像处理技术中最常用的预处理技术。它可以克服线性滤波器给图像带来的模糊,在有效清除颗粒噪声的同时,又能保持良好的边缘特性,从而获得较满意的滤波效果,特别适合于去除图像的椒盐噪声,如仿真结果图1-4所示。当窗口在图像中上下左右进行移动后,利用中值滤波算法可以很好地对图像进行平滑处理。由以上图像可以看到:中值滤波法较好地保留了图像的边缘,使其轮廓比较清晰。中值滤波对椒盐噪声特别有效,取得了很好的效果,而对高斯噪声效果不佳。对一些复杂的图像,可以使用复合型中值滤波,如:中值滤波线性组合、高阶中值滤波组合、加权中值滤波以及迭代中值滤波等来改善单纯中值滤波的一些不足,从而达到更好的滤波效果。

维纳滤波是一种对退化图像进行恢复处理的一种常用算法,也是最早也最为人们熟知的线性图像复原方法。其设计思想是使输人信号乘响应后的输出,与期望输出的均方误差为最小。从图1-5中可以看到维纳滤波对高斯噪声有明显的抑制作用,相对与均值滤波和中值滤波,维纳滤波对这两种噪声的抑制效果更好,缺点就是容易失去图像的边缘信息。又正如图1-6所示,维纳滤波对椒盐噪声几乎没有抑制作用。

小波阈值去噪方法是研究最广泛的方法。这种非线性滤波方法之所以特别有效, 就是由于小波变换具有一种“ 集中”的能力, 它可以使一个信号的能量在小波变换域集中在少数系数上, 因此这些系数的幅值必然大于在小波变换域内能量分散于大量小波系数上的信号或噪声的幅值。这就意味着对小波系数进行阈值处理可以在小波变换域中去除低幅值的噪声和不期望的信号, 然后运用小波逆变换, 得到去噪后的重建图像。如图1-7、1-8所示,使用小波变换都得到了较好的消噪效果。

上述滤波方法虽都有一定的降噪效果,但都有其局限性。事实上,不管滤波器具有什么样的频率响应,均不可能做到噪声完全滤掉,使信号波形不失真。但我们可以不断地改进滤波的技术,如实际应用中常用一些改进型的滤波方法如小波导向、多级门限检测来提高去噪的效果从而最大可能地恢复出原始图像。

参考文献:

[1] CAITT,SILVERMANBW.Incorporating information on Neighbouring Coefficients into wavelet estimation [J].The Indian Journal of Statistics,2001,63(2):127-148.

[2] 杨群生,陈敏等.基于模糊技术的随机噪声消除算法[J].华南理工大学学报,2000,28(8):82-87.

[3] L.K.Shark and C.Yu.Denoising by optimal fuzzy thresholding in wavelet domain [J].IEEE Electronics letters,2000,36(6):581-582.

[4] S.Mallat,Sifen Zhong,Characterization of signals from multiscale edges[J].IEEE Trans on PAMI,1992,PAMI-14(7):710-732.

[5] Keesok J.Han and Ahmed H.Tewfik.Hybnd Wavelet Transform Fllter for Image Recovery[J].IEEETrans.Image Processing,1998,l540-544.

[6] H.K .Kwan .Fuzzy filters for noise image filtering [J].IEEE.2003,161-164.

[7] 杨晋生,蔡靖等.一种具有鲁棒性的基于小波变换的滤波方法[J].电子与信息学报,2002,24(3):413-417.

[8] 张磊,潘泉,张洪才等.小波域滤波阈值参数的选取[J].电子学报,2001,29(3):400-402.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905780.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java打包出现xxx.jar中没有主清单属性解决方案

BUG: xxx.jar中没有主清单属性 出现原因:在打包构建的jar目录内,可以看到有一个MANIFEST.MF文件,如图所示: 可以看到上面没有函数入口Main-Class属性,所以会出现xxx.jar中没有主清单属性,大概率…

庭田科技参与第四届计算机辅助焊接工程与增材制造国际研讨会

2024年10月18日,秋意盎然,魅力泉城济南迎来了一场科技与学术交融的盛宴——第四届计算机辅助焊接工程与增材制造国际研讨会(The 4th International Symposium on Computer-Aided Welding Engineering and Additive Manufacturing- CAWE-AM 2024)。此次盛…

低代码驱动企业新动能一个老牌的PHP低代码平台

低代码驱动企业新动能。 说说如何用最简单的开发方式助力企业转型升级。 我觉得当下所有的公司、所有的信息化部门都需要脚手架、工具、低代码平台来实现企业的快速驱动。 靠什么呢?因为只有企业内部的部门、信息部门跟业务部门等这些关系联系是最紧密的&#xff…

laravel 跨域解决方案

我们在用 laravel 进行开发的时候,特别是前后端完全分离的时候,由于前端项目运行在自己机器的指定端口(也可能是其他人的机器) , 例如 localhost:8000 , 而 laravel 程序又运行在另一个端口,这样就跨域了,而由于浏览器…

基于SSM医药进出口交易系统的设计

管理员账户功能包括:系统首页,个人中心,商品信息管理,仓储部门管理,供应部门管理,业务部门管理,客户管理,财务部管理 业务部门账号功能包括:系统首页,个人中…

SMO算法 公式推导

min ⁡ α 1 2 ∑ i 1 N ∑ j 1 N α i α j y i y j K ( x i ⋅ x j ) − ∑ i 1 N α i s.t. ∑ i 1 N α i y i 0 0 ≤ α i ≤ C , i 1 , 2 , ⋯ , N (9-69) \begin{aligned} & \min_{\alpha} \quad \frac{1}{2} \sum_{i1}^{N} \sum_{j1}^{N} \alpha_i \alpha_j…

深度了解flink Flink 本地运行Standalone模式

环境准备 IDEA 必须git 必须maven 必须jdk 1.8 必须scala 2.12.7 源码下载 如果能访问github,下载github的源码(flink的代码托管网站) git clone https://github.com/apache/flink.git 如果不能访问github,可以通过码云下载(国内的代码托管平台) g…

【Nginx系列】Nginx 中的`proxy_set_header`指令:Host 字段的区别与联系

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

SRS:构建实时免费视频服务器的全方位指南

SRS(Simple Realtime Server)是一个开源的、基于MIT协议的实时视频服务器,以其简单、高效而著称。它支持多种流媒体协议,包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等,使其成为直播和WebRTC领域的理想…

混合搜索与多重嵌入:一次有趣又毛茸茸的猫咪搜索之旅!(一)

作者:来自 Elastic Jo Ann de Leon 演示如何在多个嵌入(文本和图像)上实现不同类型的搜索 - 词汇、向量和混合。它使用一个简单而有趣的猫搜索应用程序。 你知道 Elastic 可以用作强大的向量数据库吗?在本博客中,我们…

二:Linux学习笔记(第一阶段)-- Linux命令

目录 Linux注意事项: Linux目录 Linux系统基础命令 1. 文件和目录操作 2. 文件查看和编辑 3. 文件权限和所有权 4. 系统信息 5. 网络命令 6. 文件查找 7. 压缩和解压缩 8. 系统管理 Linux注意事项: 严格区分大小写一切皆文件windows下的程序不…

Java设计模式之代理模式(一)

什么是代理?可以理解为其他对象提供一种代理以控制对这个对象的访问。 举个例子,生活中的外卖平台,店铺是制作外卖的,然后放到平台上售卖。这里的店铺就是真实角色,为了能够让店铺不用担心销售等问题,从而…

WebSocket 连接频繁断开的问题及解决方案

文章目录 WebSocket 连接频繁断开的问题及解决方案1. 引言2. 什么是 WebSocket?2.1 WebSocket 的优势2.2 WebSocket 的工作原理 3. WebSocket 连接频繁断开的常见原因3.1 服务器端问题3.1.1 服务器负载过高3.1.2 服务器配置不当3.1.3 超时设置 3.2 网络问题3.2.1 网…

字符串逆序(c语言)

错误代码 #include<stdio.h>//字符串逆序 void reverse(char arr[], int n) {int j 0;//采用中间值法//访问数组中第一个元素和最后一个元素//交换他们的值&#xff0c;从而完成了字符串逆序//所以这个需要临时变量for (j 0; j < n / 2; j){char temp arr[j];arr[…

elcipse工具使用记录

安装 创建项目并运行Helloword 没有显示console? Window–>Show View–>Console 快捷键的积累 代码提示功能 windows->prference->java->Content Assist, 修改Auto…,内容为.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.

头歌——数据库系统原理(数据的简单查询)

文章目录 第1关&#xff1a;基本 SELECT 查询代码 第2关&#xff1a;带限制条件的查询和表达式查询代码 第3关&#xff1a;使用 WHERE 语句进行检索代码 第1关&#xff1a;基本 SELECT 查询 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何获取数据表中指…

关于我、重生到500年前凭借C语言改变世界科技vlog.13——深入理解指针(3)

文章目录 1.字符指针变量2.数组指针变量3.函数指针变量4.函数指针数组5.二维数组传参本质6.拓展补充希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本章节接着学习常见的指针变量类型 1.字符指针变量 字符指针变量&#xff0c;顾名思义就是字…

贪心算法入门(一)

1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&#xff0c;最终希望能得到全局最优解。这种策略的核心在于“最优”二字&#xff0c;意味着我们追求的是以最少的时间和…

MacBook 如何设置打开json格式文件的默认程序是vs code

首先右键选中文件&#xff0c;然后选中显示简介 然后选中打开方式 设置成vs code

宝塔使用clickhouse踩坑

前言 最近有个物联网项目,需要存储物联网终端发送过来的信息(类似log日志,但又要存储在数据库里,方便后期聚合统计),本来想写文件的奈何客户要求聚合统计,所以只能用数据库才能达到更高的计算效率,当然mysql对这种日志型数据库并没有优势,数据量上去后反而不利于计算…