BP网络识别26个英文字母matlab

news2024/11/6 7:23:44

wx供重浩:创享日记
对话框发送:字母识别
获取完整源码源工程文件

在这里插入图片描述


一、 设计思想

字符识别在现代日常生活的应用越来越广泛,比如车辆牌照自动识别系统,手写识别系统,办公自动化等等。本文采用BP网络对26个英文字母进行识别。首先将待识别的26个字母中的每一个字母都通过长和宽分别为7×5的方格进行数字化处理,并用一个向量表示。其相应有数据的位置置为1,其他位置置为0。

二、 程序的调用

将M文件及相应的字母图标复制到桌面上。
(一)、打开shibie.m文件,1运行会出现下列提示:请直接按回车键正在生成输入向量和目标向量,请稍等…。2直接按回车键,会出现下列提示:输入向量和目标向量生成结束!请按回车键进行神经网络的训练。3再按回车键,会进行训练,训练完毕后会出现下图所示的结果(图1)

在这里插入图片描述

(二)、打开shibie2.m文件,1运行会出现下列提示:请输入测试的图像2输入图形编号如O的为143,回车。会出现如下图所示的结果

在这里插入图片描述
同理,字母M为123,其输出结果为

在这里插入图片描述
三、 总结

通过仿真结果可看出,基于BP算法的字母识别其容错性和识别率相对较高,在有噪声的情况下训练其识别出错率也相应增加,许进一步改进。

