当前位置:文档之家› 基于matlab的车牌识别系统的设计与实现(1)

基于matlab的车牌识别系统的设计与实现(1)

基于matlab的车牌识别系统的设计与实现(1)
基于matlab的车牌识别系统的设计与实现(1)

图形图像处理与应用

课程设计报告

目录

引言 (2)

1.设计原理 (2)

2.系统框架结构 (2)

2.1工作流程 (3)

3.设计步骤 (4)

3.1设计方案 (4)

4.各模块的实现 (4)

4.1图像预处理 (4)

4.1.1图像灰度化 (4)

4.1.2图像的边缘检测 (5)

4.2车牌定位和分割 (7)

4.2.1车牌的定位 (7)

4.2.2车牌的分割 (9)

4.2.3对定位后的彩色车牌的进一步处理 (9)

4.3字符的分割和归一化处理 (11)

4.3.1字符的分割 (11)

4.3.2字符的归一化处理 (12)

5实验结果和分析 (12)

6.实验总结 (14)

主要参考文献 (15)

附录 (16)

实验体会 (21)

基于MATLAB的车牌识别系统的设计

——字符分割的设计

引言介绍当前的发展背景

车辆的牌照是机动车的识别标志,在交通管理中有着重要的作用。通过汽车车牌识别系统可以监控车辆的信息和行驶状况,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。该系统主要有两大模块:图像处理模块和字符识别模块。本文主要对图像处理模块进行设计和研究。图像处理模块的质量好坏更是衡量整个系统成功与否的关键。MATLAB语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。

1.设计原理

车牌识别系统的摄像头通过对经过指定区域的机动车辆进行拍照,因为照片会受到光照、拍摄位置和车辆行驶速度的影响,导致拍摄的图片不能准确的确定汽车的车牌。而车牌识别系统就通过对机动车辆的照片进行图像预处理、车牌定位、字符分割、字符识别等技术手段,从而得到清晰的机动车牌照的照片,从而提高现代智能交通的管理效率,可以说车牌识别系统对于现代智能交通至关重要。

2.系统框架结构

汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。

图2-1车牌识别系统工作流程图

2.1工作流程:

触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。其中线圈触发和视频触发得到了广泛的应用。

图像采集:该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行拍照并借助网络传送到汽车自动识别系统。

图像预处理:该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。

车牌定位:是指对预处理过的汽车图片进行处理,把车牌部分进行定位,把无用的部分去除,得到定位好的车牌图片。

字符分割:对已经定位的车牌图片的进行字符分割,将车牌分割为7个单一的字符图片

字符识别:将已经分割出来的七个字符进行识别。

输出结果:输出识别结果,并进行数据存储。

3.设计步骤

3.1.设计方案:

该系统主要是由图像处理和字符识别两部分组成。其中图像处理部分包括图像预处理、边缘提取模块、牌照的定位以及分割模块。字符识别部分可以分为字符分割与特征提取和单个字符识别两个模块。

字符识别部分要求照片清晰,但由于该系统的摄像头长时间在室外工作,加上光照条件、摄像头角度和距离、车辆自身条件以及车辆的行驶速度的影响,想拍出较理想的图片很困难。因此,我们要对摄像头拍摄的图片进行预处理,主要包括图片灰度化和图片边缘提取等。

车牌定位和车牌分割是整个系统的关键,其作用是在经图象预处理后的灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。

车牌识别系统的最终目的就是将不清楚的车牌照片进行识别,输出清晰的图片。现在字符识别的常用方法有模板匹配法和神经网络模型法。

4.各模块的实现

车牌识别系统包括图像采集、图像预处理、车牌定位、字符分割、字符识别等模块,本文主要研究图像预处理、车牌定位和字符分割三个模块。

4.1图像预处理

4.1.1图像灰度化:

