BP神经网络识别_第1页
BP神经网络识别_第2页
BP神经网络识别_第3页
BP神经网络识别_第4页
BP神经网络识别_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实用标准文案 2Abstract . 3 引言:一 . 3 字符图像获取:二 . 4 字符预处理三.4 3.2 字符区域 字符区域分割:. 43.2 单个字体分割:. 43.3 单个字体裁剪. 53.4 模板字符识别. 5四 字符模板归一化. 54.2 神经网络字符识别. 5五BP.6 5.1 训练样本制作6 神经网络5.2设计BP . 75.3 BP训练 . 7六 识别结果发送下位机 . 75.1 MATLAB下的串口工具: . 75.2 下位机处理 . 95.2. 3 串口通信图: . 9 总结:七 摘要摄像头采集字符图像,读取一帧保存为图像,然后对读取保存的字符图像,灰度环境下利用US

2、B在MATLAB化,二值化,在此基础上做倾斜矫正,对矫正的图像进行滤波平滑处理,然后对字符区域进行提取分割出单个字符,识别方法一是采用模板匹配的方法逐个对字符与预先制作好的字符模板比较,如果结果小于某一阈值则结果对待识别字符进行识别。最然后将识别结果神经网络训练,通过训练好的net就是模板上的字符;二是采用BP 单片机上用液晶显示出来。MATLAB通过下的串口工具输出51 神经网络,液晶显示 倾斜矫正,字符分割,模板匹配,BP关键字: AbstractIn the MATLAB environmentusing USB camera capture the character images,

3、saved as an image reading, thenread the saved character images, grayscale, binary, on this basis do tilt correction,the correction image smoothing filter, and then extract the character regionsegmentation of a single character, and then one by one using a templatematching method of character with go

4、od character template is a pre-production,if the result is less than a certain threshold, the result is a template of thecharacter. Second, the BP neural network trained by the trained net to identifythe character towards recognition The results will identify the most and thenthe serial port through

5、 the MATLAB tool output 51 under microcontroller withLCD display. Tilt correction, character segmentation,template matching, liquid crystal display Keyword: 引言:一 然后对图像文件进行分析处理,(OCR,Optical Character Recognition)是指对文本资料进行扫描,光学字符识别,image character recognition近几年又出现了图像字符识别30获取文字及版面信息的过程。已有多年历史,( 精彩文档 实

6、用标准文案 ),实际上这三种自动识别技术的基本原理大,)和智能字符识别(intelligent character recognitionICRICR 致相同。来训SVM关于字符识别的方法有很多种,最简单的就是模板匹配,还有根据采集到的字符用BP神经网络或者 环境下编程实现。练得到结果的方式。本文主要针对模板匹配的方式,在MATLAB 字符图像获取:二获取视频帧,并保存图像在工程文件夹内。摄像头采用普通的下利用image acquisition toolbox在MATLAB下的对视频进行预image acquisition toolboxUSB摄像头,由于这种摄像头拍摄的照片延时比较大,所以先

7、用的视频获取窗口,实验选择640*480采集的图像效果越好则识别率越高。览,调整出最佳的效果来, 根据测试, jpg的存储格式。空间,获取一帧后保存为颜色空间选取为RGB 精彩文档 实用标准文案 三字符预处理 3.1字符矫正 由于摄像头拍摄的图像存在一定存在的倾斜度,在分割字符区域时,应先对字符进行矫正。过程如下: 将通过摄像头获取的保存帧图像灰度化,然后对其进行边缘提取,再在1到180度角内对图像进行旋转,记录下边缘提取后的图像在x轴方向上的投影,当x轴方向上的投影最小的时候即表示图像中字符平行于y轴,已经完成矫正,此时记录下旋转的倾斜角。然后利用imrotate函数实现对字符图像的矫正。

8、3.2 字符区域分割: 在第三步完成对字符图像的倾斜矫正后,将图像分别做x轴和y轴方向上的投影既可以知道字符区域在x轴上的像素分布范围和y轴上的像素分布范围,然后对根据这个范围对图像做分割,在MATLAB中表示为: goal=I(ix1:iy1,jx1:jy1); 其中goal为分割后的图像,I为分割前的图像,ix1和ix2分别为x轴上投影的像素范围的起始坐标值和终止坐标值,iy1和iy2分别为y轴上投影的像素范围的起始坐标值和终止坐标值。 3.3 单个字体分割: 精彩文档 实用标准文案 轴上的分布区间,然后利用这个在分割得到的字符区域图像上,只需要做y轴上的投影就可以知道每个字符在y 分布区

9、间就可以分割出单个字符。 3.4 单个字体裁剪轴方向上的投影,轴,y在第五步分割出来的字符基础上进一步对字符的像素区域进行裁剪,原理也是分别做x 求的字符的区间再做剪裁。 模板字符识别四 4.1字符模板制作:3-6word上的标准字符,通过截图软件截图后按照模板的要求是与要识别的字符的字体格式一致,实验中采用 个字母。Z共269共10个数字,A到0步的处理过程制作出需要的字符模板,从到 字符模板归一化4.2 在满足识别率的条件下,尽量采用小模板识别可以提神运算速度,具体的模板大小,可以根据后面的与待识别字 符的比较中调节。 识别过程:4.3将待识别字符与字符模板做同样的归一化处理,然后遍历与字

10、符模板比较,处理方法为先和字符模板做差,然后计算做差后的图像的总像素值,如果小于每一个阈值,则表示该待识别字符和该模板是同一个字符,这样就完成 了一次识别。 循环对要识别的字符做同样的处理就可以识别出所有的字符,将结果保存在字符串中。 BP神经网络字符识别 五为首的科学家小组提出,是一种按误差和McCelland)网络是1986年由RumelhartBP(Back Propagation输-网络能学习和存贮大量的输入逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传)、inpu

