基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真

news/2024/10/19 6:22:57/

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1 块定义与相似度计算

​4.2 贝叶斯框架下的加权融合

4.3 加权最小均方误差估计

5.完整程序


1.程序功能描述

       基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真,对比不同的参数对OBNLM算法的影响。

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

3.核心程序

.....................................................................
Im0     = imread('test.png');
Blks1   = 3; 
Blks2   = 5; 
Blks3   = 7; 
Wins    = 17; 
Gblk    = 2;  
h       = 5; Im0     = double(Im0);
Vmax    = 255;
Vmin    = 0;
Imax    = max(max(Im0));
Io      = 0;
Idiff   = Imax - Io;
Vd      = (Vmax - Vmin)/Idiff;
Im0     = (Im0 - Io) * Vd + Vmin;
Im0     = uint8(Im0);Im1     = func_Bayes(Im0, Blks1, Wins, Gblk, h);
Im2     = func_Bayes(Im0, Blks2, Wins, Gblk, h);
Im3     = func_Bayes(Im0, Blks3, Wins, Gblk, h);figure
subplot(221)
imshow(Im0)
title('原图')
subplot(222)
imshow(Im1)
title('OBNLM处理后图像,block=3*3')
subplot(223)
imshow(Im2)
title('OBNLM处理后图像,block=5*5')
subplot(224)
imshow(Im3)
title('OBNLM处理后图像,block=7*7')Im0     = imread('test.png');
Blks1   = 3;  
Wins1   = 13; 
Wins2   = 17; 
Wins3   = 21; 
Gblk    = 2;  
h       = 5; Im0     = double(Im0);
Vmax    = 255;
Vmin    = 0;
Imax    = max(max(Im0));
Io      = 0;
Idiff   = Imax - Io;
Vd      = (Vmax - Vmin)/Idiff;
Im0     = (Im0 - Io) * Vd + Vmin;
Im0     = uint8(Im0);Im1a    = func_Bayes(Im0, Blks1, Wins1, Gblk, h);
Im2a    = func_Bayes(Im0, Blks1, Wins2, Gblk, h);
Im3a    = func_Bayes(Im0, Blks1, Wins3, Gblk, h);figure
subplot(221)
imshow(Im0)
title('原图')
subplot(222)
imshow(Im1a)
title('OBNLM处理后图像,Win=13*13')
subplot(223)
imshow(Im2a)
title('OBNLM处理后图像,Win=17*17')
subplot(224)
imshow(Im3a)
title('OBNLM处理后图像,Win=21*21')
53

4.本算法原理

       分块贝叶斯非局部均值优化(Optimized Block-Based Non-local Means, OBNLM)是一种高级图像去噪技术,它在经典非局部均值(Non-local Means, NLM)算法的基础上引入了块的概念和贝叶斯统计理论,以提高去噪效率和保真度。OBNLM不仅考虑了图像中像素间的相似性,还通过块匹配和概率模型来优化相似块的加权融合,从而更精准地恢复图像细节。非局部均值算法的基本思想是认为图像中的某个像素不仅仅与其周围的像素有关系,还可能与图像中远离它的、具有相似结构的其他像素相关。OBNLM在此基础上进一步提出,将图像分割成多个块,并在块级别上寻找相似性,这不仅减少了计算复杂度,还能有效捕捉大范围的图像结构信息。

4.1 块定义与相似度计算

4.2 贝叶斯框架下的加权融合

4.3 加权最小均方误差估计

       实际计算中,直接求解上述最小化问题计算复杂度高,因此OBNLM采用近似方法,如快速搜索策略和分块的迭代更新机制,减少计算量。同时,为了处理边缘区域和块边界问题,常采用边界扩展或镜像填充等技术。

5.完整程序

VVV


http://www.ppmy.cn/news/1462992.html

相关文章

在 Ubuntu 22 上深入了解和搭建 Minikube

在 Ubuntu 22 上深入了解和搭建 Minikube Minikube 是一个开源工具,使开发者能够在本地计算机上运行单节点的 Kubernetes 集群,非常适合于开发、测试和学习 Kubernetes 的基础知识。在这篇文章中,我们将深入了解 Minikube 的工作原理&#x…

三前奏:获取/ 读取/ 评估数据【数据分析】

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

C语言 | Leetcode C语言题解之第112题路径总和

题目: 题解: bool hasPathSum(struct TreeNode *root, int sum) {if (root NULL) {return false;}if (root->left NULL && root->right NULL) {return sum root->val;}return hasPathSum(root->left, sum - root->val) ||ha…

vue源码2

vue之mustache库的机理其实是将模板字符串转化为tokens 然后再将 tokens 转化为 dom字符串&#xff0c;如下图 对于一般的将模板字符串转化为dom字符串&#xff0c;这样不能实现复杂的功能 let data {name:小王,age:18 } let templateStr <h1>我叫{{name}},我今年{{ag…

菜鸟的JavaSE学习之旅5

这是一个目录 面向对象类和对象类对象类的定义一个对象的内存成员变量和局部变量定义位置不同作用范围不同默认值不同内存位置不同生命周期不同 关键字this关键字 构造方法标准的类 面向对象 当需要实现一个功能的时候&#xff0c;不关心具体的步骤&#xff0c;而是找一个具有…

Docker(三) 容器管理

1 容器管理概述 Docker 的容器管理可以通过 Docker CLI 命令行工具来完成。Docker 提供了丰富的命令&#xff0c;用于管理容器的创建、启动、停止、删除、暂停、恢复等操作。 以下是一些常用的 Docker 容器命令&#xff1a; 1、docker run&#xff1a;用于创建并启动一个容器。…

基于SpringBoot设计模式之创建型设计模式·单例模式

文章目录 介绍开始定义bean对象使用bean对象测试用例 总结 介绍 单例模式是一种确保一个类只有一个实例存在&#xff0c;并提供一个全局访问点来访问这个实例的设计模式。在 Java 中实现单例模式通常涉及&#xff1a; 私有的构造函数&#xff08;防止外部通过 new 创建实例&am…

Java JUnit单元测试

Java JUnit 单元测试 测试分类 黑盒测试 不需要写代码&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值 白盒测试 需要写代码&#xff0c;关注程序具体的执行流程 Junit单元测试 JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个测试框架&#xff08;regressi…