汽车车牌的号码识别

目录

1 技术要求 . ................................................................. 1 2 基本原理 . ................................................................. 1 3 各模块的功能 . ............................................................. 2

3.1 图像预处理 .......................................................... 2 3.2 车牌定位 ............................................................ 5 3.3 字符分割和识别 ...................................................... 7 4 调试过程及结论 . .......................................................... 11 5 心得体会 . ................................................................ 11 6 参考文献 . ................................................................ 12

汽车车牌的号码识别

1 技术要求

用相机拍摄获取彩色汽车车牌的图片,应用MATLAB 软件对所拍摄车牌号图片进行相应处理(如,去噪,去除背景提取目标,边缘分割,轮廓提取等)最终从一幅图像中提取车牌中的字母和数字(只能用黑色显示)。

2 基本原理

汽车车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG 或BMP 格式的数字,输出则为车牌号码的数字。汽车车辆牌照识别系统的基本工作原理图如图1所示:

我们知道输入的彩色图像包含大量颜色信息,会占用计算机较多的存储空间,且处理

时也会降低系统的执行速度,因此对图像进行识别等处理时,通常将彩色图像转换为灰度图像,以加快处理速度。对图像进行灰度化处理、边缘提取、再利用形态学方法对车牌进

行定位。具体步骤如下:首先通过MATLAB 软件对图像进行灰度转换,二值化处理然后采用4X1的结构元素对图像进行腐蚀,去除图像的噪声。采用25X25的结构元素,对图像进行闭合应算使车牌所在的区域形成连通。在进行形态学滤波去除其它区域。

3 各模块的功能

3.1 图像预处理

对汽车图像进行图像转换、图像增强和边缘检测等。载入车牌图像如代码如下所示: I=imread('car.jpg');%应用imread 函数从图形文件中读取命名为car 的图像; figure();

imshow(I), title('原始图像');%以“原始图像”为题目将图片显示出来。结果如图2所示:

图-2 原始图像

对提取出来的原始图像进行下列处理:转化为灰度图像,采用Robert 算子进行边缘检测,腐蚀图像,填充图像,形态滤波。具体各个过程的源程序如下所示: I1=rgb2gray(I); %转化为灰度图像

imshow(I1),title('灰度图像');%用imshow 函数显示灰度图像如图3所示:

图-3 灰度图像

I2=edge(I1,'robert',0.09,'both'); %采用robert 算子进行边缘检测

imshow(I2),title('边缘检测后图像');%用imshow 函数显示边缘检测后图像如图4所示:

图-4 边缘检测后图像

se=[1;1;1]; %线型结构元素 I3=imerode(I2,se); %腐蚀图像

imshow(I3),title('腐蚀后边缘图像');%用imshow 函数显示腐蚀后边缘图像如图5所示:

图-5 腐蚀后边缘图像

se=strel('rectangle',[25,25]); %矩形结构元素 I4=imclose(I3,se); %图像聚类、填充图像

imshow(I4),title('填充后图像');%用imshow 函数显示填充后图像如图6所示:

图-6 填充后图像

I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分

imshow(I5),title('形态滤波后图像');%用imshow 函数显示形态滤波后图像如图7所示

图-7 形态滤波后图像

3.2 车牌定位

从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。具体代码如下所示:

[y,x,z]=size(I5); I6=double(I5); Y1=zeros(y,1); for i=1:y for j=1:x

if(I6(i,j,1)==1) Y1(i,1)= Y1(i,1)+1; end end end

[temp MaxY]=max(Y1);

figure();

PY1=MaxY;

