基于matlab车牌的定位与分割识别程序

上传人:ni****g 文档编号:511008905 上传时间:2023-03-20 格式:DOC 页数:16 大小:594.50KB
返回 下载 相关 举报
基于matlab车牌的定位与分割识别程序_第1页
第1页 / 共16页
基于matlab车牌的定位与分割识别程序_第2页
第2页 / 共16页
基于matlab车牌的定位与分割识别程序_第3页
第3页 / 共16页
基于matlab车牌的定位与分割识别程序_第4页
第4页 / 共16页
基于matlab车牌的定位与分割识别程序_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于matlab车牌的定位与分割识别程序》由会员分享,可在线阅读,更多相关《基于matlab车牌的定位与分割识别程序(16页珍藏版)》请在金锄头文库上搜索。

1、基于Matlab的车牌定位与分割经典算法I=imread(car.jpg); %读取图像figure(); subplot(3,2,1),imshow(I), title(原始图像);I1=rgb2gray(I);%转化为灰度图像subplot(3,2,2),imshow(I1),title(灰度图像);I2=edge(I1,robert,0.09,both);%采用robert算子进行边缘检测subplot(3,2,3),imshow(I2),title(边缘检测后图像);se=1;1;1; %线型结构元素 I3=imerode(I2,se); %腐蚀图像subplot(3,2,4),ims

2、how(I3),title(腐蚀后边缘图像);se=strel(rectangle,25,25); 矩形结构元素I4=imclose(I3,se);%图像聚类、填充图像subplot(3,2,5),imshow(I4),title(填充后图像);I5=bwareaopen(I4,);%去除聚团灰度值小于的部分subplot(3,2,6),imshow(I5),title(形态滤波后图像);y,x,z=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

3、 end end temp MaxY=max(Y1); figure(); subplot(3,2,1),plot(0:y-1,Y1),title(行方向像素点灰度值累计和),xlabel(行值),ylabel(像素); %求的车牌的行起始位置和终止位置 PY1=MaxY; while (Y1(PY1,1)=50)&(PY11) PY1=PY1-1; end PY2=MaxY; while (Y1(PY2,1)=50)&(PY2y) PY2=PY2+1; end IY=I(PY1:PY2,:,:); X1=zeros(1,x); for j=1:x for i=PY1:PY2 if(I6(i,

4、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(像数);%求的车牌的列起始位置和终止位置PX1=1; while (X1(1,PX1)3)&(PX1x) PX1=PX1+1; end PX2=x; while (X1(1,PX2)PX1) PX2=PX2-1; end PX1=PX1-1; PX2=PX2+1; %分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:); subplot(3,2,3),imshow(dw)

5、,title(定位剪切后的彩色车牌图像)4.2 车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。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);I1=im2bw(I1,T/256);subplot(3,2,4);imshow(I1)

6、,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)20)&(Py0=20)&(Py1y1) Py1=Py1+1; endI2=I2(Py0:Py1

7、,:,:);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(1,Px0)3)&(Px0=3)&(Px1x1)|(Px1-Px0)10) Px1=Px1+1; e

8、nd 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; otherwise PIN6=Z; end figure(3); subplot(1,7,i); imshow(Z); Px0=Px1;Endfunction inpt = pretreatment(I)%YUCHULI Summary of this function goes here% Detailed

9、 explanation goes hereif isrgb(I) I1 = rgb2gray(I);else I1=I;endI1=imresize(I1,50 20);%将图片统一划为50*20大小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); endend%神经网络进行识别。close all;clear all;%归一化训练样本%I0=pretreatment(imread(0.jpg);I1=pretreatment

10、(imread(1.jpg);I2=pretreatment(imread(2.jpg);I3=pretreatment(imread(3.jpg);I4=pretreatment(imread(4.jpg);I5=pretreatment(imread(5.jpg);I6=pretreatment(imread(6.jpg);I7=pretreatment(imread(7.jpg);I8=pretreatment(imread(8.jpg);I9=pretreatment(imread(9.jpg);I10=pretreatment(imread(A.jpg);I11=pretreatme

11、nt(imread(C.jpg);I12=pretreatment(imread(G.jpg);I13=pretreatment(imread(L.jpg);I14=pretreatment(imread(M.jpg);I15=pretreatment(imread(R.jpg);I16=pretreatment(imread(H.jpg);I17=pretreatment(imread(N.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

12、=newff(minmax(P),1000,32,18,logsig,logsig,logsig,trainrp);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.;net=init(net);%训练样本%net,tr=train(net,P,T);%测试%I=imread(DSC01323.jpg);I=imread(DSC01344.jpg);dw=location(I);%车牌定位PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit(dw);%字符分割及处理%测试字符,得到识别数值%PIN0=pretreatment

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号