部分源码:(其余完整详见下载)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%识别26个大写字母%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
disp('回车键 ...')
chos=input('请直接按回车键正在生成输入向量和目标向量,请稍等… ');
if isempty(chos), chos=0; end 
if chos==0,
for kk=0:256 
    p1=ones(16,16);% 初始化16×16的二值图像像素值(全白)   
    m =strcat('nums\',int2str(kk),'.bmp');% 形成训练样本图像的文件名(089.bmp)    
    x=imread(m,'bmp');% 读入训练样本图像文件   
    bw=im2bw(x,0.5);% 将读入的训练样本图像转换为二值图像  
    [i,j]= find(bw==0);% 寻找二值图像中像素值为0()的行号和列号  
    imin=min(i);% 寻找二值图像中像素值为0()的最小行号 
    imax=max(i);% 寻找二值图像中像素值为0()的最大行号   
    jmin=min(j);% 寻找二值图像中像素值为0()的最小列号   
    jmax=max(j);% 寻找二值图像中像素值为0()的最大列号   
    bw1=bw(imin:imax,jmin:jmax);% 截取图像像素值为0()的最大矩形区域 
    rate=16/max(size(bw1));% 计算截取图像转换为16×16的二值图像的缩放比例
    bw1=imresize(bw1,rate);% 将截取图像转换为16×16的二值图像(由于缩放比例  
                               % 大多数情况下不为16的倍数,所以可能存在转换误差) 
   [i,j]=size(bw1);% 转换图像的大小   
   i1=round((16-i)/2);% 计算转换图像与标准16×16的图像的左边界差    
   j1=round((16-j)/2);% 计算转换图像与标准16×16的图像的上边界差    
   p1(i1+1:i1+i,j1+1:j1+j)=bw1;% 将截取图像转换为标准的16×16的图像 
   p1= -1.*p1+ones(16,16);% 反色处理    % 以图像数据形成神经网络输入向量 
   for m=0:15       
   p(m*16+1:(m +1)*16,kk+1)=p1(1:16,m+1);   
end    % 形成神经网络目标向量  
switch kk    
case{0,1,2,3,4,5,6,7,8,9}  % 字母A       
    t(kk+1)=0;   
case{10,11,12,13,14,15,16,17,18,19}  % 字母B    
    t(kk+1)=1;    
case{20,21,22,23,24,25,26,27,28,29}  % 字母C      
    t(kk+1)=2;    
case{30,31,32,33,34,35,36,37,38,39}  % 字母D      
    t(kk+1)=3;    
case{40,41,42,43,44,45,46,47,48,49}  %字母E           
    t(kk+1)=4;       
case{50,51,52,53,54,55,56,57,58,59}  %字母F        
    t(kk+1)=5;    
case{60,61,62,63,64,65,66,67,68,69}  % 字母G       
    t(kk+1)=6;     
case{70,71,72,73,74,75,76,77,78,79}  % 字母H        
    t(kk+1)=7;            
case{80,81,82,83,84,85,86,87,88,89}  % 字母I     
    t(kk+1)=8;       
case{90,91,92,93,94,95,96,97,98,99}  % 字母J      
    t(kk+1)=9; 
case{100,101,102,103,104,105,106,107,108,109}  % 字母K     
    t(kk+1)=10;
case{110,111,112,113,114,115,116,117,118,119}  % 字母L     
    t(kk+1)=11; 
case{120,121,122,123,124,125,126,127,128,129}  % 字母M    
    t(kk+1)=12; 
case{130,131,132,133,134,135,136,137,138,139}  % 字母N     
    t(kk+1)=13;
case{140,141,142,143,144,145,146,147,148,149}  % 字母O      
    t(kk+1)=14;
case{150,151,152,153,154,155,156,157,158,159}  % 字母P      
    t(kk+1)=15;
case{160,161,162,163,164,165,166,167,168,169}  % 字母Q      
    t(kk+1)=16; 
case{170,171,172,173,174,175,176,177,178,179}  % 字母R     
    t(kk+1)=17; 
case{180,181,182,183,184,185,186,187,188,189}  % 字母S     
    t(kk+1)=18; 
case{190,191,192,193,194,195,196,197,198,199}  %字母T     
    t(kk+1)=19; 
case{200,201,202,203,204,205,206,207,208,209}  % 字母U     
    t(kk+1)=20;
case{210,211,212,213,214,215,216,217,218,219}  % 字母V      
    t(kk+1)=21; 
case{220,221,222,223,224,225,226,227,228,229}  % 字母W      
    t(kk+1)=22;
case{230,231,232,233,234,235,236,237,238,239}  % 字母X    
    t(kk+1)=23; 
case{240,241,242,243,244,245,246,247,248,249}  % 字母Y     
    t(kk+1)=24; 
case{250,251,252,253,254,255,256,257,258,259}  % 字母Z      
    t(kk+1)=25;    
end
end
end
save E52PT p t;    % 存储形成的训练样本集(输入向量和目标向量)
disp('输入向量和目标向量生成结束!')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%神经网络的训练%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
disp('     ');
chos=input('请按回车键进行神经网络的训练 ');
if isempty(chos), chos=0; end 
if chos==0,
load E52PT p t;    % 加载训练样本集(输入向量和目标向量)
% 创建BP网
pr(1:256,1)=0;
pr(1:256,2)=1;
net= newff(pr,[26 1],{'logsig','purelin'},'traingdx','learngdm');
% 设置训练参数和训练BP网络
net.trainParam.epochs = 5000;
net.trainParam.goal= 0.002;
net.trainParam.show = 100;%步长为100
net.trainParam.lr=0.05;
net= train(net,p,t);
end
% 存储训练后的BP网络
save E52net net;

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

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

相关文章

优化小地图(非RawImage方法,节省性能)

优化小地图(非RawImage方法,节省性能) 一、小地图设计二、功能实现1.截取俯视图2.创建Cube包裹住场地,并且创建一个子物体坐标为(0,0,0)**3.创建UI显示小地图坐标转换代码如下: 一、小地图设计 …

我是如何转行 AI 并且实现薪资翻倍的

大家好啊,我是董董灿。 熟悉我的小伙伴都知道,我之前在北京某211大学,本硕读了7年的机械专业,后来硕士毕业后,果断转行去做了嵌入式开发,随后瞅准了 AI 爆发的时机果断转行去做了AI。 这段经历已经过去了…

【python与机器学习3】,感知机和与非门

1 电子和程序里的与门,非门,或门,与非门 ,或非门,异或门 1.1 基础电路 与门(AND gate)、或门(OR gate)和非门(NOT gate)是数字逻辑电路中的三种基…

本地搭建【文档助手】大模型版(LangChain+llama+Streamlit)

概述 本文的文档助手就是:我们上传一个文档,然后在对话框中输入问题,大模型会把问题的答案返回。 安装步骤 先下载代码到本地 LangChain调用llama模型的示例代码:https://github.com/afaqueumer/DocQA(代码不是本人…

自动驾驶规划算法

本文将讲解BFS,Dijstra,A*,动态规划的算法原理,不正之处望读者指正,希望有兴趣的读者能在评论区提出一些这些算法的面试考点,共同学习,一起进步 0 图论基础 图有三种:无向图、有向…

SRE 与 DevOps:你知道它们之间区别吗?

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享 DevOps专注于消除阻碍开发和运维之间协作的隔阂,而SRE致力于设计和实施可扩展、可靠的系统,确保最大可靠性。 这篇文章将探讨DevOps和SRE之间的差异&#xff0c…

Podman配置mongodb

文章目录 查询镜像拉取镜像查看镜像运行容器创建root用户 查询镜像 podman search mongo拉取镜像 podman pull docker.io/library/mongo查看镜像 podman images运行容器 podman run -d -p 27017:27017 --namemongodb-test docker.io/library/mongo创建root用户 podman exe…

SSH秘钥登录服务器

一、查看本机 ssh 公钥,生成公钥 1.通过命令窗口 a. 打开你的 git bash 窗口 b. 进入 .ssh 目录:cd ~/.ssh c. 找到 id_rsa.pub 文件:ls d. 查看公钥:cat id_rsa.pub 或者 vim id_rsa.pub git–查看本机 ssh 公钥&#xff0c…

小白--将笔记本上的代码或者项目上传到github上去教程(使用git命令)

文章目录 一、操作教程二、常见问题1. 问题12. 问题2 三、注意 一、操作教程 https://blog.csdn.net/Elon15/article/details/125705706?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170340591716800215092652%2522%252C%2522scm%2522%253A%252220140713.130102…

第六部分 集合论

目录 主要内容 集合的基本概念 集合的基本运算 集合恒等式 初级运算 文氏图 集合的广义并与广义交 广义运算的性质 例1 A{{a},{a,b}} 集合算律 例2 判断下列命题是否为真 例3 设 例4 判断以下命题的真假,并说明理由. 解题思路 主要内容 集合的基本概念 属于、包含…

基于JAVA的超市账单管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

【Postman】以命令行形式执行Postman脚本(使用newman)

一、背景 ​ Postman的操作离不开客户端。但是在一些情况下可能无法使用客户端去进行脚本执行。比如在服务端进行接口测试。由此我们引入了Newman。Newman基于Node.js开发,它使您可以直接从命令行轻松运行和测试Postman测试集。它在构建时考虑了可扩展性&#xff0c…

身为Java“搬砖”程序员,你掌握了多线程吗?

摘要:互联网的每一个角落,无论是大型电商平台的秒杀活动,社交平台的实时消息推送,还是在线视频平台的流量洪峰,背后都离不开多线程技术的支持。在数字化转型的过程中,高并发、高性能是衡量系统性能的核心指…

STM32实现流水灯

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_…

stm32 pwm输出

PWM 技术原理 CUBEMX PWM配置 pwm初始化 MX_TIM2_Init(); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);设置pwm //pwmVal 0 ~ 1000 __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_4, pwmVal);

