精品文档精品文档Abstract2一引言:...3二字符图像获取:...3三字符预处理...43.2字符区域………………………………………………………………………….43.2字符区域分割:...43.3单个字体分割:...43.4单个字体裁剪...5四模板字符识别...54.2字符模板归一化...5五BP神经网络字符识别...55.1训练样本制作………………………………………………………………………………….65.2设计BP神经网络………………………………………………………………………………65.3BP训练...7六识别结果发送下位机...75.1MATLAB下的串口工具:...75.2下位机处理...75.2.3串口通信图:...9七总结:...9摘要在MATLAB环境下利用USB摄像头采集字符图像,读取一帧保存为图像,然后对读取保存的字符图像,灰度化,二值化,在此基础上做倾斜矫正,对矫正的图像进行滤波平滑处理,然后对字符区域进行提取分割出单个字符,识别方法一是采用模板匹配的方法逐个对字符与预先制作好的字符模板比较,如果结果小于某一阈值则结果就是模板上的字符;二是采用BP神经网络训练,通过训练好的net对待识别字符进行识别。最然后将识别结果通过MATLAB下的串口工具输出51单片机上用液晶显示出来。关键字:倾斜矫正,字符分割,模板匹配,BP神经网络,液晶显示AbstractIntheMATLABenvironmentusingUSBcameracapturethecharacterimages,savedasanimagereading,thenreadthesavedcharacterimages,grayscale,binary,onthisbasisdotiltcorrection,thecorrectionimagesmoothingfilter,andthenextractthecharacterregionsegmentationofasinglecharacter,andthenonebyoneusingatemplatematchingmethodofcharacterwithgoodcharactertemplateisapre-production,iftheresultislessthanacertainthreshold,theresultisatemplateofthecharacter.Second,theBPneuralnetworktrainedbythetrainednettoidentifythecharactertowardsrecognitionTheresultswillidentifythemostandthentheserialportthroughtheMATLABtooloutput51undermicrocontrollerwithLCDdisplay.Keyword:Tiltcorrection,charactersegmentation,templatematching,liquidcrystaldisplay一引言:光学字符识别(OCR,OpticalCharacterRecognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。已有30多年历史,近几年又出现了图像字符识别(imagecharacterrecognition,精品文档精品文档ICR)和智能字符识别(intelligentcharacterrecognition,ICR),实际上这三种自动识别技术的基本原理大致相同。关于字符识别的方法有很多种,最简单的就是模板匹配,还有根据采集到的字符用BP神经网络或者SVM来训练得到结果的方式。本文主要针对模板匹配的方式,在MATLAB环境下编程实现。二字符图像获取:在MATLAB下利用imageacquisitiontoolbox获取视频帧,并保存图像在工程文件夹内。摄像头采用普通的USB摄像头,由于这种摄像头拍摄的照片延时比较大,所以先用imageacquisitiontoolbox下的对视频进行预览,调整出最佳的效果来,采集的图像效果越好则识别率越高。根据测试,实验选择640*480的视频获取窗口,颜色空间选取为RGB空间,获取一帧后保存为jpg的存储格式。精品文档精品文档三字符预处理3.1字符矫正由于摄像头拍摄的图像存在一定存在的倾斜度,在分割字符区域时,应先对字符进行矫正。过程如下:将通过摄像头获取的保存帧图像灰度化,然后对其进行边缘提取,再在1到180度角内对图像进行旋转,记录下边缘提取后的图像在x轴方向上的投影,当x轴方向上的投影最小的时候即表示图像中字符平行于y轴,已经完成矫正,此时记录下旋转的倾斜角。然后利用imrotate函数实现对字符图像的矫正。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轴上的分布区间,然后利用这个分布区间就可以分割出单个字符。3.4单个字体裁剪在第五步分割出来的字符基础上进一步对字符的像素区域进行裁剪,原理也是分别做x轴,y轴方向上的投影,求的字符的区间再做剪裁。四模板字符识别4.1字符模板制作:模板的要求是与要识别的字符的字体格式一致,实验中采用word上的标准字符,通过截图软件截图后按照3-6步的处理过程制作出需要的字符模板,从0到9共10个数字,A到Z共26个字母。4.2字符模板归一化在满足识别率的条件下,尽量采用小模板识别可以提神运算速度,具体的模板大小,可以根据后面的与待识别字符的比较中调节。4.3识别过程:将待识别字符与字符模板做同样的归一化处理,然后遍历与字符模板比较,处理方法为先和字符模板做差,然后计算做差后的图像的总像素值,如果小于每一个阈值,则表示该待识别字符和该模板是同一个字符,这样就完成了一次识别。循环对要识别的字符做同样的处理就可以识别出所有的字符,将结果保存在字符串中。五BP神经网络字符识别BP(BackPropagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidelayer)和输出层(outputlayer)。BP(BackPropagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。BP神经网络模型BP网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。(1)节点输出模型隐节点输出模型:Oj=f(∑Wij×Xi-qj)(1)精品文档精品文档输出节点输出模型:Yk=f(∑Tjk×Oj-qk)(2)f-非线形作用函数;q-神经单元阈值。图1典型BP网络结构模型(2)作用函数模型作用函数是反映下层输入对上层节点刺激脉冲强度的函数又称刺激函数,一般取为(0,1)内连续取值Sigmoid函数:f(x)=1/(1+e)(3)(3)误差计算模型误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数:Ep=1/2×∑(tpi-Opi)(4)tpi-i节点的期望输出值;Opi-i节点计算输出值。(4)自学习模型神经网络的学习过程,即连接下层节点和上层节点之间的权重拒阵Wij的设定和误差修正过程。BP网络有师学习方式-需要设定期望值和无师学习方式-只需输入模式之分。自学习模型为△Wij(n+1)=h×Фi×Oj+a×△Wij(n)(5)h-学习因子;Фi-输出节点i的计算误差;Oj-输出节点j的计算输出;a-动量因子。5.1训练样本制作:在不同分辨率和不同倾斜角度下分别采集几组图片作为训练样本,本实验为了节省计算时间,根据需要只做12345ABCDE这10个字符的识别,因此只各采集了10组数据。不同分辨率下5组,不同倾斜角度下5组。然后按照2-4上的操作过程的对字符进行处理,获得32*32大小的训练样本共100个。5.2设计BP神经网络利用MATLAB下的神经网络工具设计一个,以字符图像的x轴y轴像素值为输入特征作为输入层的输入;以logsig函数作为隐含层,隐含层设计节点25个,输出层就是预期的结果,共十种可能,所以有输出层有十种输出。net=newff(pr,[251],{'logsig''purelin'},'traingdx','learngdm');net.trainParam.epochs=250;%训练步数net.trainParam.goal=0.001;%目标误差net.trainParam.show=10;%系统每10步显示一次训练误差的变化曲线net.trainParam.lr=0.05;%学习速度net=train(net,p,t)%训练并保存训练结果savenamenet5.3BP训练首先对待识别字符预处理,然后读取读取训练好的网络loadnamenet,通过sim函数对字符进行识别,结果输出,保存在一个字符串内。六识别结果发送下位机利用MTLAB下的串口工具发送识别出的结果给下位机,下位机为51核的单片机,然后在单片机内经过程序处理驱动LM1602液晶显示结果。5.1MATLAB下的串口工具:在Matlab6.0以上版本中新增的设备控制工具条(instrumentcontroltoolbox)具备支持计算机与其它具有串口的外部设备之间的通信的功能。其特点如下:a、支持基于串行接口(RS-232、RS-422、RS-485)的通信;精品文档精品文档b、通信数据支持二进制和文本(ASCII)两种方式;c、支持异步通信和同步通信;d、支持基于事件驱动的通信(亦称中断方式)。5.2下位机处理5.2.1主控电路主控芯片采用基于51核的STC12A50S8,51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。·8位CPU·4kbytes程序存储器(ROM)(52为8K)·256bytes的数据存储器(RAM)(52有384bytes的RAM)·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)·一个全双工串行通信口·外部数据存储器寻址空间为64kB·外部程序存储器寻址空间为64kB·逻辑操作位寻址功能·双列直插40PinDIP封装·单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读