MATLAB的字符识别分析研究.pdf

上传人:tbuqq 文档编号:5244756 上传时间:2020-03-02 格式:PDF 页数:14 大小:1.65MB
返回 下载 相关 举报
MATLAB的字符识别分析研究.pdf_第1页
第1页 / 共14页
MATLAB的字符识别分析研究.pdf_第2页
第2页 / 共14页
MATLAB的字符识别分析研究.pdf_第3页
第3页 / 共14页
MATLAB的字符识别分析研究.pdf_第4页
第4页 / 共14页
MATLAB的字符识别分析研究.pdf_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《MATLAB的字符识别分析研究.pdf》由会员分享,可在线阅读,更多相关《MATLAB的字符识别分析研究.pdf(14页珍藏版)》请在三一文库上搜索。

1、基于 MATLAB 的字符识别研究 汽车牌照识别程序的设计 医药信息项目学院医药软件07丘春林学号: 0707501117 摘要: 本次课程设计的目的是通过对基于MATLAB 的字符识别的研究,以汽车牌照识别的 设计为实例,详细介绍字符识别的相关原理。整个汽车牌照识别的过程分为预处理、边缘提 取、车牌定位、字符分割、字符识别五大模块,用MATLAB 软件编程来实现每一个部分, 最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析,处理。寻找出对于 具体的汽车牌照识别过程的最好的方法。 关键词: MATLAB 字符识别车牌识别神经网络图像处理 引言 在 MATLAB 的字符识别研究中,