因为车牌识别系统的摄像头拍摄的图片是彩色的,图片的背景颜色有时和车牌的颜色相似,而且彩色图片会占用较大的存储空间,使计算机处理速度变慢,加重计算机负担,所以我们要对拍摄的照片进行灰度化处理。

对于将彩色图像转换成灰度图像时,

目前比较主流的灰度化方法叫平均值法,公式为: H=0.229R+0.588G+0.144B 公式中H表示灰度图的亮度值;R代表彩色图像红色分量值;G代表色彩图像绿色分量值;B代表彩色图像蓝色分量值。RGB

三分量前的系数为经验加权值。加权系数的取值建立在人眼的视觉模型之上。对于人眼较为敏感的绿色取较大的权值;

对人眼较为不敏感的蓝色则取较小的权值。通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。

在MATLAB中我们可以调用im2gray函数对图像进行灰度化处理。

4.1.2图像的边缘检测:

边缘是指图像灰度发生空间突变或者在梯度方向上发生突变的像素的集合。用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,使其易于后面的分割和识别。通过良好的边缘检测可以大幅度的降低噪声、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。

由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。本文采用经典的Roberts边缘检测算子来对图像进行边缘检测。

灰度化和边缘检测的MATLAB程序如下:

I=imread('zhaopian.jpg');

figure(1),imshow(I);title('原图')

I1=rgb2gray(I);

figure(2),imshow(I1);title('灰度图');

I2=edge(I1,'robert',0.15,'both');

figure(3),imshow(I2);title('Robert边缘检测')

图4-1 原始图片

图4-2 灰度图

图4-3 Robert算子边缘检测

4.2车牌定位和分割

该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。所以我们要对照片进行车牌定位和分割。车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,因此很容易用边缘检测来对图像进行分割。车牌定位和分割的准确度直接关系到最后的字符识别的质量。

图4-4车牌定位流程图

4.2.1车牌定位

机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。本文采用的是用数学形态学来进行图像处理和模式识别。数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比

较平滑,提取的图像骨架也比较连续,断点少。现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。

图4-5腐蚀后的图像

图4-6.平滑图像的轮廓

图4-7从对象中移除小对象后图像

4.2.2车牌分割

本文车牌部分的分割采用的是利用车牌彩色信息的彩色分割法。使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB对应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,确定车牌在行方向的区域。然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。

图4-8车牌对位的图像

4.2.3对定位后的彩色车牌的进一步处理

定位后车牌图像是彩色的,会占用较大的存储空间,加重计算机负担。且车辆图片不可避免存在噪声,所以要对图像进行灰度化,二值化以及滤波处理。图像的二值化处理就是将图像上的点的灰度置为两个数值,通常为0或255,使整个图像呈现出明显的黑白效果。也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像。滤波则是为了除去图像噪声。滤波方法有多种,本文采取的滤波方法为均值滤波。均值滤波是典型的线性滤波算法,指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。

图4-9车牌的进一步处理

4.3字符分割与归一化

图4-10.字符分割和归一化流程图

4.3.1字符分割

将得到的车牌区域图像进行二值化处理后,对图像进行垂直投影,投影图上有明显的类似于峰谷的波形起伏变化,

通过对投影图上的波形从左向右进行扫描,根据谷和峰的特征就可以判断出每个字符的位置;计算垂直峰,检测合理的字符高宽比。在字符切割时,往往由于阈值取得不好,导致字符切割不准确,针对这种情况,可以对切割出的字符宽度进行统计分析,用以指导切割,对因错误切割过宽的字符进行分裂处理。

图4-11.字符分割后的图像

4.3.2字符归一化处理

由于数码相机拍摄的汽车图像大小不一样,

所以得到的牌照上的字符大小就不一样,为了便于字符的识别,需要对字符进行归一化处理。归一化处理的目的就是使车牌字符同标准模块里面的字符特征一样。而大小归一是指在长度和宽度方向上分别乘以一个比例因子,使其等于标准模块的字符大小,本文采用的大小归一的方法是分别从水平投影和垂直投影两个方向上对字符象素的大小进行归一化处理。

