ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:594KB ,
资源ID:4509158      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4509158.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(MATLAB车牌识别论文加源码.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MATLAB车牌识别论文加源码.doc

1、 姓名 学号 成绩 xxxx大学 数字图像处理本科生课程论文 论文题目:___车牌识别方法研究______ 完成时间:___2016年6月1日_______ 所在专业:___软件工程______________ 所在年级:___大三年级______________ 基于MATLAB的车牌识别方法研究 xxx级软件专业1班 xxx xx 摘要:汽车车牌的识别是智能交通管理的重要组成部分之一。 本文主要介绍车牌区域提取、字符切割、字

2、符识别。车牌区域提取主要包括图像灰度图转化、图像边缘检测、灰度图腐蚀、图像平滑处理、边界值计算。字符切割主要包括图像去噪处理、图像膨胀和腐蚀处理。字符识别主要包括图像膨胀和腐蚀处理、字符归一化。 关键词:MATLAB、车牌区域提取、字符识别、字符切割 1 研究背景 随着经济社会的迅猛发展,人们的生活水平的提高,机动车辆的数量也越来越多。为了提高车辆的管理效率,缓解公路上的交通压力,我们必须找到一种解决方案。而作为汽车“身份证”的汽车车牌,是在公众场合能够唯一确定汽车身份的凭证。我们可以以此为依据,设计一种车牌识别系统监控各个车辆的情况。 车牌识别的难点: ① 我国汽车牌照自身特征的

3、复杂性 1) 汉字、字母、数字混合。我国的车牌不单单有英文字母和阿拉伯数字, 还有汉字。 2) 颜色种类多。国外的车牌颜色种类相对于国内较少一些,我国的车牌颜 色种类较多。 3) 人为因素复杂。由于环境、道路或者人为因素造成车牌有严重污渍、车 牌模糊不清或者车牌偏斜角度很大的车辆,在我国都可以上路行驶。 4) 车牌格式多。我国的车牌格式很多,包括:民用车牌、公安警察车牌、 武警车牌、军车车牌、外交车牌、特种车牌、消防车牌等。 ② 外部环境影响 1) 外部光照条件各不相同,白天和晚上的光照各不相同。光照对采集的图 像质量产生很大的影响。不同的光照角度对车牌光照的不均匀影响也

4、很大。不同的气候条件、背景光照环境、车牌反光程度都决定了车牌的亮度特征。2) 外界背景的复杂程度也影响车牌的定位准确率。背景中和车牌区域当中 有许多和车牌特征相似的长方形区域,这些容易给车牌定位造成误判导致车牌定位的准确率降低。 2 主要理论概况 本图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符

5、分割的仿真。 一个完整的车牌号识别系统要完成从图像采集到字符识别输出,过程相当复杂,基本可以分成硬件部分跟软件部分,硬件部分包括系统触发、图像采集,软件部分包括图像预处理、车牌位置提取、字符分割、字符识别四大部分。 3 研究的主要内容 3.1 车牌识别研究内容 车牌定位的研究现状车牌定位决定其后的车牌字符分割和识别,因此车牌定位是车牌识别技术中最关键的一步。车牌定位的目的是从包含整个车辆的图像中找到车牌区域的图像。车牌定位方法的出发点是利用车牌区域的特征来判断牌照,将车牌区域从整幅车辆图像中分割出来

6、 车牌字符识别的研究现状车牌字符识别就是对分割出的待识别的字符进行识别处理。车牌的字符由有限的汉字、英文字母和数字组成。目前车牌字符识别最常用于车牌字符识别的方法是基于模板匹配的方法、基于特征分类的方法两大类。 字符分割算法一直在不断的完善。针对车牌的字符分割,是字符分割的一个具体应用,目前根据车牌的字符特征提出的算法主要有:基于先验知识的分割算法、基于投影轮廓和拓扑结构的分割算法等。例如,黄可为等利用视觉神经生理学和认知学实验结果,归纳出一种仿生目标搜索策略将其运行到车牌字符分割中。吴进军等根据车牌字符的排列规律和字符的几何特征,提出了一种基于第三个字符定位的车牌字符分割方法,很好地解

