目录
一.引言.........................................1
二.目的和意义...................................1
三.设计原理.....................................1
四.字符分割程序..................................2
五.结果..........................................4
六.测试代码......................................5
七.系统的不足....................................5
八.总结..........................................5
九.心得体会......................................5
十.致谢..........................................6
十一.参考文献...................................6
一.引言
随着人们生活水平的不断提高,机动车辆数量大幅度增加,与之相配套的高速公路,城市路网及停车场越来越多,显著提高了人们对交通控制方面的要求。由于计算机技术的发展,信息处理水平的提高使智能交通系统成为世界交通领域研究的重要课题。其中车牌识别是智能交通系统的重要组成部分。车牌识别系统能够自动、实时地检测车辆、识别汽车车牌,从而监控车辆的收费、闯关、欠费以及各种舞弊现象。本系统为基于蓝色车牌的车牌识别系统,它能够识别非蓝色车辆的蓝底白字车牌。该系统通过车牌提取、车牌定位、预处理、字符分割、字符识别五个模块组成车牌识别系统。
二.目的和意义
通过对车牌识别系统的研究,自己开发小型车牌识别系统,虽有一定的局限性与不完整性,但可以使自己更加的熟悉MATLAB语言,激发对研究的兴趣,拓宽知识面,为自己以后的研究打下基础。在提升自身科研能力的同时,还能提高团队合作精神,清楚团队成员的分工,协调成员间的工作,为今后的团队合作研究积累经验。
三.设计原理
字符分割在此系统中有着承前启后的作用。它在前期车牌定位的基础上进行字符的分割,然后利用分割的结果进行字符的识别。字符识别的算法很多,应为车牌字符间间隔较大,不会出现字符粘连的情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为组成该块有两个字符,需要分割。一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。但是对于车牌的识别,并不需要太多的处理就可以达到正确的目的。在此系统中只进行了归一化处理,然后进行后期处理。
四.字符分割程序
function Img_cat(I)
% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割
d=qiege(I);
[m,n]=size(d);
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 个字符,首先对车牌图像自左向右逐列扫描,寻找连续有文字的区间块,将该区间块的有效宽度与某一固定阈值(本文设定的阈值为10,可更改)进行比较,若小于该设定阈值,则认为是左侧干扰,裁剪干扰区域;反之,分割出该模糊字符块
y1=10;y2=0.25;flag=0;word1=[];
while flag==0 %flag为自定义,用作标记循环
[m,n]=size(d); %返回矩阵d的尺寸信息,并存储在m,n中。其中m中存储的是行数,n中存储的是列数
left=1;wide=0;
while sum(d(:,wide+1))~=0
wide=wide+1;
end
if wide 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; end d(:,1:wide)=0;d=qiege(d); end end % 分割出第2~7个字符 [word2,d]=getword(d); [word3,d]=getword(d); [word4,d]=getword(d); [word5,d]=getword(d); [word6,d]=getword(d); [word7,d]=getword(d); [m,n]=size(word1); % 商用系统程序中归一化大小为 40*20,此处演示 word1=imresize(word1,[40 20]); word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); imwrite(word1,'save\\1.jpg'); imwrite(word2,'save\\2.jpg'); imwrite(word3,'save\\3.jpg'); imwrite(word4,'save\\4.jpg'); imwrite(word5,'save\\5.jpg'); imwrite(word6,'save\\6.jpg'); imwrite(word7,'save\\7.jpg'); End 五.结果 六.测试代码 function zln_Main() a=imread('save\\dw.jpg'); [d]=Img_process(a); Img_cat(d); figure subplot(1,7,1),imshow(imread('save\\1.jpg')),title('word1'); subplot(1,7,2),imshow(imread('save\\2.jpg')),title('word2'); subplot(1,7,3),imshow(imread('save\\3.jpg')),title('word3'); subplot(1,7,4),imshow(imread('save\\4.jpg')),title('word4'); subplot(1,7,5),imshow(imread('save\\5.jpg')),title('word5'); subplot(1,7,6),imshow(imread('save\\6.jpg')),title('word6'); subplot(1,7,7),imshow(imread('save\\7.jpg')),title('word7'); end 七.系统的不足 基于蓝色车牌的车牌识别系统无法识别蓝色车身的车牌和其他颜色的车牌;以提取的无倾斜车牌为研究对象,忽略了车牌的倾斜问题;提取车牌模板时的光照问题;车牌边框、柳丁以及车牌亮度不均等不利因素;车牌背景的限制(不能有大面积的蓝色障碍物)。 八.总结 在车牌识别系统的字符分割部分实现,通常有间距、间隙切分法,投影法,识别切分法。本系统采用的是投影法,利用垂直投影(即一列一列的统计像素)来进行字符分割,计算每一列中心黑色像素的总和,这种切分虽然速度快,但对不规范的字符会出现误分割的情况。字符分割的具体算法:在图像的大致高度中(在qiege程序实现)自左向右的逐列扫描,遇到第一个黑色像素则是字符分割的起始位置,继续扫描,直至有一列没有黑色像素,则认为分割结束,继续这种方法直至图像最右端,这样则找到每个字符的稍精确的宽度范围。在一直每个字符的范围内,再自上而下和自下而上逐行扫描。 九.心得体会 本车牌识别系统主要包括车牌提取、车牌定位、预处理、字符分割、字符识别。本人负责车牌的字符分割,本文主要探讨了字符分割的方法及算法分析。在字符分割过程中,我们用的是垂直投影法,这种方法的主要优点是在二值化很好的情况下,可以很好的把字符分割出来,但是在二值化并预处理后仍有字符粘连的情况字符无法分割。 在此系统的完成过程中,我发现好多系统项目都有相似之处,我相信在钻研本系统中所得到的收获对以后的其他课题研究有很大帮助。而且增强团队之间的团结协作的能力,我更喜欢组织的探讨问题的氛围,学习到了他人的长处明白了自己的不足。 十.致谢 组长:xxx。在他的帮助下我能系统的掌握设计一个项目的流程及应该注意的事项。他帮助我解决了自己解决不了的许多问题。 十一.参考文献 张德丰.详解MATLAB数字图像处理 杨为民.王世文.车牌自动识别技术及应用 邹永星.车牌字符分割方法的研究 白建华.车牌字符分割及识别算法研究 因篇幅问题不能全部显示,请点此查看更多更全内容