字符识别OCR研究一(模板匹配&BP神经网络训练)wzzkaifa

在MATLAB环境下利用USB摄像头採集字符图像。读取一帧保存为图像。然后对读取保存的字符图像,灰度化。二值化,在此基础上做倾斜矫正。对矫正的图像进行滤波平滑处理,然后对字符区域进行提取切割出单个字符。识别方法一是採用模板匹配的方法逐个对字符与预先制作好的字符模板比較,假设结果小于某一阈值则结果就是模板上的字符;二是採用BP神经网络训练。通过训练好的net对待识别字符进行识别。最然后将识别结果通过MATLAB下的串口工具输出51单片机上用液晶显示出来。

keyword:倾斜矫正。字符切割。模板匹配,BP神经网络。液晶显示

Abstract

IntheMATLABenvironmentusingUSBcameracapturethecharacterimages,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获取视频帧。并保存图像在project目录内。

摄像头採用普通的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训练样本制作:

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)%训练

并保存训练结果savenamenet

5.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:用以存放能够读写的数据,如运算的中间结果、终于结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口。既可用作输入,也可用作输出。

T/C:两个定时/记数器。既能够工作在定时模式,也能够工作在记数模式。

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信。

片内振荡器和时钟产生电路,石英晶体和微调电容须要外接。

最高振荡频率为12M。

5.2.2液晶显示电路

实验中显示模板採用1602字符型液晶。它是工业字符型液晶,可以同一时候显示16x02即32个字符。602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大写和小写、经常使用的符号、和日文假名等,每个字符都有一个固定的代码,比方大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

由于1602识别的是ASCII码,试验能够用ASCII码直接赋值,在单片机编程中还能够用字符型常量或变量赋值。如'A’。

5.2.3串口通信图:

因为单片机的串口输出为TTL电平,与PC机通信是须要採用转换为RS232电平,实验中使用美信公司的MAX232芯片。它是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

七总结:

本实验完毕了usb摄像头的视频帧图像採集,并对採集图像进行了数字图像处理,採用模板匹配和BP神经网络训练的方式对字符进行识别。并利用MATLAB下的串口工具和下位机单片机通信。发送识别结果显示在字符液晶上。

试验中存在的问题:一是。对图像字符进行切割的时候,假设图像採集的分辨率过低的话会出现字符断裂的情况,这时候要做的就是对字符进行连通域检測。二是在做本实验的程序都是针对特定字符进行处理的,没有做自适应的字符个数检測。三是BP训练样本数太少,所以训练后的网络对字符的识别结果并不好。这些都须要兴许的改进。

八參考文献:

[1]王鹏.基于神经网络的手写体字符识别北京工业大学,2002

[2]闫雪梅,王晓华,夏兴高.基于PCA和BP神经网络算法的车牌字符识别北京理工大学信息科学技术学院2007

[3]金城二维图像特征研究浙江大学博士论文2006

[4]MATLAB2010Rimageprocessingtools

MATLAB程序:

一、模板匹配:

子函数:

%对切割出的单个字符进行切割x方向的再切割function[ix,iy]=xfenge(goal1)[m,n]=size(goal1);ix(m)=0;xx=0;j=1;forx=1:mfory=1:nifgoal1(x,y)==1;xx=1;endendifxx==1ix(j)=x;j=j+1;endendix=ix(1);iy(m)=0;xx=0;j=1;forx=m:-1:1fory=n:-1:1ifgoal1(x,y)==1;xx=1;endendifxx==1iy(j)=x;j=j+1;endendiy=iy(1);

%对切割出的单个字符进行切割y方向的再切割function[jx,jy]=yfenge(goal1)[m,n]=size(goal1);jx(m)=0;xx=0;j=1;fory=1:nforx=1:mifgoal1(x,y)==1;xx=1;endendifxx==1jx(j)=y;j=j+1;endendjx=jx(1)jy(m)=0;xx=0;j=1;fory=n:-1:1forx=m:-1:1ifgoal1(x,y)==1;xx=1;endendifxx==1jy(j)=y;j=j+1;endendjy=jy(1)

