基于MATLAB_BP神经网络做字母识别

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

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

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

会出现如下图所示的结果:字母M为3.bmp,其输出结果为

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

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

识别代码为:

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('测试图像结果显示');        %显示测试图像
    
   

 获取代码方式:关注公众号:“电击小子程高兴的MATLAB小屋”,回复:基于MATLAB_BP神经网络做字母识别,获取代码。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 20:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 20:00:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 20:00:02       82 阅读
  4. Python语言-面向对象

    2024-03-21 20:00:02       91 阅读

热门阅读

  1. LayaBox键盘控制移动遇到的问题

    2024-03-21 20:00:02       38 阅读
  2. opencv | opencv中blobFromImage函数解析

    2024-03-21 20:00:02       44 阅读
  3. el-table分页多选,选一个其他类型相同的也选中

    2024-03-21 20:00:02       39 阅读
  4. CSS常见选择器

    2024-03-21 20:00:02       46 阅读
  5. Linux/Ubuntu/Debian的终端中&和&&的区别

    2024-03-21 20:00:02       39 阅读
  6. C++认识及域的概念

    2024-03-21 20:00:02       45 阅读
  7. python与excel第四节 批量新增、删除工作表

    2024-03-21 20:00:02       45 阅读