课程设计matlab车牌识别系统 精品Word文档格式.docx

上传人:b****2 文档编号:14161009 上传时间:2022-10-19 格式:DOCX 页数:27 大小:1.61MB
下载 相关 举报
课程设计matlab车牌识别系统 精品Word文档格式.docx_第1页
第1页 / 共27页
课程设计matlab车牌识别系统 精品Word文档格式.docx_第2页
第2页 / 共27页
课程设计matlab车牌识别系统 精品Word文档格式.docx_第3页
第3页 / 共27页
课程设计matlab车牌识别系统 精品Word文档格式.docx_第4页
第4页 / 共27页
课程设计matlab车牌识别系统 精品Word文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

课程设计matlab车牌识别系统 精品Word文档格式.docx

《课程设计matlab车牌识别系统 精品Word文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计matlab车牌识别系统 精品Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

课程设计matlab车牌识别系统 精品Word文档格式.docx

2.字符分割10

3.字符识别12

四.设计GUI界面16

五.课程设计总结和体会17

六.参考文献17

七.设计总代码18

1.chepai_main.m18

2.chepaidingwei.m18

3.fenge.m19

4.rando_bianhuan.m21

5.zifushibie2.m21

一.课程设计任务

在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。

对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。

国内常用的一般车牌通常是是蓝底白字,长宽比3:

1。

1、对车牌图像进行预处理,然后进行车牌定位;

2、进行字符分割;

2、对车牌中的数字、字母和汉字进行提取和识别;

3、要求自行设计方案、编写代码实现上述功能,并设计车牌识别的软件界面。

二.课程设计原理及设计方案

1.系统简述

一个完整的车牌识别系统闭应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。

当车辆到达触发图像采集单元时,系统采集当前的视频图像。

车辆识别单元对图像进行处理,定位出牌照位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。

车牌识别系统原理如图l所示。

1)图像预处理:

对汽车图像进行图像转换、图像增强等。

2)车牌定位:

从预处理后的汽车图像中分割出车牌图像。

即在一幅车辆图像中找到车牌所在的位置。

3)字符分割:

对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

4)字符识别:

对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。

为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。

但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。

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

由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。

因此,需要对字符在识别之前再进行一次针对性的处理。

车牌识别的最终目的就是对车牌上的文字进行识别。

识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。

1)RGB转为灰度图像

输入的彩色图像包含大量颜色信息,会占用较多的存储空间,且处理时也会降低系统的执行速度,因此对图像进行识别等处理时.常将彩色图像转换为灰度图像,以加快处理速度。

可对图像进行灰度化处理、提取背景图像、增强处理、图像二值化,边缘检测、滤波等处理。

然后采用robert算子进行边缘检测,再用imopen和imclose对所得二值图像作开、闭操作进行滤波。

彩色图像分为R、G、B三个分量,分别显示出红、绿、蓝等各种颜色,灰度化就是使彩色的R、G、B分量相等的过程。

灰度值大的像素点比较亮(像素值最大为255,为白色),反之比较暗(像素值最小为0,是黑色)。

图像灰度化的算法在matlab调用的格式为:

I=rgb2gray(I0);

2)RGB转换到HSV空间

表达颜色的彩色空间有许多种,最常见的是RGB彩色空间,但是在RGB彩色模型中各像素值是由R、G、B三种分量的亮度值叠加而成,这三种亮度值随光照强度的不同而改变,而一般汽车图像的光照强度是不定的,所以用RGB颜色模型进行车牌识别是很困难的。

HSV颜色模型对应于画家的配色模型,它由色度H、饱和度S、亮度V三个分量组成。

由于这种模型具有线性伸缩性,可感知的色差与颜色分量的相应样值上的欧几里德距离成比例,因此HSV颜色模型比RGB颜色模型更直观、更容易接受。

图像RGB转换到HSV空间的算法在matlab调用的格式为:

I=rgb2hsv(I0);

但我们取它的第二通道I=(:

,:

2)时可以去掉许多不必要的信息,非常有利于后续处理工作。

3.车牌定位

在车牌定位中首先用颜色定位法,因为在彩色图像中,它分别由R,G,B三个分量合成的,在这种情况下,每个‘像素’由三个值来表征,并且可以表示为一个三维向量z=(z1,z2,z3)T,其分量是一个点的RGB彩色。

当我们想要从一副彩色图像中提取具有指定颜色的所有区域,比如说,蓝色。

令a表示我们感兴趣的平均蓝色。

基于这一参数来分割彩色图像的一种方法是计算任意彩色点的z值和平均彩色a间的距离测度D(z,a)。

然后,我们按如下方式分割图像:

1,D(z,a)《T

g=

0,其它

这里T为一个阈值。

用这样的一种方法可以较好的,查找出车牌的大概区域,然后我们再用形态学操作进行处理切割出车牌的水平区域,之后我们可以再用水平区域的图像来确定车牌的垂直区域图像,到此可以得到车牌的区域。