图4-12字符归一化后的图像

5.实验结果和分析:

通过以上实验步骤,我对多幅车牌图像进行了字符分割,字符分割的效果比较理想。下图为另一组实验组图。

图5-1 另一组实验结果组图

字符分割效果理想主要取决于识别系统前期工作的到位。将得到的机动车照片进行灰度化和边缘检测处理,运用良好的技术手段进行车牌定位,将定位好的图像进行字符分割处理,得到七个字符,将字符归一化处理。整个过程使用M ATLAB编程实现,能够直接调用函数,大大缩短了实验时间和编译难度。

对于分割出的车牌,我们进行了均值滤波,膨胀和腐蚀处理,这样可以把字符之间的杂色点去掉,只留下白色的字符以及黑色的背景,这对于字符的分割是相当的必要的。

在实验过程中,也出现了字符分割错误的情况,根据分析,造成错误情况的原因主要有:1.图像质量不高,导致分割出的车牌字符大小不一。2.车辆牌照的分割失败,尤其是车牌上第一个字符汉字的分割,常常因为过大或者过小导致分割失败。总体来说,分割出正确的字符的成功率还是蛮高的,如果再能够提高图像质量,分割正确字符的成功率还能够得到提升。

6.实验总结

通过对车牌识别的设计与研究,我觉得有几个方面还可以进行改进。首先如何将车牌进行定位以及将定位好的车牌分割出来。常见的车牌定位方法有边缘检测定位算法,利用哈夫变换进行车牌定位以及色彩分割提取车牌等,本文采用的是边缘检测定位算法。还有字符的分割,本文采用的是投影分割法,常见的方法聚类分割法以及基于模板匹配的分割方法。我认为对于以上各模块的实现,应该采用多种实验对照,看对于不同情况的照片质量,哪种算法更好,因为,以上处理方法都有自己的侧重方面,对于不同的图片,各种算法的优势是不同的,所以我觉得,对于实际应用的车牌识别系统,应该是具有复杂结构,对

于拍摄到的车辆照片进行分析,选择更适合的算法来实现车牌的识别,这才是未来车牌识别系统的发展方向。

主要参考文献

1. 白利波车牌检测与识别算法研究[D]北京交通大学,2007,30-31.

2. 谢盛嘉梁竞敏车牌识别系统的设计与实现[J]微计算机信息 2010(6)

3. 王刚冀小平

基于MATLAB的车牌识别系统的研究[J]电子设计工程2009(11)

4. 王广宇车辆牌照识别系统的原理及算法研究[D]郑州大学 2000

5.崔江

王友仁.车牌自动识别方法中的关键技术研究[J]计算机测量与控制,2003.11(4)

6. 许志影

李晋平.MATLAB在图像处理中的应用[J].计算机与现代化,2004(4)

7.刘卫国 MATLAB程序设计与应用[M].北京:高等教育出版社,2002

8. 成瑜汽车牌照自动识别技术研究[J].南京航空航天大学学报,2006,4:29-30

程序附录:I=imread('zhaopian.jpg');

figure(1),imshow(I);title('原图')

I1=rgb2gray(I);

figure(2),imshow(I1);title('灰度图');

I2=edge(I1,'robert',0.15,'both');

figure(3),imshow(I2);title('robert算子边缘检测')

se=[1;1;1];

I3=imerode(I2,se);

figure(4),imshow(I3);title('腐蚀后图像');

se=strel('rectangle',[25,25]);

I4=imclose(I3,se);

figure(5),imshow(I4);title('平滑图像的轮廓');

I5=bwareaopen(I4,2000);

figure(6),imshow(I5);title('从对象中移除小对象'); [y,x,z]=size(I5);

myI=double(I5);

tic

Blue_y=zeros(y,1);

for i=1:y

for j=1:x

if(myI(i,j,1)==1)

Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计 end

end

end

