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

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.mfbz.cn/a/766917.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

01:Linux的基本命令

Linux的基本命令 1、常识1.1、Linux的隐藏文件1.2、绝对路径与相对路径 2、基本命令2.1、ls2.2、cd2.3、pwd / mkdir / mv / touch / cp / rm / cat / rmdir2.4、ln2.5、man2.6、apt-get 本教程是使用的是Ubuntu14.04版本。 1、常识 1.1、Linux的隐藏文件 在Linux中&#xf…

centos7 mqtt服务mosquitto搭建记录

1、系统centos7.6,安装默认版本 yum install mosquitto 2、启动运行 systemctl start mosquitto 3、设置自启动 systemctl enable mosquitto 4、修改配置文件 vim /etc/mosquitto/mosquitto.conf 监听端口,默认为1883,需要修改删除前面…

Python番外篇之责任转移:有关于虚拟机编程语言的往事

编程之痛 如果,你像笔者一样,有过学习或者使用汇编语言与C、C等语言的经历,一定对下面所说的痛苦感同身受。 汇编语言 将以二进制表示的一条条CPU的机器指令,以人类可读的方式进行表示。虽然,人类可读了&#xff0c…

thinksboard新建table表格

html文件 <div fxFlex fxLayoutAlign"left top" style"display: block"> <!-- <mat-card appearance"raised" style"max-height: 80vh; overflow-y: auto;">--><div><button mat-raised-button (click)&…

数据结构(JAVA)—代码题

01-数据结构—判断题 02-数据结构—选择题 03 数据结构—多选填空程序填空 ​ 01-顺序表的建立及遍历 import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Scanner;public class Main {public static void main(St…

告别熬夜改稿:AI降重工具让论文降重变得轻松又有趣

已经天临五年了&#xff0c;大学生们还在为论文降重烦恼……手动降重确实是个难题&#xff0c;必须要先付点小经费去靠谱的网站查重&#xff0c;再对着红字标注去改&#xff0c;后面每一次的论文呢查重结果都像赌//博&#xff0c;谁也不知道明明是同一篇文章&#xff0c;第二次…

【C语言】union 关键字

在C语言中&#xff0c;union关键字用于定义联合体。联合体是一种特殊的数据结构&#xff0c;它允许不同的数据类型共享同一段内存。所有联合体成员共享同一个内存位置&#xff0c;因此联合体的大小取决于其最大成员的大小。 定义和使用联合体 基本定义 定义一个联合体类型时…

【MySQL】MySQL锁冲突排障纪要

【MySQL】MySQL锁冲突排障纪要 开篇词&#xff1a;干货篇&#xff1a;1.查看当前innodb status,里面包含事务,锁占用情况2.查看mysql进程状态3.查看innodb事务&#xff0c;锁&#xff0c;锁等待情况4.定位持有锁的线程信息 总结篇&#xff1a;一、锁冲突的原因二、锁冲突的表现…

【Python】列表

目录 一、列表的概念 二、列表的创建 1.变量名 [ ] ..... 2.通过Python内置 的I ist类的构造函数来创建列表 三、操作列表元素的方法 1. 修改 2. 增加元素 3. 删除 4. 其他操作 四、遍历列表 五、列表排序 六、列表切片&#xff08;list slicing&#xff09; 七、…

Python入门 2024/7/2

目录 格式化的精度控制 字符串格式化 对表达式进行格式化 小练习&#xff08;股票计算小程序&#xff09; 数据输入 布尔类型和比较运算符 if语句 小练习&#xff08;成人判断&#xff09; if-else语句 if-elif-else语句 练习&#xff1a;猜猜心里数字 嵌套语句 猜…

JavaScript中的Array(数组)对象

目录 一、Array数组对象 1、介绍 2、创建数组对象并赋值 3、访问数组元素 二、Array对象属性 1、constructor属性 2、length属性 3、prototype属性 三、Array对象的常用方法 1、isArray() 2、concat() 3、pop() 4、shift() 5、push() 6、unshift() 7、reverse(…

前端进阶:Vue.js

目录 框架&#xff1a; 助解&#xff1a; 框架&#xff1a; VUE 什么是Vue.js? Vue.js优点 Vue安装 方式一&#xff1a;直接用<script>引入 方式二&#xff1a;命令行工具 第一个Vue程序 代码 代码解释&#xff1a; 运行 Vue指令 v-text v-html v-tex…

git 中有关 old mode 100644、new mode 10075的问题解决小结

问题&#xff1a; 同一个文件被修改后&#xff0c;最后代码没有变&#xff08;代码刚开始修改了&#xff0c;最后又删除还原了&#xff09;&#xff0c;文件变了&#xff0c;导致提交了一个空文件 git diff 提示 filemode 发生改变&#xff08;old mode 100644、new mode 1007…

RabbitMQ进阶篇

文章目录 发送者的可靠性生产者重试机制实现生产者确认 MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue(可配置~)控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 消费者的可靠性消费者确认机制失败重试机制失败处理策略 业务幂等性唯一消息ID业…

layui-页面布局

1.布局容器 分为固定和完整宽度 class layui-container 是固定宽度 layui-fluid是完整宽度

傻瓜交换机多网段互通组网、设备无法配置网关案例

记录一下&#xff1a; 一、傻瓜交换机多网段互通组网 1、客户在核心交换机上创建了VLAN10&#xff0c;VLAN20。 VLAN10&#xff1a;IP192.168.10.254 VLAN20&#xff1a;IP192.168.20.254 在核心交换机下挂了一台傻瓜交换机&#xff0c;傻瓜交换机接入了一台OA服务器IP&#…

从零开始:在Windows上部署大型模型

这是一个超详细安装教程&#xff0c;介绍了在 Window 电脑上如何部署 Qwen1.5 大模型。本文还涉及到 Python 及其环境的配置。 适合对象&#xff1a;有点后端编程基础&#xff0c;没有 Python 基础。 需要环境&#xff1a;Window10/11&#xff0c;支持 Cuda 的 Nvidia 显卡。…

数据结构与算法-动态规划-最长回文子串

最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。示例 2&#xff1a; 输入&#xff1a;s "…

识图ACWP.BCWS.BCWP

将三个概念想象成三个角色&#xff08;如&#xff1a;勇士、法师、盗贼&#xff09;&#xff0c;其中&#xff1a; ACWP是勇士&#xff0c;代表实际力量&#xff08;实际成本&#xff09;&#xff1b;BCWS是法师&#xff0c;代表预期魔法&#xff08;预算成本工作量预测&#x…

vscode移动侧边栏到右边

vscode移动侧边栏到右边&#xff0c;的简单办法 直接在侧栏上单击右键&#xff0c;选择向右移动主侧栏