7、决了车牌定位后的字符缺损情况。 3.2 车牌识别系统程序设计 3.2.1车牌区域提取 图像读取及车牌区域提取主要有:图像灰度图转化、图像边缘检测、灰度图腐蚀、图像的平滑处理以及车牌区域的边界值计算。其程序流程图如下: 输入车牌图象 灰度校正 平滑处理 提取边缘 图 3.1 预处理及边缘提取框图 3.2.2图像灰度图转化 由于车牌的底色不同,所以从RGB图像直接进行车牌区域提取存在很大困难,但不管哪种底色的车牌,其底色与上面的字符颜色的对比度大,将RGB图像转

8、化成灰度图像时,车牌底色跟字符的灰度值会相差很大。。原图、灰度对于将彩色图象转换成灰度图象时,图象灰度值H可由下面的公式计算: (3.1) (3.2) 通过程序运行其效果图见图3.2和图3.3: 图 3.2 原始图像 图 3

9、3灰度图像 经过程序运行出来的灰度图可以比较容易的识别出车牌的区域,达到了预期的灰度效果。 3.2.3图像的边缘检测 在Matlab中利用函数edge()实现边缘检测,具体的用法如下所示: Car_Image_Bin=edge(Car_Image_Gray,'robert',0.15,'both'); Robert 算子采用对角方向相邻两像素之差,其计算公式如下: (3.3) (3.4) 其幅值为: (3.5)

10、 使用边缘检测,腐蚀效果如图3.4所示: 图 3.4 边缘效果图 基本上达到了边缘检测的效果。但是,在车牌附近的其他区域也由于各种干扰的影响,也存在一些白色区域。所以要对图像做进一步的处理,用灰度图腐蚀来消除多余的边界点。 3.2.4灰度图腐蚀 所谓腐蚀即一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。腐蚀的规则是输出图像的最小值是输入图像领域中的最小值,在一个二值图像中,只要有一个像素值为0,则相应的输出像素值为0。本系统使用imerode()函数, Car_Image_Erode=imerode(Car_Image_Bin,Se); 腐蚀后如图

11、 图 3.5 腐蚀效果图 已经得到了车牌图像的轮廓线了,只要再经过适当的处理即可把车牌提出出来。 3.2.5图像平滑处理 得到车牌区域的图像轮廓线后,由于图像的数字化误差和噪声直接影响了脚点的提取,因此在脚点提取之前必须对图像进行平滑处理,Matlab有一个图像平滑处理函数imclose() Car_Image_Perform=imclose(Car_Image_Erode,Se); 结构单元中Se一个小于对象闭合图形,只要两个封闭域的距离小于Se,就将这两个连接成一个连通域,Se生成方式采用 Se=strel('rectangle',[25,25]); 由于车牌图像

12、经过腐蚀以后只剩下车牌区域以及车的标志。在程序运行的图像平滑后效果如下: 图 3.6 平滑处理后效果 从平滑后的效果图分析,达到了预定的目标。消除了图像的数字化误差和噪声对脚点的直接提取的影响。 3.2.6移除小对象 图像平滑处理了,可能会有多个闭合区域,对于不是车牌区域的必须予以删除,Matlab提供了一个函数bwareaopen(),用于删除二值图像中面积小于一个定值的对象,默认情况下使用8邻域, Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000); 这样,Car_Image_Perform中面积小于2000

