目求
目:利matlab实现车牌识系统熟悉matlab应软件基础知识解基程序设计方法利解决数字信号处理实际应问题加深理知识掌握学知识系统高效贯穿实践中避免理实践脱离巩固理课知识时加强实践力提高理联系实践提高身动手力时断调试程序提高独立编程水实践中断完善理基础助身综合力提高
求:
1理解种图处理方法确切意义
2独立进行方案制定系统结构设计合理
3.程序开发时必须清楚实现函数目作需程序书写时说明做适注释果matlab进行开发理解函数具体意义适范围写课设报告时必须函数功参数做详细说明
4通幅形式图检测该系统稳定性正确性
二设计容
学MATLAB程序设计利MATLAB函数功设计实现通设计车牌识系统车牌识系统基工作原理:手机拍摄包含车辆牌图输入计算机中进行预处理牌进行搜索检测定位分割出包含牌字符矩形区域然牌字符进行二值化分割单字符然逐创建字符模板中字符进行匹配匹配成功输出终匹配结束输出车牌号码数字车牌识系统基工作原理图图1示:
字符分割
车辆
输出车牌号码
字符识
车牌定位
图预处理
图采集
三总体方案设计
车辆牌识整系统车牌定位字符分割识两部分组成中车牌定位分图预处理边缘提取模块牌定位分割模块字符识分字符分割单字符识两模块
牌分割牌字符识原始图象应具适亮度较度清晰辩牌图象采智手机开放户外环境拍加车辆牌整洁度然光条件拍摄时摄机牌矩离等素影响牌图象出现模糊歪斜缺损等严重缺陷需原始图象进行识前预处理
牌定位分割牌识系统关键技术目图象预处理原始灰度图象中确定牌具体位置包含牌字符块子图象整图象中分割出供字符识子系统识分割准确否直接关系整牌字符识系统识率
拍摄时光条件牌整洁程度影响摄机焦距调整镜头光学畸变产生噪声会程度造成牌字符边界模糊细节清笔划断开粗细均加牌污斑等缺陷致字符提取困难进影响字符识准确性需拍出车牌进行处理程中采画图工具汽车图车牌部分进行裁剪车牌蓝色部分亮方颜色加深车牌中白色原点抹外车牌铆钉车牌蓝色背景覆盖样分割出字符更加准确
车牌识终目车牌文字进行识应模板匹配方法
系统运行程中进行图处理程中进行量数处理处理器存求较高CPU求频600HZ存128MB系统运行Windows7Windows2000者Windows XP操作系统程序调试时matlabR2011a
四功模块实现程序
()首先介绍代码中函数功法:
1Imerode
功:图实现腐蚀操作膨胀操作反操作
法:IM2 imerode(IMSE)
IM2 imerode(IMNHOOD)
IM2 imerode(IMSEPACKOPTM)
IM2 imerode(PADOPT)
IM2 imerode(IMSE) 腐蚀灰度二值压缩二值图IM返回IM2参数SEstrel函数返回结构元素者结构元素象组
IM2 imerode(IMNHOOD)腐蚀图IM里NHOOD定义结构元素邻域01矩阵
IM2 imerode(PADOPT)指出输出图(否输入图致)
2imdilate
功:图实现膨胀操作
法:IM2 imdilate(IMSE)
IM2 imdilate(IMNHOOD)
IM2 imdilate(IMSEPACKOPT)
IM2 imdilate(PADOPT)
IM2 imdilate(IMSE) 膨胀灰度二值压缩二值图IM返回IM2参数SEstrel函数返回结构元素者结构元素象组
IM2 imdilate(IMNHOOD)膨胀图IM里NHOOD定义结构元素邻域01矩阵
IM2 imdilate(IMSEPACKOPT)定义IM否压缩二值图
IM2 imdilate(PADOPT)指出输出图
3strel
功:膨胀腐蚀开闭运算等操作结构元素象(坛膨胀腐蚀等操作进行讲解)
法:SE strel(shapeparameters)
创建指定形状shape应结构元素中shape种类
arbitrary''pair''diamond''periodicline''disk''rectangle'
'line''square''octagon
参数parameters般控制SE
4edge
BW edge(I)
采灰度二值化图I作输入返回I相二值化图BW函数检测边缘方1方0
BW edge(I'sobel') 动选择阈值Sobel算子进行边缘检测
BW edge(I'sobel'thresh) 根指定敏感度阈值threshSobel算子进行边缘检测忽略阈值边缘thresh空时动选择阈值
BW edge(I'sobel'threshdirection) 根指定敏感度阈值thresh指定方directionSobel 算子进行边缘检测Direction取字符串值horizontal(水方)vertical(垂直方)both(两方)
[BWthresh] edge(I'sobel') 返回阈值
BW edge(I'prewitt') 动选择阈值prewitt算子进行边缘检测
BW edge(I'prewitt'thresh) 根指定敏感度阈值threshprewitt算子进行边缘检测忽略阈值边缘thresh空时动选择阈值
BW edge(I'prewitt'threshdirection) 根指定敏感度阈值thresh指定方directionprewitt算子进行边缘检测Direction取字符串值horizontal(水方)vertical(垂直方)both(两方)默认方both
BW edge(I'roberts') 动选择阈值roberts算子进行边缘检测
BW edge(I'roberts'thresh) 根指定敏感度阈值threshRoberts算子进行边缘检测忽略阈值边缘thresh空时动选择阈值
5Imclose
功:图实现闭运算闭运算滑图轮廓开运算相反般融合窄缺口细长弯口掉洞填补轮廓缝隙
法:IM2 imclose(IMSE)
IM2 imclose(IMNHOOD)
法imopen相
6imopen
功:图实现开运算开运算般滑图轮廓消弱狭窄部分掉细突出
法:IM2 imopen(IMSE)
IM2 imopen(IMNHOOD)
IM2 imopen(IMSE) 结构元素SE实现灰度图二值图IM形态开运算SE单结构元素象者结构元素象数组
IM2 imopen(IMNHOOD)结构元素strel(NHOOD)执行开运算
7bwareaopen
功:删面积象
格式:
BW2 bwareaopen(BWPconn)
作:
删二值图BW中面积P象默认情况conn8邻域
8tictoc函数
两函数般配合tic表示计时开始toc表示计时结束
格式:
tic
意表达式
toc
ttoc
9fspecial
功:建立预定义滤波算子语法格式:
h fspecial(type)
h fspecial(typepara)
中type指定算子类型para指定相应参数
type类型:
1'average'
averaging filter
均值滤波参数hsize代表模板尺寸默认值33
'disk'
circular averaging filter
圆形区域均值滤波参数radius代表区域半径默认值5
'gaussian'
Gaussian lowpass filter
高斯低通滤波两参数hsize表示模板尺寸默认值3 3sigma滤波器标准值单位素默认值05
'prewitt'
Prewitt horizontal edgeemphasizing filter
边缘增强3 3参数
'sobel'
Sobel horizontal edgeemphasizing filter
边缘提取参数
9 filter2
J filter2(hI)指定滤波器hI进行滤波结果保存J中
10bwarea
函数功:计算二值图中象总面积
调格式:
total bwarea(BW)
估算二值图BW中象总面积 返回total标量 值致反映图中on素数素类型 度量标准 结果十分精确BW数值类型(整型浮点型)者逻辑类型数值类型 素值0视on返回值totaldouble类型
11sum
功:函数求
sum(x2)表示矩阵x横相加求行结果列量
缺省sum(x)竖相加求列结果行量
A>0结果逻辑矩阵原A致
A中零元素位置置1等零位置置0
横求求A中行零元素数
12 round
功:四舍五入
调格式:Y round(X)
matlab中round四舍五入函数
(二)汽车图进行图转换图增强边缘检测等
1载入车牌图:
Iimread('car1jpg')
figure(1)imshow(I)title('original image')车牌原图显示出结果:
2彩图转换灰度图绘制直方图:
I1rgb2gray(I)彩图转换灰度图
figure(2)subplot(121)imshow(I1)title('gray image')
figure(2)subplot(122)imhist(I1)title('灰度图直方图')绘制灰度图直方图
结果示:
3 roberts算子进行边缘检测:
I2edge(I1'roberts'018'both')选择阈值018roberts算子进行边缘检测
figure(3)imshow(I2)title('roberts operator edge detection image')
结果:
4图实施腐蚀操作:
se[111]
I3imerode(I2se)图实施腐蚀操作膨胀反操作
figure(4)imshow(I3)title('corrosion image')
5滑图
sestrel('rectangle'[2525])构造结构元素正方形构造se
I4imclose(I3se) 图聚类填充图
figure(5)imshow(I4)title('smothing image')
结果示:
6 删二值图象
I5bwareaopen(I42000) 聚团灰度值2000部分
figure(6)imshow(I5)title('remove the small objects') imshow函数显示滤波图
结果示 :
(三)车牌定位
[yxz]size(I5)返回I5维尺寸存储xyz中
myIdouble(I5)I5转换成双精度
tic tic表示计时开始toc表示计时结束
Blue_yzeros(y1)产生y*1零阵
for i1y
for j1x
if(myI(ij1)1)
果myI(ij1)myI图中坐标(ij)点值1该点车牌背景颜色蓝色
Blue_y(i1)值加1
Blue_y(i1) Blue_y(i1)+1蓝色素点统计
end
end
end
[temp MaxY]max(Blue_y)Y方车牌区域确定
temp量yellow_y元素中值MaxY该值索引
PY1MaxY
while ((Blue_y(PY11)>5)&&(PY1>1))
PY1PY11
end
PY2MaxY
while ((Blue_y(PY21)>5)&&(PY2
end
IYI(PY1PY2)
行方车牌区域确定
X方
Blue_xzeros(1x)进步确定x方车牌区域
for j1x
for iPY1PY2
if(myI(ij1)1)
Blue_x(1j) Blue_x(1j)+1
end
end
end
PX11
while ((Blue_x(1PX1)<3)&&(PX1
end
PX2x
while ((Blue_x(1PX2)<3)&&(PX2>PX1))
PX2PX21
end
PX1PX11车牌区域校正
PX2PX2+1
dwI(PY1PY28PX1PX2)
ttoc
figure(7)subplot(121)imshow(IY)title('Line direction areas')行方车牌区域确定
figure(7)subplot(122)imshow(dw)title('positioning color images')定位车牌区域示:
(四)字符分割识
1车牌进步处理
分割出彩色车牌图进行灰度转换二值化均值滤波腐蚀膨胀字符分割车牌图中分离出组成车牌号码单字符图分割出字符进行预处理(二值化化)然分析提取分割出字符图进行识出文形式车牌号码代码:
imwrite(dw'dwjpg')彩色车牌写入dw文件中
aimread('dwjpg')读取车牌文件中数
brgb2gray(a)车牌图转换灰度图
imwrite(b'gray licence platejpg')灰度图写入文件中
figure(8)subplot(321)imshow(b)title('车牌灰度图')
g_maxdouble(max(max(b)))
g_mindouble(min(min(b)))
Tround(g_max(g_maxg_min)3) T 二值化阈值
[mn]size(b)
d(double(b)>T) d二值图
imwrite(d'binary licence platejpg')
subplot(322)imshow(d)title('before filtering binary licence plate')
均值滤波前
滤波
hfspecial('average'3)
建立预定义滤波算子average均值滤波模板尺寸3*3
dim2bw(round(filter2(hd)))指定滤波器hh进行d均值滤波
imwrite(d'after average licence platejpg')
subplot(323)imshow(d)title('after average licence plate')
某图进行操作
膨胀腐蚀
sestrel('square'3) 3X3正方形结果元素象创建图进行膨胀
'line''diamond''ball'
seeye(2) eye(n) returns the nbyn identity matrix 单位矩阵
[mn]size(d)返回矩阵b尺寸信息 存储mn中
if bwarea(d)mn>0365 计算二值图中象总面积整面积否0365
dimerode(dse)果0365图进行腐蚀
elseif bwarea(d)mn<0235 计算二值图中象总面积整面积否0235
dimdilate(dse)果实现膨胀操作
end
imwrite(d'expansion or corrosion the licence platejpg')
subplot(324)imshow(d)title('expansion or corrosion the licence plate')
运行结果示:
2字符分割
汽车牌动识程中字符分割承前启作前期牌定位基础进行字符分割然利分割结果进行字符识字符识算法车牌字符间间隔较会出现字符粘连情况处采方法寻找连续文字块长度某阈值认该块两字符组成需分割般分割出字符进行进步处理满足步字符识需车牌识需太处理已达正确识目进行化处理然进行期处理
寻找连续文字块长度某阈值认该块两字符组成需分割
首先创建子函数qiegegetword调子程序车牌字符分割开进行化处理
dqiege(d)
[mn]size(d)
subplot(325)imshow(d)title(n)
k11k21ssum(d)j1
while j~n
while s(j)0
jj+1
end
k1j
while s(j)~0 && j
end
k2j1
if k2k1>round(n65)
[valnum]min(sum(d([k1+5k25])))
d(k1+num+5)0 分割
end
end
切割
dqiege(d)
切割出 7 字符
y110y2025flag0word1[]
while flag0
[mn]size(d)
left1wide0
while sum(d(wide+1))~0
widewide+1
end
if wide
dqiege(d)
else
tempqiege(imcrop(d[1 1 wide m]))
[mn]size(temp)
allsum(sum(temp))
two_thirdssum(sum(temp([round(m3)2*round(m3)])))
if two_thirdsall>y2
flag1word1temp WORD 1
end
d([1wide])0dqiege(d)
end
end
分割出第二字符
[word2d]getword(d)
分割出第三字符
[word3d]getword(d)
分割出第四字符
[word4d]getword(d)
分割出第五字符
[word5d]getword(d)
分割出第六字符
[word6d]getword(d)
分割出第七字符
[word7d]getword(d)
figure(9)
subplot(271)imshow(word1)title('1')
subplot(272)imshow(word2)title('2')
subplot(273)imshow(word3)title('3')
subplot(274)imshow(word4)title('4')
subplot(275)imshow(word5)title('5')
subplot(276)imshow(word6)title('6')
subplot(277)imshow(word7)title('7')
[mn]size(word1)
商系统程序中化 40*20处演示
word1imresize(word1[40 20])
word2imresize(word2[40 20])
word3imresize(word3[40 20])
word4imresize(word4[40 20])
word5imresize(word5[40 20])
word6imresize(word6[40 20])
word7imresize(word7[40 20])
subplot(278)imshow(word1)title('1')
subplot(279)imshow(word2)title('2')
subplot(2710)imshow(word3)title('3')
subplot(2711)imshow(word4)title('4')
subplot(2712)imshow(word5)title('5')
subplot(2713)imshow(word6)title('6')
subplot(2714)imshow(word7)title('7')
imwrite(word1'1jpg')
imwrite(word2'2jpg')
imwrite(word3'3jpg')
imwrite(word4'4jpg')
imwrite(word5'5jpg')
imwrite(word6'6jpg')
imwrite(word7'7jpg')
运行结果:
(三)车牌识:
模板匹配图象识方法中具代表性基方法识图象图象区域f(ij)中提取干特征量模板T(ij)相应特征量逐进行较计算间规格化互相关量中互相关量表示期间相似程度高图象相应类计算图象模板特征量间距离距离法判定属类
处采相减方法求字符模板中字符相似然找相似度输出汽车牌字符般七部分车牌第位汉字通常代表车辆属省份紧接字母数字车牌字符识般文字识字符数限汉字约50写英文字母26数字10实验方便结合次设计选汽车牌特点建立7数字26字母10数字模板模板设计方法相
首先取字符模板接着次取识字符模板进行匹配模板字符相减0越越匹配幅相减图0值数保存识出结果
识流程图示:
建立动识代码表
读取分割出字符
第字符模板中汉字模板进行匹配
第二字符模板中字母模板进行匹配
识字符模板字符相减值越相似度越找匹配
识完成输出模板应值
5字符模板中字母数字模板进行匹配
源代码:
liccodechar(['0''9' 'A''Z' '苏豫陕鲁京辽浙']) 建立动识字符代码表
SubBw2zeros(4020)
l1
for I17
iiint2str(I)
timread([ii'jpg'])
SegBw2imresize(t[40 20]'nearest')
SegBw2double(SegBw2)>20
if l1 第位汉字识
kmin37
kmax43
elseif l2 第二位 A~Z 字母识
kmin11
kmax36
else l>3 第三位字母数字识
kmin1
kmax36
end
for k2kminkmax
fnamestrcat('字符模板\'liccode(k2)'jpg')
SamBw2 imread(fname)
SamBw2double(SamBw2)>1
for i140
for j120
SubBw2(ij)SegBw2(ij)SamBw2(ij)
end
end
相两幅图相减第三幅图
Dmax0
for k1140
for l1120
if ( SubBw2(k1l1) > 0 | SubBw2(k1l1) <0 )
DmaxDmax+1
end
end
end
Error(k2)Dmax
end
Error1Error(kminkmax)
MinErrormin(Error1)
findcfind(Error1MinError)
Code(l*21)liccode(findc(1)+kmin1)
Code(l*2)' '
ll+1
end
figure(10)imshow(dw)title (['车牌号码' Code]'Color''b')
通方法外幅图进行检测较识效果面幅车牌检测结果示:
参考文献
[1] 东健数字图处理[M]西安电子科技学出版社2008年
[2] 阮秋琦数字图处理[M]电子工业出版社2001年
[3] 徐建华图处理分析[M]科学出版社1999年
[4] 徐中立数字图智信息处理[M]科学教育出版社2001年
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档