【图像去噪】中值+均值+Lee+Kuan图像滤波【含Matlab源码 1179期】

news2024/9/22 6:47:43

⛄一、图像去噪及滤波简介

1 图像去噪
1.1 图像噪声定义
噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程。噪声分类有三种:加性噪声,乘性噪声和量化噪声。我们用f(x,y)表示图像,g(x,y)表示图像信号,n(x,y)表示噪声。
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。去噪是图像处理研究中的一个重点内容。在图像的获取、传输、发送、接收、复制、输出等过程中,往往都会产生噪声,其中的椒盐噪声是比较常见的一种噪声,它属于加性噪声。

1.2 图像噪声来源
(1)图像获取过程中
图像传感器CCD和CMOS采集图像过程中受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声。
(2)图像信号传输过程中
传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。

1.3 噪声分类
噪声按照不同的分类标准可以有不同的分类形式:
基于产生原因:内部噪声,外部噪声。
基于噪声与信号的关系:
加性噪声:加性噪声和图像信号强度是不相关的,这类带有噪声的图像g可看成为理想无噪声图像f与噪声n之和:
g = f + n;
乘性嗓声:乘性噪声和图像信号是相关的,往往随图像信号的变化而变化,载送每一个象素信息的载体的变化而产生的噪声受信息本身调制。在某些情况下,如信号变化很小,噪声也不大。为了分析处理方便,常常将乘性噪声近似认为是加性噪声,而且总是假定信号和噪声是互相统计独立。
g = f + f*n
按照基于统计后的概率密度函数:
是比较重要的,主要因为引入数学模型这就有助于运用数学手段去除噪声。在不同场景下噪声的施加方式都不同,由于在外界的某种条件下,噪声下图像-原图像(没有噪声时)的概率密度函数(统计结果)服从某种分布函数,那么就把它归类为相应的噪声。下面将具体说明基于统计后的概率密度函数的噪声分类及其消除方式。

1.4 图像去噪算法的分类
(1)空间域滤波
空域滤波是在原图像上直接进行数据运算,对像素的灰度值进行处理。常见的空间域图像去噪算法有邻域平均法、中值滤波、低通滤波等。
(2)变换域滤波
图像变换域去噪方法是对图像进行某种变换,将图像从空间域转换到变换域,再对变换域中的变换系数进行处理,再进行反变换将图像从变换域转换到空间域来达到去除图像嗓声的目的。将图像从空间域转换到变换域的变换方法很多,如傅立叶变换、沃尔什-哈达玛变换、余弦变换、K-L变换以及小波变换等。而傅立叶变换和小波变换则是常见的用于图像去噪的变换方法。
(3)偏微分方程
偏微分方程是近年来兴起的一种图像处理方法,主要针对低层图像处理并取得了很好的效果。偏微分方程具有各向异性的特点,应用在图像去噪中,可以在去除噪声的同时,很好的保持边缘。偏微分方程的应用主要可以分为两类:一种是基本的迭代格式,通过随时间变化的更新,使得图像向所要得到的效果逐渐逼近,这种算法的代表为Perona和Malik的方程,以及对其改进后的后续工作。该方法在确定扩散系数时有很大的选择空间,在前向扩散的同时具有后向扩散的功能,所以,具有平滑图像和将边缘尖锐化的能力。偏微分方程在低噪声密度的图像处理中取得了较好的效果,但是在处理高噪声密度图像时去噪效果不好,而且处理时间明显高出许多。
(4)变分法
另一种利用数学进行图像去噪方法是基于变分法的思想,确定图像的能量函数,通过对能量函数的最小化工作,使得图像达到平滑状态,现在得到广泛应用的全变分TV模型就是这一类。这类方法的关键是找到合适的能量方程,保证演化的稳定性,获得理想的结果。
形态学噪声滤除器将开与闭结合可用来滤除噪声,首先对有噪声图像进行开运算,可选择结构要素矩阵比噪声尺寸大,因而开运算的结果是将背景噪声去除;再对前一步得到的图像进行闭运算,将图像上的噪声去掉。据此可知,此方法适用的图像类型是图像中的对象尺寸都比较大,且没有微小细节,对这类图像除噪效果会较好。

2 中值滤波
(1)概念:
在这里插入图片描述
(2)原理解释:
在这里插入图片描述
3 均值滤波
均值滤波是指任意一点的像素值,都是周围 N \times M 个像素值的均值。例如下图中,红色点的像素值是其周围蓝色背景区域像素值之和除25,25=5\times5 是蓝色区域的大小。
在这里插入图片描述
均值滤波详细的计算方法如下图所示:
在这里插入图片描述
其中5\times5的矩阵称为核,针对原始图像内的像素点,采用核进行处理,得到结果图像,如下图所示:
在这里插入图片描述
在这里插入图片描述
提取 1/25 可以将核转换为如下形式:
在这里插入图片描述