13、的对象都被删除了。 小对象被删除后的图像如图3.7所示: 图 3.7 移除小对象后效果图 移除小对象后的效果图已经非常明显了,图像中最后只存在车牌区域,其他的图像已经完全滤除掉了,包括小物体,车的标志等影响已经没有了。 3.2.7车牌区域的边界值计算 采用水平与垂直双向投影法。 水平坐标的确定,先定义一个的数组,其中为原始图像的宽度值,然后将二值图像垂直投影到轴。从直方图中基本可以看书水平方向上的两个分界线,为了便于处理,该课题将像素值临界值定量化,取值5个像素。从左向右寻找第一个1值像素大于5的坐标为水平方向左侧分界线,从右向左寻找到第一个1值像素量大于5的为右侧分

14、界线,程序可以用for循环语句。 垂直方向的分界线可用同样的方法实现。分界线计算后,即可从原图像中剪切出只包含车牌的区域图像。剪切得到的图像如下。图3.9为RGB图像切割出来的图像: 图 3.9 原图中的车牌区域图像 对比原始图像与二值图裁减图可以看出,车牌的四个边界值基本上被确定下来了,这样就可以从原始图像中直接确定车牌的区域了。所以车牌就成功地被提取出来了 3.2.8车牌处理 先将RGB图像转换成灰度值,再将灰度图转化成二进制图,在Matlab实现方式如下: T=round(License_Image_Gray_max-(License_Image_Gray_m

15、ax-License_Image_Gray_min)/3); 同时采集大的图像噪点依然存在,因此可以通过处理图像的低频部分来锐化图像。这里采用高通滤波算法。 腐蚀已经在在上文介绍,膨胀刚好与腐蚀相反,运算规则是输出图像的像素值是输入图像邻域中的最大值,在一个二值图像中,只要一个像素值为1,则相应的输出像素值为1。 根据经验值,车牌图像中,字符面积与车牌面积之比在(0.235,0.365)之间,因此计算字符面积与车牌面积比值,如果大于0.365则对图像进行腐蚀,如果小于0.235则对图像进行膨胀, 在这里结构元素Se使用一个二维单位矩阵。 图 3.12 车牌处理后效果

16、 4 结论 根据车牌特点,车牌定位的算法分为三类,一类是基于边缘的,一类是基于颜色的,一类是基于机器学习的等。这里我采用的是边缘检测的方法实现定的。    字符分割的方法也有多种:1. 基于聚类分析的字符分割;2. 投影分割的方法;3.基于模板匹配的字符分割等。最常用的是投影分割,主要是针对在车牌定位,图像预处理后比较规则的车牌图像。优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。  字符识别的基本方法通常又三类:1.结构特征分析方法;2.模板匹配法;3.神经网络法。此处采用的是模板匹配的方法,即是将要识别的字符与事先构造好的模板进

17、行比对,根据与模板的相似度的大小来确定最终的识别结果。     但是系统本身还存在许多不足,特别是对图像的分割与识别,目前还存在一定问题。 距离具体实用的要求仍有很大差距,但我却在这次 学习中学到了很多知识! 参考文献    [1] 张红,数字图像处理与分析 [2] 叶晨洲,廖金周,一种基于纹理的牌照图象二值化方法 [3] 刘阳,伊铁源等.数字图象处理应用于车辆牌照的识别 [4] 崔江、王友仁.车牌自动识别方法中的关键技术研究 [5] 韩勇强、李世祥.汽车牌照子图像的定位算 附录:程序源码 % function [d]=main() cl

