64、基于去噪卷积神经网络的彩色图像去噪(matlab)

news2025/1/11 23:59:54

1、基于去噪卷积神经网络的彩色图像去噪的原理及流程

基于去噪卷积神经网络的彩色图像去噪是一种基于深度学习的图像处理技术,可以有效地去除图像中的噪声,提高图像的质量。下面是在Matlab中实现基于去噪卷积神经网络的彩色图像去噪的原理及流程:

  1. 数据准备:准备包含训练集和验证集的彩色图像数据,同时生成包含噪声的图像作为训练数据。

  2. 网络设计:设计一个去噪卷积神经网络模型,通常包括卷积层、池化层、激活函数以及去噪功能的损失函数。

  3. 网络训练:使用训练集数据对网络进行训练,优化网络参数以使网络能够学习去除图像中的噪声。

  4. 网络验证:使用验证集数据对训练好的网络进行验证,评估网络在未见过的数据上的去噪效果。

  5. 去噪处理:将待处理的彩色图像输入训练好的网络中,通过网络的预测结果去除图像中的噪声。

在Matlab中实现这一流程,可以使用深度学习工具箱(Deep Learning Toolbox)提供的函数和工具,例如designlayers函数来搭建网络模型、trainNetwork函数进行网络训练、以及predict函数对待处理图像进行去噪处理。同时,可以通过调整网络结构、数据准备和超参数等来优化去噪效果。

2、基于去噪卷积神经网络的彩色图像去噪说明

1)说明

使用去噪卷积神经网络从 RGB 图像中去除高斯噪声

3、输入数据

1)说明

将一个彩色图像读入工作区中,并将数据转换为数据类型 double。显示原始彩色图像。

2)代码

pristineRGB = imread("C:\Users\16023\Desktop\基于深度学习的彩色图片去噪\CT1.png");
pristineRGB = im2double(pristineRGB);
figure(1)
imshow(pristineRGB)
title("Pristine Image")

3)视图效果

7ae99d91d08f43eb9022f5e70e642752.png

4、添加噪声

1)说明

将方差为 0.01 的零均值高斯白噪声添加到图像中。imnoise 函数独立地向每个颜色通道添加噪声。

2代码

noisyRGB = imnoise(pristineRGB,"gaussian",0,0.01);
figure(2)
imshow(noisyRGB)
title("Noisy Image")

3)视图效果

5aabbd6032424079b16dda1ee72b8172.png

5、训练神经网络

1)预训练去噪卷积神经网络 DnCNN

代码

[noisyR,noisyG,noisyB] = imsplit(noisyRGB);

2)加载预训练的 DnCNN 网络

代码

net = denoisingNetwork("dncnn");

3)使用 DnCNN 网络去除每个颜色通道的噪声

代码

denoisedR = denoiseImage(noisyR,net);
denoisedG = denoiseImage(noisyG,net);
denoisedB = denoiseImage(noisyB,net);

6、显示去噪后的彩色图像

1)说明

合并去噪的颜色通道以形成去噪后的 RGB 图像

2)代码

denoisedRGB = cat(3,denoisedR,denoisedG,denoisedB);
imshow(denoisedRGB)
title("Denoised Image")

3)视图效果

8aa264c0472f4414972964b6bde6d7b8.png

7、计算信噪比PSNR

1)说明

计算含噪图像和去噪图像的峰值信噪比 (PSNR)。PSNR 越大,噪声相对信号越小,说明图像质量越高。

2)代码

noisyPSNR = psnr(noisyRGB,pristineRGB);
fprintf("\n The PSNR value of the noisy image is %0.4f.",noisyPSNR);
denoisedPSNR = psnr(denoisedRGB,pristineRGB);
fprintf("\n The PSNR value of the denoised image is %0.4f.",denoisedPSNR);

 The PSNR value of the noisy image is 20.1077.
 The PSNR value of the denoised image is 35.1933.

8、计算结构相似性 (SSIM) 指数

1)说明

计算含噪图像和去噪图像的结构相似性 (SSIM) 指数。SSIM 指数接近 1 表示与参考图像相当一致,图像质量更高。

2)代码

noisySSIM = ssim(noisyRGB,pristineRGB);
fprintf("\n The SSIM value of the noisy image is %0.4f.",noisySSIM);
denoisedSSIM = ssim(denoisedRGB,pristineRGB);
fprintf("\n The SSIM value of the denoised image is %0.4f.",denoisedSSIM);

 The SSIM value of the noisy image is 0.3767.
 The SSIM value of the denoised image is 0.9280.

9、总结

