字母识别基于matlab BP神经网络英文字母识别含Matlab源码 2226期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字母识别基于matlab BP神经网络英文字母识别含Matlab源码 2226期相关的知识,希望对你有一定的参考价值。

⛄一、BP神经网络英文字母识别

1 典型前向网络——BP神经网络
前向网络是目前研究最多的网络形式之一, 它包含输入层、隐层以及输出层, 其中隐层可以为一层或者多层 , 其结构如图1所示.

图1 BP神经网络模型
BP神经网络误差反向传播学习算法的基本思想如下:向网络提供训练例子, 包括输入单元的活性模式和期望的输出单元活性模式;确定网络的实际输出与期望输出之间允许的误差;改变网络中所有连接权值, 使网络产生的输出更接近于期望的输出, 直到满足确定的允许误差.

2 字母图像的预处理及其识别方法
由于字母图像的输入信号往往带有干扰, 因此在图像识别时分为3步进行:

  1. 先不考虑干扰, 同时在输入和测试时也只做理想信号的输入和测试.

  2. 在训练神经网络的时候用带有少量随机干扰的图像来训练, 分别测试不带干扰和带干扰的信号.

  3. 在训练神经网络的时候用带有少量随机干扰的样本来训练, 在测试数据之前先通过阈值处理得出预处理图像, 然后再进行测试.

2.1 字母图像的预处理
字母图像的预处理将输入图像转化为一种约定的形式, 这样, 经过特殊训练的神经网络才能对其进行识别.而去噪功能的加入大大减轻了神经网络的负担, 从而极大地提高了网络的正确识别率.于是图像的预处理就有了3个步骤.

首先, 将待处理的26个字母中的每一个都分别做如下处理:将其图像分割为14×10的方格 (之所以分成14×10而不是传统的7×5[6], 是为了细分后能得到像素更加连贯的笔画, 以便后面的去噪处理) , 样本如图3所示.然后做阈值处理, 将灰度大于阈值的像素格置为“1” ( 该格有输入) , 同时将灰度小于阈值的像素格置“0” (该格无输入) .在不同的采样环境下, 阈值的选取可能有一定差异, 但是经过一定数量的样本观察, 一定能找到一个适合的阈值.

图3 识别结果为“B”的一个样本

然后, 将经过阈值化处理以后的图像中连续像素面积小于4 (不包括4, 因为经过统计, 正常笔画中最小像素面积应该为4) 的像素点全部去掉.

最后, 将连续像素面积等于4但是该连续面积不为正方形的像素去掉 (正常笔画中面积最小的点应该是正方形) .

2.2 字母图像的识别
为了进一步减轻网络的负担, 本文中使用了52个网络来分别判断26个字母的大小写, 共52种形式.52个网络同时对输入进行判断, 采取竞争的形式, 这里将输出值最大的网络的输出作为最终的输出, 其他输出同时作废.

由于图像分割的时候有14×10个方格, 那么神经网络的输入就有140个, 而对应的输出则只有一个.根据经验公式, 隐含层的神经元数量选择为15.

⛄二、部分源代码

clear all
p(1:256,1)=1;
p1=ones(16,16);%初始化16.16的二值图像像素值(全白)
load E52net net;%加载训练后的BP网络
test=input(‘请输入测试的图像:’,‘s’);%提示输入测试样本图像文件名
if isempty(test),test=0;end
if test0,
disp(‘错误,请重新输入’);
test=input(‘请输入测试的图像:’,‘s’);%提示输入测试样本图像文件名
end
figure(2)
x=imread(test,‘bmp’);%读入测试样本图像
subplot 121,imshow(x);title(‘输入样本图’);hold on;
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 x 16的二值图像
[i,j]=size(bw1);%转换图像的大小
i1=round((16-i)/2);%计算转换图像的宽度与16的差距
j1=round((16-j)/2);%计算转换图像的高度与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

⛄三、运行结果




⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]高富强,邹恒,秦昌硕,须民健,杨勇.BP和RBF神经网络在字母识别中的比较[J].重庆工学院学报(自然科学版). 2009,23(09)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于字母识别基于matlab BP神经网络英文字母识别含Matlab源码 2226期的主要内容,如果未能解决你的问题,请参考以下文章

图像识别基于BP神经网络实现手写字母识别matlab源码

人脸识别基于matlab GUI BP神经网络人脸识别(含识别率)含Matlab源码 891期

人脸识别基于matlab GUI BP神经网络双人脸识别(含识别率)含Matlab源码 2383期

车牌识别基于matlab GUI BP神经网络车牌识别含Matlab源码 858期

手写数字识别基于matlab GUI BP神经网络手写数字识别含Matlab源码 1118期

车牌识别基于BP神经网络车牌识别matlab源码含GUI