18、ose all clc    % 清空命令窗口的所有输入和输出,类似于清屏 %自动弹出提示框读入图像 [filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入% file=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名 I=imread(file); figure('name','原图'),imshow(I);title('原图') %图像增强 % h=ones(5,5)/25; %过滤器h % I=im

19、filter(I,h);%真彩色增强 % figure('name','真彩色增强');imshow(I);title('真彩色增强'); I1=rgb2gray(I); % RGB图像转灰度图像 figure('name','灰度处理前'),subplot(1,2,1),imshow(I1);title('灰度处理前的灰度图'); subplot(1,2,2),imhist(I1);title('灰度处理前的灰度图直方图'); %线性灰度变换 I1=imadjust(I1,[0.3,0.7],[]); figure('name','灰度处理后'),subplot(1,2,1),

20、imshow(I1);title('灰度处理后的灰度图'); subplot(1,2,2),imhist(I1);title('灰度处理后的灰度图直方图'); %进行中值滤波 I1=medfilt2(I1); figure,imshow(I1);title('中值滤波'); %边缘检测:sobel,roberts,canny,prewitt等 I2=edge(I1,'roberts',0.25,'both'); %边缘检测算法,强度小于阈值0.15的边缘被省略掉,'both'两个方向检测(缺省默认) figure('name','边缘检测'),imshow(I2);title('

21、robert算子边缘检测')  se=[1;1;1]; I3=imerode(I2,se);% 腐蚀Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象 figure('name','腐蚀后图像'),imshow(I3);title('腐蚀后的图像'); se=strel('rectangle',[20,20]);% 25X25的矩形 strel??? I4=imclose(I3,se);% 用25*25的矩形对图像进行闭运算(先膨胀后腐蚀)有平滑边界作用 figure('name','平滑处理'),imshow(I4);title('平滑图像的轮廓'); I5=

22、bwareaopen(I4,1000);% 从二进制图像中移除所有少于2000像素的连接对象,消失的是连续的白色像素数量少于2000的字符 figure('name','移除小对象'),imshow(I5);title('从对象中移除小对象'); [y,x,z]=size(I5);% y是行数,x是列数,z是维数 myI=double(I5);% 转成双精度型 tic   % 开始计时 Blue_y=zeros(y,1);% zeros(M,N) 表示的是M行*N列的全0矩阵 for i=1:y     for j=1:x          if(myI(i,j,1)==1)

23、 判断蓝色像素            Blue_y(i,1)= Blue_y(i,1)+1;% 蓝色像素点统计           end        end        end [temp MaxY]=max(Blue_y);% Y方向车牌区域确定 [temp MaxY]临时变量MaxY PY1=MaxY;  % 以下为找车牌Y方向最小值 while ((Blue_y(PY1,1)>=5)&&(PY1>1))%% 为什么判断蓝色像素点>=5(才算蓝色)????         PY1=PY1-1; end     PY2=MaxY; % 以下为找车牌Y方向最大值

24、难道最大值不是MaxY???? while ((Blue_y(PY2,1)>=5)&&(PY2

25、                       end       end    end PX1=1;% 以下为找车牌X方向最小值 while ((Blue_x(1,PX1)<3)&&(PX1PX1))         PX2=PX2-1; end PY1=PY1-2;% 对车牌区域的校正 为什么要这么+-??? PX1=PX1-2; PX2=PX2

26、3; PY2=PY2+10; dw=I(PY1:PY2-8,PX1:PX2,:);% 裁剪图像 toc %t=toc; % 停止计时 %figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域'); figure('name','定位剪切后的彩色车牌图像'),%subplot(1,2,2), imshow(dw),title('定位剪切后的彩色车牌图像') imwrite(dw,'dw.jpg'); % 直接自动读入%[filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像')

27、 %jpg=strcat(filepath,filename); % strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名 a=imread('dw.jpg'); b=rgb2gray(a); imwrite(b,'1.车牌灰度图像.jpg'); figure('name','车牌处理');subplot(3,2,1),imshow(b),title('1.车牌灰度图像') %g_max=double(max(max(b)));% 以下作阈值化(灰度图转二值图) %g_min=double(min(min(b)));% max(a)求

28、的每列的最大值,是一维数据;max(max(a)) 是求这一维数据的最大值。 %T=round(g_max-(g_max-g_min)/2); % T 为二值化的阈值  round:取整为最近的整数 %[m,n]=size(b);% m:b的行向量数 n:b的列向量数 %d=(double(b)>=T);  % d:二值图像 %imwrite(d,'2.车牌二值图像.jpg'); %线性灰度变换 b=imadjust(b,[0.3,0.7],[]); subplot(3,2,2),imshow(b);title('2.线性灰度处理后的灰度图'); %进行二值化处理 d=im2

29、bw(b,0.4);%将灰度图像进行二值化处理 imwrite(d,'2.车牌二值图像.jpg'); subplot(3,2,3),imshow(d),title('3.车牌二值图像');%显示二值化图像 %进行中值滤波 d=medfilt2(d); imwrite(d,'4.均值滤波后.jpg'); subplot(3,2,4),imshow(d);title('4.中值滤波后'); % 均值滤波 %h=fspecial('average',3); %d=im2bw(round(filter2(h,d)));% 滤波后,im2bw():将图像转成二值图像 (可以不用roun

30、d函数 也是一样的) %imwrite(d,'4.均值滤波后.jpg'); %subplot(3,2,4),imshow(d),title('4.均值滤波后') % 某些图像进行操作 % 膨胀或腐蚀  ???感觉没什么效果咧??? % se=strel('square',3);  % 使用一个3X3的正方形结果元素对象对创建的图像进行膨胀 % 'line'/'diamond'/'ball'/'square'/'dish'... 线/菱形/球/正方形/圆 se=eye(2); % eye(n) 返回n乘n单一矩阵; 单位矩阵 [m,n]=size(d); if bwarea(d

31、)/m/n>=0.365 % 函数bwarea 计算目标物的面积,单位是像素;bwarea/m/n即为单个像素??     d=imerode(d,se);% 腐蚀 elseif bwarea(d)/m/n<=0.235     d=imdilate(d,se);% 膨胀 end imopen(d,se); %se=eye(7); %imopen(d,se); imwrite(d,'5.膨胀或腐蚀处理后.jpg'); subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后') % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,

32、需要分割 d=qiege(d);% 调用qiege()子程序 [m,n]=size(d); figure,subplot(2,1,1),imshow(d),title(n) %k1=1;k2=1; j=1; s=sum(d);%sum(x)就是竖向相加,求每列的和,结果是行向量;sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。sum(X(:))表示矩阵求和 while j~=n   %%%%% 什么原理???     while s(j)==0  %% 无文字???为什么???         j=j+1;     end     k1=j;     w

33、hile s(j)~=0 && j<=n-1         j=j+1;     end     k2=j-1;     if k2-k1>=round(n/6.5)         [val,num]=min(sum(d(:,[k1+5:k2-5])));         d(:,k1+num+5)=0;  % 分割     end end % 再切割 %d=qiege(d); % 切割出 7 个字符 y1=10;y2=0.25;flag=0;word1=[]; while flag==0  % flag为自定义,以便标记循环用     [m,n]=size(d

34、);     %left=1;     wide=0;     while sum(d(:,wide+1))~=0 % 二值图像:黑色像素代表感兴趣的对象而白色像素代表背景。逻辑矩阵只包括0(显示为黑色)和1(显示为白色)         wide=wide+1;% ?wide的意义?     end     if wide

35、     else         temp=qiege(imcrop(d,[1 1 wide m]));% imcrop函数截取图像[xmin ymin width height]         [m,n]=size(temp);         all=sum(sum(temp));         two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));         if two_thirds/all>y2 %??什么意思??             flag=1;word1=temp;   %第一个字符     

36、    end         d(:,[1:wide])=0;d=qiege(d); %?为什么又处理一次?     end end % 分割出第二个字符 [word2,d]=getword(d); % 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符 [word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d); subplot(5,7,1),ims

37、how(word1),title('1'); subplot(5,7,2),imshow(word2),title('2'); subplot(5,7,3),imshow(word3),title('3'); subplot(5,7,4),imshow(word4),title('4'); subplot(5,7,5),imshow(word5),title('5'); subplot(5,7,6),imshow(word6),title('6'); subplot(5,7,7),imshow(word7),title('7'); [m,n]=size(word1); % 商用

38、系统程序中归一化大小为 40*20,此处演示 word1=imresize(word1,[40 20]);%imresize对图像做缩放处理,常用调用格式为:B=imresize(A,ntimes,method);其中method可选nearest,bilinear(双线性),bicubic,box,lanczors2,lanczors3等 word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]);

