字符识别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.65个车牌号字符模板20*40车牌字符模板资源车牌号字符模板是用于车牌号码识别技术中的一个重要资源,它涉及到图像处理、模式识别和人工智能等多个领域的知识。在这个特定的案例中,我们拥有的是一组包含65个字符的模板库,这些字符覆盖了所有标准车牌号可能用到的数字和字母,但排除了容易与数字1和0混淆的字母I和O。 我们要理解“二值化图片”的概念。在图像https://download.csdn.net/download/bailichun19901111/8306831
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.车牌字符模板,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
5.用于车牌识别的字符模板,数字,字母,省简称,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
6.车牌识别算法与系统(精选八篇)在车牌字符识别环节, 本文使用多模板匹配的方法。模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高。目前,我国的车辆牌照字符按顺序依次排列,第一个字符为汉字,一般为省份的简称;第二个字符为英文大写字母,第三、四个字符为英文字母和阿拉伯数字的混编,第五至至第七个https://www.360wenmi.com/f/cnkey8h0mzhn.html
7.采用模板识别车牌号,识别率不高问题–MATLAB中文论坛为什么是3呢。,车牌单个字符的,值确定,那么车牌车牌纵向区域就窄了 解释:由于定位是采用“像素中线”的方法,所以确定上下边缘的时候,采用的阈值不确定行,比如宽度的尺寸大概可以理解成0-128px,高度尺寸大概可以理解成0-255px,所以建议改成重庆大学田建国的投影(车牌采集的时候2.5米采集,定位率应该有50%)。投影定位http://www.360doc.com/content/17/1026/18/46318754_698349850.shtml
8.光学字符识别范文7篇(全文)光学字符识别(Optical Character Recognition,OCR),在金融、证券、保险、税务、海关、电信、医疗以及政府和公共事业等其他众多领域中得到越来越广泛的应用,有大量的潜在用户和非常好的市场前景,识别准确度与速度至关重要。特征提取与识别是光学字符识别的根本与热点所在,也是本文的研究重点。 https://www.99xueshu.com/w/ikey94ru0yq9.html
9.2017码云最火爆开源项目TOP50,你都用过哪些?POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出* 它的识别率较高。图片清晰情况下,车牌检测与字符识别可以达到80%以上的精度。 码云地址:40、:免费开源 API 接口管理系统 免费开源API接口管理系统、API接口调试工具:API接口管理、文档管理、接口http://www.5wst.com/76600.html
10.车牌识别(附源代码)20231105100522.docx牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。三、详细设计步骤: 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。牌照识别https://m.book118.com/html/2023/1105/6202111114010003.shtm
11.车牌识别基于matlabGUI模板匹配车牌库识别含Matlab源码模板匹配一般是数字图像处理中最常使用的识别方法之一,先建立模板库,再将字符输入到模板中寻找与之最佳匹配的模板字符。 模板图像大小为20×40,模板库由数字0-9,32个省份的简称汉字和大写英文字母(其中O一般不用作车牌字母)三部分组成。模板的部分图像如图6所示。 https://blog.51cto.com/u_15324424/4557738
12.基于MATLAB的车牌识别系统设计与实现AET因为前面的车牌字符分割环节中已把车牌字符大小归一化为40×20的图像,与模板图像大小相同,所以模板匹配过程只需调用此函数,将分割出来的每个字符与设置好的模板进行相关运算,然后使用MATLAB中max函数寻找出它们中的最大相关值,即最相似的匹配结果,就完成了模板匹配过程。http://www.chinaaet.com/article/152805
13.盘锦市交通运输数智执法系统建设项目招标公告2021年01月20日,交通运输部办公厅印发《交通运输综合行政执法队*素质能力提升三年行动方案(2021—2023年)》(交办法〔2021〕5号),夯实基层基础领域提出推进“四基四化”建设,深入推进以“基层执法队*职业化、基层执法站所标准化、基础管理制度规范化、基层执法工作信息化”为内容的“四基四化”建设。对于已经完成交通https://www.ixbang.com/bid/detail/006628CC275C2C0EAF9705DA0CA65FAB.html