但是可能这样一个区域不太精细,可以在后续工作中把它更精细的定位到字符区域。

4.字符分割

完成牌照区域的定位后,再将牌照区域分割为单个字符,可采用垂直投影法。

在此设计中,对车牌字符的所有噪声都能很好的去除,字符与字符之间的间隙没有杂点和粘连,因此垂直投影时,七个峰值不会相连,所以查找切割字符时的步骤主要为如下:

从第一列开始查找,当第一个投影值不为0时,记录下第几列,然后继续查找投影值为0的点,记录下第几列,之后就可以切割出第一个字符来。

其余字符的切割也一样。

5.字符识别

在这个设计中,运用神经网络的方法进行识别,准确度较高。

在神经网络的训练中,需要足量的模板,建立好输入,输出量,其中输入量就是每一字符样本,输出量就是一个样本或一类样本所要对应的数据输出。

然后,建立训练网络,设置好相应的一些参数等,当精确度到达一定程度时,就可以停止训练,至此网络训练成功。

当进行字符识别时,就可以调用已经训练好的网络,把每一个输入字符,与网络中的函数进行匹配,找到最匹配的进行相对应的数据输出,就可以判断究竟为那个字符。

神经网络的matlab代码:

1)建立网络:

net=newff(pr,[8501],{'

logsig'

'

purelin'

},'

traingdx'

'

learngdm'

);

2)训练网络:

net=train(net,p,t);

P为输入量,t输出量

3)调用网络:

t=sim(net,p)

三.课程设计的步骤和结果

设计中主要分为三大块:

车牌定位,字符分割,字符识别,因此就以上三块分别一一做一个方法讲解。

此处以车牌1作为示例图像

1.车牌定位

主要分为:

蓝色区域查找,形态学操作,水平区域定位,垂直区域定位等部分。

1.1蓝色区域查找

Y=imread(’1.jpg’)

R=Y(:

:

1);

G=Y(:

2);

B=Y(:

3);

[m,n]=size(R);

fori=1:

m

forj=1:

n

if(R(i,j)>

20&

&

R(i,j)<

82)&

(G(i,j)>

10&

G(i,j)<

255)&

(B(i,j)>

108&

B(i,j)<

255)

A8(i,j)=1;

else

A8(i,j)=0;

end

end

figure,imshow(A8)

从上图可以看出进过这样的一种颜色查找法,可以很好的找出车牌区域。

在这个算法中,最难的一点,就是如何确定R,G,B的范围参数,说实在话,我的这个参数是进过不断尝试才得到的,在网上和相关书籍中,都没有人提出过一致的看法,参数各有不同,可见对于不同的图片,参数范围是不同的,并没有一致的参数。

1.2形态学操作

从以上的图中,我们很明显的知道,车牌区域以凸显出来了,之后的操作一定就要想办法如何去除杂点和‘丰富‘车牌区域了。

se=strel('

disk'

8,8);

bg1=imdilate(A8,se);

figure,imshow(bg1);

I2=imfill(bg1,'

holes'

figure,imshow(I2);

bw1=bwareaopen(I2,29000);

figure,imshow(bw1);

%去除面积小于29000的区域bw2=imclearborder(bw1);

figure,imshow(bw2);

%去除与边界相连的区域

1.3水平车牌区域切割

虽然我们看到上图中,所有杂点都去除了,但是这只是一个特例,在其它大多数图像中,到了以上那不,其实还有一些大于29000块的区域还在的,但他们都有一个共同的特点,就是都在车牌的上方并且不与车牌相连,在车牌下方的区域,则是相当‘干净‘的。

因此,我的想法是先从水平放向切割出车牌的水平区域,在进行下一步打算。

forx=1:

X(x)=sum(bw2(x,:

));

x=1:

m;

figure,plot(x,X(x));

fori=m:

-1:

1

ifX(i)~=0

PX2=i;

break;

forj=PX2-1:

ifX(j)~=0

continue;

elsePX1=j;

DW1=Y(PX1:

PX2,:

figure,imshow(DW1)

1.4垂直车牌区域切割

这段代码的原理与以上1.1到1.3步的原理一样,代码类似。

R1=DW1(:

G1=DW1(:

B1=DW1(:

[a,b]=size(R1);

a

b

if(R1(i,j)>

R1(i,j)<

(G1(i,j)>

G1(i,j)<

(B1(i,j)>

B1(i,j)<

A9(i,j)=1;

A9(i,j)=0;

figure,imshow(A9);

bg2=imdilate(A9,se);

figure,imshow(bg2)

I3=imfill(bg2,'

figure,imshow(I3)

bw3=bwareaopen(I3,29000);

figure,imshow(bw3)

fory=1:

Y(y)=sum(bw3(1:

a,y));

y=1:

b;

figure,plot(y,Y(y));

title('

´

¹

Ö

±

Í

Ó

°

'

ifY(y)~=0

PY1=y;

fory=b:

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

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1