[temp MaxY]=max(Blue_y);%Y方向车牌区域确定

PY1=MaxY;

while ((Blue_y(PY1,1)>=5)&&(PY1>1))

PY1=PY1-1;

end

PY2=MaxY;

while ((Blue_y(PY2,1)>=5)&&(PY2

PY2=PY2+1;

end

IY=I(PY1:PY2,:,:);

%%%%%% X方向 %%%%%%%%%

Blue_x=zeros(1,x);%进一步确定x方向的车牌区域

for j=1:x

for i=PY1:PY2

if(myI(i,j,1)==1)

Blue_x(1,j)= Blue_x(1,j)+1;

end

end

end

PX1=1;

while ((Blue_x(1,PX1)<3)&&(PX1

PX1=PX1+1;

end

PX2=x;

while ((Blue_x(1,PX2)<3)&&(PX2>PX1))

PX2=PX2-1;

end

PX1=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('定位后的彩色车牌图像') imwrite(dw,'dw.jpg');

[filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像'); jpg=strcat(filepath,filename);

a=imread('dw.jpg');

b=rgb2gray(a);

imwrite(b,'1.车牌灰度图像.jpg');

figure(8);imshow(b),title('1.车牌灰度图像')

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,'2.车牌二值图像.jpg');

figure(9),imshow(d),title('2.车牌二值图像')

figure(10),imshow(d),title('3.均值滤波前')

% 滤波

h=fspecial('average',3);

d=im2bw(round(filter2(h,d)));

imwrite(d,'4.均值滤波后.jpg');

figure(11),imshow(d),title('4.均值滤波后')

% 某些图像进行操作

% 膨胀或腐蚀

% se=strel('square',3); %

使用一个3X3的正方形结果元素对象对创建的图像进行膨胀

% 'line'/'diamond'/'ball'...

se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵

[m,n]=size(d);

if bwarea(d)/m/n>=0.365

d=imerode(d,se);

elseif bwarea(d)/m/n<=0.235

d=imdilate(d,se);

end

imwrite(d,'5.膨胀或腐蚀处理后.jpg');

figure(12),imshow(d),title('5.膨胀或腐蚀处理后')

%

寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割

d=qiege(d);

[m,n]=size(d);

figure,subplot(2,1,1),imshow(d),title(n)

k1=1;k2=1;s=sum(d);j=1;

while j~=n

while s(j)==0

j=j+1;

end

k1=j;

while 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

[m,n]=size(d);

left=1;wide=0;

while sum(d(:,wide+1))~=0

wide=wide+1;

end

if wide

d(:,[1:wide])=0;

d=qiege(d);

else

temp=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>y2

flag=1;word1=temp; % WORD 1

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),imshow(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');

基于MATLAB的车牌识别

liccode=char(['0':'9' 'A':'Z' '京津沪渝冀晋辽吉黑苏浙皖闽赣鲁豫鄂湘粤琼川贵云陕甘蒙新青藏桂宁港']); %建立自动识别字符代码表 l=1; [m2,n2]=size(subcol); for k=findmax-4:findmax+3 cleft=markcol5(k)-maxwidth/2; cright=markcol5(k)+maxwidth/2-2; if cleft<1 cleft=1; cright=maxwidth; end if cright>n2 cright=n2; cleft=n2-maxwidth; end SegBw1=sbw(rowtop:rowbot,cleft:cright); SegBw2 = imresize(SegBw1,[32 16]); %变换为32行*16列标准子图 if l==1 %第一位汉字识别 kmin=37; kmax=68; elseif l==2 %第二位A~Z 字母识别 kmin=11; kmax=36; elseif l>=3 & l<=5 %第三、四位0~9 A~Z字母和数字识别 kmin=1; kmax=36; else %第五~七位0~9 数字识别 kmin=1; kmax=10; end for k2=kmin:kmax fname=strcat('D:\sample\',liccode(k2),'.bmp'); SamBw2 = imread(fname,'bmp'); SubBw2 = SamBw2-SegBw2; Dmax=0; for k1=1:32 for l1=1:16 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax;

车牌识别地matlab程序

( 附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('');%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算子识别强度图像中的边界

基于MATLAB的车牌识别系统研究

上海交通大学 硕士学位论文 基于MATLAB的车牌识别系统研究 姓名:王璐 申请学位级别:硕士 专业:电工理论与新技术 指导教师:陈洪亮 20090101

基于MATLAB的车牌识别系统研究 摘 要 近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域,对国家的安全发展有很大的作用。虽然目前已有一些车牌识别系统相关产品出现,但是对其算法的研究发展从没有停止,仍有许多学者在做着进一步的研究改进。 本文首先对车牌识别系统的现状和已有的技术进行了深入的研究,在研究的基础上开发出一个基于MATLAB的车牌识别系统。确定了整体设计方案,其中软件部分包括车牌定位、车牌字符切分及车牌字符识别三个模块。车牌定位模块中提出了基于小波变换的车牌边缘提取的算法,以及车牌二次定位的算法,提高了系统在光照条件较差的情况下的定位准确率,该算法对于各种底色的车牌具有良好的适应性;车牌的二值化采用了改进的Otus算法,重新划分了其两维直方图的区域,改进后的算法大大减少了运行时间,对于各种类型的车牌都能达到较好的二值化效果;针对BP神经网络字符识别算法,采用有动量的梯度下降法训练网络,减小了神经网络学习过程的振荡趋势,使得BP网络能够较快的达到收敛,完成车牌字符的识别。对模板匹配算法和BP网络算法进行对比,证明了BP网络算法要优于模板匹配算法。 根据上述算法搭建了一个测试平台。整个测试平台的软件部分采用MATLAB的M语言编写。通过测试平台,对353幅卡口汽车照片进行车牌识别,测试系统的性能。测试结果表明,本课题设计的车牌识别系统可有效地实现车牌识别,为今后的产品化奠定了很好的技术基础。 关键词:车牌识别,小波变换,Otsu算法,模板匹配,BP网络,MATLAB I

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

基于matlab的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 分院(系)信息科学与工程专业 学生姓名学号 设计题目车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。 1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。 2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。 3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。 进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 20周:课程设计验收与答辩 指导教师(签字): 年月日学院院长(签字): 年月日 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置;

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。 基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小, 然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 clear ; close all;

matlab车牌识别程序代码

% 车牌识别程序主体 clc; close all; clear all; %========================================================== %说明: % % %=========================================================== % ==============测定算法执行的时间,开始计时================= tic %%%%%记录程序运行时间 %=====================读入图片================================ [fn,pn,fi]=uigetfile('*.jpg','选择图片'); I=imread([pn fn]); figure; imshow(I); title('原始图像');%显示原始图像 chepailujing=[pn fn] I_bai=I; [PY2,PY1,PX2,PX1]=caitu_fenge(I); % I=rgb2hsv(I); % [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色 %================分割车牌区域================================= %===============车牌区域根据面积二次修正====================== [PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1); %==============更新图片============================= Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu %==============考虑用腐蚀解决蓝色车问题============= bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像 %==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像'); %================倾斜校正====================== qingxiejiao=rando_bianhuan(bw) bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转 %============================================== bw=im2bw(bw,graythresh(bw));%figure,imshow(bw); bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw); bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');

车牌识别的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]));%取矩形框的开运算

车牌识别的matlab程序(程序-讲解-模板)

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=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('填充后图像

for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_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;

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global 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]);%构造结构元素以正方形构造一个se

基于Matlab的车牌识别实现源码

function[]=main(jpg) close all clc tic %测定算法执行的时间 [fn,pn]=uigetfile('timg1,jpg','选择图片') %读入图片 I=imread([pn,fn]); figure,imshow(I);title('原始图像'); %显示原始图像 Im1=rgb2gray(I); figure(2), subplot(1,2,1), imshow(Im1); title('灰度图'); figure(2), subplot(1,2,2), imhist(Im1); title('灰度图的直方图'); %显示图像的直方图 Tiao=imadjust(Im1,[0.19,0.78],[0,1]); %调整图片 figure(3), subplot(1,2,1), imshow(Tiao);title('增强灰度图'); figure(3), subplot(1,2,2), imhist(Tiao); title('增强灰度图的直方图'); Im2=edge(Tiao,'Roberts','both'); %使用sobel算子进行边缘检测figure(4), imshow(Im2); title('sobel算子实现边缘检测') se=[1;1;1]; Im3=imerode(Im2,se); figure(5), imshow(Im3);

se=strel('square',40);%'rectangle',[25,25]/'diamond',25/ Im4=imclose(Im3,se); figure(6), imshow(Im4); title('平滑图像的轮廓'); Im5=bwareaopen(Im4,1500); figure(7), imshow(Im5); title('移除小对象'); [y,x,z]=size(Im5); %返回Im5各维的尺寸,并存储在变量y、x、z中 Im6=double(Im5); %将Im5换成双精度数值 %开始横向扫描 tic %tic计时开始,toc结束,计算tic与toc之间程序的运行时间 Blue_y=zeros(y,1); %产生y*1的全0矩阵 for i=1:y %逐行扫描 for j=1:x if(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域, Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1, end end end [temp MaxY]=max(Blue_y);%temp为向量Blue_y的矩阵中的最大值,MaxY为该值的索引(最大值在向量中的位置) %返回包含最大元素的列,即白色区域最宽的列 %Y方向车牌区域确定 figure(8),subplot(1,2,1), plot(0:y-1,Blue_y),title('行方向白色像素点累计'),xlabel('行数'),ylabel('个数'); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2

基于Matlab的车牌识别算法

基于Matlab的车牌识别算法 摘要 车牌系统是计算机视觉和模式识别技术在智能交通领域的重要应用课题之一。车牌识别系统是以特定目标为对象的专用计算机系统,该系统主要包括三个内容:车牌定位、字符分割和字符识别。其中车牌定位的目的就是从所拍摄的汽车图像中确定车牌的位置,从而便于后续的字符分割和字符识别工作。目前常用的方法有:基于模板匹配的方法、基于特征的方法和神经网络法等。 本设计采用基于模板匹配算法和基于人工神经网络算法对车牌进行定位识别,此算法只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,。此算法分割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一致所带来的问题。但对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0)。 关键词:车牌识别系统;字符分割;车牌定位

LICENSE PLATE RECOGNITION ALGORITHM BASED ON MATLAB ABSTRACT License plate system is a computer vision and pattern recognition technology in one of the important application research topic in the field of intelligent transportation. License plate recognition system based on specific goals of a special computer system, the system mainly includes three contents: license plate locating, character segmentation and character recognition. One of the purpose of license plate location is taken from the auto locate the license plate in the image, so as to facilitate the subsequent work character segmentation and character recognition. Now commonly used methods are: based on template matching method, based on the characteristics of the method and neural network, etc. This design USES based on template matching algorithm and based on artificial neural network algorithm to locate license plate recognition, the algorithm is only for blue white license plate segmentation recognition, the algorithm can be directly applicable in principle to the black white plate,. This algorithm to segment the image pixel values and template image, thus to avoid the cut out in the process of image pixel values are not consistent. But black on white background and black text plate, yellow bottom plate, adjustments need to license plate localization algorithm, and the image inversion of (0, 1, 1, 0). Key words: license plate recognition system; Character segmentation; License plate location

基于matlab的车牌定位源程序及运行结果 (1)

I=imread('E:\毕业设计\基于matlab的车牌定位的源程\车牌识别程序 \Car1.jpg') [y,x,z]=size(I); myI=double(I); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3) <=142)&&(myI(i,j,3)>=119))) Blue_y(i,1)= Blue_y(i,1)+1; end end end [temp MaxY]=max(Blue_y); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2=10))&&((myI(i,j,3) <=65)&&(myI(i,j,3)>=40))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1PX1)) PX2=PX2-1; end PX1=PX1-2; PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc figure,imshow(I); figure,plot(Blue_y);grid

