图像滤波---各项异性扩散滤波使用笔记及代码

news2024/11/13 9:32:19

图像滤波---各项异性扩散滤波使用笔记及代码

  • 一、文章内容介绍
  • 二、各项异性扩散滤波和各项同性滤波
    • 1、各项同性滤波
    • 2、各项异性扩散滤波
    • 3、各项异性和各项同性的对比
  • 三、各项异性扩散滤波的原理介绍
  • 四、各项异性扩散滤波公式
  • 五、公式中的参数使用说明
  • 六、完整MATLAB代码

一、文章内容介绍

1、文章首先介绍各项异性扩散滤波以及各项同性滤波
2、接着简要的说明各项异性滤波算法的原理和功能
3、然后对各项异性滤波算法的几个参数的作用及调试进行详解
4、最后附上各项异性滤波matlab的代码

二、各项异性扩散滤波和各项同性滤波

1、各项同性滤波

在做图像处理时,我们接触到很多滤波算法,耳熟能详的有高斯滤波、均值滤波以及中值滤波。这些滤波
算法中,对于每一个像素点,算法都一视同仁,或使用相同的系数,或使用相同的邻域规则来对像素值进行处理。这些算法不考虑该像素的梯度方向,一视同仁,处理效果在各个方向上是一样的,对于整幅图像的处理是均匀的,图像的平滑不会因梯度而有所偏向,这样的滤波叫各项同性滤波(Isotropic Filtering)。

2、各项异性扩散滤波

与各项同性扩散滤波相对的即是各项异性扩散滤波(Anisotropic Filtering),各项异性扩散滤波是一种保边滤波器,在不同的梯度方向上,像素值做不同程度的改变,区分出图像的边缘信息,在去除噪声的同时保留边缘。
各项异性扩散叫P-M扩散,论文原文:Scale-space and edge detection using anisotropic diffusion。

3、各项异性和各项同性的对比

各项同性滤波处理是均匀的,不考虑方向,适合于简单的去噪和模糊处理。
各项异性滤波处理是方向依赖的,能够更好地保留边缘和细节,适合于复杂的图像去噪,尤其是在需要保留边缘信息的情况下。

三、各项异性扩散滤波的原理介绍

各项异性扩散滤波的本质是根据图像的梯度信息来调控扩散系数。
各项异性指物体的全部或者部分物理、化学性质随方向的不同而有所变化的特性。对于整张图像,将其看做一个热量场,将每个像素看做一个热流,对于边缘像素,我们不想让其平滑掉,所以边缘的邻域像素,热流的扩散要很弱,除此之外,其他的地方,顺着梯度的方向进行扩散,扩散过的图像区域就会变得平滑,如此在保留边缘的同时,平滑了噪声区域。

四、各项异性扩散滤波公式

