基于matlab的车牌号码识别程序代码.doc





《基于matlab的车牌号码识别程序代码.doc》由会员分享,可在线阅读,更多相关《基于matlab的车牌号码识别程序代码.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于matlab的汽车牌照识别程序设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。关键词:车牌识别,matlab,神经网络1 引言随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。
2、它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。2 车辆牌照识别系统工作原理车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。3 车辆牌照识别系统组成(1)图
3、像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。(2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。(3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像(4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。4 汽车牌照识别系统的matlab实现4.1 图像预处理与车牌定位输入的彩色图像包含大量颜色信息,会占用较多的存储空间,且处理时也会降低系统的执行速度,因此对图像进行识别等处理时,常将彩色图像转换为灰度图像,以加快处
4、理速度。对图像进行灰度化处理、边缘提取、再利用形态学方法对车牌进行定位。具体步骤如下:首先对图像进行灰度转换,二值化处理然后采用4X1的结构元素对图像进行腐蚀,去除图像的噪声。采用25X25的结构元素,对图像进行闭合应算使车牌所在的区域形成连通。在进行形态学滤波去除其它区域。I=imread(DSC01344.jpg);%读取图像figure(); subplot(3,2,1),imshow(I), title(原始图像);I1=rgb2gray(I);%转化为灰度图像subplot(3,2,2),imshow(I1),title(灰度图像);I2=edge(I1,roberts,0.09,b
5、oth);%采用roberts算子进行边缘检测subplot(3,2,3),imshow(I2),title(边缘检测后图像);se=1;1;1; %线型结构元素 I3=imerode(I2,se); %腐蚀图像 二值化处理然后采用4X1的结构元素对图像进行腐蚀,%去除图像的噪声subplot(3,2,4),imshow(I3),title(腐蚀后边缘图像);se=strel(rectangle,25,25); 矩形结构元素I4=imclose(I3,se);%图像聚类、填充图像 imclose:闭合subplot(3,2,5),imshow(I4),title(填充后图像);I5=bware
6、aopen(I4,2000);%去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I5),title(形态滤波后图像);y,x,z=size(I5);I6=double(I5);% size(I6)为480*640,I6为二值化后的矩阵,只有0和1 Y1=zeros(y,1); % 把Y1初始化为全为0的480维列向量 for i=1:y%以下循环统计每行的像素点灰度值累积和,是为了找出车牌位置是以哪行开始以及截止 for j=1:x if(I6(i,j,1)=1) % I6(i,j,1)就表示I6(i,j)那个1表示第三维度,I6(i,j,2)就会出错,超出矩阵维度
7、 Y1(i,1)= Y1(i,1)+1; end end end temp MaxY=max(Y1); % temp=259是列向量Y1的最大值, MaxY=175是最大值对应索引值 figure(); subplot(3,2,1),plot(0:y-1,Y1),title(行方向像素点灰度值累计和),xlabel(行值),ylabel(像素); %求的车牌的行起始位置PY1和终止位置PY2% Y1是列向量,每个元素是每行的元素为1的总和 PY1=MaxY;%列向量Y1的最大值索引值赋给PY1,即该行的白点(因为白色是车牌号,黑色是背景)%最多即是车牌的行起始位置?错,行起始位置不一定白点最多
8、,所以才有下面的对PY1%的操作%索引值自减直到索引到Y1中某行白点个数小于50为止的行数即为车牌行数起始位置 while (Y1(PY1,1)=50)&(PY11) %当Y1最大值=50并且最大值索引1时。MATLAB的索引从1开始 PY1=PY1-1;% 索引值自减1 end PY2=MaxY;%PY2是行终止位置%索引值自增直到索引到Y1中某行白点个数小于50为止的行数即为车牌行数起始位置 while (Y1(PY2,1)=50)&(PY2=50并且最大值索引y时,停止循环 PY2=PY2+1;% 索引值自加1end IY=I(PY1:PY2,:,:);%把从PY1到PY2的所有行赋给I
9、Y X1=zeros(1,x);% 把Y1初始化为全为0的640维行向量 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(3,2,2),plot(0:x-1,X1),title(列方向像素点灰度值累计和),xlabel(列值),ylabel(像数); %求的车牌的列起始位置和终止位置% %本方法与求车牌的行起始位置的求法不一样。就当做是介绍了两个方法%方法1:找出最大行/列,然后从最大行/列开始索引自增自减来找到行/列起始/终止位置%方法2:不用
10、找出最大行/列,而是直接从1开始索引自增,以及从最后索引自减来找到起始/终止位置 PX1=1; while (X1(1,PX1)3)&(PX1=3时停止循环。 PX1=PX1+1;%索引自加1 end PX2=x; while (X1(1,PX2)PX1) %倒着检索,当检索到第一个某列的像素灰度值和=3时停止循环。 PX2=PX2-1; end PX1=PX1-1;%列起始位置索引为什么要减一 PX2=PX2+1; %分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:); subplot(3,2,3),imshow(dw),title(定位剪切后的彩色车牌图像)4.2 车牌字符分割
11、确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。if isrgb(I) I1 = rgb2gray(I); %将RGB图像转化为灰度图像else I1=I; endg_max=double(max(max(I1);g_min=double(min(min(I1);T=round(g_max-(g_max-g_min)/3); % T为二值化的阈值m,n=size(I1); % d:二值图像%h=graythresh(I1); %graythresh是一个函数,功能是使用最大类间方差法找%到图片的一个合适的阈值。利用这个阈值通常比人为设定阈%值能更好地把一张灰度图像转换为
12、二值图像 I1=im2bw(I1,T/256);subplot(3,2,4);imshow(I1),title(二值化车牌图像);I2=bwareaopen(I1,20);subplot(3,2,5);imshow(I2),title(形态学滤波后的二值化图像);y1,x1,z1=size(I2);I3=double(I2);TT=1;%去除图像顶端和底端的不感兴趣区域%Y1=zeros(y1,1); for i=1:y1 for j=1:x1 if(I3(i,j,1)=1) Y1(i,1)= Y1(i,1)+1 ; end end endPy1=1;Py0=1;while (Y1(Py0,1
13、)20)&(Py0=20)&(Py1y1) Py1=Py1+1; endI2=I2(Py0:Py1,:,:);subplot(3,2,6);imshow(I2),title(目标车牌区域);% 分割字符按行积累量%X1=zeros(1,x1);for j=1:x1 for i=1:y1 if(I3(i,j,1)=1) X1(1,j)= X1(1,j)+1; end end endfigure(5);plot(0:x1-1,X1),title(列方向像素点灰度值累计和),xlabel(列值),ylabel(累计像素量);Px0=1;Px1=1;%分割字符%for i=1:7 while (X1(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 车牌 号码 识别 程序代码

限制150内