基于matlab的车牌识别(含子程序)
(完整版)基于matlab的车牌识别(含子程序)
基于matlab的车牌识别系统一、对车辆图像进行预处理1.载入车牌图像:function [d]=main(jpg)[filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'});if(filename == 0), return, endglobal FILENAME %定义全局变量FILENAME = [pathname filename];I=imread(FILENAME);figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:2.将彩图转换为灰度图并绘制直方图:I1=rgb2gray(I);%将彩图转换为灰度图figure(2),subplot(1,2,1),imshow(I1);title('灰度图像');figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示:3. 用roberts算子进行边缘检测:I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测figure(3),imshow(I2);title('roberts 算子边缘检测图像');结果如下:4.图像实施腐蚀操作:se=[1;1;1];I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像');5.平滑图像se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个seI4=imclose(I3,se);% 图像聚类、填充图像figure(5),imshow(I4);title('平滑图像');结果如下所示:6. 删除二值图像的小对象I5=bwareaopen(I4,2000);% 去除聚团灰度值小于2000的部分figure(6),imshow(I5);title('从对象中移除小的对象');结果如下所示:二、车牌定位[y,x,z]=size(I5);%返回I5各维的尺寸,存储在x,y,z中myI=double(I5);%将I5转换成双精度tic %tic表示计时的开始,toc表示计时的结束Blue_y=zeros(y,1);%产生一个y*1的零阵for i=1:yfor j=1:xif(myI(i,j,1)==1)%如果myI(i,j,1)即myI的图像中坐标为(i,j)的点值为1,即该点为车牌背景颜色蓝色 %则Blue_y(i,1)的值加1Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计endendend[temp MaxY]=max(Blue_y);%Y方向车牌区域确定%temp为向量white_y的元素中的最大值,MaxY为该值的索引PY1=MaxY;while ((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%x方向车牌区域确定%%%%%% X方向 %%%%%%%%%Blue_x=zeros(1,x);%进一步确定x方向的车牌区域for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)= Blue_x(1,j)+1; endendendPX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;%对车牌区域的校正PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');%行方向车牌区域确定figure(7),subplot(1,2,2),imshow(dw),title('定位裁剪后的车牌彩色图像');的车牌区域如下所示:三、字符分割及处理1.车牌的进一步处理对分割出的彩色车牌图像进行灰度转换、二值化、均值滤波、腐蚀膨胀以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。
基于MATLAB的车牌识别程序详解..精要
(2)图像增强与边缘检测 figure(2),subplot(1,2,2),imhist(I1;title('灰度图直方图');)%显 示图像直方图,图像增强处理,直方图均衡 I2=edge(I1,'robert',0.15,'both');%将灰度图像用Robert算子计算, 间距0.15,方向水平,垂直两个方向,图像边缘处理,利用Robert算 子运算 figure(3),imshow(I2)%显示边缘处理后的;title('robert算子边缘检 测') se=[1;1;1];%创造一个维度矩阵,用于腐蚀单位扫描 I3=imerode(I2,se);%将I3灰度腐蚀,se为腐蚀算子 figure(4),imshow(I3);title('腐蚀后图像');%对裁剪好的图像进行 图像增强处理,利用腐蚀处理 se=strel('rectangle',[25,25]);%构建一个25为边长的正方形结构体 图
(一)图像预处理 收集到的图片一般为彩色图片,由于彩色图片占用存储容
量大,处理时间长,因此需要对图像进行灰度转换,将彩色图像转 换为灰度图像,灰度图像只保留亮度信息,方便使用,也为后面的 对图像进行二值化处理提供方便。
程序:I1=rgb2gray(I); rgb2gray,MATLAB中灰度图像转换函数,原图及处理后的
PX1=PX1+1; end %从上至下截取一段区域,区域上限位PY1 PX2=x; while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
《2024年基于MATLAB的车牌识别系统研究》范文
《基于MATLAB的车牌识别系统研究》篇一一、引言随着智能化交通系统的不断发展,车牌识别技术在现代交通管理中发挥着越来越重要的作用。
基于MATLAB的车牌识别系统研究,能够为智能交通系统提供准确、高效的车牌信息处理手段。
本文旨在介绍基于MATLAB的车牌识别系统的基本原理、方法以及实际应用。
二、车牌识别系统基本原理车牌识别系统主要包括图像预处理、车牌定位、字符分割和字符识别四个基本环节。
基于MATLAB的车牌识别系统采用数字图像处理技术,对采集到的车牌图像进行处理,以实现车牌的准确识别。
1. 图像预处理图像预处理是车牌识别系统的第一步,主要目的是去除图像中的噪声、增强图像的对比度,以便于后续的车牌定位和字符分割。
MATLAB提供了丰富的图像处理函数,如滤波、二值化、边缘检测等,可以有效地实现图像预处理。
2. 车牌定位车牌定位是车牌识别系统的关键环节,主要采用颜色分割、形态学方法、投影分析等方法。
在MATLAB中,可以通过颜色空间转换、阈值分割等手段,提取出车牌区域,为后续的字符分割和识别提供基础。
3. 字符分割字符分割是将车牌图像中的每个字符进行分离的过程。
在MATLAB中,可以采用投影法、连通域法等方法进行字符分割。
首先对车牌区域进行垂直投影,根据投影峰值的分布情况,确定每个字符的位置,然后进行水平投影,进一步确定每个字符的宽度,从而实现字符的精确分割。
4. 字符识别字符识别是车牌识别系统的最后一步,主要是对分割后的字符进行识别。
在MATLAB中,可以采用模板匹配、神经网络等方法进行字符识别。
模板匹配法是通过将待识别的字符与标准字符模板进行比对,找出最相似的字符作为识别结果。
神经网络法则是通过训练大量的样本数据,建立字符识别的模型,从而实现高精度的字符识别。
三、MATLAB在车牌识别系统中的应用MATLAB作为一种强大的数学计算软件,在车牌识别系统中发挥着重要作用。
首先,MATLAB提供了丰富的图像处理函数和算法库,可以方便地实现图像的预处理、车牌定位、字符分割和字符识别等过程。
基于MATLAB的车牌智能识别设计
基于MATLAB的车牌智能识别设计摘要:车牌智能识别技术是智能交通系统中的重要组成部分,能够提高交通管理效率和安全性。
本文基于MATLAB平台,设计了一种车牌智能识别系统,通过图像处理和模式识别技术实现车牌号码的准确识别。
该系统能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,具有较高的准确性和稳定性,可以有效应用于停车场管理、交通违法抓拍等领域。
关键词:车牌智能识别;MATLAB;图像处理;模式识别一、引言随着汽车数量的快速增长,交通拥堵和交通管理成为社会发展中的一大难题。
为了提高交通管理效率和安全性,智能交通系统得到了广泛的关注和应用。
车牌智能识别技术作为智能交通系统中的重要组成部分,能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,为交通管理和监控提供了重要的支持。
二、相关技术及方法1. 图像处理技术图像处理技术是车牌智能识别系统中的核心技术之一,主要包括灰度化、二值化、边缘检测、形态学处理等操作。
灰度化是将彩色图像转换为灰度图像,简化了图像信息的处理;二值化将灰度图像转换为二值图像,方便进行特征提取和分割操作;边缘检测可以准确提取车牌的轮廓信息;形态学处理可以用于去除图像中的噪声点和填充孔洞,提高字符的连通性。
2. 字符分割与特征提取字符分割是指将车牌图像中的字符分离出来,是车牌识别的关键步骤之一。
在字符分割后,需要进行字符的特征提取,包括字符的大小、形状、像素点分布等特征。
这些特征可以用于字符的识别和分类,提高识别的准确性和鲁棒性。
3. 模式识别算法模式识别算法是车牌智能识别系统中的另一个核心技术,主要包括基于模板匹配的模式识别、基于统计学习的模式识别、基于深度学习的模式识别等方法。
这些算法能够对字符进行准确的识别和分类,为车牌智能识别系统提供了强大的分析和识别能力。
三、车牌智能识别系统设计基于MATLAB平台,设计的车牌智能识别系统主要包括图像预处理、字符分割与特征提取、模式识别和结果输出四个主要模块。
基于matlab车牌的定位与分割识别程序概要
基于Matlab 的车牌定位与分割 经典算法I 二imread('car.jpg');I1=rgb2gray(l);%转化为灰度图像subplot(3,2,2),imshow(I1),title('灰度图像');I2=edge(I1,'robert',0.09,'both');%采用 robert 算子进行边缘检测 subplot(3,2,3),imshow(I2),title('边缘检测后图像');%读取图像figure 。
; subplot(3,2,1),imshow(l), title('原始图像');边绿检浪I 启图像se=[1;1;1]; %线型结构元素 I3=imerode(l2,se);%腐蚀图像subplot(3,2,4),imshow(l3),title('腐蚀后边缘图像');se=strel('recta ngle',[25,25]);矩形结构元素 I4=imclose(l3,se);%图像聚类、填充图像 subplot(3,2,5),imshow(I4),title('填充后图像');一5Hbwa「eaopen(一4200S % 卅弗W HM W 血、」丿-H 2000subp_0f(326二M X N H si z e (_5=_6Hdoub_e(_5xYlHzeros(y3_fonyf o r li-r xif(l6(i,j,1)==1)Y 1(i,1)= Y1(i,1)+1;endend[temp MaxY]=max(Y1);figure。
;subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'), xlabel('行值'),ylabel('像素');行值%求的车牌的行起始位置和终止位置PY 仁Max Y;while ((Y 1(PY1,1)>=50)&&(PY 1>1))PY 1=P Y1-1;endPY 2=Max Y;while ((Y 1(PY2,1)>=50)&&(PY2<y))endPY 2=P Y2+1;endIY=I(P Y1:P Y2,:,:);X1= zeros(1,x);for j=1:xfor i=PY1:PY2if(l6(i,j,1)==1)X1(1,j)= X1(1,j)+1;endend endsubplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'), xlabel('列值'),ylabel('像数');歹U方向像素点衣度值黒计环CT1OC%求的车牌的列起始位置和终止位置PX仁1;while ((X1(1,PX1)<3)&&(PX1<x))PX1= PX1+1;endPX2=x;O 2OD 400 600 800歹UfSwhile ((X1(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX仁PX1-1;PX2=PX2+1;%分割出车牌图像%dw=l(P Y1:P Y2,PX1:PX2,:);subplot(3,2,3),imshow(dw),title('定位剪切后的彩色车牌图像')定位剪切后的耘色车牌图像4.2车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。
车牌识别的matlab程序-(详细注释,并有使用注意点)
附录车牌识别程序clear ;close all;%Step1 获取图像装入待处理彩色图像并显示原始图像Scolor = imread('3.jpg');%imread函数读取图像文件%将彩色图像转换为黑白并显示Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图figure,imshow(Sgray),title('原始黑白图像');%Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数Bgray=imopen(Sgray,s);%打开sgray s图像figure,imshow(Bgray);title('背景图像');%输出背景图像%用原始图像与背景图像作减法,增强图像Egray=imsubtract(Sgray,Bgray);%两幅图相减figure,imshow(Egray);title('增强黑白图像');%输出黑白图像%Step3 取得最佳阈值,将图像二值化fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值bw22=im2bw(Egray,level);%转换图像为二进制图像bw2=double(bw22);%Step4 对得到二值图像作开闭操作进行滤波figure,imshow(bw2);title('图像二值化');%得到二值图像grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界figure,imshow(grd);title('图像边缘提取');%输出图像边缘bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像%Step5 对二值图像进行区域提取,并计算区域特征参数。
车牌识别的matlab程序(程序-讲解-模板)
clcclearclose allI=imread('chepai.jpg');subplot(3,2,1);imshow(I), title('原始图像');I_gray=rgb2gray(I);subplot(3,2,2),imshow(I_gray),title('灰度图像');%====================== 形态学预处理======================I_edge=edge(I_gray,'sobel');subplot(3,2,3),imshow(I_edge),title('边缘检测后图像');se=[1;1;1];I_erode=imerode(I_edge,se);subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像');se=strel('rectangle',[25,25]);I_close=imclose(I_erode,se); %图像闭合、填充图像subplot(3,2,5),imshow(I_close),title('填充后图像');I_final=bwareaopen(I_close,2000); %去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I_final),title('形态滤波后图像');%========================== 车牌分割============================= I_new=zeros(size(I_final,1),size(I_final,2));location_of_1=[];for i=1:size(I_final,1) %寻找二值图像中白的点的位置for j=1:size(I_final,2)if I_final(i,j)==1;newlocation=[i,j];location_of_1=[location_of_1;newlocation];endendendmini=inf;maxi=0;for i=1:size(location_of_1,1)%寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置temp=location_of_1(i,1)+location_of_1(i,2);if temp<minimini=temp;a=i;endif temp>maximaxi=temp;b=i;endendfirst_point=location_of_1(a,:); %和最小的点为车牌的左上角last_point=location_of_1(b,:); %和最大的点为车牌的右下角x1=first_point(1)+4; %坐标值修正x2=last_point(1)-4;y1=first_point(2)+4;y2=last_point(2)-4;I_plate=I(x1:x2,y1:y2);I_plate=OTSU(I_plate); %以OTSU算法对分割出的车牌进行自适应二值化处理I_plate=bwareaopen(I_plate,50);figure,imshow(I_plate),title('车牌提取') %画出最终车牌%========================= 字符分割============================X=[]; %用来存放水平分割线的横坐标flag=0;for j=1:size(I_plate,2)sum_y=sum(I_plate(:,j));if logical(sum_y)~=flag %列和有变化时,记录下此列X=[X j];flag=logical(sum_y);endendfigurefor n=1:7char=I_plate(:,X(2*n-1):X(2*n)-1); %进行粗分割for i=1:size(char,1) %这两个for循环对分割字符的上下进行裁剪if sum(char(i,:))~=0top=i;breakendendfor i=1:size(char,1)if sum(char(size(char,1)-i,:))~=0bottom=size(char,1)-i;breakendendchar=char(top:bottom,:);subplot(2,4,n);imshow(char);char=imresize(char,[32,16],'nearest'); %归一化为32*16的大小,以便模板匹配eval(strcat('Char_',num2str(n),'=char;')); %将分割的字符放入Char_i中end%========================== 字符识别============================= char=[];store1=strcat('京','津','沪','渝','冀','晋','辽','吉','黑','苏','浙'... %汉字识别,'皖','闽','赣','鲁','豫','鄂','湘','粤','琼','川','贵','云','陕'...,'甘','青','藏','桂','皖','新','宁','港','鲁','蒙');for j=1:34Im=Char_1;Template=imread(strcat('chinese\',num2str(j),'.bmp')); %chinese文件附在最后Template=im2bw(Template);Differ=Im-Template;Compare(j)=sum(sum(abs(Differ)));endindex=find(Compare==(min(Compare)));char=[char store1(index)];store2=strcat('A','B','C','D','E','F','G','H','J','K','L','M','M','N','P','Q','R'...,'S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');for i=2:7 %字母数字识别for j=1:35Im=eval(strcat('Char_',num2str(i)));Template=imread(strcat('cha&num\',num2str(j),'.bmp')); %cha&num文件附在最后Template=im2bw(Template);Differ=Im-Template;Compare(j)=sum(sum(abs(Differ)));endindex=find(Compare==(min(Compare)));char=[char store2(index)];endfigure,imshow(I),title(strcat('车牌为:',char))信研-11 XX 2011301XXXXXX模式识别作业—车牌识别1、作业要求:要求:任给一幅符合假定的图片,自动识别出车牌号。
基于matlab的汽车牌照识别程序
基于matlab的汽车牌照识别程序基于matlab的汽车牌照识别程序摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。
关键词:车牌识别,matlab,神经网络1 引言随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。
它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。
由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。
2 车辆牌照识别系统工作原理车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。
3 车辆牌照识别系统组成(1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。
(2)车牌定位:从预处理后的汽车图像中分割出车牌图像。
即在一幅车辆图像中找到车牌所在的位置。
(3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像(4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。
《2024年基于MATLAB的车牌识别系统研究》范文
《基于MATLAB的车牌识别系统研究》篇一一、引言随着科技的发展,车牌识别系统在交通管理、安全监控、车辆定位等领域的应用越来越广泛。
MATLAB作为一种强大的编程语言和数据处理工具,被广泛应用于图像处理和机器视觉等领域。
本文旨在研究基于MATLAB的车牌识别系统,包括系统的基本原理、实现方法、实验结果和结论。
二、车牌识别系统的基本原理车牌识别系统是一种基于图像处理和机器视觉技术的自动识别系统。
其主要原理包括图像预处理、车牌定位、字符分割和字符识别四个部分。
在MATLAB中,这些过程通过数字图像处理算法、计算机视觉算法以及机器学习算法实现。
(一)图像预处理图像预处理是车牌识别系统的第一步,主要目的是消除图像中的噪声和干扰信息,提高图像的清晰度和对比度,以便后续的图像处理和分析。
常用的预处理方法包括灰度化、二值化、滤波等。
(二)车牌定位车牌定位是车牌识别系统的关键步骤,其主要目的是从图像中准确地检测出车牌的位置。
常用的车牌定位方法包括基于颜色特征的方法、基于形状特征的方法和基于模板匹配的方法等。
在MATLAB中,可以通过边缘检测、Hough变换等方法实现车牌的定位。
(三)字符分割字符分割是将车牌图像中的每个字符分割出来的过程。
常用的字符分割方法包括投影法、连通域法等。
在MATLAB中,可以通过图像形态学操作、阈值分割等方法实现字符的分割。
(四)字符识别字符识别是将分割后的字符进行分类和识别的过程。
常用的字符识别方法包括模板匹配法、神经网络法等。
在MATLAB中,可以通过训练分类器、使用机器学习算法等方法实现字符的识别。
三、车牌识别系统的实现方法在MATLAB中,我们可以通过编写程序实现车牌识别系统的各个步骤。
具体实现方法如下:(一)图像预处理首先,对输入的图像进行灰度化和二值化处理,消除噪声和干扰信息。
然后,通过滤波等操作提高图像的清晰度和对比度。
(二)车牌定位通过边缘检测和Hough变换等方法检测出车牌的轮廓,并确定车牌的位置。
基于MATLAB的车牌识别系统研究
基于MATLAB的车牌识别系统探究摘要:随着交通的快速进步和车辆数量的增加,车牌识别系统在车辆管理和交通安全方面扮演着重要角色。
本文基于MATLAB平台,探究和设计了一种车牌识别系统,包括车牌图像的得到、预处理、特征提取和识别等关键技术。
试验结果表明,该系统可以有效地检测和识别车牌图像,并具有较高的识别准确率。
1. 引言车牌作为车辆唯一的标识符,在交通管理和公共安全中具有重要意义。
传统的车牌识别方式主要依靠人工进行,效率低下且容易出错。
近年来,随着计算机视觉和模式识别等技术的进步,基于计算机的车牌识别系统得到广泛应用。
本文旨在探究和设计一种基于MATLAB的车牌识别系统,以提高车辆管理和交通安全的效率和准确性。
2. 方法2.1 车牌图像的得到车牌图像的得到是车牌识别系统的第一步,可以通过摄像头或已有的车牌图像数据库进行得到。
本文使用摄像头采集车辆图像,并对图像进行预处理。
2.2 图像预处理图像预处理是车牌识别的基础,目标是消除图像中的噪声和干扰,提高图像的质量。
本文接受灰度化、二值化、去噪等方法对图像进行预处理。
2.3 特征提取特征提取是车牌识别系统的核心技术之一,依据车牌图像的特点提取有效的特征信息。
本文接受图像分割、轮廓提取和统计特征等方法进行特征提取。
2.4 车牌识别车牌识别是车牌识别系统的最终目标,通过对特征进行分类和匹配来实现对车牌的识别。
本文接受模式识别算法和机器进修方法进行车牌识别,并通过试验验证其准确性和可靠性。
3. 试验与结果本文基于MATLAB平台进行试验,接受了大量的车牌图像进行测试和验证。
试验结果表明,所设计的车牌识别系统在车牌图像的得到、预处理、特征提取和识别等方面具有较高的准确性和效率。
识别率达到了90%,满足了车辆管理和交通安全的需求。
4. 谈论与分析通过对试验结果的分析和对比,可以发现该系统在车牌识别的准确性和效率方面相对较好。
然而,该系统还存在一些问题和不足之处,如对光照和遮挡的敏感性,对多种车牌样式的识别能力等。
基于MATLAB的车牌识别系统
基于MATLAB的车牌识别系统
MATLAB是一款常用的科学计算软件,它具有强大的图像处理功能,因此可以用来实现一些基于图像的应用,如车牌识别系统。
以下是一个基于MATLAB的车牌识别系统的实现步骤:
1. 图像采集:使用摄像头或者其他图像采集设备获取车牌图像。
2. 图像预处理:对采集到的车牌图像进行预处理,实现图像的
灰度化、噪声去除、边缘检测等操作。
3. 车牌定位:在处理后的图像中,通过车牌的大小、形状以及
颜色等特征,确定车牌的位置和范围。
4. 字符切割:根据车牌的字符间距和字符大小等特征,将车牌
区域的字符进行切割和分离,得到每个字符的图像。
5. 字符识别:利用机器学习算法、神经网络等方法,对切割出
的字符进行识别,确定车牌号码。
6. 结果显示:将识别结果显示在屏幕上,以及保存结果。
需要注意的是,在识别车牌号码的过程中,需要大量的实例图
像和标注数据,用来进行训练和测试。
同时,对于车牌识别系统,
还需要考虑一些实际应用中的问题,如光线、角度、车速等因素对
图像质量的影响。
因此,需要设计合适的算法和方法,充分考虑实
际应用中的各种因素,提高识别准确度和可靠性。
毕业设计论文基于matlab的车牌识别系统的设计(附程序+详解注释)
车牌号识别系统是基于图像处理技术的基础进行研究的。本课题图像处理分为以下几方面:
1.图像数字化
其目的是将模拟形式的图像通过数字化设备变为数字计算机可用的离散的图像数据。
2.图像变换
为了达到某种目的而对图像使用一种数学技巧,经过变换后的图像更为方便、容易地处理和操作。
3.图像增强
图像增强的主要目标是改善图像的质量。采用某些处理技术来突出图像中的某些信息,削弱或消除某些无关信息,从而有目的地强调图像的整体或局部特征,让观察者能看到更加直接、清晰的分析和处理图像。直方图修正、灰度变换、强化图像轮廓等都是常用的手段。
车牌识别系统是一项科技含量很高的多种技术结合的产品,主要有计算机视觉、数字图像处理、数字视频处理、模式识别等技术组成。也是智能交通系统的核心技术,产生于60年代。在80年代,由于城市交通问题日益严重,美国和欧洲许多国家投入了大量的人力和物力,建立了自动化高速公路网,安装了摄像、雷达探测系统和光纤网络,简历智能交通系统。在美国、欧洲、日本等发达国家的带动下,世界各国也开始简历智能交通系统。由于公路车流量日益增大、道路交通日益拥挤,车辆管理相对越来越困难,因此各个发达国家和发展中国家都在积极建设适应未来交通运输需求的智能交通系统。
焦作大学
毕业设计(论文)说明书
作者:学号:
学院(系):信息工程学院
基于matlab的汽车牌照识别源程序
基于matlab的车牌识别的源程序clcclearfilename='E:\matlab7.0\car.jpg';%图片的路径I=im2gray(filename);%调用自编函数读取图像,并转化为灰度图象;tic%计时开始[height,width]=size(I);%预处理I_edge=zeros(height,width);%创建height*width矩阵for i=1:width-1%对每一列进行遍历I_edge(:,i)=abs(I(:,i+1)-I(:,i));%每列的值赋为原图像中左右两列相减的绝对值(即梯度)end%归一化处理(0~255)I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));[I_edge,y1]=select(I_edge,height,width);%%%%%%调用select函数选择图像的某个区域BW2 = I_edge;%%%%%%%%%%%%%%%%%一些形态学处理SE=strel('rectangle',[10,10]);%创建10*10的建构元素IM2=imerode(BW2,SE);%腐蚀IM2=bwareaopen(IM2,20);%删除小面积IM3=imdilate(IM2,SE);%膨胀%先腐蚀再膨胀,进行了开运算,消除小物体%%%%%%%%%%%%%%%%%%投影以粗略估计车牌位置p_h=projection(double(IM3),'h');%调用projection函数,水平方向if(p_h (1)>0)p_h=[0,p_h];endp_v=projection(double(IM3),'v');%调用projection函数,垂直方向if(p_v (1)>0)p_v=[0,p_v];end%%%%%%p_h=double((p_h>5));%水平方向p_h=find(((p_h(1:end-1)-p_h(2:end))~=0));len_h=length(p_h)/2;%%%%%p_v=double((p_v>5));%垂直方向p_v=find(((p_v(1:end-1)-p_v(2:end))~=0));len_v=length(p_v)/2;%%%%%%%%%%% %%%%%%%%%%%%%%%%%粗略计算车牌候选区k=1;for i=1:len_hfor j=1:len_vs=IM3(p_h(2*i-1):p_h(2*i),p_v(2*j-1):p_v(2*j));if(mean(mean(s))>0.1)p{k}=[p_h(2*i-1),p_h(2*i)+1,p_v(2*j-1),p_v(2*j)+1];k=k+1;endendendk=k-1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%进一步缩小车牌候选区for i=1:kedge_IM3=double(edge(double(IM3(p{i}(1):p{i}(2),p{i}(3):p{i}(4))),'canny'));[x,y]=find(edge_IM3==1); p{i}=[p{i}(1)+min(x),p{i}(2)-(p{i}(2)-p{i}(1)+1-max(x)),...p{i}(3)+min(y),p{i}(4)-(p{i}(4)-p{i}(3)+1-max(y))];p_center{i}=[fix((p{i}(1)+p{i}(2))/2),fix((p{i}(3)+p{i}(4))/2)];p_ratio(i)=(p{i}(4)-p{i}(3))/(p{i}(2)-p{i}(1));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对上面参数和变量的说明:p为一胞元,用于存放每个图像块的左上和右下两个点的坐标;%存放格式为:p{k}=[x1,x2,y1,y2];x1,x2分别为行坐标,y1,y2为列坐标%p_center为一胞元,用于存放每个图像块的中心坐标,p_center{k}=[x,y];x,y分别为行,列坐标%p_ratio为一矩阵,用来存放图像块的长宽比例%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%合并临近区域%%%%%%%%如果有多个区域则执行合并if k>1n=0;ncount=zeros(1,k);for i=1:k-1%%%需要调整if条件中的比例%%%需要调整%检查是否满足合并条件if(abs(p{i}(1)+p{i}(2)-p{i+1}(1)-p{i+1}(2))<=height/30&&abs(p{i+1}(3)-p{i}(4))<=width/15)p{i+1}(1)=min(p{i}(1),p{i+1}(1));p{i+1}(2)=max(p{i}(2),p{i+1}(2));p{i+1}(3)=min(p{i}(3),p{i+1}(3));(4)=max(p{i}(4),p{i+1}(4));%向后合并n=n+1;ncount(n)=i+1;endend%如果有合并,求出合并后最终区域if(n>0)d_ncount=ncount(2:n+1)-ncount(1:n);%避免重复记录临近的多个区域。
实验报告用MATLAB实现车牌识别系统
图像处置大作业实验报告--用MATLAB实现车牌识别系统作者东南大学电子系李浩翔 06006435指导教师张雄实验日期 2020-1-10索引:1.2.3.4.5.6.1.2.1.2.实验目的利用MATLAB对包括车牌的图片进行处置,利用算法识别出车牌所在的区域,并识别其数字及字母,最后在屏幕上输出所识别出的车牌号。
实验原理1.将拍照下的彩色图像转换为灰度图,以后用中值滤波对灰度图像进行预处置,从而减少干扰信息。
2.利用sobel算子识别出图像的边缘,并转化为二值化图像。
并对二值化以后的图像进行卷积,增强边缘的轮廓。
3.用膨胀-再侵蚀的方式别离作用于图像的横轴与纵轴,将小块的联通区域连接起来,使车牌的形状加倍清楚,为下一步的识别做好预备。
4.利用车牌长宽比的特性对各个联通区域进行判定,识别出车牌所在区域,并截取。
5.对截掏出的车牌区域进行进一步的处置,分割出各个字符。
6.对分割出的字符进行特点判定,从而识别出具体的车牌号。
实验步骤1.预处置A. 将拍照下的彩色图像转换为灰度图,便于进行接下来的算法处置。
图1 拍摄下的图片图2 转换的灰度图B.对灰度图进行中值滤波,减少干扰点对二值化运算结果的阻碍。
im_gray=medfilt2(im_gray,[3 3]);图3 进行中值滤波后的灰度图C.将中值滤波后的灰度图用设定门限灰度的方式(取门限值为转化为二值化图像,在后继的车牌区域截取运算中作为源图像利用。
Image = im2bw(im_gray, ;图4 使用设定灰度门限的方法获得的二值化图像2.边缘识别A.利用sobel算子识别出图3中的边缘区域,并将其转换为二值化图像。
在转换后的二值化图像中,边缘区域被作为白点标出,而非边缘区域被黑色区域覆盖。
BW = edge(im_gray,'sobel');图5 识别出的边缘区域B.利用卷积的方式,对图5的边缘区域进行增强,为下一步的运算做好预备。
基于Matlab的车牌识别系统
一、摘要随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。
汽车牌照的自动识别技术已经得到了广泛应用。
汽车牌照自动识别整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,其中字符识别过程主要由以下3个部分组成:①正确地分割文字图像区域;②正确的分离单个文字;③正确识别单个字符。
用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。
在研究的同时对其中出现的问题进行了具体分析,处理。
二、课程设计的任务和目的任务:使用MATLAB对包含车牌的图片进行处理,利用算法识别出车牌所在的区域,并辨认其数字及字母,最后在屏幕上输出所识别出的车牌号。
目的:1、让自己巩固理论课上所学的知识,理论联系实践。
2、锻炼自己的动手能力,激发自己的研究潜能,提高我们的协作精神。
三、设计原理由于车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有很高的识别正确率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并且要求满足实时性要求。
图1 牌照识别系统原理图该系统是计算机图像处理与字符识别技术在智能化交通管理系统中的应用,它主要由牌照图像的采集和预处理、牌照区域的定位和提取、牌照字符的分割和识别等几个部分组成,如图1 所示。
其基本工作过程如下:(1)当行驶的车辆经过时,触发埋设在固定位置的传感器,系统被唤醒处于工作状态;一旦连接摄像头光快门的光电传感器被触发,设置在车辆前方、后方和侧面的相机同时拍摄下车辆图像;(2)由摄像机或CCD 摄像头拍摄的含有车辆牌照的图像通视频卡输入计算机进行预处理,图像预处理包括图像转换、图像增强、滤波和水平较正等;(3)由检索模块进行牌照搜索与检测,定位并分割出包含牌照字符号码的矩形区域;(4)对牌照字符进行二值化并分割出单个字符,经归一化后输入字符识别系统进行识别。
数字图像处理车牌识别课程设计matlab实现附源代码
基于 matlab 的车牌识别系统一、目的与要求目的:利用 matlab 实现车牌识别系统,熟悉matlab应用软件的根底知识,了解了根本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深对理论知识的掌握,并把所学的知识系统、高效的贯穿到实践中来,防止理论与实践的脱离,稳固理论课上知识的同时,加强实践能力的提高,理论联系实践,提高自身的动手能力。
同时不断的调试程序也提高了自己独立编程水平,并在实践中不断完善理论根底,有助于自身综合能力的提高。
要求:1.理解各种图像处理方法确切意义。
2.独立进展方案的制定,系统构造设计要合理。
3.在程序开发时,那么必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。
如果使用matlab 来进展开发,要理解每个函数的具体意义和适用X围,在写课设报告时,必须要将主要函数的功能和参数做详细的说明。
4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。
二、设计的内容学习 MATLAB 程序设计,利用MATLAB 函数功能,设计和实现通过设计一个车牌识别系统。
车牌识别系统的根本工作原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进展预处理,再对牌照进展搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进展二值化并将其分割为单个字符,然后将其逐个与创立的字符模板中的字符进行匹配,匹配成功那么输出,最终匹配完毕那么输出那么为车牌的数字。
车牌识别系统的根本工作原理图如图1所下所示:车辆字符分割字符识别图像采集车牌的定位三、总体方案设计车辆牌照识别整个系统主要是由车牌定位和字符分割识别两局部组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割和单个字符识别两个模块。
为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的比照度和清晰可辩的牌照图象。
但由于是采用智能手机在开放的户外环境拍照,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进展识别前的预处理。
基于MATLAB平台下的车牌识别系统设计
3、实验改进
3、实验改进
根据实验结果,我们发现车牌定位和字符分割模块是影响系统性能的关键因 素。因此,我们计划从以下两个方面进行改进:
3、实验改进
1、针对车牌定位模块,尝试引入更多的特征提取方法,以便更准确地定位车 牌区域;
2、针对字符分割模块,研究更为稳健的连通域分析方法,减少误分割和漏分 割。
三、实验结果与分析
1、实验设置
1、实验设置
为了评估车牌识别系统的性能,我们构建了一个包含200张车牌图像的数据集, 其中包含了不同的光照条件、车牌位置和尺寸。评估指标主要包括准确率、召回 率和运行时间。
2、实验结果分析
2、实验结果分析
经过大量实验,我们得到了以下结果: 1、车牌定位模块的准确率为95%,召回率为90%;
1、需求分析
3、适应性:系统应能适应不同的环境条件,包括不同的光照条件、车牌位置 和车牌尺寸等;
1、需求分析
4、可靠性:系统应具备一定的可靠性,能够稳定运行,保证识别结果的准确 性。
2、总体设计
2、总体设计
在总体设计阶段,我们将车牌识别系统分解为以下几个模块: 1、车牌定位模块:该模块主要负责寻找并定位车牌区域,排除其他干扰因素;
基于MATLAB平台下的车牌识别 系统设计
01 一、引言
目录
02
二、车牌识别系统设 计
03 三、实验结果与分析
04 四、结论与展望
05 参考内容
一、引言
一、引言
随着社会的快速发展和科技的不断进步,智能化交通管理成为了研究的热点。 车牌识别系统作为智能化交通管理的重要组成部分,能够自动识别车辆身份,提 高交通监管能力和服务质量。本次演示将基于MATLAB平台,设计一套车牌识别系 统,旨在提高车牌识别的准确性和效率,为智能交通管理提供有力支持。
(完整word版)基于Matlab的车牌识别(完整版)
基于Matlab的车牌识别摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。
本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。
并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。
一、设计原理车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。
车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。
其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。
某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。
一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。
当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。
车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。
二、设计步骤总体步骤为:基本的步骤:a.车牌定位,定位图片中的车牌位置;b.车牌字符分割,把车牌中的字符分割出来;c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。
车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。
(1)车牌定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。
首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于matlab的车牌识别系统一、对车辆图像进行预处理1.载入车牌图像:function [d]=main(jpg)[filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'});if(filename == 0), return, endglobal FILENAME %定义全局变量FILENAME = [pathname filename];I=imread(FILENAME);figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:2.将彩图转换为灰度图并绘制直方图:I1=rgb2gray(I);%将彩图转换为灰度图figure(2),subplot(1,2,1),imshow(I1);title('灰度图像');figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示:3. 用roberts算子进行边缘检测:I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测figure(3),imshow(I2);title('roberts 算子边缘检测图像');结果如下:4.图像实施腐蚀操作:se=[1;1;1];I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像');5.平滑图像se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个seI4=imclose(I3,se);% 图像聚类、填充图像figure(5),imshow(I4);title('平滑图像');结果如下所示:6. 删除二值图像的小对象I5=bwareaopen(I4,2000);% 去除聚团灰度值小于2000的部分figure(6),imshow(I5);title('从对象中移除小的对象');结果如下所示:二、车牌定位[y,x,z]=size(I5);%返回I5各维的尺寸,存储在x,y,z中myI=double(I5);%将I5转换成双精度tic %tic表示计时的开始,toc表示计时的结束Blue_y=zeros(y,1);%产生一个y*1的零阵for i=1:yfor j=1:xif(myI(i,j,1)==1)%如果myI(i,j,1)即myI的图像中坐标为(i,j)的点值为1,即该点为车牌背景颜色蓝色 %则Blue_y(i,1)的值加1Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计endendend[temp MaxY]=max(Blue_y);%Y方向车牌区域确定%temp为向量white_y的元素中的最大值,MaxY为该值的索引PY1=MaxY;while ((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%x方向车牌区域确定%%%%%% X方向 %%%%%%%%%Blue_x=zeros(1,x);%进一步确定x方向的车牌区域for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)= Blue_x(1,j)+1; endendendPX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;%对车牌区域的校正PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');%行方向车牌区域确定figure(7),subplot(1,2,2),imshow(dw),title('定位裁剪后的车牌彩色图像');的车牌区域如下所示:三、字符分割及处理1.车牌的进一步处理对分割出的彩色车牌图像进行灰度转换、二值化、均值滤波、腐蚀膨胀以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。
代码如下:imwrite(dw,'彩色车牌.jpg');%将彩色车牌写入彩色车牌文件中a=imread('彩色车牌.jpg');%读取车牌文件中的数据b=rgb2gray(a);%将车牌图像转换为灰度图imwrite(b,'车牌灰度图像.jpg');%将灰度图像写入文件中figure(8);subplot(3,2,1),imshow(b),title('车牌灰度图像')g_max=double(max(max(b)));g_min=double(min(min(b)));T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值[m,n]=size(b);d=(double(b)>=T); % d:二值图像imwrite(d,'均值滤波前.jpg');subplot(3,2,2),imshow(d),title('均值滤波前')%均值滤波前% 滤波h=fspecial('average',3);%建立预定义的滤波算子,average为均值滤波,模板的尺寸为3*3d=im2bw(round(filter2(h,d)));%使用指定的滤波器h对h进行d即均值滤波imwrite(d,'均值滤波后.jpg');subplot(3,2,3),imshow(d),title('均值滤波后')% 某些图像进行操作% 膨胀或腐蚀% se=strel('square',3); % 使用一个3X3的正方形结果元素对象对创建的图像进行膨胀% 'line'/'diamond'/'ball'...se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵[m,n]=size(d);%返回矩阵b的尺寸信息,并存储在m,n中if bwarea(d)/m/n>=0.365 %计算二值图像中对象的总面积与整个面积的比是否大于0.365 d=imerode(d,se);%如果大于0.365则图像进行腐蚀elseif bwarea(d)/m/n<=0.235 %计算二值图像中对象的总面积与整个面积的比是否小于0.235d=imdilate(d,se);%如果小于则实现膨胀操作endimwrite(d,'膨胀或腐蚀处理后.jpg');subplot(3,2,4),imshow(d),title('膨胀或腐蚀处理后');运行结果如下所示:2.字符分割在汽车牌照自动识别过程中,字符分割有承前启后的作用。
它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。
字符识别的算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。
一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。
但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。
在此只进行了归一化处理,然后进行后期处理。
% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割%首先创建子函数qiege与getword,而后调用子程序,将车牌的字符分割开并且进行归一化处理d=qiege(d);[m,n]=size(d);% subplot(3,2,5),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;while j~=nwhile s(j)==0j=j+1;endk1=j;while s(j)~=0 && j<=n-1j=j+1;endk2=j-1;if k2-k1>=round(n/6.5)[val,num]=min(sum(d(:,[k1+5:k2-5]))); d(:,k1+num+5)=0; % 分割endend% 再切割d=qiege(d);% 切割出 7 个字符y1=10;y2=0.25;flag=0;word1=[];while flag==0[m,n]=size(d);left=1;wide=0;while sum(d(:,wide+1))~=0wide=wide+1;endif wide<y1 % 认为是左侧干扰d(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[1 1 wide m])); [m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:))); if two_thirds/all>y2flag=1;word1=temp;endd(:,[1:wide])=0;d=qiege(d);endend% 分割出第二个字符[word2,d]=getword(d);% 分割出第三个字符[word3,d]=getword(d);% 分割出第四个字符[word4,d]=getword(d);% 分割出第五个字符[word5,d]=getword(d);% 分割出第六个字符[word6,d]=getword(d);% 分割出第七个字符[word7,d]=getword(d);figure(9);subplot(2,7,1),imshow(word1),title('1');subplot(2,7,2),imshow(word2),title('2');subplot(2,7,3),imshow(word3),title('3');subplot(2,7,4),imshow(word4),title('4');subplot(2,7,5),imshow(word5),title('5');subplot(2,7,6),imshow(word6),title('6');subplot(2,7,7),imshow(word7),title('7');[m,n]=size(word1);% 商用系统程序中归一化大小为 40*20,此处演示word1=imresize(word1,[40 20]);word2=imresize(word2,[40 20]);word3=imresize(word3,[40 20]);word4=imresize(word4,[40 20]);word5=imresize(word5,[40 20]);word6=imresize(word6,[40 20]);word7=imresize(word7,[40 20]);subplot(2,7,8),imshow(word1),title('1'); subplot(2,7,9),imshow(word2),title('2'); subplot(2,7,10),imshow(word3),title('3'); subplot(2,7,11),imshow(word4),title('4'); subplot(2,7,12),imshow(word5),title('5'); subplot(2,7,13),imshow(word6),title('6'); subplot(2,7,14),imshow(word7),title('7'); 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');运行结果如下:四、车牌匹配识别模板匹配是图象识别方法中最具代表性的基本方法之一,它是将从待识别的图象或图象区域f(i,j)中提取的若干特征量与模板T(i,j)相应的特征量逐个进行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示期间相似程度最高,可将图象归于相应的类。