39、 word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); subplot(5,7,15),imshow(word1),title('11'); subplot(5,7,16),imshow(word2),title('22'); subplot(5,7,17),imshow(word3),title('33'); subplot(5,7,18),imshow(word4),title('44'); subplot(5,7,19),imshow(word5),title('55'); subplot(5,7,20

40、),imshow(word6),title('66'); subplot(5,7,21),imshow(word7),title('77'); imwrite(word1,'1.jpg'); % 创建七位车牌字符图像 imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg'); liccode=char(['0':'9' 'A':'Z' '京辽桂陕苏渝浙

41、']);  %建立自动识别字符代码表;'京津沪渝港澳吉辽鲁豫冀鄂湘晋青皖苏赣浙闽粤琼台陕甘云川贵黑藏蒙桂新宁' % 编号:0-9分别为 1-10;A-Z分别为 11-36; % 京  津  沪  渝  港  澳  吉  辽  鲁  豫  冀  鄂  湘  晋  青  皖  苏 % 赣  浙  闽  粤  琼  台  陕  甘  云  川  贵  黑  藏  蒙  桂  新  宁 % 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59  % 60 61 62 63 64 65 66 67 68 69

42、70 SubBw2=zeros(40,20); % 创建一个40行20列的0矩阵 l=1; for I=1:7       ii=int2str(I); % 将整型数据转换为字符串型数据      t=imread([ii,'.jpg']);% 依次读入七位车牌字符       SegBw2=imresize(t,[40 20],'nearest'); % 对读入的字符进行缩放         if I==1                 % 第一位汉字识别             kmin=37;             kmax=43;         elseif