4 Lee滤波
在这里插入图片描述

⛄二、部分源代码

clear;
A1=imread(‘44.jpg’)
A=double(A1);
figure(1)
imshow(A/256)
title(‘原始图像’);
[a,b]=size(A);

ASp=imnoise(A/256,‘speckle’,0.02);
figure(2)
imshow(ASp);
title(‘含散斑噪声的图像’);
% imwrite(ASp/256,‘55.jpg’);
index_ASp=std2(ASp)/mean2(ASp);%散斑指数 潘云《数字全息技术中散斑噪声滤波算法比较》
ENL=mean2(ASp)2/std2(ASp)2;%等效视数
psnr=PSNR(A,ASp);

%中值滤波
ME=Medf(ASp,3);%邻域 33
ENL_Me3=mean2(ME)2/std2(ME)2;%等效视数
index_ME3=std2(ME)/mean2(ME);%散斑指数
psnr_ME3=PSNR(A,ME);
figure(3)
% subplot(2,2,1);
imshow(ME);
title('中值滤波后的图像 3
3’);

ME=Medf(ASp,5);%邻域
ENL_Me5=mean2(ME)2/std2(ME)2;%等效视数
index_ME5=std2(ME)/mean2(ME);%散斑指数
psnr_ME5=PSNR(A,ME);
figure(4)
% subplot(2,2,2);
imshow(ME);
title(‘中值滤波后的图像 5*5’);

ME=Medf(ASp,7);%邻域
ENL_Me7=mean2(ME)2/std2(ME)2;%等效视数
index_ME7=std2(ME)/mean2(ME);%散斑指数
psnr_ME7=PSNR(A,ME);
figure(5)
% subplot(2,2,3);
imshow(ME);
title(‘中值滤波后的图像 7*7’);

ME=Medf(ASp,9);%邻域
ENL_Me9=mean2(ME)2/std2(ME)2;%等效视数
index_ME9=std2(ME)/mean2(ME);%散斑指数
psnr_ME9=PSNR(A,ME);
figure(6)
% subplot(2,2,4);
imshow(ME);
title(‘中值滤波后的图像 9*9’);

%Lee滤波
LE=Leef(256ASp,5);
ENL_Lee5=mean2(LE)2/std2(LE)2;%等效视数
index_LE5=std2(LE)/mean2(LE);%散斑指数
psnr_LE5=PSNR(A,LE);
figure(7)
imshow(LE);
title('Lee滤波后的图像 5
5’);

LE=Leef(256ASp,7);
ENL_Lee7=mean2(LE)2/std2(LE)2;%等效视数
index_LE7=std2(LE)/mean2(LE);%散斑指数
psnr_LE7=PSNR(A,LE);
figure(8)
imshow(LE);
title('Lee滤波后的图像 7
7’);

LE=Leef(256ASp,9);
ENL_Lee9=mean2(LE)2/std2(LE)2;%等效视数
index_LE9=std2(LE)/mean2(LE);%散斑指数
psnr_LE9=PSNR(A,LE);
figure(9)
imshow(LE);
title('Lee滤波后的图像 9
9’);

%Kuan滤波
KU=Kuanf(256ASp,5);
ENL_Kuan5=mean2(KU)2/std2(KU)2;%等效视数
index_Ku5=std2(KU)/mean2(KU);%散斑指数
psnr_Ku5=PSNR(A,KU);
figure(10)
imshow(KU);
title('Kuan滤波后的图像 5
5’);

KU=Kuanf(256ASp,7);
ENL_Kuan7=mean2(KU)2/std2(KU)2;%等效视数
index_Ku7=std2(KU)/mean2(KU);%散斑指数
psnr_Ku7=PSNR(A,KU);
figure(11)
imshow(KU);
title('Kuan滤波后的图像 7
7’);

KU=Kuanf(256ASp,9);
ENL_Kuan9=mean2(KU)2/std2(KU)2;%等效视数
index_Ku9=std2(KU)/mean2(KU);%散斑指数
psnr_Ku9=PSNR(A,KU);
figure(12)
imshow(KU);
title('Kuan滤波后的图像 9
9’);

%均值滤波
AV=Avef(ASp,3)
ENL_Aver3=mean2(AV)2/std2(AV)2;%等效视数
index_AV3=std2(AV)/mean2(AV);%散斑指数
psnr_AV3=PSNR(A,AV);
figure(13)
imshow(AV);
title(‘均值滤波后的图像 3*3’);

AV=Avef(ASp,5)
ENL_Aver5=mean2(AV)2/std2(AV)2;%等效视数
index_AV5=std2(AV)/mean2(AV);%散斑指数
psnr_AV5=PSNR(A,AV);
figure(14)
imshow(AV);
title(‘均值滤波后的图像 5*5’);