基于去噪卷积神经网络的彩色图像去噪在Matlab中的实现流程包括数据准备、网络设计、网络训练、网络验证和去噪处理。以下是这一过程的总结:

  1. 数据准备:准备包含训练集和验证集的彩色图像数据,同时生成带有噪声的图像数据用于训练。Matlab提供了丰富的图像处理工具和函数,可用于数据加载、预处理等操作。

  2. 网络设计:设计一个包含卷积层、池化层、激活函数和损失函数的去噪卷积神经网络模型。Matlab的深度学习工具箱提供了丰富的函数和工具,可用于构建和调整网络结构。

  3. 网络训练:使用训练集数据对网络进行训练,通过优化算法(如随机梯度下降)来调整网络参数以最小化损失函数。Matlab提供了trainNetwork函数来进行网络训练。

  4. 网络验证:使用验证集数据对训练好的网络进行验证,评估网络的性能和泛化能力。可以使用Matlab的交叉验证等方法进行验证。

  5. 去噪处理:将待处理的彩色图像输入训练好的网络中,通过网络的预测结果去除图像中的噪声。Matlab提供了predict函数来对新数据进行预测处理。

通过以上流程,基于去噪卷积神经网络的彩色图像去噪可实现高效地去除图像中的噪声,提高图像质量,适用于图像处理、计算机视觉等领域。Matlab的丰富函数和工具为实现这一目标提供了便利和支持。

10、源代码

代码

%% 基于去噪卷积神经网络的彩色图像去噪
%使用去噪卷积神经网络从 RGB 图像中去除高斯噪声。

%% 输入数据
%将一个彩色图像读入工作区中,并将数据转换为数据类型 double。显示原始彩色图像。
pristineRGB = imread("C:\Users\16023\Desktop\基于深度学习的彩色图片去噪\CT1.png");
pristineRGB = im2double(pristineRGB);
figure(1)
imshow(pristineRGB)
title("Pristine Image")

%% 添加噪声
%将方差为 0.01 的零均值高斯白噪声添加到图像中。imnoise 函数独立地向每个颜色通道添加噪声。
noisyRGB = imnoise(pristineRGB,"gaussian",0,0.01);
figure(2)
imshow(noisyRGB)
title("Noisy Image")

%% 训练神经网络
%预训练去噪卷积神经网络 DnCNN 对单通道图像进行运算。将含噪 RGB 图像分成三个单独的颜色通道。
[noisyR,noisyG,noisyB] = imsplit(noisyRGB);
%加载预训练的 DnCNN 网络。
net = denoisingNetwork("dncnn");
%使用 DnCNN 网络去除每个颜色通道的噪声。
denoisedR = denoiseImage(noisyR,net);
denoisedG = denoiseImage(noisyG,net);
denoisedB = denoiseImage(noisyB,net);

%% 显示去噪后的彩色图像
%合并去噪的颜色通道以形成去噪后的 RGB 图像。
denoisedRGB = cat(3,denoisedR,denoisedG,denoisedB);
imshow(denoisedRGB)
title("Denoised Image")

%% 计算信噪比PSNR
%计算含噪图像和去噪图像的峰值信噪比 (PSNR)。PSNR 越大,噪声相对信号越小,说明图像质量越高。
noisyPSNR = psnr(noisyRGB,pristineRGB);
fprintf("\n The PSNR value of the noisy image is %0.4f.",noisyPSNR);
denoisedPSNR = psnr(denoisedRGB,pristineRGB);
fprintf("\n The PSNR value of the denoised image is %0.4f.",denoisedPSNR);
%% 计算结构相似性 (SSIM) 指数
noisySSIM = ssim(noisyRGB,pristineRGB);
fprintf("\n The SSIM value of the noisy image is %0.4f.",noisySSIM);
denoisedSSIM = ssim(denoisedRGB,pristineRGB);
fprintf("\n The SSIM value of the denoised image is %0.4f.",denoisedSSIM);

工程文件

https://download.csdn.net/download/XU157303764/89497554

 

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

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

相关文章

黑马头条-数据管理平台

目录 项目准备 验证码登录 验证码登录-流程 token 的介绍 个人信息设置和 axios 请求拦截器 axios 响应拦截器和身份验证失败 优化-axios 响应结果 发布文章-富文本编辑器 项目准备 技术: • 基于 Bootstrap 搭建网站标签和样式 • 集成 wangEditor 插件…

交易时你是否会考虑多种观点呢?

在交易过程中,考虑多种观点并融入多元化分析,是提升交易决策质量和最终交易结果的关键因素之一。 单一观点或分析方法往往容易受到个人偏见、情绪或信息局限性的影响。通过引入多元化分析,我们可以从不同角度审视市场,减少因主观…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车,搭载AJ20-P6H3L发动机,累计行驶里程约为2.5万km。车主反映,使用智能钥匙无法解锁车门,使用机械钥匙打开车门,进入车内,发现一键起动功能也失效;根据组合…

ABAP编程中,函数组与ABAP OO编程的相似性