滤波公式如下:
I t + 1 = I t + λ ∗ ( c N x y ∗ D N ( I t ) + c S x y ∗ D S ( I t ) + c E x y ∗ D E ( I t ) + c W x y ∗ D W ( I t ) ) I_{t+1}=I_t+\lambda*(cN_{xy}*D_N(I_t)+cS_{xy}*D_S(I_t)+cE_{xy}*D_E(I_t)+cW_{xy}*D_W(I_t)) It+1=It+λ(cNxyDN(It)+cSxyDS(It)+cExyDE(It)+cWxyDW(It))
其中I表示图像,x,y表示像素位置,t代表迭代次数, λ \lambda λ表示扩散速率。 D N D_N DN D S D_S DS D E D_E DE D W D_W DW分别表示南、北、西、东,即上下左右四个方向的梯度,梯度计算如下:
D N ( I t ) = I t ( x , y − 1 ) − I t ( x , y ) D_N(I_t)=I_t(x,y-1)-I_t(x,y) DN(It)=It(x,y1)It(x,y) D S ( I t ) = I t ( x , y + 1 ) − I t ( x , y ) D_S(I_t)=I_t(x,y+1)-I_t(x,y) DS(It)=It(x,y+1)It(x,y) D E ( I t ) = I t ( x − 1 , y ) − I t ( x , y ) D_E(I_t)=I_t(x-1,y)-I_t(x,y) DE(It)=It(x1,y)It(x,y) D W ( I t ) = I t ( x + 1 , y ) − I t ( x , y ) D_W(I_t)=I_t(x+1,y)-I_t(x,y) DW(It)=It(x+1,y)It(x,y)
Nxy、Sxy、Exy、Wxy分别表示对应方向上的扩散系数,扩散系数公式如下:
c N x y = e − D N ( I t ) 2 K 2 cN_{xy}=e^{- \frac{{D_N(I_t)}^2}{K^2}} cNxy=eK2DN(It)2 c S x y = e − D S ( I t ) 2 K 2 cS_{xy}=e^{- \frac{{D_S(I_t)}^2}{K^2}} cSxy=eK2DS(It)2 c E x y = e − D E ( I t ) 2 K 2 cE_{xy}=e^{- \frac{{D_E(I_t)}^2}{K^2}} cExy=eK2DE(It)2 c W x y = e − D W ( I t ) 2 K 2 cW_{xy}=e^{- \frac{{D_W(I_t)}^2}{K^2}} cWxy=eK2DW(It)2
其中 K K K表示对应方向的扩散灵敏度。

五、公式中的参数使用说明

1、扩散速率 λ \lambda λ

(1)参数说明

从公式中显而易见, λ \lambda λ控制每次迭代中像素值的变化量。
理论上, λ \lambda λ较大每个像素的扩散速度会比较快,因为每次像素值改变的增量会比较大,会导致图像的细节丢失。

(2)效果展示

在N(迭代次数)和K固定的情况下, λ \lambda λ从0.1~0.9的去噪效果图,0.1时细节保留最完整,0.3时细节丢失严重,0.5 ~0.7细节丢失程度依次增加。
在这里插入图片描述

(3)调节指南

从效果图分析,调解时,固定另外两个变量,从0.1开始逐步增加或减少,步长可设置为0.05、0.1、0.2,观察图像的去噪效果和细节保留情况,找到最佳的平衡点,比如,上述图像的滤波,平衡点应在0.1 ~0.3之间。

2、扩散敏感度 K K K

(1)参数说明

从公式看, K K K是指数函数 e e e的一个参数,函数形式为 y = e − 1 K 2 ∗ x 2 y=e^{-{\frac{1}{K^2}*x^2}} y=eK21x2,当 1 K 2 = 0.5 \frac{1}{K^2} = 0.5 K21=0.5时,函数图像如下:
在这里插入图片描述
1 K 2 = 2 \frac{1}{K^2} = 2 K21=2时,函数图像如下:
在这里插入图片描述
从两幅图像来看, K K K越大,曲线变换越平缓,表明系数对梯度的响应越不敏感,各项异性的程度就越低,图像应该就越模糊。

(2)效果展示

固定 λ = 0.12 \lambda=0.12 λ=0.12,N=20时, K K K从10增加到40,从图上看, K K K越大,平滑的越厉害,细节丢失越严重。
在这里插入图片描述

(3)调节指南

对于 K K K,通常可以选择从10开始调节,增加或减少,每次步长5、10、15、20尝试。
如果图像中细节多噪声少,K的值应该小一些,否则就大一些。

六、完整MATLAB代码

运行环境为Windows10和Matlab2023a
run.m

clc 
clear
%读取图像
img = imread('lisaGrayNoise.bmp');
%设置系数
lambda = 0.12;
K = 40;
N = 20;
%执行各项异性扩散滤波
imgADF = ImageADF(img,lambda,K,N);
figure;
imshow(img);
title('原图');
figure;
imshow(imgADF);
title('各向异性扩散滤波结果K=40');

ImageADF.m


