基于matlab的车牌识别系统的设计.docx

上传人:b****0 文档编号:9195142 上传时间:2023-05-17 格式:DOCX 页数:22 大小:387.59KB
下载 相关 举报
基于matlab的车牌识别系统的设计.docx_第1页
第1页 / 共22页
基于matlab的车牌识别系统的设计.docx_第2页
第2页 / 共22页
基于matlab的车牌识别系统的设计.docx_第3页
第3页 / 共22页
基于matlab的车牌识别系统的设计.docx_第4页
第4页 / 共22页
基于matlab的车牌识别系统的设计.docx_第5页
第5页 / 共22页
基于matlab的车牌识别系统的设计.docx_第6页
第6页 / 共22页
基于matlab的车牌识别系统的设计.docx_第7页
第7页 / 共22页
基于matlab的车牌识别系统的设计.docx_第8页
第8页 / 共22页
基于matlab的车牌识别系统的设计.docx_第9页
第9页 / 共22页
基于matlab的车牌识别系统的设计.docx_第10页
第10页 / 共22页
基于matlab的车牌识别系统的设计.docx_第11页
第11页 / 共22页
基于matlab的车牌识别系统的设计.docx_第12页
第12页 / 共22页
基于matlab的车牌识别系统的设计.docx_第13页
第13页 / 共22页
基于matlab的车牌识别系统的设计.docx_第14页
第14页 / 共22页
基于matlab的车牌识别系统的设计.docx_第15页
第15页 / 共22页
基于matlab的车牌识别系统的设计.docx_第16页
第16页 / 共22页
基于matlab的车牌识别系统的设计.docx_第17页
第17页 / 共22页
基于matlab的车牌识别系统的设计.docx_第18页
第18页 / 共22页
基于matlab的车牌识别系统的设计.docx_第19页
第19页 / 共22页
基于matlab的车牌识别系统的设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于matlab的车牌识别系统的设计.docx

《基于matlab的车牌识别系统的设计.docx》由会员分享,可在线阅读,更多相关《基于matlab的车牌识别系统的设计.docx(22页珍藏版)》请在冰点文库上搜索。

基于matlab的车牌识别系统的设计.docx

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

毕业设计

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

 

摘要:

汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。

车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。

车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。

本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。

本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。

车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。

字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。

本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。

关键词:

MATLAB、图像预处理、车牌定位、字符分割

 

一、发展背景

车辆的牌照是机动车的识别标志,在交通管理中有着重要的作用。

通过汽车车牌识别系统可以监控车辆的信息和行驶状况,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。

该系统主要有两大模块:

图像处理模块和字符识别模块。

本文主要对图像处理模块进行设计和研究。

图像处理模块的质量好坏更是衡量整个系统成功与否的关键。

MATLAB语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。

二、系统框架结构以及流程

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

触发拍照:

该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。

其中线圈触发和视频触发得到了广泛的应用。

图像采集:

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

图像预处理:

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

车牌定位:

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

字符分割:

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

字符识别:

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

输出结果:

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

三、各模块的实现

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

图像预处理

(1)图像灰度化:

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

对于将彩色图像转换成灰度图像时,目前比较主流的灰度化方法叫平均值法,公式为:

H=0.229R+0.588G+0.144B

公式中H表示灰度图的亮度值;R代表彩色图像红色分量值;G代表色彩图像绿色分量值;B代表彩色图像蓝色分量值。

RGB三分量前的系数为经验加权值。

加权系数的取值建立在人眼的视觉模型之上。

对于人眼较为敏感的绿色取较大的权值;对人眼较为不敏感的蓝色则取较小的权值。

通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。

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

(2)图像的边缘检测:

边缘是指图像灰度发生空间突变或者在梯度方向上发生突变的像素的集合。

用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。

因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,使其易于后面的分割和识别。

通过良好的边缘检测可以大幅度的降低噪声、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。

由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。

因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。

本文采用经典的Roberts边缘检测算子来对图像进行边缘检测。

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

