【图像识别】基于BP神经网络实现手写体大写字母识别matlab代码

1 简介

手写体字符识别是人机交互领域的一个重要内容,本文基于 BP 神经网络实现了任意数量字符模版的多字符手写体字符识别.分为以下几步,第一,首先对目标图像进行识别前预处理.包括灰度图像二值化,图像孤立像素滤波,图像膨胀,腐蚀,按字母最小行分割,按字母最小列分割,图像紧缩,归一化等;第二,用处理好的多个样本进行BP神经网络训练.包括BP网络参数的选择,目标结果构建,输入到结果的映射即用样本库进行神经网络学习机的训练;第三,待测字母的识别.包括对图像预处理,字符提取,归一化和送入已训练好的BP网络进行识别.该系统最终实现了95%以上的手写字符识别正确率,有一定的借鉴意义.

基于 Matlab 的手写字符识别系统由以下模块构成,包括图像预处理、字符有效区域检测、图像分割、样本库训练和测试字符识别,如图 1。其中,原始图像:由数码相机或其它扫描装置拍摄到的图像;图像预处理:对动态采集到的图像进行滤波、边界增强等处理以克服图像干扰;字符分割、归一化:利用梯度检测的字符定位、分割方法得到单个的字符,并将所有字符归一化为固定大小;样本数据库:利用前期采集的每个字母 80 个的手写字符为第 5 步的字符识别建立字符模板数据库;BP 学习机:根据样本数量和训练分类结果构建BP 学习机;字符识别:基于人工神经网络的 OCR 算法,通过特征对比或训练识别出相关的字符,得到最后的英文字符识别结果。

【图像识别】基于BP神经网络实现手写体大写字母识别matlab代码_第1张图片

2 部分代码

%recognize
%生成向量形式
for m=0:15
   q(m*16+1:(m+1)*16,1)=p1(1:16,m+1);
end
%识别
[a,Pf,Af]=sim(net,q);
a=round(a);
switch a
   case 0,ch='A';
   case 1,ch='B';
   case 2,ch='C';
   case 3,ch='D';
   case 4,ch='E';
   case 5,ch='F';
   case 6,ch='G';
   case 7,ch='H';
   case 8,ch='I';
   case 9,ch='J';
   case 10,ch='K';
   case 11,ch='L';
   case 12,ch='M';
   case 13,ch='N';
   case 14,ch='O';
   case 15,ch='P';
   case 16,ch='Q';
   case 17,ch='R';
   case 18,ch='S';
   case 19,ch='T';
   case 20,ch='U';
   case 21,ch='V';
   case 22,ch='W';
   case 23,ch='X';
   case 24,ch='Y';
   case 25,ch='Z';
end
%显示识别结果
set(h5,'String',ch,...
   'FontSize',30);

3 仿真结果

【图像识别】基于BP神经网络实现手写体大写字母识别matlab代码_第2张图片

【图像识别】基于BP神经网络实现手写体大写字母识别matlab代码_第3张图片

【图像识别】基于BP神经网络实现手写体大写字母识别matlab代码_第4张图片

4 参考文献

[1]李丹. "基于BP神经网络的多样本手写体字符识别." 软件 (2016).

你可能感兴趣的:(图像处理,matlab,神经网络,开发语言)