最新车牌识别系统MATLAB源代码完整解析

clc; clear all; close all; [filename, pathname, filterindex] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';... '*.*','All Files' }, '选择待处理图像', ... 'images\01.jpg'); file = fullfile(pathname, filename);%文件路径和文件名创建合成完整文件名 id = Get_Id(file);%得到file中的所有对象 Img = imread(file);%根据路径和文件名读取图片到Img [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); % 识别 function id = Get_Id(file) % 获取图像id信息 % 输入参数: % file——图像路径 % 输出参数: % id——图像id信息 info = imfinfo(file); FS = [422227 354169 293184 235413 214202 ... 130938 490061 120297 98686 137193 ... 80558 46208 69947 58110 62115 ... 59072 52168 60457 53979 50223]; id = find(FS == info.FileSize); if isempty(id) warndlg('未建立该图像模板库,可能运行出错!', '警告'); id = 1; end function R = Cubic_Spline(P) % 三次样条插值 % 输入参数: % P——节点矩阵 % 输出参数: % R——样条节点矩阵

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。 一、设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。 二、设计步骤 总体步骤为: 车辆→图像采集→图像预处理→车牌定位

→字符分割→字符定位→输出结果 基本的步骤: a.车牌定位,定位图片中的车牌位置; b.车牌字符分割,把车牌中的字符分割出来; c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。 车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。 (1)车牌定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。 流程图: (2)车牌字符分割 : 完成车牌区域的定位后,再将车牌区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足车牌的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 导入原始图像 图像预处理增强效果图像 边缘提取 车牌定位 对图像开闭运算

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=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]; end end end mini=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 tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角