任何面向对象模型的核心都是对象,它们包含属性(数据)和方法(函数)。 在传统的ABAP开发过程中,ABAP中对象的最接近等价物是函数模块和函数组。在ABAP编程中,函数组(Function Group&am…

lnternet 发展史

一,lnternet 发展史 ARPA net (上世纪50年代二战结束) 无线 战场指挥通信协议落后 TCP/IP 包交换 WEB (70年代 ) 80年代 90年代 二,互联网的典型应用: 96年到2008年 第一代技术…

SwiftUI 中 Grid 内多个 NavigationLink 同时发生导航之诡异问题的解决

问题现象 不知小伙伴们发现了没有?在 SwiftUI 中如果有多个 NavigationLink 视图嵌入在 Grid(包括 LazyVGrid 和 LazyHGrid)容器中,点击其中任意一个 NavigationLink 都会导致所有导航一起发生。 如上图所示,点击 Grid 中任何一个 NavigationLink,所有 NavigationLink 都…

Golang | Leetcode Golang题解之第212题单词搜索II

题目: 题解: type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

【Dison夏令营 Day 07】用 Python 和 Rich 制作 Wordle克隆(下篇)

在大流行期间,Wordle 在 Twitter 上还算比较流行的一款基于网络的益智游戏,要求玩家每天在六次或更短时间内猜出一个新的五个字母的单词,每个人得到的单词都是一样的。 在本教程中,你将在终端上创建自己的 Wordle 克隆。自 2021 …

java基于ssm+vue 病人跟踪治疗信息管理系统

1病人功能模块 病人登录进入病人跟踪治疗信息管理系统可以查看首页、个人中心、病例采集管理、预约管理、医生管理、上传核酸检测报告管理、上传行动轨迹管理、病人治疗状况管理等内容。 病例采集管理,在病例采集管理页面可以查看账号、姓名、住院号、入院时间、病…

华三多台交换机堆叠配置(环形组网)

组网架构 配置步骤 SW1的配置: irf member 1 priority 32 设置master的优先级为32 interfacec range Ten-GigabitEthernet1/0/49 to Ten-GigabitEthernet1/0/50 shutdown 关闭上述接口(将其加入到堆叠口之前需要关闭,否则无法加入&a…

SpringBoot 项目整合 MyBatis 框架,附带测试示例

文章目录 一、创建 SpringBoot 项目二、添加 MyBatis 依赖三、项目结构和数据库表结构四、项目代码1、application.yml2、TestController3、TbUser4、TbUserMapper5、TestServiceImpl6、TestService7、TestApplication8、TbUserMapper.xml9、MyBatisTest 五、浏览器测试结果六、…

语音大模型引领自然交互新时代,景联文科技推出高质量语音大模型数据库

近期,OpenAI正式发布语音大模型GPT-4o,可以综合利用语音、文本和视觉信息进行推理,扮演一个个人语音交互助手。 在音频处理方面,它不仅能识别和转录多种口音和方言,改变语音的速度音调和振动,还能进行声音模…

中国桥梁空间分布数据

2020年中国桥梁空间分布数据,共包含102000余条数据。 数据属性表包括:地级市名、区县名、桥梁名称和经纬度。有shp和EXCEl两种格式数据。目前暂没有广西、广东和台湾三个省份数据。

新创建spring项目打包启动直接报错没有主清单

springboot程序打成jar包执行报错: 启用 repackage 目标: 将 true 注释以启用 repackage 目标。 这样会确保在构建过程中生成具有正确清单属性的可执行 JAR 文件。

石墨烯分散液制备方法众多 应用领域广泛

石墨烯分散液制备方法众多 应用领域广泛 石墨烯分散液指将石墨烯纳米片均匀分散在特定溶剂中制成的溶液。石墨烯分散液具有化学稳定性好、生物相容性好、热稳定性好等优势,未来有望在涂料、纤维制品、电池制造、油墨等领域获得广泛应用。 石墨烯分散液以石墨…

银河麒麟V10SP1Nginx代理转发故障socket() failed (24: Too many open files)修改操作系统ulimit值解决实战

银河麒麟V10SP1Nginx代理转发故障socket() failed (24: Too many open files)修改操作系统ulimit值解决实战 一、事故描述 Nginx转发失败,转发代理服务器宕机! 翻看Nginx日志 /var/log/nginx日志大量报错如下: socket() failed (24: Too m…

sklearn(Python机器学习库)介绍

0 引言 Sklearn (全称 Scikit-Learn)是基于Python 编程语言的免费软件机器学习库。 Scikit-learn主要是用Python编写的,它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面API 的设计非常好,所有对象的接口简单,很适合新手上路。 Scikit-learn与许多其他Python库很好地…

Zookeeper:Zookeeper集群角色

文章目录 一、Leader选举二、Zookeeper集群角色 一、Leader选举 Serverid:服务器ID;比如有三台服务器,编号越大在选择算法中的权重越大。Zxid:数据ID;服务器中存放的最大数据ID,值越大说明数据越新&#x…

携手共筑爱的桥梁:引导接纳自闭症同学

在孩子的班级中,当自闭症儿童成为我们共同的一员时,作为老师和家长,我们肩负着特别的责任——引导孩子们以开放的心态接纳、善待并关爱他们。 首先,我们要以身作则,展现接纳与尊重。无论是老师还是家长,都…

vue3自定义指令(图文教程)

序: 简单,但是没怎么用,但是小伙伴问了,所以做个教程。 自定义指令我只关心3件事 干啥用的,怎么用的,解决什么痛点怎么全局博文有查阅及参考过以下文章, vue3:自定义指令_vue3自定…