2024苹果手机iOS管理软软件iMazing2.17永久免费版下载教程

iMazing2024是一款专业的苹果IOS设备管理器,强悍的性能远超苹果的iTunes,iMazing 能让广大果粉能已自己的方式管理苹果设备,无需iTunes即可畅快传输或者保存苹果设备中的音乐、消息、文件以及其他数据。 iMazing2Mac-最新绿色安装包下载如下&…

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin + All Addons

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin All Addons 简介: Paid Memberships Pro是一款功能强大的会员订阅和内容限制管理插件,适用于WordPress网站。它提供了丰富的特性和工具,帮助网站所有者轻松地创建和管理付费…

AndroidStudio无法新建aidl文件解决办法

我用的 AS 版本是 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 右键新建 aidl 文件, 提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file 解决办法 修改 app 的 build.…

【微服务】springboot整合kafka-stream使用详解

目录 一、前言 二、kafka stream概述 2.1 什么是kafka stream 2.2 为什么需要kafka stream 2.2.1 对接成本低 2.2.2 节省资源 2.2.3 使用简单 2.3 kafka stream特点 2.4 kafka stream中的一些概念 2.5 Kafka Stream应用场景 三、环境准备 3.1 搭建zk 3.1.1 自定义d…

基于Java SSM框架实现多人试卷批改考试命题系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现多人试卷批改考试命题系统演示 摘要 多人命题系统是高校为教师、学生试卷的重要组成部分,是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。我所在学院多采用半手工管理学生试卷…