基于matlab汽车号牌识别系统设计说明Word文档下载推荐.docx
《基于matlab汽车号牌识别系统设计说明Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于matlab汽车号牌识别系统设计说明Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
使用摄像头、照相机拍摄采集图像。
(2)图像预处理:
把图像转换成便于定位的二值化图像,需要经过图像灰度化、图像
增强、边缘提取、二值化操作。
(3)车牌定位:
利用车牌的边缘、形状等特征,再结合Roberts算子边缘检测、数字
图像、形态学等技术对车牌进行定位。
(4)字符分割:
以二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的
阈值则切割,从而完成字符的分割。
(5)字符识别:
运用模板匹配算法将分割后的字符二值化,并将其尺寸大小缩放为模
板库中字符的大小,然后与所有的模板进行匹配,准确地识别车牌。
输出识别
结果,并进行数据存储。
由于纹理特征车牌灰度图像的边缘、图像水平方向上的方差、水平方向上的梯度等比较稳定而且易于提取,所以本系统车牌定位算法采用纹理特征作为车牌的主要特征。
在汽车号牌字符识别中,由于汉字的复杂性所以本设计的模板库字符包含5个汉字,26个大写英文字母及10个阿拉伯数字。
首字符为汉字,第2-6个字符为英文字母或数字。
本系统采用的是边缘检测的方法实现车牌定位的,寻找连续有文字的块的方法实现字符分割,模板匹配法来确定最终的识别结果。
三、具体设计
下图3.1流程图简要的概述了基本步骤:
图3.1
图3.2
图3.3
图3.4
图3.5
图3.6
图3.7
图3.8
图3.9
图3.10
由于本系统设计只限用于车牌底色为蓝色的车牌,对于其他颜色如黄色、白色等为底色的车牌则不成功。
所以本系统具有一定的局限性。
下面是分割后的车牌图:
图3.11
图3.12
下图是字符的分割与归一化的流程图:
图3.13
本系统设计采用的方法是寻找连续有文字的块,若长度大于设定的阈值,则认为该块有两个字符组成,需要分割。
图3.14
分割出来的字符可能存在一定的大小差距,所以要进行进一步的处理,以便接下来的字符识别能准确的识别出字符。
本系统设计对分割出来的字符进行了归一化处理,归一化切割出来的字符图像的大小为40*20,与模板中字符图像的大小相匹配。
图3.15
本系统的模板匹配的字符识别基本过程是:
首先对待识别字符进行二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。
模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高。
流程图如下:
图3.16
本系统设计采用相减的方法找到出分割字符与模板库中的字符相似度最大的字符,然后输出。
汽车号牌的字符一般有七个,大部分车牌第一位是汉字,通常代表车辆所属省份,接着的是字母与数字。
车牌字符汉字共约50多个,大写英文字母26个,数字10个。
为了提高系统的识别率与实验的方便,本次系统设计只建立了5个汉字26个字母与10个数字的字符模板库。
首先取模板库的字符,接着依次取待识别字符与模板进行匹配,将其与模板库字符相减,得到的0越多那么匹配成功率越高。
把每一幅相减后的图的0值个数保存,即为识别出来的结果并将结果保存在Data.xls文件中。
字符识别图如下:
图3.17
4、优化后实现
图3.18
图3.19
5、分析总结
汽车号牌识别系统是一个复杂的系统,考虑到时间和本人能力等因素,在这里我只做了一些初步的研究,很不够完善的地方,还需进一步的研究改进。
(1)汽车号牌识别系统是针对车牌为蓝底白字,7个字符水平排列的汽车车牌进行研
究。
有些光照条件不理想的图片,需要先进行图象增强处理,让图象灰度动态范
围扩展和对比度增强,再进行车牌定位和分割,这样可以提高分割的成功率。
色
彩通道的车牌区域分割算法充分利用了车牌图象的色彩信息,简化了算法的实现,
加快了图象的处理速度,具有较高的正确率,而且整个程序用MATLAB语言编
程实现,运算速度快。
但是也存在一些识别效果不是很理想的图片,这些图片需
要做一些前提工作后才能识别出相应的字符。
(2)车牌定位和分割中利用的车牌区域的宽度信息以及字符尺寸信息,是根据采集到
的车辆图像通过人工或者经验测算出来的,实际中需要自动检测;
(3)由于基于寻找连续有文字的块的字符分割方法容易受噪声和环境光线变化的影
响,所以在车牌字符分割的预处理中,需要对分割出的字符车牌进行均值滤波,
膨胀或腐蚀的处理。
经过这些处理可以把字符与字符之间的杂色点去除,只有白
色的字符和黑色的背景存在,有利于的字符分割进行[19]。
(4)字符识别方法中运用模板匹配的方法,方法简洁但识别率较低。
模板匹配法,是
利用要识别的字符图片与字符库中的图片进行两幅图片相减的方法,找到相减后
值最小的图片,其相似程度最大的。
模板库的字符制作很重要,必须要用精确的
模板,否则就不能正确的识别。
改进方法:
(1)在现有的基础上利用水平投影的方法检测非横向排列的7个字符车牌,根据车牌在水平方向上的投影的峰值特征判断牌照所属类型。
(2)在已定位车牌基础上检测牌照字符笔画的宽度,通过投影检测字符的尺寸信息;
也可以通过摄像机架设的高度、角度与车道的关系,将这些参数作为系统参数进。
(3)改进字符分割的算法,在车牌定位以后对图像进行去噪处理,或者可以通过照明设备照射车辆,由于车辆牌照区域的反光特性,可以大大改善图像采集的质量,同时突出牌照区域,间接达到减少噪声的效果。
(4)可以考虑单独设备汉字识别器以及数字字母合一的识别来提高识别器的识别率!
附录:
程序清单
1、车牌分割程序:
function[PY2,PY1,PX2,PX1]=chepai_fenge(I5)
[y,x,z]=size(I5);
myI=double(I5);
tic
Y_threshlow=5;
%这个数值很重要。
决定了提取的彩图的质量
X_firrectify=5;
%======================Y方向============================
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
[tempMaxY]=max(Blue_y);
%Y方向车牌区域确定temp(最多点数):
所有行中,最多的累积像素点MaxY(最多点所在行):
该行中蓝点最多
PY1=MaxY;
%有最多蓝点的行付给PY1
while((Blue_y(PY1,1)>
=Y_threshlow)&
&
(PY1>
1))%找到图片上边界
PY1=PY1-1;
end
PY2=MaxY;
%PY1:
存储车牌上边界值
while((Blue_y(PY2,1)>
(PY2<
y))%阈值为5
PY2=PY2+1;
PY1,PY2
figure
(1),imshow(Blue_y),title('
y方向确定'
);
pause
(2);
%==============X方向===============================
X_threshhigh=(PY2-PY1)/11;
%这个数值很重要。
决定了提取的彩图的质量,适当提高可抗干扰,但是小图会照成剪裁太多
Blue_x=zeros(1,x);
%进一步确定X方向的车牌区域
fori=PY1:
PY2
Blue_x(1,j)=Blue_x(1,j)+1;
[tempMaxX]=max(Blue_x);
PX1=MaxX-6*(PY2-PY1);
ifPX1<
=1
PX1=1;
while((Blue_x(1,PX1)<
=X_threshhigh)&
(PX1<
x))%阈值
PX1=PX1+1;
end%确定出X方向车牌起点
PX2=MaxX+6*(PY2-PY1);
ifPX2>
=x
PX2=x;
while((Blue_x(1,PX2)<
(PX2>
PX1))%阈值
PX2=PX2-1;
end%确定出X方向车牌终点
PX1,PX2
figure
(2),imshow(Blue_x),title('
X方向确定'
2、车牌校正程序:
function[PY2,PY1,PX2,PX1,threshold]=chepai_xiuzheng(PY2,PY1,PX2,PX1)
S=(PY2-PY1)*(PX2-PX1)
ifS<
=25000
threshold=50;
Y_secrectify=3;
X_secrectify=3;
elseifS>
25000&
S<
=45000
threshold=100;
Y_secrectify=-3;
45000&
=80000
threshold=200;
80000&
=150000
threshold=300;
Y_secrectify=-10;
X_secrectify=-10;
150000&
=400000
threshold=600;
else
threshold=1800;
Y_secrectif