资源描述:
《车牌识别系统MATLAB源代码完整.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.clc;clearall;closeall;[filename,pathname,filterindex]=uigetfile({'*.jpg;*.tif;*.png;*.gif','AllImageFiles';...'*.*','AllFiles'},'选择待处理图像',...'images 1.jpg');file=fullfile(pathname,filename);%文件路径和文件名创建合成完整文件名id=Get_Id(file);%得到file中的所有对象Img=imread(file);%根据路径和文件名读取图片到I
2、mg[Plate,bw,Loc]=Pre_Process(Img);%车牌区域预处理result=Plate_Process(Plate,id);%车牌区域二值化处理%寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割bw=Segmation(result);words=Main_Process(bw);%主流程处理Write_Mask(words,id);%写出到模板库str=Pattern_Recognition(words);%识别functionid=Get_Id(file)%获取图像id信息%输入参数:%
3、file——图像路径%输出参数:%id——图像id信息info=imfinfo(file);FS=[422227354169293184235413214202...13093849006112029798686137193...8055846208699475811062115...5907252168604575397950223];id=find(FS==info.FileSize);ifisempty(id)warndlg('未建立该图像模板库,可能运行出错!','警告');id=1;endfunctionR=Cubic_Spl
4、ine(P)%三次样条插值%输入参数:%P——节点矩阵%输出参数:%R——样条节点矩阵Word文档.%计算相邻插值点之间的弦长chordlen=sqrt(sum(diff(P,[],1).^2,2));%将弦长参数归一化到[0,1]上chordlen=chordlen/sum(chordlen);%计算每个插值节点处的累加弦长,作为给点处的参数cumarc=[0;cumsum(chordlen)];x=cumarc;N=size(P,1);R=[];%以下部分为一元三次样条插值的程序,对于空间三维数据,以同样的累加%弦长作为参数,对x,
5、y,z分量做三次一元样条插值得到的结果便是对三维数据%做三次样条插值fork=1:size(P,2)y=P(:,k);m=zeros(1,N);M=zeros(1,N);n=m;d=m;A=eye(N);A=2*A;m(1)=1;n(N)=1;m(N)=1;n(1)=1;fori=2:N-1m(i)=(x(i+1)-x(i))/(x(i+1)-x(i-1));n(i)=1-m(i);d(i)=6*((y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1))/(x(i)-x(i-1)))/(x(i+1)-x(i-1
6、));endforj=1:N-1A(j,j+1)=m(j);A(j+1,j)=n(j+1);endp=A(2:N-1,2:N-1);q=d(2:N-1);Q=inv(p)*q';M=zeros(1,N);M(1,1)=0;M(1,N)=0;M(1,2:N-1)=Q;S=[];Word文档.temp=[];fori=1:N-1%对每一个分量计算出来的插值曲线进行采样,以便将其画出。s=50;%采样点个数z=linspace(x(i),x(i+1),s);h=x(i+1)-x(i);forj=1:length(z)S(j)=M(i)*((x
7、(i+1)-z(j))^3)/(6*h)+M(i+1)*((z(j)-x(i))^3)/(6*h)+(y(i)-M(i)*(h^2)/6)*((x(i+1)-z(j))/h)+(y(i+1)-M(i+1)*h^2/6)*((z(j)-x(i))/h);endtemp=[tempS];endR(:,k)=temp;endfunctionmask=Get_PointSplineMask(Img,Ptn)%获取封闭有序节点的蒙板图像%Img——图像矩阵%Ptn——封闭有序节点%输出参数:%mask——蒙板图像ifndims(Img)==3I=
8、rgb2gray(Img);elseI=Img;endmask=zeros(size(I));Ptn=Cubic_Spline(Ptn);%样条插值fori=1:size(Ptn,1)-1pt1=Ptn(i