11、t播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层( 。和输出层(outputlayer)隐层(hide layer)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向BP (Back Propagation)传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出

12、不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设 定的学习次数为止。 网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。BP神经网络模型BP 1)节点输出模型 (Xi-qj) (1) 隐节点输出模型: Oj=f(Wij 精彩文档 实用标准文案 Oj-qk) (2) Tjk输出节点输出模型:Yk=f( q -神经单元阈值。 f-非线形作用函数; BP网络结构模型图1

13、 典型 )作用函数模型 (2 Sigmoid内连续取值作用函数是反映下层输入对上层节点刺激脉冲强度的函数又称刺激函数,一般取为(0,1) )f(x)=1/(1+e) (3函数: )误差计算模型 (3 误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数: (tpi-Opi) (4) Ep=1/2 节点计算输出值。节点的期望输出值;Opi-i tpi- i )自学习模型(4 网络有BPWij的设定和误差修正过程。 神经网络的学习过程,即连接下层节点和上层节点之间的权重拒阵 只需输入模式之分。自学习模型为需要设定期望值和无师学习方式-师学习方式- 5)Oj+aWij(n) ( Wij(n

14、+1)= h i a-动量因子。输出节点j的计算输出;ih -学习因子;i-输出节点的计算误差;Oj- 5.1 训练样本制作:在不同分辨率和不同倾斜角度下分别采集几组图片作为训练样本,本实验为了节省计算时间,根据需要只做组。然5组数据。不同分辨率下5组,不同倾斜角度下1012345ABCDE这个字符的识别,因此只各采集了10 个。32*32大小的训练样本共100后按照2-4上的操作过程的对字符进行处理,获得 神经网络设计BP5.2轴像素值为输入特征作为输入层的输入;以yx轴利用MATLAB下的神经网络工具设计一个,以字符图像的个,输出层就是预期的结果,共十种可能,所以有输出层有十种输25log

15、sig函数作为隐含层,隐含层设计节点 出。net=newff(pr,25 1,logsig purelin,traingdx, learngdm); net.trainParam.epochs=250;%训练步数 net.trainParam.goal=0.001;%目标误差 10步显示一次训练误差的变化曲线net.trainParam.show=10;%系统每 net.trainParam.lr=0.05; %学习速度 训练net=train(net,p,t)%save name net 并保存训练结果 训练5.3 BP结果输sim通过函数对字符进行识别,首先对待识别字符预处理,然后读取读取

16、训练好的网络load name net, 出,保存在一个字符串内。 识别结果发送下位机六核的单片机,然后在单片机内经过程序处51利用MTLAB下的串口工具发送识别出的结果给下位机,下位机为 LM1602理驱动液晶显示结果。 下的串口工具:5.1 MATLAB)具备支持计算机与其它具有串以上版本中新增的设备控制工具条(instrument control toolboxMatlab6.0在 口的外部设备之间的通信的功能。其特点如下: 精彩文档 实用标准文案 RS-485)的通信;RS-232、RS-422、a、支持基于串行接口( ASCII)两种方式;b、通信数据支持二进制和文本( c、支持异步

17、通信和同步通信; d、支持基于事件驱动的通信(亦称中断方式)。 5.2 下位机处理 5.2.1主控电路 Intel 8031指令系统的单片机的统称。,51单片机是对目前所有兼容51主控芯片采用基于核的STC12A50S88K) (ROM)(52为4kbytes 程序存储器8位CPU RAM)有384bytes的256bytes的数据存储器(RAM)(52 条指令,大部分为单字节指令I/O口线111 32条 个专用寄存器 21 个)52有6计数器5个中断源,2个优先级( 2个可编程定时/ 一个全双工串行通信口 64kB 外部数据存储器寻址空间为 64kB 外部程序存储器寻址空间为 封装逻辑操作位

18、寻址功能双列直插40PinDIP 电源供电单一+5V :由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; CPU RAM :用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口,既可用作输入,也可用作输出;I/O口:四个8位并行 /记数器,既可以工作在定时模式,也可以工作在记数模式; T/C:两个定时 五个中断源的中断控制系统; 口,用于实现单片机之间或单片机与微机之间的串行I/O(通用异步接收发送器)的串行 一个全双工UART 通信; 。 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率

19、为12M 液晶显示电路5.2.2 液晶模60232个字符。字符型液晶,它是工业字符型液晶,能够同时显示实验中显示模板采用160216x02即个不同的点阵字符图形,这些字符有:阿拉伯数字、英文160CGROM)已经存储了块内部的字符发生存储器(”的代A字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“ A”。41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“01000001B码是(在单片机编程中还可以用字符型常量或变量赋值,ASCII码直接赋值,ASCII码,试验可以用因为1602识别的是 。如A 串口通信图:5.2. 3 电平,

20、实验中使用美信公司的RS232PC机通信是需要采用转换为由于单片机的串口输出为TTL电平,与 +5v单电源供电。RS-232标准串口设计的单电源电平转换芯片,使用MAX232芯片。它是美信公司专门为电脑的 总结:七 神经网络摄像头的视频帧图像采集,并对采集图像进行了数字图像处理,采用模板匹配和BPusb本实验完成了下的串口工具和下位机单片机通信,发送识别结果显示在字符液MATLAB训练的方式对字符进行识别,并利用 晶上。如果图像采集的分辨率过低的话会出现字符断裂的情况,对图像字符进行分割的时候,一是,试验中存在的问题:这时候要做的就是对字符进行连通域检测。二是在做本实验的程序都是针对特定字符进

21、行处理的,没有做自适应 精彩文档 实用标准文案 训练样本数太少,所以训练后的网络对字符的识别结果并不好。这些都需要后续的改的字符个数检测。三是BP 进。 八参考文献:, 2002 北京工业大学 .基于神经网络的手写体字符识别 1 王鹏 北京理工大学信息科学技术学院BP神经网络算法的车牌字符识别 基于 PCA和 . 2 闫雪梅 ,王晓华 ,夏兴高2007 2006 浙江大学博士论文 3 金城 二维图像特征研究 4 MATLAB2010R image processing tools 附录: MATLAB程序:一、模板匹配: 模板字符识别%1.0% %朱本福image acquisition to

22、olbox MATLAB中通过利用usb摄像头在% 在读取图片进行处理,采用模板匹配的%获取一帧图片并保存为ocr.jpg 方式进行识别,模板为根据操作制作的,最后将结果通过串口发送出去显示在单片机上% 下开发%MATLAB2010% clc; clear all; close all; vid = videoinput(winvideo, 1, YUY2_640x480);%视频获取字符图像src = getselectedsource(vid); vid.FramesPerTrigger = 1; preview(vid);%预览start(vid) ; vid.ReturnedColor

23、space = rgb; vid.FramesPerTrigger =1; imaqmem(10000000); 获取一帧frame = getsnapshot(vid) ;%figure(1); imshow(frame) imwrite(frame,ocr.jpg,jpg);%保存该帧图片stop(vid); delete(vid); 读取测试图片I=imread(ocr.jpg);%m,n,z=size(I) 精彩文档 实用标准文案 figure(1); ) 测试图片imshow(I);title(I1=rgb2gray(I); 保存二值化图像 imwrite(I1,I1.jpg);%

24、figure(2); 显示二值化图像imshow(I1);%figure(3); %imhist(I1); Ic = imcomplement(I1);%取反imwrite(Ic,Ic.jpg); figure(33);imshow(Ic); BW = im2bw(Ic, graythresh(Ic);%二值化imwrite(BW,BW.jpg); figure(5), imshow(BW); 边缘提取bw=edge(I1,prewitt);%imwrite(bw,bw.jpg); figure(32);imshow(bw); theta=1:180; R,xp=radon(bw,theta)

25、; 记录了倾斜角I0,J=find(R=max(max(R);%Jqingxiejiao=90-J goal1=imrotate(BW,qingxiejiao,bilinear,crop); imwrite(goal1,goal1.jpg); figure,imshow(I1);title(correct image); 中值滤波%goal3=medfilt2(goal1,3,3); figure(19), imshow(goal3); goal3=medfilt2(goal3,3,3); imwrite(goal3,goal3.jpg); figure(19), imshow(goal3);

26、 X求解方向的投影像素范围%ix1,iy1=xfenge(goal1) 精彩文档 实用标准文案 y方向的投影像素范围%求解jx1,jy1=yfenge(goal1) %字符区域分割:goal4=goal3(ix1:iy1,jx1:jy1); imwrite(goal4,goal4.jpg); figure(21);imshow(goal4); m,n=size(goal4) 1,2,3,4 区域标记,%L,num = bwlabel(goal4,8);% ysum(n-1)=0; for y=1:n-1 ysum(y)=sum(goal4(:,y); end %y=1:n-1; %figure

27、(12) 方向上的像素分布画出y%plot(y,ysum)% y轴交点就是单个字符在轴上分布的区间找出ysum分布的几个与y%i=1;j=1; for y=1:n-2 if (ysum(y)=0)&(ysum(y+1)=0) yy(i)=y i=i+1; end if (ysum(y)=0)&(ysum(y+1)=0) yx(j)=y j=j+1; end end 求出字符的分布并分割m_yy,n_yy=size(yy);% 的个数及分布区间,选择分割区间和n_yx根据if n_yy=3 %n_yy%segment 1 num1=goal4(1:m , 1:yx(1);%分割出字符figure

28、(23);imshow(num1); 2 num2=goal4(1:m ,yy(1):yx(2);%分割出字符figure(24);imshow(num2); 精彩文档 实用标准文案 3 分割出字符num3=goal4(1:m , yy(2):yx(3);%figure(25);imshow(num3); 4 yy(3):n);%分割出字符num4=goal4(1:m , figure(26);imshow(num4); %m1,n1=size(num1)%求出各个字符的大小%m2,n2=size(num2) %m3,n3=size(num3) %m4,n4=size(num4) 轴上进行分割

29、%对单个字符细分,避免字体出现大小不一致的情况,也就是再在xix1,iy1=xfenge(num1) ix2,iy2=xfenge(num2) ix3,iy3=xfenge(num3) ix4,iy4=xfenge(num4) num1=goal4(ix1:iy1 , 1:yx(1); figure(23);imshow(num1); num2=goal4(ix2:iy2 ,yy(1):yx(2); figure(24);imshow(num2); yy(2):yx(3); num3=goal4(ix3:iy3 , figure(25);imshow(num3); yy(3):n); num4

30、=goal4(ix4:iy4 , figure(26);imshow(num4); imwrite(num1, nnum1.bmp); imwrite(num2, nnum2.bmp); imwrite(num3, nnum3.bmp); imwrite(num4, nnum4.bmp); end 的个数及分布区间,选择分割区间n_yy和n_yx根据if n_yy=4 %segment num1=goal4(1:m , yy(1):yx(1); 精彩文档 实用标准文案 figure(23);imshow(num1); num2=goal4(1:m ,yy(2):yx(2); figure(24

31、);imshow(num2); yy(3):yx(3); num3=goal4(1:m , figure(25);imshow(num3); yy(4):n); num4=goal4(1:m , figure(26);imshow(num4); %m1,n1=size(num1) %m2,n2=size(num2) %m3,n3=size(num3) %m4,n4=size(num4) 对单个字符细分%ix1,iy1=xfenge(num1) ix2,iy2=xfenge(num2) ix3,iy3=xfenge(num3) ix4,iy4=xfenge(num4) num1=goal4(ix

32、1:iy1 , yy(1):yx(1); figure(23);imshow(num1); num2=goal4(ix2:iy2 ,yy(2):yx(2); figure(24);imshow(num2); yy(3):yx(3); num3=goal4(ix3:iy3 , figure(25);imshow(num3); yy(4):n); num4=goal4(ix4:iy4 , figure(26);imshow(num4); imwrite(num1, nnum1.bmp); imwrite(num2, nnum2.bmp); imwrite(num3, nnum3.bmp); imw

33、rite(num4, nnum4.bmp); end 精彩文档 实用标准文案 将模板归一化for i=1:36 %imageName=strcat(num2str(i),.bmp); I = imread(imageName); % figure;imshow(imageName); Mi=imresize(I,16,12,nearest); %figure;imshow(Mi); end Rchar(4)=0; for i=1:4 imagenum=strcat(nnum,num2str(i),.bmp); J=imread(imagenum); m,n=size(J) 待识别字符归一化nu

34、mi=imresize(J,16,12,nearest); % m,n=size(numi) figure;imshow(numi); for j=1:36 差分比较MMj=xor(numi , Mj); % % figure;imshow(MMj); dist(j)=sum(sum(MMj) 18分割效果不错 %这个可以根据dist的具体情况选取,这里去 if dist(j)=max(max(R);%Jqingxiejiao=90-J goal1=imrotate(BW,qingxiejiao,bilinear,crop); imwrite(goal1,goal1.jpg); % figur

35、e,imshow(I1);title(correct image); 中值滤波%goal3=medfilt2(goal1,3,3); figure(19), imshow(goal3); goal3=medfilt2(goal3,3,3); imwrite(goal3,goal3.jpg); % figure(19), imshow(goal3); X方向的投影像素范围求解%ix1,iy1=xfenge(goal1) 精彩文档 实用标准文案 y方向的投影像素范围%求解jx1,jy1=yfenge(goal1) 字符区域分割:%goal4=goal3(ix1:iy1,jx1:jy1); imwr

36、ite(goal4,goal4.jpg); % figure(21);imshow(goal4); m,n=size(goal4) 1,2,3,4 区域标记,%L,num = bwlabel(goal4,8);% ysum(n-1)=0; for y=1:n-1 ysum(y)=sum(goal4(:,y); end %y=1:n-1; %figure(12) 方向上的像素分布画出y%plot(y,ysum)% y轴上分布的区间轴交点就是单个字符在找出ysum分布的几个与y%i=1;j=1; for y=1:n-2 if (ysum(y)=0)&(ysum(y+1)=0) yy(i)=y i=

37、i+1; end if (ysum(y)=0)&(ysum(y+1)=0) yx(j)=y j=j+1; end end 求出字符的分布并分割m_yy,n_yy=size(yy);% n_yx和的个数及分布区间,选择分割区间if n_yy=3 %根据n_yy%segment 1 分割出字符num1=goal4(1:m , 1:yx(1);%figure(41);imshow(num1); 2 分割出字符num2=goal4(1:m ,yy(1):yx(2);%figure(42);imshow(num2); 精彩文档 实用标准文案 3 分割出字符num3=goal4(1:m , yy(2):yx(3);%figure(43);imshow(num3); 4 yy(3):n);%分割出字符num4=goal4(1:m , figure(44);imshow(num4); %m1,n1=si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论