function imgADF = ImageADF(img,lambda,K,N)
[m, n] = size(img);
imgADF = zeros(m, n);
img = double(img);
for t = 1 : N
    for i = 2 : m-1
        for j = 2 : n-1
            NI = img(i-1, j) - img(i, j);
            SI = img(i+1, j) - img(i, j);
            EI = img(i, j-1) - img(i, j);
            WI = img(i, j+1) - img(i, j);
            cN = exp(-NI^2/K^2);
            cS = exp(-SI^2/K^2);
            cE = exp(-EI^2/K^2);
            cW = exp(-WI^2/K^2);
            imgADF(i, j) = img(i, j) + lambda*(NI*cN + SI*cS + EI*cE + WI*cW);
        end
    end
    img = imgADF;
end
imgADF = img;
imgADF = uint8(imgADF);
end

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

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

相关文章

关键错误 你的开始菜单出现了问题 我们将尝试在你下一次登录时修复它。【笔记】

使用场景设备为Windows11系统,处理提示“关键错误 你的开始菜单出现了问题 我们将尝试在你下一次登录时修复它。”方法之一 处理步骤如下: 1、打开【设置】→【Windows更新】→【高级选项】。 2、切换界面选择【恢复】。 3、选择【使用Windows更新…

redhat目录结构详解

1、/: 根目录 2、/bin: 二进制文件,即命令,即linux的用户命令放在/bin目录中。 3、/boot: 跟启动相关的文件,比如内核都放在/boot目录中。 4、/dev: 内存中的目录,关…

基于Spark框架实现XGBoost模型

基于Spark框架实现XGBoost模型 原生的Spark MLlib并不支持XGBoost算法,但XGBoost4J-Spark提供了一种解决方案,使得我们可以在Spark环境中调用XGBoost。XGBoost4J-Spark是一个项目,旨在无缝集成XGBoost和Apache Spark,通过适配XGB…

为什么是删除缓存,而不是更新缓存?

一、事情起因 一般来说数据库与缓存一致性的方案大致有以下几种: 其中Cache-Aside Pattern,也被称为旁路缓存模式应该是使用的比较广泛 Cache-Aside Pattern,也被称为旁路缓存模式,是一种常见的缓存设计模式,其中缓存…

和鲸科技聘任上海交通大学医学院张维拓老师为公司医学行业专家顾问

2024 年 9 月 13 日,上海和今信息科技有限公司(以下简称“和鲸科技”)举行了聘任仪式,聘请上海交通大学医学院临床研究中心副研究员张维拓老师为和鲸科技医学行业专家顾问,共同为医疗相关机构及相关院校提供完整的高质…

VMware软件下载,VMware虚拟机软件下载安装,VMware功能介绍

VMware是一款虚拟化软件,它具有许多独特的功能,可以帮助用户更好地管理和使用计算机资源。在本文中,我将介绍VMware软件的三个独特功能,并结合实际案例进行详细说明。 虚拟硬件 VMware最新中文版获取: hairuanku.top…

【自用软件】IDM下载器 Internet Download Manager v6.42 Build 10

下载IDM&pj安装教程 Internet Download Manager,简称 IDM,是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍,安排下…

Linux基础3-基础工具2(vim详解,gcc详解)