while ((Y1(PY1,1)>=50)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY;

while ((Y1(PY2,1)>=50)&&(PY2

IY=I(PY1:PY2,:,:); X1=zeros(1,x); for j=1:x

for i=PY1:PY2 if(I6(i,j,1)==1)

X1(1,j)= X1(1,j)+1; end end end PX1=1;

while ((X1(1,PX1)

while ((X1(1,PX2)PX1)) PX2=PX2-1; end PX1=PX1-1;

PX2=PX2+1; %分割出车牌图像% dw=I(PY1:PY2,PX1:PX2,:);

imshow(dw),title('定位剪切后的彩色车牌图像') ; 程序运行结果得到如图8所示图形:

图-8 车牌定位和处理后图形

3.3 字符分割和识别

对分割出的车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。源代码如下所示:

if isrgb(I)

I1 = rgb2gray(dw); %将RGB 图像转化为灰度图像 else I1=I; end

g_max=double(max(max(I1))); g_min=double(min(min(I1)));

T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值 [m,n]=size(I1);% d:二值图像 %h=graythresh(I1); I1=im2bw(I1,T/256); subplot(3,2,2);

imshow(I1),title('二值化车牌图像'); I2=bwareaopen(I1,20); subplot(3,2,3);

imshow(I2),title('形态学滤波后的二值化图像'); [y1,x1,z1]=size(I2); I3=double(I2); TT=1;

%%%%%%%去除图像顶端和底端的不感兴趣区域%%%%% Y1=zeros(y1,1); for i=1:y1 for j=1:x1

if(I3(i,j,1)==1) Y1(i,1)= Y1(i,1)+1 ; end end end Py1=1; Py0=1;

while ((Y1(Py0,1)

while((Y1(Py1,1)>=20)&&(Py1

I2=I2(Py0:Py1,:,:); subplot(3,2,4);

imshow(I2),title('目标车牌区域'); X1=zeros(1,x1); for j=1:x1 for i=1:y1

if(I3(i,j,1)==1) X1(1,j)= X1(1,j)+1; end end end Px0=1; Px1=1; for i=1:7

while ((X1(1,Px0)

while (((X1(1,Px1)>=3)&&(Px1

Z=I2(:,Px0:Px1,:); switch strcat('Z',num2str(i)) case 'Z1' PIN0=Z;

case 'Z2'

PIN1=Z;

case 'Z3'

PIN2=Z;

case 'Z4'

PIN3=Z;

case 'Z5'

PIN4=Z;

case 'Z6'

PIN5=Z;

otherwise

PIN6=Z;

end

figure(3);

subplot(1,7,i);

imshow(Z);%将分割出的字符在figure(3)中显示出来

Px0=Px1;

end

通过执行以上实现字符分割和识别的程序,可以得到如下的图9所示图像,最终实现题目所得要求。

图-9 分割后识别的图形

4 调试过程及结论

通过对程序的调试和修改能实现实验的要求,当输入相应模块的名称进行运行时可以得到相应的图形,并且能最终得到清晰的图像。在调试过程中很多地方出现Missing variable or function提示错误,经过对程序的检查发现此类的错误提示多数是因为输入了不合法的字符或者是错误的标点符号造成的,只要将提示错误位置改为合法字符或标点就能解决这类问题。另外在分割提取图像中不能得到所要的只含有车牌号的图像,而是得到整幅图像,经过排查得知这个错误是在分割时使用了错误的函数名称,将错误的函数名称改过来就能得到符合要求的图像。经过调试和修改最终得到了符合训练要求的图像。

5 心得体会

在选这次能力拓展训练课题时候,觉得这个题目跟我们实际生活联系十分紧密,于是选择了它,本以为课堂上学过它的理论知识,等到操作起来时候,发现我想的太简单,很多时候也许理论知识是没错的,但实际执行时候,各种错误随之而来,其中最明显的就是由于程序的简单性,对于所处理的图片有苛刻要求,图片色彩的要求最明显,对清晰度也有所要求,最后成功与否一定程度上还得由图片的质量所决定。

以前老是觉得自己什么东西都不会,什么东西都不懂,而且又急于求成,结果造成什么都没学好,还是什么都不会。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,特别是对于我,基础比较差,一定不能太过于心急,要静下心来慢慢的研究。以前对MATLAB 也是仅局限在数学实验上学的那些知识,但是通过此次的课程设计,才了解到MATLAB 在图形图像处理方面的强大功能,这些事C/C++不能所及的。在此要感谢我们的指导老师叶老师对我们悉心的指导,感谢老师给我们的帮助,以前我是不相信我能做出来的,是您的鼓励让我重新找到自信。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。

6 参考文献

[1] 何东健,数字图像处理. 西安电子科技大学出版社,2008年.

[2] 阮秋琦,数字图像处理. 电子工业出版社,2001年.

[3] 徐建华,图像处理与分析. 科学出版社,1999年.

[4] 徐中立,数字图像的智能信息处理. 科学教育出版社,2001年.

目录

1 技术要求 . ................................................................. 1 2 基本原理 . ................................................................. 1 3 各模块的功能 . ............................................................. 2

3.1 图像预处理 .......................................................... 2 3.2 车牌定位 ............................................................ 5 3.3 字符分割和识别 ...................................................... 7 4 调试过程及结论 . .......................................................... 11 5 心得体会 . ................................................................ 11 6 参考文献 . ................................................................ 12

汽车车牌的号码识别

1 技术要求

用相机拍摄获取彩色汽车车牌的图片,应用MATLAB 软件对所拍摄车牌号图片进行相应处理(如,去噪,去除背景提取目标,边缘分割,轮廓提取等)最终从一幅图像中提取车牌中的字母和数字(只能用黑色显示)。

2 基本原理

汽车车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG 或BMP 格式的数字,输出则为车牌号码的数字。汽车车辆牌照识别系统的基本工作原理图如图1所示:

我们知道输入的彩色图像包含大量颜色信息,会占用计算机较多的存储空间,且处理

时也会降低系统的执行速度,因此对图像进行识别等处理时,通常将彩色图像转换为灰度图像,以加快处理速度。对图像进行灰度化处理、边缘提取、再利用形态学方法对车牌进

行定位。具体步骤如下:首先通过MATLAB 软件对图像进行灰度转换,二值化处理然后采用4X1的结构元素对图像进行腐蚀,去除图像的噪声。采用25X25的结构元素,对图像进行闭合应算使车牌所在的区域形成连通。在进行形态学滤波去除其它区域。

3 各模块的功能

3.1 图像预处理

对汽车图像进行图像转换、图像增强和边缘检测等。载入车牌图像如代码如下所示: I=imread('car.jpg');%应用imread 函数从图形文件中读取命名为car 的图像; figure();

imshow(I), title('原始图像');%以“原始图像”为题目将图片显示出来。结果如图2所示:

图-2 原始图像

对提取出来的原始图像进行下列处理:转化为灰度图像,采用Robert 算子进行边缘检测,腐蚀图像,填充图像,形态滤波。具体各个过程的源程序如下所示: I1=rgb2gray(I); %转化为灰度图像

imshow(I1),title('灰度图像');%用imshow 函数显示灰度图像如图3所示:

图-3 灰度图像

I2=edge(I1,'robert',0.09,'both'); %采用robert 算子进行边缘检测

imshow(I2),title('边缘检测后图像');%用imshow 函数显示边缘检测后图像如图4所示:

图-4 边缘检测后图像

se=[1;1;1]; %线型结构元素 I3=imerode(I2,se); %腐蚀图像

imshow(I3),title('腐蚀后边缘图像');%用imshow 函数显示腐蚀后边缘图像如图5所示:

图-5 腐蚀后边缘图像

se=strel('rectangle',[25,25]); %矩形结构元素 I4=imclose(I3,se); %图像聚类、填充图像

imshow(I4),title('填充后图像');%用imshow 函数显示填充后图像如图6所示:

图-6 填充后图像

I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分

imshow(I5),title('形态滤波后图像');%用imshow 函数显示形态滤波后图像如图7所示

图-7 形态滤波后图像

3.2 车牌定位

从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。具体代码如下所示:

[y,x,z]=size(I5); I6=double(I5); Y1=zeros(y,1); for i=1:y for j=1:x

if(I6(i,j,1)==1) Y1(i,1)= Y1(i,1)+1; end end end

[temp MaxY]=max(Y1);

figure();

PY1=MaxY;

while ((Y1(PY1,1)>=50)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY;

while ((Y1(PY2,1)>=50)&&(PY2

IY=I(PY1:PY2,:,:); X1=zeros(1,x); for j=1:x

for i=PY1:PY2 if(I6(i,j,1)==1)

X1(1,j)= X1(1,j)+1; end end end PX1=1;

while ((X1(1,PX1)

while ((X1(1,PX2)PX1)) PX2=PX2-1; end PX1=PX1-1;

PX2=PX2+1; %分割出车牌图像% dw=I(PY1:PY2,PX1:PX2,:);

imshow(dw),title('定位剪切后的彩色车牌图像') ; 程序运行结果得到如图8所示图形:

图-8 车牌定位和处理后图形

3.3 字符分割和识别

对分割出的车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。源代码如下所示:

if isrgb(I)

I1 = rgb2gray(dw); %将RGB 图像转化为灰度图像 else I1=I; end

g_max=double(max(max(I1))); g_min=double(min(min(I1)));

T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值 [m,n]=size(I1);% d:二值图像 %h=graythresh(I1); I1=im2bw(I1,T/256); subplot(3,2,2);

imshow(I1),title('二值化车牌图像'); I2=bwareaopen(I1,20); subplot(3,2,3);

imshow(I2),title('形态学滤波后的二值化图像'); [y1,x1,z1]=size(I2); I3=double(I2); TT=1;

%%%%%%%去除图像顶端和底端的不感兴趣区域%%%%% Y1=zeros(y1,1); for i=1:y1 for j=1:x1

if(I3(i,j,1)==1) Y1(i,1)= Y1(i,1)+1 ; end end end Py1=1; Py0=1;

while ((Y1(Py0,1)

while((Y1(Py1,1)>=20)&&(Py1

I2=I2(Py0:Py1,:,:); subplot(3,2,4);

imshow(I2),title('目标车牌区域'); X1=zeros(1,x1); for j=1:x1 for i=1:y1

if(I3(i,j,1)==1) X1(1,j)= X1(1,j)+1; end end end Px0=1; Px1=1; for i=1:7

while ((X1(1,Px0)

while (((X1(1,Px1)>=3)&&(Px1

Z=I2(:,Px0:Px1,:); switch strcat('Z',num2str(i)) case 'Z1' PIN0=Z;

case 'Z2'

PIN1=Z;

case 'Z3'

PIN2=Z;

case 'Z4'

PIN3=Z;

case 'Z5'

PIN4=Z;

case 'Z6'

PIN5=Z;

otherwise

PIN6=Z;

end

figure(3);

subplot(1,7,i);

imshow(Z);%将分割出的字符在figure(3)中显示出来

Px0=Px1;

end

通过执行以上实现字符分割和识别的程序,可以得到如下的图9所示图像,最终实现题目所得要求。

图-9 分割后识别的图形

4 调试过程及结论

通过对程序的调试和修改能实现实验的要求,当输入相应模块的名称进行运行时可以得到相应的图形,并且能最终得到清晰的图像。在调试过程中很多地方出现Missing variable or function提示错误,经过对程序的检查发现此类的错误提示多数是因为输入了不合法的字符或者是错误的标点符号造成的,只要将提示错误位置改为合法字符或标点就能解决这类问题。另外在分割提取图像中不能得到所要的只含有车牌号的图像,而是得到整幅图像,经过排查得知这个错误是在分割时使用了错误的函数名称,将错误的函数名称改过来就能得到符合要求的图像。经过调试和修改最终得到了符合训练要求的图像。

5 心得体会

在选这次能力拓展训练课题时候,觉得这个题目跟我们实际生活联系十分紧密,于是选择了它,本以为课堂上学过它的理论知识,等到操作起来时候,发现我想的太简单,很多时候也许理论知识是没错的,但实际执行时候,各种错误随之而来,其中最明显的就是由于程序的简单性,对于所处理的图片有苛刻要求,图片色彩的要求最明显,对清晰度也有所要求,最后成功与否一定程度上还得由图片的质量所决定。

以前老是觉得自己什么东西都不会,什么东西都不懂,而且又急于求成,结果造成什么都没学好,还是什么都不会。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,特别是对于我,基础比较差,一定不能太过于心急,要静下心来慢慢的研究。以前对MATLAB 也是仅局限在数学实验上学的那些知识,但是通过此次的课程设计,才了解到MATLAB 在图形图像处理方面的强大功能,这些事C/C++不能所及的。在此要感谢我们的指导老师叶老师对我们悉心的指导,感谢老师给我们的帮助,以前我是不相信我能做出来的,是您的鼓励让我重新找到自信。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。

6 参考文献

[1] 何东健,数字图像处理. 西安电子科技大学出版社,2008年.

[2] 阮秋琦,数字图像处理. 电子工业出版社,2001年.

[3] 徐建华,图像处理与分析. 科学出版社,1999年.

[4] 徐中立,数字图像的智能信息处理. 科学教育出版社,2001年.


相关内容

  • 全视频智慧停车场综合解决方案
  • 智慧停车场综合解决方案 厦门科拓通讯技术股份有限公司 地址:中国厦门火炬高新区软件园二期观日路58号301单元 邮编:361008 目录 一. 前言 . ......................................................................... ...

  • 车牌识别数字图像处理
  • 期末大作业报告 课程名称: 数字图像处理 设计题目: 车牌识别 学 院: 信息工程与自动化学院 专 业: 计算机科学与技术 年 级: xxxxx 学生姓名: xxxxxxx ( 学号 xxxxxxxxxxxxx) 指导教师: xxxx 日 期: 2012.6.10 教 务 处 制 车牌识别 摘要:数 ...

  • 卡口式电子警察系统设计方案
  • 1.1 卡口式电子警察系统设计方案 1.1.1 系统概述 随着经济的不断发展,城市人口和机动车辆数量迅猛增长,城市道路交通的压力越来越大,路口交通事故时有发生,严重威胁人民群众的生命财产的安全,其中的重要原因之一就是机动车驾驶人在交警视线之外违法驾驶的情况非常普遍.单纯依靠人为管理,浪费人力资源,效 ...

  • 佛山南海新车上牌流程
  • -佛山南海上牌流程- 以下资料根据本人2013年11月份实际操作总结,供佛山南海各位车主参考.1,到海八路南安检测站(文华北路)提交资料预约上牌服务.现场审核资料,通过以后,会通知你什么时候开车过来检查,一般是预约之日起一个星期后.需提供以下材料: A,复印在同一张A4纸上的居住证和身份证(需复印3 ...

  • 上海新车选择车牌号码详细攻略
  • 上海新车选择车牌号码详细攻略 对许多准车主们而言,在给新车上牌时对拍牌流程比较了解,但如何给新车选择一个"个性"号码或许就不是特别清楚.近日,读者汤先生就拨打本报读者热线咨询了如何办理个性车牌号事宜.其实,相对而言,自主编排号牌号码更便捷. 车主首先可以登陆上海市公安局交通警察总 ...

  • 数字信号处理作业--车牌识别系统设计
  • 数字信号处理报告 项目名称: 车牌识别系统设计 专 业: 电子信息工程技术 班 级: 电信141 姓 名: 卢德寅 指导 教师: 罗金生 二〇一六 年 一 月 六 日 目录 1.摘要: ..................................................... 1 2 ...

  • 车牌自动识别停车场管理系统
  • 车牌自动识别停车场管理系统 技 术 方 案 第1章 前言 随着现代化管理手段的进步和科学技术的日益发展,小区用户对车辆管理的要求越来越高.过去的人工刷卡的管理方式已经不适应现代化发展的需要,针对目前快节奏,高速度的工作模式,要求管理方法和制度要有一个根本的改善,这种改善不但要适应用小区管理的需求,也 ...

  • 酒店停车场计费版解决方案
  • 车牌识别系统解决方案 方案简介 捷安顺针对既有临时车又有固定车的停车场用户,推出车牌识别停车计费管理系统方案,利用车牌识别技术取代传统的IC卡技术,解决车辆进出时必须停下刷卡而造成的停车场进出口塞车现象,这种智能的停车管理系统为目前的停车场用户提供了一种崭新的服务模式. 通过该系统固定车辆进出可以实 ...

  • 车牌号自动识别,无障碍停车入库 登云桥下停车场启用智能管理·杭州日报
  • 车牌号自动识别,无障碍停车入库 登云桥下停车场启用智能管理 2015-09-15 通讯员 郭李飞 戴志凤 记者 任彦 近日,一种全新的停车收费智能管理系统在拱墅和睦路登云桥下公共停车场亮相,这在政府投资公共停车场(库)尚属首次. 收费管理系统改造后的便捷和高效颇为"惊艳":当汽车 ...