BP图片降噪MATLAB代码

BP(Back Propagation)神经网络是一种常用的深度学习模型,可以用于图像降噪。主要步骤包括:

构建BP神经网络模型。包括输入层、隐藏层和输出层。输入层大小与图像大小相同,输出层大小也与输入图像大小相同。隐藏层根据图像复杂度设定。

准备训练数据。使用干净图像作为输入,加入噪声后的图像作为目标输出。

训练BP网络。使用均方误差作为损失函数,通过误差反向传播算法训练网络的参数。

降噪处理。使用受噪声污染的图像作为BP网络的输入,输出为降噪后的图像。

微调网络参数。使用验证数据集进一步优化网络参数,提高降噪效果。

BP网络通过学习干净图像与受噪声图像之间的映射关系,实现图像降噪的目的。相比传统滤波方法,它可以更好地保持图像细节,取得更好的降噪效果。但需要大量干净和受噪图像进行有效训练。

MATLAB主代码如下:

%% BP神经网络图片降噪和识别主程序

%执行清空环境变量操作

clc;

clear all;

close all;

%% 读入图片

I = imread('sample.bmp');

a01=259;%宽度

b01=196;%高度

I2=imresize(I,[b01,a01]);%读入图像,并改变成130*130(如论文所述)

% figure;

% imshow(I2);

imagemy=double(I2)./256;

blurredIm=imnoise(imagemy,'gaussian',0.05);

PData001=zeros(9,((size(imagemy,1)-2)*(size(imagemy,2)-2)));%输入矩阵

gen002=1; %

Target001=zeros(1,((size(imagemy,1)-2)*(size(imagemy,2)-2)));%输出矩阵

for k001=2:1:(size(imagemy,1)-1)

    for k002=2:1:(size(imagemy,2)-1)

        PData001(1,gen002)=blurredIm(k001-1,k002-1);

        PData001(2,gen002)=blurredIm(k001-1,k002);

        PData001(3,gen002)=blurredIm(k001-1,k002+1);

        PData001(4,gen002)=blurredIm(k001,k002-1);

        PData001(5,gen002)=blurredIm(k001,k002);

        PData001(6,gen002)=blurredIm(k001,k002+1);

        PData001(7,gen002)=blurredIm(k001+1,k002-1);

        PData001(8,gen002)=blurredIm(k001+1,k002);

        PData001(9,gen002)=blurredIm(k001+1,k002+1);

        Target001(1,gen002)=imagemy(k001,k002);

        gen002=gen002+1;

    end

end;

%% 建立需要的BP神经网络------------

InputData_train=PData001;%载入需要的输入数据

OutputData_train=Target001;%载入需要的输出数据

%% 对BP神经网络相关参数进行设定

[k11,k12]=size(InputData_train);%计算输入的维数

HNumber=20;%设置隐含神经元的个数

%% ---------训练数据和预测数据结束---------

%开始新建一个BP神经网络

net=newff(InputData_train,OutputData_train,HNumber);

%对新建的BP神经网络训练

[net,per2]=train(net,InputData_train,OutputData_train);

% save net.mat net;%保存,方便以后调用

% load net;

NoiseReductionTest=sim(net,InputData_train);

%% 将BP降噪的矢量进行复原为二维图像

gen002=1;

NoiseReductionImage=zeros((size(imagemy,1)-2),(size(imagemy,2)-2));%复原图像

for k001=1:1:(size(imagemy,1)-2)

    for k002=1:1:(size(imagemy,2)-2)

        NoiseReductionImage(k001,k002)=NoiseReductionTest(1,gen002);

        gen002=gen002+1;

    end

end

figure;

imshow(imagemy);%显示结果

title('原图');

figure;

imshow(blurredIm);%显示结果

title('加噪图');

figure;

imshow(NoiseReductionImage);%显示结果

title('BP神经网络去噪结果');

% %% 保存图片

% imwrite(blurredIm,'blurredIm.bmp','bmp')

% imwrite(NoiseReductionImage,'NoiseReductionImage.bmp','bmp')

%

% %% 载入图片

% blurredIm = imread('blurredIm.bmp');

% NoiseReductionImage = imread('NoiseReductionImage.bmp');

blurredIm=double(blurredIm)./256;