2、汽车牌照的识别是最经典的样例,因为车辆牌照识别 系统。% 读取图片 I1=rgb2gray(I。 %转化为灰度图像 I2=edge(I1,robert,0.09,both。 %采用 robert算子进行边缘检测 se=1 。1。1 。 %线型结构元素 I3=imerode(I2,se。 %腐蚀图像 se=strel(rectangle,25,25。 % 矩形结构元素 I4=imclose(I3,se。 %图像聚类、填充图像 I5=bwareaopen(I4,2000。 %去除聚团灰度值小于2000 的部分 通过对比原始图片,我们可以发现形态滤波后的图像已经很接近正确的车牌位置了,因 此后期处理

3、将通过这张图来找出车牌位置。 3. 车牌定位 观察经过预处理后得到的图像发现车牌位置有明显的矩形有明显的矩形图样,通过对矩形区 域的定位即可获得具体的车牌位置。 (1) 车牌的行起始和终止位置的确定 y,x,=size(I5。 I6=double(I5。 % 绘制行曲线图 Y1=zeros(y,1。 for i=1:y for j=1:x if(I6(i,j,1=1 Y1(i,1= Y1(i,1+1。 end end end figure(。 subplot(1,3,1。 plot(0:y-1,Y1,title(行像素灰度值累计 ,xlabel(行值,ylabel(像素和 。 temp, Ma

4、xY=max(Y1。 PY1=MaxY。 while (Y1(PY1,1=80&(PY11 PY1=PY1-7 。 end PY2=MaxY。 while (Y1(PY2,1=80&(PY2 PY2=PY2+7 。 end (2) 车牌的列起始位置和终止位置的确定 % 绘制列曲线图 X1=zeros(1,x。 for j=1:x for i=PY1:PY2 if(I6(i,j,1=1 X1(1,j= X1(1,j+1。 end end end subplot(1,3,2。 plot(0:x-1,X1,title(列像素灰度值累计 ,xlabel(列值,ylabel(像数和 。 PX1=1。 w

5、hile (X1(1,PX1&(PX1 PX1=PX1+7 。 end PX2=x 。 while (X1(1,PX2&(PX2PX1 PX2=PX2-7 。 end (3) 最后拼合获取的车牌在图像的行列位置 DW=I(PY1:PY2,PX1:PX2,:。 subplot(1,3,3。 imshow(DW,title(车牌定位后图像 。 4. 字符分割 在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础上 进行字符的分割,然后再利用分割的结果进行字符识别。 % 车牌图像转为灰度 if isrgb(I I1 = rgb2gray(I。 else I1 = I。 end

6、% 二值化车牌图像 I1 = im2bw(I1,graythresh(I1。% 二值化图像 I2 = bwareaopen(I1,16。% 去除小于 16 像素的区块 figure(。 subplot(1,2,1。 imshow(I2,title(二值化车牌图像 。 % 分割字符按行积累量 y,x=size(I2。 I3=double(I2。 X1=zeros(1,x。 for j=1:x for i=1:y if(I3(i,j,1=1 X1(1,j= X1(1,j+1。 end end end subplot(1,2,2。 plot(0:x-1,X1,title(车牌列像素点累计 ,xlab

7、el(列值,ylabel(像素和 。 % 分割字符 Px0=1 。 Px1=1 。 figure(。 for i=1:7 while (X1(1,Px0&(Px0 Px0=Px0+1。 end Px1=Px0 。 while (X1(1,Px1=3&(Px1|(Px1-Px0 Px1=Px1+1。 end Z=I2(:,Px0:Px1,:。 switch strcat(Z,num2str(i case Z1 PIN0=Z。 case Z2 PIN1=Z。 case Z3 PIN2=Z。 case Z4 PIN3=Z。 case Z5 PIN4=Z。 case Z6 PIN5=Z。 otherw

8、ise PIN6=Z。 end subplot(1,7,i。 imshow(Z。 Px0=Px1 。 end 分割成七块后的车牌图像 5. 建立字符模板数据库 模板库的合理建造是字符识别准确的关键之一,所以在字符识别之前必须把模板库设置 好。汽车牌照的字符一般有 7 个,大部分车牌第一位是汉字,通常代表车辆所属省份,或是 军种 警别等有特定含义的字符简称;紧接其后的为字母与数字。车牌字符识别与一般文字 识别在于它的字符数有限,十个阿拉伯数字 09, 26 个大写英文字母 AZ 以及相关的车 牌用汉字:京、沪、苏、台、港、澳、甲、乙、丙、使、领、学、试、境、消、边、警等, 以及新式军牌中的汉字南

9、、兰、广、北、沈、济、空、海等;车牌颜色:蓝、白、黑、黄 等。所以建立字符模板库也极为方便。 通过前面实验获取的几幅不同的车牌图片截取到的图片加上使用PhotoShop制作的部分 图片如下: 建立模板数据库时必须对这些图片进行统一处理,因为对前面处理分割后的车牌图像的 测量得知单个字符的最佳宽高比是1:2,所以将这些图片归一化为5025大小;因为之后 的字符识别考虑使用神经网络算法进行字符识别,所以再将上面归一化后的模板图像的样本 排列在一起构成 125018 的矩阵样本,程序设计如下: function inpt = Pretreatment(I % 训练样本前期处理 if isrgb(I

10、I1 = rgb2gray(I。 else I1=I。 end I1=imresize(I1,50 25。% 将图片统一划为 50*25大小 I1=im2bw(I1,0.9。 m,n=size(I1。 inpt=zeros(1,m*n。 % 将图像按列转换成一个行向量 for j=1:n for i=1:m inpt(1,m*(j-1+i=I1(i,j。 end end 这是一个自定义函数的Pretreatment.m 文件,可以解决频繁写重复代码的问题,前面的 图像预处理及车牌定位的代码可以写进Location.m 文件中,通过代码DW = Location(I 。 取 得车牌定位后的图像;

11、同时字符分割的代码亦可写进StringSplit.m 文件中,可以通过代码 PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit(DW 。 取得的字符分割后的图像。 6. 字符识别 字符的识别目前用于车牌字符识别(OCR中的算法主要有基于模板匹配的OCR 算法以 及基于人工神经网络的OCR 算法。基于模板匹配的OCR 的基本过程是:首先对待识别字符 进行二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配, 最后选最佳匹配作为结果。用人工神经网络进行字符识别主要有两种方法:一种方法是先对 待识别字符进行特征提取,然后用所获得的特征来

12、训练神经网络分类器。识别效果与字符特 征的提取有关,而字符特征提取往往比较耗时。因此,字符特征的提取就成为研究的关键。 另一种方法则充分利用神经网络的特点,直接把待处理图像输入网络,由网络自动实现特征 提取直至识别。本文主要研究基于人工神经网络的方法来识别车牌字符。 设计代码如下: close all。 clear all。 % 归一化训练样本 I0=pretreatment(imread(BP/0.jpg。 I1=pretreatment(imread(BP/1.jpg。 I2=pretreatment(imread(BP/2.jpg。 I3=pretreatment(imread(BP/3

13、.jpg。 I4=pretreatment(imread(BP/4.jpg。 I5=pretreatment(imread(BP/5.jpg。 I6=pretreatment(imread(BP/6.jpg。 I7=pretreatment(imread(BP/7.jpg。 I8=pretreatment(imread(BP/8.jpg。 I9=pretreatment(imread(BP/9.jpg。 I10=pretreatment(imread(BP/A.jpg。 I11=pretreatment(imread(BP/B.jpg。 I12=pretreatment(imread(BP/C

14、.jpg。 I13=pretreatment(imread(BP/D.jpg。 I14=pretreatment(imread(BP/G.jpg。 I15=pretreatment(imread(BP/K.jpg。 I16=pretreatment(imread(BP/L.jpg。 I17=pretreatment(imread(BP/M.jpg。 P=I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14 ,I15,I16,I17。 T=eye(18,18。 %输出样本 % bp 神经网络参数设置 net=newff(minmax(P,1250,3

15、2,18,logsig,logsig,logsig,tra inrp。 net.inputWeights1,1.initFcn =randnr。 net.layerWeights2,1.initFcn =randnr。 net.trainparam.epochs=5000。 net.trainparam.show=50。 %net.trainparam.lr=0.003。 net.trainparam.goal=0.0000000001。 net=init(net。 net,tr=train(net,P,T。 % 训练样本 % 测试 I=imread(CAR/0.jpg。 DW=Locatio

16、n(I。% 车牌定位 PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit(DW。% 字符分割及处理 % 测试字符,得到识别数值 PIN0=pretreatment(PIN0。 PIN1=pretreatment(PIN1。 PIN2=pretreatment(PIN2。 PIN3=pretreatment(PIN3。 PIN4=pretreatment(PIN4。 PIN5=pretreatment(PIN5。 PIN6=pretreatment(PIN6。 P0=PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6。 for i=2:

17、7 T0= sim(net ,P0(:,i。 T1 = compet (T0 。 d = find(T1 = 1 - 1。 if (d=10 str=A。 elseif (d=11 str=B。 elseif (d=12 str=C。 elseif (d=13 str=D。 elseif (d=14 str=G。 elseif (d=15 str=K。 elseif (d=16 str=L。 elseif (d=17 str=M。 elseif (d=0 str=0。 elseif (d=1 str=1。 elseif (d=2 str=2。 elseif (d=3 str=3。 elseif

18、 (d=4 str=4。 elseif (d=5 str=5。 elseif (d=6 str=6。 elseif (d=7 str=7。 elseif (d=8 str=8。 elseif (d=9 str=9。 else str=num2str(d。 end switch i case 2 str2=str。 case 3 str3=str。 case 4 str4=str。 case 5 str5=str。 case 6 str6=str。 otherwise str7=str。 end end % 识别出的结果以标题形式显示在图上 S=strcat(粤,str2,str3,str4,s

19、tr5,str6,str7。 figure(。 imshow(DW,title(S。 第一次训练后识别出的车牌号码: 发现第二个字符识别错误,在进行第二次识别: 可以看出完成了准确识别车牌的目的。 三、 总结 在汽车车牌识别的整个过程中,查找了很多资料,综合了各方面的信息。车牌实现的每 一步都有许多的方法,各种方法都有其优劣,但是对于具体的图像处理,并不是每一种理论 在实践中都可以实现,即使实现了也很难说哪一种方法最合适,还得在具体的实验中比较选 择。第二点在程序调试的过程中要耐心的检查每一个错误。测试结果表明,本设计有以下几 条优点 : (1)充分利用 MATLAB 中已有的函数库,使整个程

20、序设计简单易行; (2)使用了 MATLAB 的自定义函数功能,使程序设计更简洁。 但也发现了更多的缺点: (1) 程序的局限性:只能针对图像中一辆汽车的牌照进行识别;对于图像内的元素较复杂的 照片可能无法进行识别。 (2) 神经网络的训练要花费30 秒以上的训练时间才能进行下一步的字符识别,效率太慢。 (3) 程序可能会受软件环境的影响识别准确性,据测试,MATLAB 的 2018a 版比 2009a版识 别效率高,准确性也高点。 车牌识别程序设计能够得以顺利完成。在很大程度上得利于MATLAB 这套软件, MATLAB 功能强大,它包括数值计算和符号计算,并且计算结果和编程可视化。这为编程

21、调试创造了 一个便利的环境。作为图像处理最适用的工具之一,其突出的特点是它包含一个图像处理工 具包,这个工具包由一系列支持图像处理操作的函数组成。所支持的图像处理操作有: 图像 的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换 (DCT 变换等 、图像分析和统计、二值图像操作等。在图像的显示方面,MATLAB 提供了图 像文件读入函数 imread ( ,用来读取如 : bmp 、tif 、jpg 、pcx、tiff 、jpeg 、 hdf 、xwd 等格式图像文件;图像写出函数imwrite ( ,还有图像显示函数image ( 、 imshow( 等等。这些

22、,都使编程效率大为提高。 参考文献 1 冈萨雷斯数字图像处理第二版 2 MATLAB 从入门到精通 .周建兴 2008 4 S.J.Chapman MATLAB编程 2008 5 MATLAB7_0基础教程清华大学 2005 6 苏金明Matlab 图形图像 2005 7 基于 MATLAB 图像处理的汽车牌照识别系统仇成群 2008(6 8 许志影、李晋平 .MATLAB极其在图像处理中的应用 .计算机与现代化, 2004(4 9 一种复杂车辆图像中的多车牌定位方法, 光子学报 2007(1 Vol.36 No.1 10 基于图像处理的汽车牌照的识别,陈秋菊 申明: 所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1