【图像去噪】PM模型图像降噪【含Matlab源码 2107期】

news2024/12/25 4:08:46

⛄一、PM模型图像降噪简介

为了提高去除噪声和保留细节信息的算法的性能,Peroha等提出以热学中扩散方程式为基础的扩散算法即为PM模型。该模型主要是在经典各向异性扩散方dgi,j,t/dt=div(d∇g)上提出将其中的扩散系数d用函数控制的扩散系数替代。PM模型为
在这里插入图片描述
其中,f(|∇gi,j,t|)是一个扩散系数函数,∇是梯度,div是散度,g0(i,j)是一个最开始的像素点,(i,j)是图像中像素点位置,t为时间间隔。在传统的PM模型中,Perona和MAlik提出了两个满足以下条件的函数f(|∇gi,j,t|):
在这里插入图片描述
扩散系数函数f(|∇gi,j,t|)应具有以下特点:

(1)函数f(|∇gi,j,t|)是以|∇gi,j,t|为变量,随着变量上升而下降;

(2)当|∇gi,j,t|→0时,f(|∇gi,j,t|)=1;

(3)当|∇gi,j,t|→1时,f(|∇gi,j,t|)=0.

常量k为梯度门限,判断k与|∇gi,j,t|大小关系,主要用于判断是否对图像中某个范围进行扩散。将式(1)离散化,得
在这里插入图片描述
式(4)中di+1,j,t,di-1,j,t,di,j+1,t,di,j-1,t分别是北,南,西,东上的扩散系数值,且∇Ngi,j,∇Sgi,j,∇Wgi,j,∇Egi,j分别表示北,南,西,东方向上的梯度值,λ是衡量扩散速度的常量。则处理后新的像素值fi,j为
在这里插入图片描述
综上分析可得PM扩散模型如图1所示。
在这里插入图片描述
图1 传统PM扩散模型
传统PM模型仍有不足之处,对于有些边缘化的噪声点去噪效果不甚理想;在该模型中,扩散函数不利于图像的平滑,另外只选择了4个方向的扩散,易造成图像内容信息损失,出现模糊现象。

⛄二、部分源代码

clear all;
close all;
%Io=imread(‘Image/Article3.bmp’);% 读入一幅图像
%Io=imread(‘Image/GZC01.bmp’);
Io=imread(‘pepper.bmp’);
%Io=imread(‘Image/cameraman.bmp’);

I=double(rgb2gray(Io));
In=I;
% I=double(Io);
% stan_var=20;
% var=stan_var^(2);
% IN1=randn(size(I))*stan_var;
% In=I+IN1;

% save(‘In’);
% % load(‘In’);
figure(2),imshow(In,[],‘Border’,‘tight’);
figure(3),imshow(I,[],‘Border’,‘tight’);
lamda=0.2;
iter=350;
K=2.5;

[ImMAE,PSNRAll,Is]=diffusion_PM(I,In,iter,lamda,K);

figure(4),imshow(Is,[],‘Border’,‘tight’);
figure(5),imshow(Is-In,[],‘Border’,‘tight’);
[Ny,Nx]=size(Is);
x=1:Nx;
level=fix(Ny/2);
y=Is(level,:);
y1=I(level,:);
y2=In(level,:);

figure(14);
subplot(2,1,1); plot(x,y,x,y1);
title(‘SmoothImage And OriginalImage’)
subplot(2,1,2); plot(x,y,x,y1,x,y2);
title(‘NoiseImage And OriginalImage’)

figure(6);
x=1:iter;
plot(x,PSNRAll);title(‘PSNR’)

figure(7);
x=1:iter;
plot(x,ImMAE);title(‘MAE’)

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]晏满钰,文成玉.改进的PM模型的医学超声图像去噪算法[J].成都信息工程大学学报. 2019,34(06)

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

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

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

相关文章

ISO 15765-2协议分享(三)—寻址方式详解

文章目录 前言一、Normal addressing二、Extended addressing三、Mixed addressing总结前言 2021年下半年的第一天,愿大家都安好。 对于自己的未来,做一个规划,不要让自己每天沉溺于肤浅信息带来的感官愉悦。 喜欢《沉思录》中一句话: 要学会深思,洞察事物之间的相互转…

轻量级聊天应用VoceChat

本文是应网友 猪猪侠的要求折腾的; 什么是 VoceChat ? VoceChat 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上,部署简单,很少需要维护。前端可以内嵌到自己的网站下,数据完全由用户…

探花交友_第8章_搜附近(新版)