上篇文章:Linux基础3-基础工具1(什么是工具,yum,vim基础)-CSDN博客 本章重点: 1. vim详解 2. gcc详解 目录 一. vim详解 1.1 命令模式 1.2 插入模式 1.3 底行模式 二. gcc/g 2.1 程序的翻译过程(c/c代码执行过…

海报生成用什么软件好?小白看这里

想要让你的信息在人群中脱颖而出吗?一张精心设计的海报无疑是最佳选择。 无论是宣传活动、展示作品还是装饰空间,海报都能以视觉的力量抓住人们的眼球。 但海报制作软件哪个好呢?别急,这里有五个超实用的海报制作软件&#xff0…

「漏洞复现」紫光电子档案管理系统 selectFileRemote SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

二维码扫码模组国产麒麟系统C语言SDK二次开发

在国产系统麒麟V10系统上面上使用的 USB HID POS 的 SDK 包. 特别说明涉及到永久参数的函数接口,请勿频繁使用.如果是出厂或者偶尔设置推荐使用永久参数,如果是每次读码都进行参数修改,请使用临时参数.频繁进行永久参数操作会减小扫码设备的使用寿命. #include <stdio.h>…

零基础国产GD32单片机编程入门(二十五)USB口介绍及CDC类虚拟串口通讯详解及源码

文章目录 一.概要二.USB2.0基本介绍及虚拟串口介绍三.GD32单片机USB模块框图四.GD32单片机USB设备模式五.GD32F103C8T6 USB设备CDC类六.配置一个USB虚拟串口收发例程七.工程源代码下载八.小结 一.概要 GD32F103C8T6 USB虚拟串口是一种采用GD32F103C8T6单片机&#xff0c;通过U…

android10 系统定制:增加应用使用数据埋点,应用使用时长统计

需求意在统计应用的使用时长和开始结束时间,最终生成一个文件可以直观看出什么时候进入了哪个应用、什么时候退出,如图: 每行记录了应用的进入或退出,以逗号分割。分别记录了事件开始时间,应用包名,进入或退出(1或2),应用名称。 根据上面的数据记录可以看出:2024-08…

B2C电商接口解决方案||搭建电商项目必备电商接口

01 涉及接口 电商接口&#xff1a;天猫、京东商城、拼多多、有赞、快递鸟接口。 02 业务场景 企业在第三方电商平台开店&#xff0c;需要对电商平台上商品价格、库存进行更新&#xff0c;并将电商订单下载到ERP系统&#xff0c;ERP进行作业后&#xff0c;将物流信息上传到电…

【MATLAB源码-第265期】基于simulink的DQPSK调制解调系统仿真,未直接调用模块并且手动实现,输出各节点波形图。

操作环境&#xff1a; MATLAB 2013a / 2013b 1、算法描述 差分正交相移键控&#xff08;DQPSK&#xff09;调制解调系统是一种非常成熟的数字通信技术&#xff0c;主要用于传输数据中的相位变化&#xff0c;而非绝对相位。这一特性使得它对信号中的相位抖动和其他干扰具有更…

再次进阶 舞台王者 第八季完美童模全球赛见证官【孔翊橙】赛场+秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——孔翊橙迎来了她舞台生涯的璀璨时刻。见证官——孔翊橙&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&#xff0c;作为开…

双副本与双活:TDengine 为企业打造的高效数据管理利器

在现代数据管理中&#xff0c;企业对于可靠性、可用性和成本的平衡有着多样化的需求。为此&#xff0c;TDengine 在 3.3.0.0 版本中推出了两种不同的企业级解决方案&#xff1a;双活方案和基于仲裁者的双副本方案&#xff0c;以满足不同应用场景下的特殊需求。本文将详细探讨这…

看看智慧门诊银医通自助服务方案,如何化解医院患者跑难题

“看病三分钟&#xff0c;排队三小时”&#xff0c;这是许多患者在就医过程中的无奈吐槽。挂号队伍长如龙&#xff0c;看病流程繁琐复杂&#xff0c;缴费窗口人满为患&#xff0c;检查报告等待时间漫长…… 这些就医痛点&#xff0c;不仅让患者身心疲惫&#xff0c;也给医院的管…

Python编码系列—Python抽象工厂模式:构建复杂对象家族的蓝图

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

wifi MSDU MPDU BA

MSDU (Mac service data unit) mac 服务层 数据单元&#xff0c; 也就是包含了 mac 层头和 FCS 的 802.11 包。 MPDU&#xff08;Mac protocol data unit&#xff09;mac 协议层数据单元&#xff0c; 这个包只是原始的802.11 数据包 在新的wifi 协议中有两种聚合方式 A-MSDU…