NoiseReductionImage=double(NoiseReductionImage)./256;

% %% 图像的神经网络识别

% myI=imagemy;%

% predict1=DigitalIdentification(myI,1);

% disp('对最后一行数字的识别');

% predict1'

程序结果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《计算机网络简易速速上手小册》第10章:未来网络技术趋势(2024 最新版)

文章目录 10.1 边缘计算与网络设计 - 未来网络的速度与激情10.1.1 基础知识10.1.2 重点案例:使用 Python 实现边缘计算的实时视频分析准备工作Python 脚本示例 10.1.3 拓展案例1:智能交通系统Python 脚本示例 - 边缘计算设备上的交通流量分析 10.1.4 拓展…

Qt之使用Qt内置图标

一效果 二.原理 Qt内置图标封装在QStyle中,共七十多个图标,可以直接拿来用,能应付不少简单程序需求,不用自己去找图标并添加到资源文件了。 下面是内置图标的枚举定义: enum StandardPixmap {SP_TitleBarMenuButton,SP_TitleBarMinButton,SP_TitleBarMaxButton,SP_T…

如何实现冻干机和产品全生命周期的验证和监测?

为什么冻干需要工艺优化和合规性 冻干是制药和生物技术产品的关键工艺,需要精确控制关键的温度和压力参数。通过遵守 GMP 和 FDA 合规性等监管准则,您可以生产出更高质量的产品,避免不必要的浪费,并缩短产品上市时间。 要想在冻干…

ArcGIS Pro 按照字段进行融合或拆分

ArcGIS Pro 按字段融合 在ArcGIS Pro中,通过使用“融合”工具可以轻松地合并具有相同字段的图层。 步骤一:打开ArcGIS Pro 启动ArcGIS Pro应用程序,确保您已经登录并打开您的项目。 步骤二:添加图层 将包含相同字段的图层添加到…

简易计算器的制作(函数指针数组的实践)

个人主页&#xff08;找往期文章&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 前期思路&#xff08;菜单的制作等&#xff09;&#xff1a;利用C语言的分支循环少量的函数知识写一个猜数字的小游戏-CSDN博客 计算器的制作其实与游戏没有很大的区别。 #include <st…

STL常用容器—list容器(链表)

STL常用容器—list容器&#xff08;链表&#xff09; 一、list容器基本概念二、list容器基本操作与常用方法1. list构造函数2. ☆list 插入和删除3. list 获取头尾数据4. list 大小操作5. list赋值和交换6. list 反转和排序 三、排序案例 参考博文1: &#xff1c;C&#xff1e;…

GLIP:零样本学习 + 目标检测 + 视觉语言大模型

GLIP 核心思想GLIP 对比 BLIP、BLIP-2、CLIP 主要问题: 如何构建一个能够在不同任务和领域中以零样本或少样本方式无缝迁移的预训练模型&#xff1f;统一的短语定位损失语言意识的深度融合预训练数据类型的结合语义丰富数据的扩展零样本和少样本迁移学习 效果 论文&#xff1a;…

React Native

学习目标 解决以下问题: 1.什么是 React Native &#xff1f;为什么它的名字中有 “Native” 字样&#xff1f; 2.为什么 React Native 如此之酷&#xff1f; 3.我们可以分别使用 React Native 和 React 来开发什么&#xff1f; 4.为什么会出现 ReactDOM &#xff1f;它是做什…

Leetcode刷题笔记题解(C++):1863. 找出所有子集的异或总和再求和

思路如下&#xff1a;递归思路&#xff0c;依次遍历数组中的数&#xff0c;当前数要不要选择像二叉树一样去遍历如下图所示 0 0 &#xff08;选5&#xff09; 5&#xff08;不选5&#xff09; 0 1 0 1 0 6 …

vue3:23—自定义hooks

正是因为有了hooks&#xff0c;组合式才发挥出了威力 其实 hooks 和 vue2 中的 mixin 有点类似&#xff0c;但是相对 mixins 而言&#xff0c; hooks 更清楚复用功能代码的来源, 更清晰易懂。 如何定义hooks 具备可复用功能&#xff0c;才需要抽离为 hooks 独立文件函数名/文…

亿某通电子文档安全管理系统 UploadFileToCatalog SQL注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

echarts使用之折线图(二)

1.基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" cont…