THE END
1.广州如何免费查询违章车辆上网查询,在网上搜索“车辆违章”或者直接搜“车辆违章广州”,还有 hao123 等综合网站的“实用查询”,进入各地的公安交警网查询系统,按要求输入车辆识别号,有的地区需要注册,方便后续登录查询。 打电话查询,很多地区交警网站会有免费交通违章查询电话,也可拨打 114 进行查询。 直接到所在城市交警队查询,拿着行驶证、https://www.pcauto.com.cn/ask/403988.html
2.65个车牌号字符模板20*40开发实例源码下载65个车牌号字符模板20*40,不含字母I和O,以为可能跟数字1和0混淆。全部为二值化图片,背景色为黑,前景色为白。可用于车牌号识别技术中的模板匹配。 【实例截图】 【核心代码】 65个车牌号字符模板 └── 65个车牌号字符模板 ├── 0.bmp ├── 1.bmp https://www.haolizi.net/example/view_124597.html
3.65个车牌号字符模板20*4065个车牌号字符模板20*40评分: 65个车牌号字符模板20*40,不含字母I和O,以为可能跟数字1和0混淆。全部为二值化图片,背景色为黑,前景色为白。可用于车牌号识别技术中的模板匹配。 车牌号 数字 字母 模板2014-12-27 上传大小:18KB 所需:45积分/C币 https://www.iteye.com/resource/bailichun19901111-8306831
4.65个车牌号字符模板20*40车牌字符模板资源车牌号字符模板是计算机视觉领域中用于车牌号码识别(LPR, License Plate Recognition)的关键元素。在这个场景下,我们有65个特定设计的字符模板,尺寸为20像素宽乘以40像素高。这些模板是二值化的图像,意味着它们只包含两种颜色:黑色背景和白色前景。这种设计有助于简化图像处理,使字符与背景形成鲜明对比,方便后续的特征https://download.csdn.net/download/weixin_42132177/85299590
5.javaopencv车牌车牌识别opencv代码车牌提取 车牌处理提取各字符 模板匹配 识别车牌第一个中文 识别车牌第二字字母 字母或数字 将识别结果显示出来 车牌倾斜提取 直线拟合找斜率 字符分割方法 字符水平方向的切割 目的:去除车牌边框和铆钉的干扰 中间较为密集的地方就是车牌有字符的地方,从而很好的去除了牌边框及铆钉 字符垂直方向的切割 从直方图中可以https://blog.51cto.com/u_16099347/9535046
6.车牌字符模板,JPG格式,40*20车牌字符模板,JPG格式,40*20车牌识别的车牌(不包含I和O)字符模板,图片格式为JPEG,图片尺寸大小为40x20. 本软件ID:10357554 文件下载 立即下载 资源详情 (67个子文件75KB)车牌字符模板,JPG格式,40*20 字符模板(4020)评论信息 fanerye2017: 不错,好东西2018-09-28 https://csdn.hk8.net/detail/weixin_42011121/10357554.html
7.用于车牌识别的字符模板,数字,字母,省简称,20*40大小用于车牌识别的字符模板,数字,字母,省简称,20*40大小_二十大小字母,关于各省车牌识别-C++工具类资源花黎**ma 上传45.89 KB 文件格式 zip 车牌识别 opencv 模板匹配 C++ 用于车牌识别的字符模板,数字,字母,省简称,20*40大小 点赞(0) 踩踩(0) 反馈 所需:3 积分 电信网络下载 https://www.coder100.com/index/index/content/id/973831
8.车牌识别算法与系统(精选八篇)在车牌字符识别环节, 本文使用多模板匹配的方法。模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高。目前,我国的车辆牌照字符按顺序依次排列,第一个字符为汉字,一般为省份的简称;第二个字符为英文大写字母,第三、四个字符为英文字母和阿拉伯数字的混编,第五至至第七个https://www.360wenmi.com/f/cnkey8h0mzhn.html
9.word办公技巧说说(办公软件操作技巧:Word文档实用技巧100例,建议但是每次打开后字体默认大小都是五号,每次都还得手动去切换一下,变为常用的四号字大小,要是能打开文档后默认的字体大小为四号就方便了,其实在文档编辑区域空白处右击鼠标,在弹出的快捷菜单中选择“字体”打开字体设置窗口,设置好字体和字号大小为“四号”,然后点击左下角“默认”按钮,在弹出一个新对话框中单击“http://www.cnglyh.com/bangong/14761.html
10.JavaScript使用技巧精萃[代码非常实用]javascript技巧(五).DataGrid中加CheckBox控件模板列. 请看: http://blog.csdn.net/chengking/archive/2005/10/08/497520.aspx (六). window.open() 方法 语法:window.open(pageurl,name,parameters); window对象的open()方法用于创建一个新的窗口实例,新创建的窗口的外观由参数:parameters指定。新窗口中打开的文档由参数:https://www.jb51.net/article/16563.htm
11.车牌号识别设计原理车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图 像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包 括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时 触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位 https://www.yoojia.com/ask/17-11665331812464996484.html
12.光学字符识别范文7篇(全文)光学字符识别(Optical Character Recognition,OCR),在金融、证券、保险、税务、海关、电信、医疗以及政府和公共事业等其他众多领域中得到越来越广泛的应用,有大量的潜在用户和非常好的市场前景,识别准确度与速度至关重要。特征提取与识别是光学字符识别的根本与热点所在,也是本文的研究重点。 https://www.99xueshu.com/w/ikey94ru0yq9.html
13.银符考试题库在线练习22. 下列字符中,ASCⅡ码最小的是 。 A.K B.a C.h D.H A B C D 23. 计算机字长为32位40. 打开Word 2003,将进入一个新建文档“文档1”,当执行“文件”菜单中的“保存”命令后 。 A.该20. 计算机感染病毒后,以下有关传染的说法中,正确的是 。 A.可以利用系统环境进行自我复制,使自身数量http://www.cquc.net:8089/YFB12/examTab_getExam.action?su_Id=5&ex_Id=4790
14.网页HTML特殊字符编码对照表Indian Rupee Sign ? U+020B9 ₹ ₹ \20B9 Ruble Sign ? U+020BD &#x20Uppercase A A U+00041 A A \0041 Uppercase B B U+00042 B B \0042Left Parenthesis ( U+00028 ( ( ( \0028 Right Parenthesis ) U+00029 &#x29https://www.22vd.com/33993.html
15.中国共产党威海市委员会组织部经验交流PPT演示文稿的基本操作PowerPoint中拥有很多设计模板,并提供了不少漂亮的背景,选择"格式"→"背景",再选中"忽略母版的背景图形"复选框。如果只是想选择颜色来填充,只要单击弹出式下拉菜单,选择"填充效果",当然也可选择"其他颜色"。如果还想更漂亮点,那就在弹出对话框中的过渡、纹理、图案、图片四个标签中来选择。设置完成后,只要单击"确http://www.whzzb.gov.cn/art/2014/7/15/art_34385_941618.html
16.盘锦市交通运输数智执法系统建设项目招标公告2021年01月20日,交通运输部办公厅印发《交通运输综合行政执法队*素质能力提升三年行动方案(2021—2023年)》(交办法〔2021〕5号),夯实基层基础领域提出推进“四基四化”建设,深入推进以“基层执法队*职业化、基层执法站所标准化、基础管理制度规范化、基层执法工作信息化”为内容的“四基四化”建设。对于已经完成交通https://www.ixbang.com/bid/detail/006628CC275C2C0EAF9705DA0CA65FAB.html