车牌识别程序范本模板Word下载.docx
《车牌识别程序范本模板Word下载.docx》由会员分享,可在线阅读,更多相关《车牌识别程序范本模板Word下载.docx(11页珍藏版)》请在冰点文库上搜索。
2、车牌定位
从背景中准确地确定牌照区域是整个识别过程的关键。
首先对采集到的图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。
由于车牌区域大部分为蓝色,根据这个特性可以定位到车牌区域,而对于蓝色车系来说,可以通过腐蚀的方法解决。
具体算法流程如下:
结果如图:
图1车牌定位
图2车牌分割
3、字符分割:
完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。
具体流程如下
结果如图:
图3分割出的七张图片
4、字符识别:
本文基于模板匹配算法对分割出来的字符图片进行识别。
具体流程如下:
结果如下:
桂AC3692
四、实验结果分析
本实验的汽车号牌识别系统是针对车牌为蓝底白字,7个字符水平排列的汽车车牌进行研究。
有些光照条件不理想的图片,需要先进行图象增强处理,再进行车牌定位和分割,这样可以提高分割的成功率。
色彩通道的车牌区域分割算法充分利用了车牌图象的色彩信息,简化了算法的实现,加快了图象的处理速度,具有较高的正确率,而且整个程序用MATLAB语言编程实现,运算速度快。
但是也存在一些识别效果不是很理想的图片,这些图片需要做一些前提工作后才能识别出相应的字符。
(2)车牌定位和分割中利用的车牌区域的宽度信息以及字符尺寸信息,是根据经验测算出来的;
(3)由于基于寻找连续有文字的块的字符分割方法容易受噪声和环境光线变化的影响,所以在车牌字符分割的预处理中,需要对分割出的字符车牌进行均值滤波,膨胀或腐蚀的处理。
经过这些处理可以把字符与字符之间的杂色点去除,只有白色的字符和黑色的背景存在,有利于的字符分割进行
(4)字符识别方法中运用模板匹配的方法,方法简洁但识别率较低。
模板匹配法,是利用要识别的字符图片与字符库中的图片进行两幅图片相减的方法,找到相减后值最小的图片,其相似程度最大的。
模板库的字符制作很重要,必须要用精确的模板,否则就不能正确的识别。
附录:
%functioncarreco
closeall
clearall;
%==========================================================
%说明:
%
%===========================================================
%==============测定算法执行的时间,开始计时=================
tic
%=====================读入图片================================
[fn,pn,fi]=uigetfile(’*.jpg'
,'
选择图片'
);
I=imread([pnfn]);
figure,imshow(I);
title(’原始图像’);
%显示原始图像
chepailujing=[pnfn]
I_bai=I;
[PY2,PY1,PX2,PX1]=caitu_fenge(I);
[UV]=size(I);
%===============车牌区域根据面积二次修正======================
[PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1);
%==============更新图片=============================
Plate=I_bai(PY1:
PY2,PX1:
PX2,:
%使用caitu_tiqu
holdon;
line1=[1PY1;
VPY1];
plot(line1(:
1),line1(:
,2),'
y—’,’LineWidth'
2);
pause(1.5);
holdon;
line2=[1PY2;
VPY2];
plot(line2(:
1),line2(:
,2),'
r—’,’LineWidth’,2);
pause(1.5);
line3=[PX11;
PX1U];
plot(line3(:
,1),line3(:
g—'
’LineWidth’,2);
line4=[PX21;
PX2U];
plot(line4(:
1),line4(:
2),’b-'
,'
LineWidth'
,2);
%==============考虑用腐蚀解决蓝色车问题=============
bw=Plate;
figure,imshow(bw);
title(’车牌图像'
);
%hsv彩图提取图像
%==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686。
jpg
bw=rgb2gray(bw);
title(’灰度图像'
%================倾斜校正======================
qingxiejiao=rando_bianhuan(bw)
bw=imrotate(bw,qingxiejiao,’bilinear’,'
crop'
figure,imshow(bw);
title('
倾斜校正'
%取值为负值向右旋转
%==============================================
bw=im2bw(bw);
%figure,imshow(bw);
bw=bwmorph(bw,’hbreak'
,inf);
%figure,imshow(bw);
bw=bwmorph(bw,’spur'
%figure,imshow(bw);
擦除之前’);
bw=bwmorph(bw,’open’,5);
闭合运算’);
bw=bwareaopen(bw,threshold);
擦除'
%==================加入进度条================================
%h=waitbar(0,’程序运行中,请稍等..。
.。
.'
)
%fori=1:
10000
%waitbar(i/5000,h)
%end
%close(h);
%wavplay(wavread(’程序运行中.wav'
),22000);
%==========================================================
bw=~bw;
title(’擦除反色'
%=============对图像进一步裁剪,保证边框贴近字体===========
bw=touying(bw);
figure;
imshow(bw);
Y方向处理'
bw=bwareaopen(bw,threshold);
bw=~bw;
二次擦除’);
[y,x]=size(bw);
%对长宽重新赋值
%=================文字分割=================================
fenge=shuzifenge(bw,qingxiejiao)
[m,k]=size(fenge);
%=================显示分割图像结果=========================
figure;
fors=1:
2:
k-1
subplot(1,k/2,(s+1)/2);
imshow(bw(1:
y,fenge(s):
fenge(s+1)));
end
%================给七张图片定位===============桂AV6388
han_zi=bw(1:
y,fenge
(1):
fenge
(2));
imshow(han_zi);
zi_mu=bw(1:
y,fenge(3):
fenge(4));
zm_sz_1=bw(1:
y,fenge(5):
fenge(6));
zm_sz_2=bw(1:
y,fenge(7):
fenge(8));
shuzi_1=bw(1:
y,fenge(9):
fenge(10));
shuzi_2=bw(1:
y,fenge(11):
fenge(12));
shuzi_3=bw(1:
y,fenge(13):
fenge(14));
%==========================识别====================================
%======================把修正数据读入==============================
xiuzhenghanzi=imresize(han_zi,[11055],'
bilinear’);
xiuzhengzimu=imresize(zi_mu,[11055],'
xiuzhengzm_sz_1=imresize(zm_sz_1,[11055],'
bilinear'
xiuzhengzm_sz_2=imresize(zm_sz_2,[11055],'
xiuzhengshuzi_1=imresize(shuzi_1,[11055],'
xiuzhengshuzi_2=imresize(shuzi_2,[11055],'
xiuzhengshuzi_3=imresize(shuzi_3,[11055],’bilinear'
%============把0—9,A-Z以及省份简称的数据存储方便访问====================
hanzishengfen=duquhanzi(imread('
cpgui.bmp'
),imread('
cpguizhou。
bmp’),imread('
cpjing.bmp’),imread('
cpsu.bmp'
),imread('
cpyue。
bmp’));
%因数字和字母比例不同.这里要修改
shuzizimu=duquszzm(imread(’0。
bmp'
1。
bmp’),imread(’2.bmp'
),imread(’3。
bmp’),imread(’4.bmp'
),。
imread('
5。
6。
bmp’),imread('
7。
8。
bmp’),imread(’9.bmp’),。
..
imread(’10.bmp’),imread('
11.bmp’),imread(’12.bmp'
13。
14。
),..。
15。
),imread(’16。
),imread(’17。
18.bmp'
),imread(’19。
),。
。
20.bmp’),imread(’21.bmp'
),imread(’22.bmp'
23.bmp’),imread('
24.bmp'
imread(’25.bmp’),imread('
26。
),imread(’27.bmp’),imread(’28。
29.bmp’),。
30.bmp’),imread(’31。
bmp’),imread(’32。
),imread(’33.bmp'
));
zimu=duquzimu(imread(’10.bmp’),imread('
11。
12。
bmp’),.。
16.bmp'
),imread(’17.bmp'
),imread(’18。
),imread(’19.bmp’),...
imread(’20.bmp'
),imread(’21.bmp’),imread(’22。
23.bmp'
),.。
25。
26.bmp’),imread('
27。
28.bmp’),imread('
29。
bmp’),。
imread(’30.bmp'
),imread(’31。
bmp’),imread(’32。
),imread(’33.bmp'
shuzi=duqushuzi(imread(’0。
),imread(’2.bmp'
3.bmp'
),imread(’4.bmp’),..。
imread(’5。
6.bmp'
),imread(’7。
bmp’),imread(’8.bmp'
9。
));
%============================识别结果================================
i=1;
%shibiezm_sz该函数识别数字有问题
jieguohanzi=shibiehanzi(hanzishengfen,xiuzhenghanzi);
shibiejieguo(1,i)=jieguohanzi;
i=i+1;
jieguozimu=shibiezimu(zimu,xiuzhengzimu);
shibiejieguo(1,i)=jieguozimu;
jieguozm_sz_1=shibiezm_sz(shuzizimu,xiuzhengzm_sz_1);
shibiejieguo(1,i)=jieguozm_sz_1;
i=i+1;
jieguozm_sz_2=shibiezm_sz(shuzizimu,xiuzhengzm_sz_2);
shibiejieguo(1,i)=jieguozm_sz_2;
i=i+1;
jieguoshuzi_1=shibieshuzi(shuzi,xiuzhengshuzi_1);
shibiejieguo(1,i)=jieguoshuzi_1;
jieguoshuzi_2=shibieshuzi(shuzi,xiuzhengshuzi_2);
shibiejieguo(1,i)=jieguoshuzi_2;
jieguoshuzi_3=shibieshuzi(shuzi,xiuzhengshuzi_3);
shibiejieguo(1,i)=jieguoshuzi_3;
%==========================对话框显示显示=============================================
shibiejieguo
msgbox(shibiejieguo,’识别结果’);
%=====================导出文本==================
fid=fopen(’Data。
xls'
'
a+’);
fprintf(fid,'
%s\r\n'
shibiejieguo,datestr(now));
fclose(fid);
%================读取计时==========================
t=toc
%=======================================