19使用MATLAB中的BP神经网络来做字母识别

1.简述

      学习目标:  学习BP神经网络字母识别

字符识别应用非常广泛,比如车辆牌照自动识别和手写识别等。我们采用BP网络对26个英文字母进行识别,首先将26个字母中每一个字母都通过7×5的方格进行数字化处理,并用一个向量表示,其相应有数据的位置设置为1,其他位置设置为0。

打开shibie.m文件,运行会出现下列提示:输入图像

输入图形编号2.bmp,按回车键。

会出现如下图所示的结果

字母M为3.bmp,其输出结果为

通过仿真结果可以看出,基于BP神经网络算法的字母识别方法,容错性和识别还可以接受,在有噪声的情况下训练,其识别出错率较高,因此应当客观看待此方法。

程序中需要识别的图片:

 

 

2.代码

clear all             %清空环境变量
p(1:256,1)=1;         %P为256行1列,全部赋值为1
p1=ones(16,16);       %初始化16*16的二值图像,像素值全部为1(全白),0是全黑
load E11net net;      %加载训练后的BP网络
test=input('输入图像:','s');       %提示输入图像文件名,需要添加后缀
if isempty(test),test=0;
end
if test==0,
    disp('输入错误,请重新输入图像名称和完整后缀');
    test=input('请输入图像:','s');         %提示输入图像文件名
end
figure(2)
x=imread(test,'bmp');         %读入图像
subplot 121,imshow(x);
title('输入图像');
hold on;
bw=im2bw(x,0.5);              %将读入的训练样本图像x转换为二值图像bw
[i,j]=find(bw==0);            %寻找二值图像bw中像素值为0(黑色)的行号i和列号j
imin=min(i);                  %寻找二值图像bw中像素值为0(黑色)的最小行号imin
imax=max(i);                  %寻找二值图像bw中像素值为0(黑色)的最大行号imax
jmin=min(j);                  %寻找二值图像bw中像素值为0的最小列号jmin
jmax=max(j);                  %寻找二值图像bw中像素值为0的最大列号jmax
bw1=bw(imin:imax,jmin:jmax);    %截取图像像素值为0的最大矩形区域bw1
rate=16/max(size(bw1));         %计算转换为16*16的二值图像的缩放比例rate
bw1=imresize(bw1,rate);         %将截取图像转换为16 x 16的二值图像bw1
[i,j]=size(bw1);                %转换图像bw1的大小
i1=round((16-i)/2);             %计算转换图像bw1的宽度与16的差距
j1=round((16-j)/2);             %计算转换图像bw1的高度与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,1)=p1(1:16,m+1);      %形成测试样本输入向量
 end
    
 [a,Pf,Af]=sim(net,p);                           %BP神经网络网络仿真
    subplot 122,imshow(p1);title('测试图像结果显示');        %显示测试图像
    
   

3.运行结果

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

素馨堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值