k=input('Enterthefilename:

','s');%ÊäÈë³µÅÆÕÕƬ

I=imread(k);

imshow(I);

figure

(1),imshow(I);title('Ôͼ')

I1=rgb2gray(I);

figure

(2),imshow(I1);title('»Ò¶Èͼ');

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

figure(3),imshow(I2);title('robertËã×Ó±ßÔµ¼ì²â')

se=[1;1;1];

原始图片

 

灰度图

Robert算子边缘检测

车牌定位和分割

该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。

所以我们要对照片进行车牌定位和分割。

车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。

车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,因此很容易用边缘检测来对图像进行分割。

车牌定位和分割的准确度直接关系到最后的字符识别的质量。

车牌定位流程图

 

(1)车牌定位

机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。

本文采用的是用数学形态学来进行图像处理和模式识别。

数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。

现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。

腐蚀后的图像

平滑图像的轮廓

从对象中移除小对象后图像

(2)车牌分割

本文车牌部分的分割采用的是利用车牌彩色信息的彩色分割法。

使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB对应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,确定车牌在行方向的区域。

然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。

车牌对位的图像

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

定位后车牌图像是彩色的,会占用较大的存储空间,加重计算机负担。

且车辆图片不可避免存在噪声,所以要对图像进行灰度化,二值化以及滤波处理。

图像的二值化处理就是将图像上的点的灰度置为两个数值,通常为0或255,使整个图像呈现出明显的黑白效果。

也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像。

滤波则是为了除去图像噪声。

滤波方法有多种,本文采取的滤波方法为均值滤波。

均值滤波是典型的线性滤波算法,指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。

再用模板中的全体像素的平均值来代替原来像素值。

车牌的进一步处理

四、字符分割与归一化

(1)字符分割

将得到的车牌区域图像进行二值化处理后,对图像进行垂直投影,投影图上有明显的类似于峰谷的波形起伏变化,通过对投影图上的波形从左向右进行扫描,根据谷和峰的特征就可以判断出每个字符的位置;计算垂直峰,检测合理的字符高宽比。

在字符切割时,往往由于阈值取得不好,导致字符切割不准确,针对这种情况,可以对切割出的字符宽度进行统计分析,用以指导切割,对因错误切割过宽的字符进行分裂处理。

字符分割后的图像

(2)字符归一化处理

由于数码相机拍摄的汽车图像大小不一样,所以得到的牌照上的字符大小就不一样,为了便于字符的识别,需要对字符进行归一化处理。

归一化处理的目的就是使车牌字符同标准模块里面的字符特征一样。

而大小归一是指在长度和宽度方向上分别乘以一个比例因子,使其等于标准模块的字符大小,本文采用的大小归一的方法是分别从水平投影和垂直投影两个方向上对字符象素的大小进行归一化处理。

字符归一化后的图像

五、结果和分析:

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

下图为另一组实验组图。

另一组实验结果组图

字符分割效果理想主要取决于识别系统前期工作的到位。

将得到的机动车照片进行灰度化和边缘检测处理,运用良好的技术手段进行车牌定位,将定位好的图像进行字符分割处理,得到七个字符,将字符归一化处理。

整个过程使用MATLAB编程实现,能够直接调用函数,大大缩短了实验时间和编译难度。

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

在实验过程中,也出现了字符分割错误的情况,根据分析,造成错误情况的原因主要有:

1.图像质量不高,导致分割出的车牌字符大小不一。

2.车辆牌照的分割失败,尤其是车牌上第一个字符汉字的分割,常常因为过大或者过小导致分割失败。

总体来说,分割出正确的字符的成功率还是蛮高的,如果再能够提高图像质量,分割正确字符的成功率还能够得到提升。

主要参考文献

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

k=input('Enterthefilename:

','s');%ÊäÈë³µÅÆÕÕƬ

I=imread(k);

imshow(I);

%I=imread('D:

\123\11.jpg');

figure

(1),imshow(I);title('Ôͼ')

I1=rgb2gray(I);

figure

(2),imshow(I1);title('»Ò¶Èͼ');

I2=edge(I1,'roberts',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);

fori=1:

y

forj=1:

x

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

Blue_y(i,1)=Blue_y(i,1)+1;%À¶É«ÏñËصãͳ¼Æ

end

end

end

[tempMaxY]=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·½ÏòµÄ³µÅÆÇøÓò

forj=1:

x

fori=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);subplot(3,2,1),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(8);subplot(3,2,2),imshow(d),title('2.³µÅƶþֵͼÏñ')

figure(8),subplot(3,2,3),imshow(d),title('3.¾ùÖµÂ˲¨Ç°')

%Â˲¨

h=fspecial('average',3);%½¨Á¢Ô¤¶¨ÒåµÄÂ˲¨Ëã×Ó£¬averageÖ¸¶¨Ëã×ÓµÄÀàÐÍ£¬3ΪÏàÓ¦µÄ²ÎÊý

d=im2bw(round(filter2(h,d)));%ת»»Îª¶þֵͼÏñ

imwrite(d,'4.¾ùÖµÂ˲¨ºó.jpg');%½«Í¼ÏñÊý¾ÝдÈ뵽ͼÏñÎļþÖÐ

figure(8),subplot(3,2,4),imshow(d),title('4.¾ùÖµÂ˲¨ºó')

%ijЩͼÏñ½øÐвÙ×÷

%ÅòÕÍ»ò¸¯Ê´

%se=strel('square',3);%ʹÓÃÒ»¸ö3X3µÄÕý·½Ðνá¹ûÔªËضÔÏó¶Ô´´½¨µÄͼÏñ½øÐÐÅòÕÍ

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

se=eye

(2);%eye(n)returnsthen-by-nidentitymatrixµ¥Î»¾ØÕó

[m,n]=size(d);

ifbwarea(d)/m/n>=0.365%¼ÆËã¶þֵͼÏñÖжÔÏóµÄ×ÜÃæ»ý

d=imerode(d,se);%ͼÏñµÄ¸¯Ê´

elseifbwarea(d)/m/n<=0.235%¼ÆËã¶þֵͼÏñÖжÔÏóµÄ×ÜÃæ»ý

d=imdilate(d,se);%ʵÏÖÅòÕͲÙ×÷

end

imwrite(d,'5.ÅòÕÍ»ò¸¯Ê´´¦Àíºó.jpg');%½«Í¼ÏñÊý¾ÝдÈ뵽ͼÏñÎļþÖÐ

figure(8),subplot(3,2,5),imshow(d),title('5.ÅòÕÍ»ò¸¯Ê´´¦Àíºó')

%Ñ°ÕÒÁ¬ÐøÓÐÎÄ×ֵĿ飬Èô³¤¶È´óÓÚijãÐÖµ£¬ÔòÈÏΪ¸Ã¿éÓÐÁ½¸ö×Ö·û×é³É£¬ÐèÒª·Ö¸î

d=qiege(d);%Çиî

[m,n]=size(d);%·µ»Ø¾ØÕóbµÄ³ß´çÐÅÏ¢£¬²¢´æ´¢ÔÚm¡¢nÖС£ÆäÖÐmÖд洢µÄÊÇÐÐÊý£¬nÖд洢µÄÊÇÁÐÊý

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

whilej~=n

whiles(j)==0

j=j+1;

end

k1=j;

whiles(j)~=0&&j<=n-1

j=j+1;

end

k2=j-1;

ifk2-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=[];

whileflag==0

[m,n]=size(d);

left=1;wide=0;

whilesum(d(:

wide+1))~=0

wide=wide+1;

end

ifwide

d(:

[1:

wide])=0;

d=qiege(d);

else

temp=qiege(imcrop(d,[11widem]));

[m,n]=size(temp);

all=sum(sum(temp));

two_thirds=sum(sum(temp([round(m/3):

2*round(m/3)],:

)));

iftwo_thirds/all>y2

flag=1;word1=temp;%WORD1

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);

figure(9);subplot(2,7,1),imshow(word1),title('1');

figure(9);subplot(2,7,2),imshow(word2),title('2');

figure(9);subplot(2,7,3),imshow(word3),title('3');

figure(9);subplot(2,7,4),imshow(word4),title('4');

figure(9);subplot(2,7,5),imshow(word5),title('5');

figure(9);subplot(2,7,6),imshow(word6),title('6');

figure(9);subplot(2,7,7),imshow(word7),title('7');

[m,n]=size(word1);

%ÉÌÓÃϵͳ³ÌÐòÖйéÒ»»¯´óСΪ40*20,´Ë´¦ÑÝʾ

word1=imresize(word1,[4020]);

word2=imresize(word2,[4020]);

word3=imresize(word3,[4020]);

word4=imresize(word4,[4020]);

word5=imresize(word5,[4020]);

word6=imresize(word6,[4020]);

word7=imresize(word7,[4020]);

subplot(3,7,15),imshow(word1),title('1');

subplot(3,7,16),imshow(word2),title('2');

subplot(3,7,17),imshow(word3),title('3');

subplot(3,7,18),imshow(word4),title('4');

subplot(3,7,19),imshow(word5),title('5');

subplot(3,7,20),imshow(word6),title('6');

subplot(3,7,21),imshow(word7),title('7');

目录

第一章总论4

1.1项目概况4

1.2编制依据5

1.3项目建设内容及规模5

1.4项目投资概算及资金筹措14

1.5产品方案15

1.6原材料及动力16

1.7主要技术经济指标17

1.8项目实施进度18

1.9研究结论18

第二章项目建设背景和必要性19

2.1项目建设背景19

2.2项目建设必要性20

第三章市场分析和预测22

3.1市场现状22

3.2**县市场23

3.3全国市场23

3.4鸡肉市场分析24

3.5鸡蛋市场分析24

3.6有机肥市场分析24

3.7销售预测25

第四章项目区概况26

4.1项目区基本情况26

4.2项目区畜牧业生产现状27

4.3水、电、路、通讯、技术等条件27

第五章项目建设方案29

5.1项目建设原则29

5.2项目设计依据的规范与规程29

5.3项目设计方案30

5.4工程设计标准33

5.5技术标准36

5.6设备选型53

第六章消防安全57

6.1消防依据57

6.2消防工作程序57

6.3消防安全流程59

第七章节水与节能60

7.1节水工程与科技措施60

7.2养殖节能措施61

7.3饲料加工节能措施61

7.4电气节能措施62

7.5减排62

第八章环境影响和保护措施63

8.1环境保护依据63

8.2项目区环境现状63

8.3环境影响评价64

8.4工程环境保

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2