基于MATLAB的车牌识别课程设计

MATLAB课程设计报告书 课题名称基于MATLAB的车牌识别课程设计 姓名 学号 学院 专业 指导教师 2016年6月21日

基于MATLAB的车牌识别课程设计 目录 一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤…………………………………………… 四. 设计结果及分析………………………………………… 五. 总结……………………………………………………… 六. 设计体会………………………………………………… 七. 参考文献…………………………………………………

一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤:

1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合

车牌识别matlab程序[1]

[, pathname] = uigetfile({'*.jpg', 'JPEG文件(*.jpg)';'*.bmp','BMP文件(*.bmp)';}); if( == 0), return, end global %声明全局变量 = [pathname ]; I=imread(); imshow(I); %显示图像I I1=rgb2gray(I);%RGB图转化为灰度图 figure,imshow(I1); w1=medfilt2(I1); figure,imshow(w1); s1=histeq(w1,256); figure,imshow(s1); t1=imadjust(s1); figure,imshow(t1); I2=edge(t1,'robert',0.15,'both'); %用ROBERT算子提取图像边缘 figure,imshow(I2); se=[1;1;1]; I3=imerode(I2,se); %弱化二进制图像I2的边缘 figure,imshow(I3);%为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(下面两句) se=strel('rectangle',[25,20]); %用来腐蚀的形状为矩形,面积20*25 I4=imclose(I3,se); figure,imshow(I4); I5=bwareaopen(I4,2000); %去除图像中面积过小的,可以肯定不是车牌的区域。 figure,imshow(I5); [y,x,z]=size(I5); %z=1。y,x分别为I5图像的高和宽 myI=double(I5) %myI=I5; tic %begin横向扫描 white_y=zeros(y,1); %white_y为y行1列的零矩阵 for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为白色 %则white_y的相应行的元素white_y(i,1)值加1 white_y(i,1)= white_y(i,1)+1; end end end [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置)

相关主题
文本预览
相关文档 最新文档