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

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

相关文章

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL,即Windows Subsystem for Linux,是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具,可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

Web自动化—Cypress 测试框架概述

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 Cypress 测试框架概述 1.1 Cypress 默认文件结构 在C…

漏洞原理远程命令执行

漏洞原理远程命令/代码执行 远程命令执行函数(Remote Command Execution Function)是指在一个网络环境中,通过远程执行命令来控制另一个计算机系统或设备的功能。 远程命令执行函数可以通过网络协议(如SSH、Telnet、RPC等&#x…

苹果电脑哪款文件管理器好用?推荐QSpace Pro多窗格文件管理器

还在找好用的Mac文件管理器?苹果电脑哪款文件管理器好用?推荐QSpace Pro多窗格文件管理器,灵活且实用! Mac软件下载安装:多窗格文件管理QSpace Pro 首先,我被QSpace的简洁和高效所吸引。它的界面设计非常清…

第九节HarmonyOS 常用基础组件13-TimePicker

1、描述 时间选择组件,根据指定参数创建选择器,支持选择小时以及分钟。默认以24小时的时间区间创建滑动选择器。 2、接口 TimePicker(options?: {selected?: Date}) 3、参数 selected - Date - 设置选中项的时间。默认是系统当前的时间。 4、属性…

代码随想录算法训练营第35天 | 860.柠檬水找零 + 406.根据身高重建队列 + 452.用最少数量的箭引爆气球

今日任务 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 - Easy 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的…

Backtrader 文档学习-Bracket Orders

Backtrader 文档学习-Bracket Orders 1. 概述 组合订单类型是一个非常宽泛的订单类别,只要brokder支持的订单类型都可以, 包括(Market, Limit, Close, Stop, StopLimit, StopTrail, StopTrailLimit, OCO)。 该功能用于回测,交互broker Brac…

VBA语言専攻介绍(更新)

VBA语言専攻简介 我给VBA的定义:VBA是个人小型自动化处理的有效工具。我这里专注VBA,垂直度非常高,并和多个国际VBA网站(英语系和德语系)有互动及技术互通。您来到这里,就是进入到了一个绚烂的VBA世界&…

vue-computed 计算属性

一、computed 计算属性 在Vue应用中&#xff0c;在模板中双向绑定一些数据或者表达式&#xff0c;但是表达式如果过长&#xff0c;或者逻辑更为复杂 时&#xff0c;就会变得臃肿甚至难以维护和阅读&#xff0c;例如&#xff1a; <div>写在双括号中的表达式太长了,不利于阅…

【数据结构:顺序表】

文章目录 线性表顺序表1.1 顺序表结构的定义1.2 初始化顺序表1.3 检查顺序表空间1.4 打印1.5 尾插1.6 头插1.7 尾删1.8 头删1.9 查找1.10 指定位置插入1.11 删除指定位置数据1.12 销毁顺序表 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一…

​如何在Shopee平台上进行品牌选品

在如今竞争激烈的电商市场上&#xff0c;建立一个成功的品牌对于卖家来说至关重要。Shopee作为一个知名的电商平台&#xff0c;为卖家提供了广阔的销售机会。然而&#xff0c;在Shopee平台上进行品牌选品并不是一件容易的事情。卖家需要遵循一些策略&#xff0c;以确保选品能够…

uniapp如何添加多个表单数组?

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 总结模板&#xff1a; 一、实现思路 1.在 data 中定义一个数组&#xff0c;用于存储表单项的数据 2.在模板中使用 v-for 指令渲染表单项 3.在 methods 中…

vue实现跳转传参查询

vue实现跳转传参查询&#xff1a; 应用场景&#xff1a;外部链接携参跳转目标页时,避免多次输入查询信息查询 目标需求&#xff1a;登录及非登录状态均可跳转自动查询 避坑指南&#xff1a;token失效时需要重新缓存及路由导航缓存判断 简单实现&#xff1a;缓存信息&#xff0c…

2024年,AI 掀起数据与分析市场的新风暴

2024 年伊始&#xff0c;Kyligence 联合创始人兼 CEO 韩卿在其公司内部的飞书订阅号发表了多篇 Rethink Data & Analytics 的内部信&#xff0c;分享了对数据与分析行业的一些战略思考&#xff0c;尤其是 AI 带来的各种变化和革命&#xff0c;是如何深刻地影响这个行业乃至…

jupyter出现问题ModuleNotFoundError: No module named ‘exceptiongroup‘

今天使用pyg的jupyter环境发现这个环境没法用, 所以只能把这个kernel给重删了然后再装&#xff0c;操作记录如下 查看kernel jupyter kernelspec list注意不是jupyter kernel --list 需要加关键字spec, 删除kernel jupyter kernelspec remove pyg当重新安装这个kernel时可能…

macos Android平台签名证书(.keystore)

一、申请appid的使用说明&#xff08;有appid的请忽略申请appid&#xff09; 创建应用 申请的appid在源码视图填写后会自动生成一个对应的包名 ⚠️注意&#xff1a;申请appid的时候应用名称和项目名称保持一致。 二、 Android如何使用自用证书进行打包 1.找到安装jdk的路径…

【学习笔记】vue3的watch

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 课程 P152节 笔记&#xff1a; 情况一&#xff1a;监视ref所定义的一个响应式数据 情况二&#xff1a;监视ref所定义的多个响应式数据 这两种情况比较简单&#xff0c;正常写就ok&#xff1a; 情况三&#xff1a;监视reactive所…

Qt|QPushButton控件讲解

前提 按钮分为了四种状态&#xff1a;常态、聚焦、按下、禁用 前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高&#xff0c;所以只能由自绘实现各种风格&#xff0c;但是QT框架完美的解决了这个问题&#xff0c;我们只需要了解如何调用&#xff0c;就…

MySQL-窗口函数

介绍&#xff1a; MSQL8.0新增窗口函数商口函数又被称为开窗函数&#xff0c;与Oracle窗口函数类似&#xff0c;属于MysaL的一大特点 非聚合窗口函数是相对于聚函数来说的。聚合函数是对一组数据计算后返回单个值(即分组)&#xff0c;非聚合函数一次只会处理一行数据。窗口聚…

buffer/cache导致内存不足的案例分析

目录 一、项目简介 二、问题分析 三、问题处理 什么是buffer/cache&#xff1f; buffer/cache 需要注意的一些特点 如何进行手动 buffer/cache 回收 手动 buffer/cache 回收可能出现的问题 如何让系统自动回收buffer/cache vm.min_free_kbytes 四、参考文献 一、项目…
最新文章