43、I==2             % 第二位 A~Z 字母识别             kmin=11;             kmax=36;         else            % 第三位以后是字母或数字识别 ;即I>=3             kmin=1;             kmax=36;                 end                  for k2=kmin:kmax             fname=strcat('字符模板\',liccode(k2),'.jpg'); % strcat函数:连接字符串    

44、         SamBw2 = imread(fname);             for  i=1:40                 for j=1:20                     SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);                 end             end            % 以上相当于两幅图相减得到第三幅图 进行匹配             Dmax=0; % 与模板不同的点个数             for k1=1:40                 for l1=

45、1:20                     if  ( SubBw2(k1,l1) > 10 || SubBw2(k1,l1) < -10 ) % "|"/"||" 或操作 (>2 15)20以上无区别                         Dmax=Dmax+1;                     end                 end             end             Error(k2)=Dmax; % 记录下字符与模板k2不同的点个数         end               Error1=Error(kmin

46、kmax);         MinError=min(Error1); % 差别最小的         findc=find(Error1==MinError); % 找出差别最小的模板         Code(l)=liccode(findc(1)+kmin-1); % 此处用2*l-1且后面的2*l=' ',第隔一空格输出一个字符         Code(3)=' ';Code(4)=' ';         l=l+1;         if  l==3;% 后五位与前两位字符隔开             l=l+2;         end end figu

47、re(10),subplot(5,7,1:7),imshow(dw),title('第一步:车牌定位'), xlabel({'第二步:车牌分割'}); %'', subplot(6,7,15),imshow(word1); subplot(6,7,16),imshow(word2); subplot(6,7,17),imshow(word3); subplot(6,7,18),imshow(word4); subplot(6,7,19),imshow(word5); subplot(6,7,20),imshow(word6); subplot(6,7,21),imshow(word7); subplot(6,7,22:42),imshow('dw.jpg');% xlabel(['第三步:识别结果为: ', Code],'Color','b'); 19

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服