AV=Avef(ASp,7)
ENL_Aver7=mean2(AV)2/std2(AV)2;%等效视数
index_AV7=std2(AV)/mean2(AV);%散斑指数
psnr_AV7=PSNR(A,AV);
figure(15)
imshow(AV);
title(‘均值滤波后的图像 7*7’);

AV=Avef(ASp,9)
ENL_Aver9=mean2(AV)2/std2(AV)2;%等效视数
index_AV9=std2(AV)/mean2(AV);%散斑指数
psnr_AV9=PSNR(A,AV);
figure(16)
imshow(AV);
title(‘均值滤波后的图像 9*9’);
function [RIL] = Leef(A,N)
% Lee滤波
% A 输入灰度图像
% RIL 输出Lee滤波后的灰度图像
Ilee=A;

[height,width] = size(Ilee); % height, width:图像的高和宽
nr = floor(N/2); % N = 2*nr+1;

Ilee = double(Ilee);
Ilee2 = double(Ilee);

% L 视强度图像
L = 9; % 视数
delta = 1/sqrt(L); %噪声标准差

for i = 1:height
for j = 1:width

    % 计算N*N窗口的均值与方差
    sum = 0;
    sum2 = 0;
    num = 0;
    for k = -nr:nr
        for m = -nr:nr
            if( (i+k >=1) && (i+k <= height) && (j+m >= 1) && (j+m <= width) )  % 避免数组越界
                num = num + 1;
                sum = sum + Ilee(i+k,j+m);
                sum2 = sum2 + Ilee(i+k,j+m)*Ilee(i+k,j+m);
            end
        end
    end
    
    u = sum/num; % m均值  E(fxy)
    v = sum2/num - u*u; % 方差 vxy
    cu=delta/1;
    ci=sqrt(v)/u;
    
    % 计算中心点的值
    if(u == 0)
        k = 0;
    else
         k = (1 - cu*cu/(ci*ci));%   Qxy 《SAR图像斑点噪声抑制方法与应用研究》杨红磊

