MATLAB车牌识别过程.doc_第1页
MATLAB车牌识别过程.doc_第2页
MATLAB车牌识别过程.doc_第3页
MATLAB车牌识别过程.doc_第4页
MATLAB车牌识别过程.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

7.3 系统详细设计7.3.1 车牌图像读入目前常用的图像格式主要有*.PCX、*.BMP、*.JPG、*.TIFF、*.GIF 等,本设计采集到的图片格式为*.JPG格式,这种格式的图像占有的存储空间小,而且是使用最广的图片保存和传输格式,大多数的摄像设备也都是以*.JPG格式保存图像的。利用图像工具的图像读取函数imread() 来读取一副图像,其使用格式为:I=imread(fn pn); %fn为图像文件名,pn为文件路径使用图像工具的图像显示函数imshow() 来显一副图像,使用格式为:Imshow(I);具体代码为:fn pn=uigetfile (*.JPG,选择图片);%选择图像文件,fn为文件名,pn为路径I= imread (fn pn); %显示所选图像Figure,imshow(I);title(原始车牌图像); %在新建的figure中显示所选图像文件,figure标题为原始车牌图像以一副名为“桂APC322”的车牌图片为例,程序运行结果为:7.3.2 彩色(基于蓝色)车牌定位、提取将彩色车牌读入后,采用水平垂直双向投影法,将图像分别投影到X、Y坐标轴,然后分别沿X、Y轴扫描图像。当沿Y轴扫描时,一边扫描一边统计图像中蓝色像素点的个数,第一次扫描到蓝色像素点最多的行时停止扫描,并记录下蓝色像素点最多的行,然后以这行为基点,分别向上、向下扫描直到统计的像素点小于像素点阀值时,停止扫描,记录上下行的Y轴坐标PY2,PY1,I=(PY1:PY2,: ,:)就为Y轴方向的车牌区域,代码如下:Blue_y=zeros(y,1);for i=1:y for j=1:x if(myI(i,j,1)=48)&(myI(i,j,2)=40)&(myI(i,j,3)=80) Blue_y(i,1)= Blue_y(i,1)+1; %统计蓝色像素点 end end endtemp MaxY=max(Blue_y); % PY1=MaxY;% while (Blue_y(PY1,1)=Y_threshlow)&(PY11) % PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)=Y_threshlow)&(PY2=max(max(R);%bw=imrotate(bw,qingxiejiao,bilinear,crop);figure,imshow(bw);title(车牌倾斜);运行结果如下:7.3.5 车牌图像处理对车牌灰度图像的处理主要有二值化、腐蚀、去除干扰、膨胀、擦除、取反,都可以直接使用图像工具箱的图像处理函数。经过以上处理过程后可以得到带边框的白底黑字的车牌图片,但是由于还存在车牌的边框,需要对其进行二次的裁剪,裁剪方法跟上面阐述的提取彩色车牌方法相似,先将图片水平垂直投影,然后统计黑色像素点,找到字符边缘进行裁剪,得到除去边框的白底黑字的车牌照。代码如下:SE=ones(3,3);bw=im2bw(bw);figure,imshow(bw);title(二值化);bw=imerode(bw,SE);figure,imshow(bw);title(腐蚀);bw=bwmorph(bw,clean,inf); bw=bwmorph(bw,hbreak,inf); bw=bwmorph(bw,spur,inf); bw=imdilate(bw,SE);figure,imshow(bw);title(膨胀);bw = bwareaopen(bw, threshold);figure,imshow(bw);title(擦除);bw=bw;figure,imshow(bw);title(颜色取反); bw=touying(bw);figure;imshow(bw);title(投影);运行结构如下:7.3.6 字符分割对二次裁剪的车牌图像进行水平垂直投影,计算水平垂直峰,检测合理的字符高宽比.可用与区域分割相同的方法进行峰值的删除和合并.但在字符切割时,往往由于阈值取得不好,导致字符切割不准确,针对这种情况,可以由车牌格式的先验知识,对切割出的字符宽度进行统计分析,用以指导切割。代码如下:y,x=size(imfenge);histogram=sum(imfenge);k=1;for h=1:x-1 if (histogram(1,h)shedingyuzhi)|(h=1)&histogram(1,h)shedingyuzhi) fenge(1,k)=h; k=k+1; elseif (histogram(1,h)shedingyuzhi)&(histogram(1,h+1)shedingyuzhi) fenge(1,k)=h+1; k=k+1; endendk=k-1;if (sum(histogram(1,fenge(1,1):fenge(1,2)ganrao)|(fenge(1,2)-fenge(1,1)(fenge(1,4)-fenge(1,3)/2) for i=3:k fenge(1,i-2)=fenge(1,i); endendm n=size(fenge);fenge=fenge(1,1:14);运行结果如下:7.3.7 字符识别目前字符识别方法主要有神经网络识别法和模板匹配法。人工神经网络是模拟人脑思维功能和组织建立起来的数学模型,但总体来说其应用还是相对复杂的。模板匹配法是将从待识别的图象或图象区域f(i,j)中提取的若干特征量与模板T(i,j)相应的特征量逐个进行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示期间相似程度最高,可将图象归于相应的类。也可以计算图象与模板特征量之间的距离,用最小距离法判定所属类。本系统使用的是较为简单的模板匹配法来识别字符的。首先将待识别字符的图像进行归一化处理,使其长宽与模板字符图像长宽一致,模板使用的是80*160的图片尺寸,待识别字符图像归一化代码为:xiuzhenghanzi = imresize(han_zi, 80 160,bilinear);xiuzhengzimu = imresize(zi_mu, 80 160,bilinear);xiuzhengzm_sz_1 = imresize(zm_sz_1,80 160,bilinear);xiuzhengzm_sz_2 = imresize(zm_sz_2,80 160,bilinear);xiuzhengzm_sz_3 = imresize(zm_sz_3,80 160,bilinear);xiuzhengzm_sz_4 = imresize(zm_sz_4,80 160,bilinear);xiuzhengzm_sz_5 = imresize(zm_sz_5,80 160,bilinear);待识别字符图像与模板字符图像长宽一致以后,就可以用带识别字符图像与模板字符图像进行匹配,具体过程为:建立模板字库表读取分割出来的字符第一个字符与模板中的汉字模板进行匹配第二个字符与模板中的字母模板进行匹配求待识别字符与模板字符的相关系数,相关系数越大,说明其相似度越大识别完成,输出此模板对应值后5个字符与模板中的字母与数字模板进行匹配字符匹配代码为:comp= ;for n=1:num_letrassem=corr2(xiuzhengzifu,mubanzifu);%利用corr2()函数求待识别字符图像与模板图像的相关系数 comp=comp sem; %将相关系数的值赋给compendxiangguan=find(comp=max(comp); %找出相关系数最大的值msgbox(shibiejieguo,识别结果); %显示识别结果运行结果如下:7.3.8 语音播报识别结果对字符正确识别之后,用事先对对每一个字符的录音根据对应字符顺序播放。在对车牌区域识别出错、字体分割出错时程序暂停,并有语音提醒。7.4 数据存储与数据库查询本系统使用的是Microsoft SQL Server2000来实现车牌信息处理的。数据存储主要是车牌信息的存储和出入时间存储,实现车辆信息自动登记;数据库查询主要是在数据库中查找识别的车牌信息,然后由计算机自动判别是被车辆是不是属于所属地区。首先是建立数据库,数据库名设为Study,接着需要在数据库中建立两个表Churujilu和Zhuceyonghu,表Churujilu主要是存储识别的车辆信息和相应的出入时间,表Zhuceyonghu主要是所属地区车辆信息的登记,包括车牌号和车主,用于查询。然后是建立ODBC数据源,命名为DBTEST,使用ODBC数据源来连接数据库,连接数据库代码为:sourceName = DBTEST;% 获取数据源Timeout = logintimeout(5);% 允许登陆连接时间最长为5sconn = database(sourceName, sa, );% 获取数据库连接对象fprintf(n数据库连接状态n);disp(ping(conn);% 显示测试数据库连接状态运行结果为:再然后是将车牌信息和当时时间一起写入数据库,写入数据时使用的是insert()函数,具体代码如下:insert(conn,Study.dbo.Churujilu,Chepaihao,Shijian,shibiejieguo,datestr(now);%将识别结果和当时的时间分别存入到Study数据库的Churujilu表中的Chepaihao和Shijian两列中当识别完车牌“桂APC322”后,将车牌信息和当时时间写入数据库的Churujilu表中,实现车辆信息自动登记,结果如图:最后是在数据库中查询是否存在识别车辆的注册登记信息,使用的是SQL语句进行查询。如果查询到与识别结果相同的车牌号,则返回其查询到的车辆信息,并弹出对话框“欢迎光临”,表示查找到相应信息;如果没有查询到,则MATLAB返回为字符串“No Data”,并弹出对话框“请下车登记”,表示没有查找到与识别车辆相匹配的信息。具体代码为:curs=exec(conn,select Chepai from Study.dbo.Zhuceyonghu where Chepai= shibiejieguo );%在Study数据库的Zhuceyonghu表中查找与识别结果相同的车牌号e = fetch(curs);%用fetch()函数将查询结果从数据库传给MATLAB中的矩阵ea=e.data;%把矩阵e中的数据全部传给aa=char(a);%把a转化

温馨提示

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

评论

0/150

提交评论