探花交友_第8章_搜附近(新版) 文章目录探花交友_第8章_搜附近(新版)1.1 需求分析需求说明数据库表1.2 探花推荐列表查询接口文档tanhua-modeltanhua-app-server**TanHuaController**TanHuaService配置文件tanhua-dubbo-interfacetanhua-dubbo-mongo1.3 左滑右滑接口文档tanhua-…

2022-前端实现电子签名(web、移动端)通用组件

前端实现电子签名(web、移动端)通用组件 前言 在现在的时代发展中,从以前的手写签名,逐渐衍生出了电子签名。电子签名和纸质手写签名一样具有法律效应。电子签名目前主要还是在需要个人确认的产品环节和司法类相关的产品上较多。…

可视化大数据分析系统

可视化大数据分析系统有很多,如果系统级都是收费的,如果大家想要了解可视化大数据分析系统,私信我就行。下面聊下5个常用的大数据可视化分析工具。 1、FineReport FineReport是一款纯Java编写的、集数据展示(报表)和数据录入(表单)功能于一…

Linux环境变量配置

在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置MySQL环境变量路径:/home/uusama/mysql/bi…

Servlet转发与重定向

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

【设计模式】代理模式——静态动态代理

【设计模式】代理模式——静态&动态代理 文章目录【设计模式】代理模式——静态&动态代理一:代理模式概述二:代理模式结构三:静态代理四:JDK动态代理1:简介2:步骤五:CGLIB动态代理六&am…

Python -- 元组、字典、集合

目录 1.元组的使用 1.1 访问元组 1.2 修改元组 1.3 count,index 1.4 定义只有一个数据的元组 2.字典的基本使用 2.1 字典的增删改查 2.2 字典的遍历 3.集合的使用 4.通用方法 1.元组的使用 Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使…

测试人必备的Linux常用命令大全...【全网最全面整理】

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因&#xff0c…

基于BP神经网络的数字识别系统仿真,带GUI界面

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 OCR(Optical Character Recognition)即光学字符识别技术,是通过扫描仪把印刷体或手写体文稿扫描成图像,然后识别成相应的计算机可直接处理的字符。…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析

推荐阅读: [内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ Python自动化测试全栈性能测试全栈,挑战年薪40W 前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与…

水库信息化监测系统有哪些?水库信息化监测解决方案

一、背景分析 全国现有水库9.8万余座,小型水库占95.3%。小型水库数量最多, 主要分布山东、安徽、江西、广东、湖南、湖北、四川和云南,每个省小型水库数量超过5000座 全国中小型水库9万余座,其中4万余座存在病险,195…

图解设计模式:动动手玩转适配器模式

前言 📣 📣 📣 📢📢📢 ☀️☀️点开就是缘分认识一下,我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 📒 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️,…

C++进阶 继承

作者:小萌新 专栏:C进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍C中继承的概念 继承的概念及定义 继承的概念 继承是一种面向对象编程的概念,它指的是一个类(称为子类…

Win10关闭安全中心的病毒和威胁实时保护

一、遇到问题 想必大家在下载软件时,经常会遇到这样的问题:当我们下载好一个软件安装包时,当双击进行安装时,电脑却报出“无法成功完成操作,因为文件包含病毒或潜在的垃圾软件”。这是Win10的安全中心误以为此为问题软…

ShardingJDBC读写分离

ShardingJDBC是什么 看一看ChatGPT对他的解释: ShardingJDBC是一个数据库连接池,它为数据库的分片和读/写拆分提供支持。它允许您跨多个物理数据库和服务器分发数据,并根据设置的配置将读写操作路由到适当的数据库。 以下是它的工作原理&…

基于java+springmvc+mybatis+vue+mysql的校园拼车系统

项目介绍 本系统采用java语言开发,后端采用ssm框架,前端采用vue技术,数据库采用mysql进行数据存储。 管理员后台页面: 功能:首页、个人中心、学生管理、司机管理、订单信息管理、接单信息管理、留言信息管理 学生后…

小米(Android)刷NetHunter安装指南,无需ssh执行kali命令

一、安装NetHunter 前提:确保手机已经root,已装上magisk。如果没有root,可用尝试magisk root 后执行此文 1、下载Nethunter:Get Kali | Kali Linux 然后push 到sdcard 里, 2、打开magisk,选择刚刚下好的…

【问答篇】Java 基础篇面试题(一)

每天进步一点~ 01、问&#xff1a;空字符串的作用 package com.neuedu.nineteen;public class Test {public static void main(String[] args) {String s"";for (char i a; i < d; i) {ssi;//输出abcsis;//输出cba}System.out.println(s);} } 答&#xff1a;如…