期末课程报告:数字图像中车牌识别的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
期末课程报告:数字图像中车牌识别的matlab实现
数字图像处理期末课程报告
题目:车牌识别的matlab实现
题目类型:软件型
学院信息工程与自动化学院
专业:计算机科学与技术
年级: XXXX 学号: XXXXXXX
学生姓名: xxx
指导教师: xx
日期: 2012-6-8
目录
摘要: (4)
关键词: (4)
实验工具: (4)
车辆牌照识别流程: (4)
实验内容及步骤 (5)
1.图像预处理: (5)
2.车牌定位——车牌起始位置和终止位置 (8)
3.图片二值化 (9)
4.列方向像素点灰度值累计 (11)
5.字符分割: (12)
6.建立字符模板数据库 (14)
7.归一化训练 (15)
结果分析: (22)
摘要:
本次课程设计的目的是通过对基于MATLAB的字符识别的研究,以汽车牌照识别的设计为实例,详细介绍字符识别的相关原理。整个汽车牌照识别的过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析,处理。寻找出对于具体的汽车牌照识别过程的最好的方法。
关键词:
MATLAB 字符识别车牌识别神经网络图像处理
实验工具:
MATLAB 7.8(R2009a)。
车辆牌照识别流程:
基于 MATLAB图像处理的汽车牌照识别,主要包括车牌定位、字符车牌分割、和车牌字符识别三个关键环节。
流程图如下:
原始图图像预车牌定
字符识
字符分
字符数
其中,
(1)原始图像:由数码相机或其它扫描装置拍摄到的图
像;(本实验图片由数码相机获得)
(2)图像预处理:对动态采集到的图像进行灰度处理、边
缘检测、腐蚀、膨胀、滤波、等处理排除图像干扰;
(3)车牌定位:计算边缘图像的投影面积,寻找峰谷点,
大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到的便为车牌区域;
(4)字符分割:利用投影检测的字符定位分割方法得到单
个的字符;
(5)字符数据库:构造训练样本数据库,为第6步的字符
识别建立字符模板数据库;
(6)字符识别:通过基于模板匹配的OCR算法或基于人工
神经网络的OCR算法,通过特征对比或训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。
实验内容及步骤
1.图像预处理:
预处理源代码:
>> I=imread('h:\tuku\car1.jpg');%读取图像
figure(); subplot(3,2,1),imshow(I), title('原始图像');
>> I1=rgb2gray(I);%转化为灰度图像
subplot(3,2,2),imshow(I1),title('灰度图像');
>> I2=edge(I1,'robert',0.09,'both');%采用robert算子进行边缘检测
subplot(3,2,3),imshow(I2),title('边缘检测后图像');
>> se=[1;1;1]; %线型结构元素
I3=imerode(I2,se); %腐蚀图像
subplot(3,2,4),imshow(I3),title('腐蚀后边缘图像');
>> se=strel('rectangle',[25,25]); %矩形结构元素
I4=imclose(I3,se);%图像聚类、填充图像
subplot(3,2,5),imshow(I4),title('填充后图像');
>> I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分
subplot(3,2,6),imshow(I5),title('形态滤波后图像');
预处理结果截图:
行列方向像素值累计值:
源代码:
[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();
subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素');
运行截图:
2.车牌定位——车牌起始位置和终止位置
PY1=MaxY;
while ((Y1(PY1,1)>=45)&&(PY1>1))
PY1=PY1-1;
end
PY2=MaxY;
while ((Y1(PY2,1)>=45)&&(PY2 PY2=PY2+1; end 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 subplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('像数'); 3.图片二值化 代码: if isrgb(DW) I1 = rgb2gray(DW); %将RGB图像转化为灰度图像else I1=I; end g_max=double(max(max(I1)));