% k=(1-delta/sqrt(v))/(1+delta);
% k = (v - deltadeltauu) / (v + vdelta*delta);
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]张娜娜,张媛媛,丁维奇.经典图像去噪方法研究综述[J].化工自动化及仪表. 2021,48(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解63:DSP接总线屏的硬件和驱动设计(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 EBIU总线LCD屏 硬件实现原理 LCD2.4 寸液晶屏子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT1 和 PORT2 上&#xff0c;板卡插入时&#xf…

基于JAVA的水产批发系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

【Linux】低级IO

目录 一、文件的概念 二、C语言文件操作回顾 三、使用系统调用进行文件I/O 1、系统调用open 1.1open接口介绍 1.2open形参中标记位flags的意义 1.3open的使用 2、系统调用write 2.1write接口介绍 2.2write的使用 3、系统调用read 3.1read接口介绍 3.2read的使用 …

什么是 SAP ABAP FDA - Fast Data Access 技术?

快速数据访问 (Fast Data Access&#xff0c;缩写为 FDA) 是一种可在 SAP ABAP 环境中访问的协议。 它允许针对 SAP HANA 提交 OPEN SQL SELECT 语句&#xff0c;从而使用 SAP ABAP 的数据格式。 在快速数据访问场景里&#xff0c;SAP ABAP 内表数据传输到数据库并返回。这种方…

Java+MySQL基于ssm的物理竞赛管理系统

物理竞赛是对课堂上所学的理论知识的实践运用,加深所学知识的理解,锻炼团队协作能力。学生可以根据个人爱好,个人特长选择参与,不仅能培养学生的创新意思、提高专业技能,还能锻炼学生的组织能力和协作能力。物理竞赛是在中国科协的领导下,由中国物理学会主办,各省、自治区、直辖…

【力扣周赛#324】6266. 使用质因数之和替换后可以取到的最小值+6267. 添加边使所有节点度数都为偶数+6268. 查询树中环的长度

目录 6265. 统计相似字符串对的数目 - ac 6266. 使用质因数之和替换后可以取到的最小值 分解质因数 1、tle代码 2、优化ac代码 6267. 添加边使所有节点度数都为偶数 - 建图分类讨论 关于建图 6268. 查询树中环的长度 - LCA最近公共祖先 6265. 统计相似字符串对的数目…

[附源码]Nodejs计算机毕业设计基于微信平台的车险投保系统设计与实现Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Vue实现后台管理系统

目录 前言 登录页面 后台界面 前言 今天用Vue实现一个简易的后台&#xff0c;不借助接口和后端代码&#xff0c;仅通过前端实现&#xff0c;本案例涉及Vue路由相关知识&#xff0c;不熟悉Vue路由可以先看一下右边的文章再接着看下面的项目案例&#xff1a;Vue路由 这篇文章详…

[CISCN2019 华北赛区 Day1 Web2]

目录 前言 涉及考点 部分记录 前言 第一次看到这题时没有思路&#xff0c;通过搜索相关WP并简单了解考点所涉及的知识后&#xff0c;通过解题来扩展自己的知识面 涉及考点 python爬虫&#xff0c;支付逻辑漏洞&#xff0c;cookie篡改&#xff0c;重放攻击&#xff0c;JWT…

C++11后的STL算法

文章目录一、函数对象二、预定义的函数对象三、算法函数1.自己实现foreach算法2.自己实现的findif算法3.自己实现bsort算法一、函数对象 STL提供了很多处理容器的函数模板&#xff0c;它们的设计是相同的&#xff0c;有以下特点&#xff1a; 1&#xff09;用迭代器表示需要处理…

数据结构---用栈实现队列

用栈实现队列模拟入队模拟出队JAVA实现总结用栈来模拟一个队列&#xff0c;要求实现队列的两个基本操作&#xff1a;入队、出队。栈是先入后出&#xff0c;队列是先入先出 用两个栈来实现一个队列功能 让其中一个栈作为队列的入口&#xff0c;负责插入新元素&#xff1b;另一个…

ARM9和STM32什么关系?

已剪辑自: https://mp.weixin.qq.com/s/QHARY-D2SwFoQbFsJoCNlg 有小伙伴问&#xff1a;ARM9和STM32什么关系&#xff1f;如果时间倒退10年&#xff0c;ARM9、 s3c2410还算是比较流行的年代&#xff0c;但STM32这类“新时代”的ARM处理器也问世了。 ARM9是早期的ARM处理器&…

Java+MySQL基于ssm的打车管理系统的设计与实现

随着时代的发展,交通也变的越来越便利,但是很多时候人们出行的时候因为各种原因还是会进行打车,因为一些地区比较偏远或者处于特殊的时间段而用户又急需用车等情况导致没办法及时的打到车,这种情况下就急需一套基于互联网的打车系统出现了。 本打车管理系统采用JAVA语言来进行开…

Vivado2019+Modelsim仿真环境搭建

目录 一、安装准备 二、安装与配置 2.1 Vivado安装 2.2 modelsim安装 2.3 Vivado设置modelsim仿真环境 1&#xff09;仿真库生成设置 2&#xff09;modelsim添加仿真库&#xff08;逐个添加&#xff09; 3&#xff09;modelsim添加仿真库&#xff08;批量添加&#xff…

Spring 中 @Value 注解使用和源码分析

1、Value 注解使用 先配置本地 application.properties 如下&#xff1a; apple.nameabc代码如下&#xff1a; PropertySource("application.properties") public class Apple {Value("${apple.name}")public String name; }ComponentScan public class …

非零基础自学Golang 第9章 结构体 9.7 匿名结构体 9.8 小结 9.9 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.7 匿名结构体9.7.1 匿名结构体定义与初始化9.7.2 匿名结构体的应用9.8 小结9.9 知识拓展9.9.1 使用结构体解析XML文件第9章 结构体 9.7 匿名结构体 9.7.1 匿名结构体定义与初始化 匿名结构体&#xff0c;顾名思…

blender源代码编译运行

其实在blender官网上已经给出了编译步骤https://wiki.blender.org/wiki/Building_Blender/Windows&#xff0c;由于在源码编译的过程中还遇到了很多问题&#xff0c;特此记录一下。 文章目录前提准备代码下载1. blender源码下载2. lib下载编译前提准备 Visual Studio2019或者2…

Innodb存储引擎-执行流程分析和二阶段提交分析

文章目录执行流程分析基本流程WAL(Write-Ahead Log)write和fsync区别innodb_flush_logs_at_trx_commit & sync_binlog二阶段提交执行流程分析 基本流程 &#xff08;1&#xff09;连接,分析,优化,执行 客户端与MySQL Server建立连接&#xff0c;发送语句给MySQL Server&a…

2022.12.18 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.RNNConventional Recurrent Neural Networks5.Deep Recurrent Neural Networks5.1 Deep Transition RNN5.2 Deep Output5.3 Stacked RNN6.实验6.1 训练6.2 结果与分析7.讨论深度学习GRU公式推导1.GRU前向传播2.GRU反向传播GRU代码实现…

关于数学中“函数(function)”的含义

目录 1. 问题 2. “function”是如何翻译成“函数”的&#xff1f; 3. “function”是谁引入数学中的&#xff0c;其意义何在&#xff1f; 3.1 “function”的词源 3.2 “function”引入数学中 3.3 “function”的含义 4. 常见的函数(Common Functions) 4.1 线性函数(L…