智能网联汽车概论课程设计2车牌号码识别.docx
- 文档编号:653069
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:22
- 大小:617.21KB
智能网联汽车概论课程设计2车牌号码识别.docx
《智能网联汽车概论课程设计2车牌号码识别.docx》由会员分享,可在线阅读,更多相关《智能网联汽车概论课程设计2车牌号码识别.docx(22页珍藏版)》请在冰豆网上搜索。
智能网联汽车概论课程设计2车牌号码识别
课程设计——车牌号码识别
利用MATLAB对车牌号码进行识别。
车牌号码识别步骤主要包括原始图像采集、车牌切割、字符切割和字符识别,其中车牌切割又包括灰度变换、边缘检测、图像腐蚀、图像膨胀、删除小面积对象、车牌定位切割;字符切割又包括定位切割后的车牌图像灰度处理、直方图均衡化、图像二值化处理、中值滤波、分割字符。
本例车牌号码识别具体步骤如下。
(1)读取车牌原始图像。
(2)原始图像灰度变换。
(3)灰度图像边缘检测。
(4)图像腐蚀。
(5)图像膨胀。
(6)删除小面积对象。
(7)车牌定位切割。
(8)定位切割后的车牌图像灰度处理。
(9)灰度图像直方图均衡化。
(10)图像二值化处理。
(11)图像中值滤波。
(12)字符分割。
(13)字符显示和创建。
(14)车牌号码识别结果显示。
利用MATLAB编写子程序函数my_imsplit,并储存于my_imsplit.m文件中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function[split_img]=my_imsplit(img)
[m,n]=size(img);
top=1;bottom=m;left=1;right=n;
whilesum(img(top,:
))==0&&top<=m
top=top+1;
end
whilesum(img(bottom,:
))==0&&bottom>=1
bottom=bottom-1;
end
whilesum(img(:
left))==0&&left<=n
left=left+1;
end
whilesum(img(:
right))==0&&right>=1
right=right-1;
end
width=right-left;
height=bottom-top;
split_img=imcrop(img,[lefttopwidthheight]);
end
%定义图像分割函数
%获取图像大小
%参数赋值
%获取图像顶部位置
%获取图像顶部位置
%获取图像顶部位置
%获取图像底部位置
%获取图像底部位置
%获取图像底部位置
%获取图像左边界
%获取图像左边界
%获取图像左边界
%获取图像右边界
%获取图像右边界
%获取图像右边界
%获取图像宽度
%获取图像高度
%切割图像
结束
利用MATLAB编写子程序函数getword,并储存于getword.m文件中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function[word,result]=getword(img)
word=[];flag=0;y1=8;y2=0.5;
whilefla==0
[m,n]=size(img);
width=0;
whilesum(img(:
width+1))~=0&&width<=n-2
width=width+1;
end
temp=my_imsplit(imcrop(img,[1,1,width,m]));
[m1,n1]=size(temp);
ifwidth
img(:
[1,width])=0;
ifsum(sum(img))~=0
img=y_imsplit(img);
else
word=[];
flag=1;
end
else
word=my_imsplit(imcrop(img,[1,1,width,m]));
img(:
1:
width)=0;
ifsum(sum(img))~=0
img=my_imsplit(img);
flag=1;
else
img=[];
end
end
end
result=img;
end
%定义字符分割函数
%参数赋值
%判断flag是否等于0
%获取字符大小
%设置符号宽度为0
%判断字符宽度
%字符宽度加1
%判断结束
%调用字符在切割函数
%获取字符大小
%判断字符宽度
%切割字符宽度
%判断字符宽度是否不等于0
%切割最小字符
%否则
%赋值
%赋值
%结束
%否则
%调取字符再切割函数
%切割字符
%判断字符宽度是否等于0
%切割最小字符
%赋值
%否则
%赋值
%结束
%结束
%结束
%赋值
结束
利用MATLAB编写车牌号码识别主程序。
1
2
3
4
5
6
[filename,filepath]=uigetfile('.jpg','输入要识别的图像');
file=strcat(filepath,filename);
img=imread(file);
figure
(1)
imshow(img)
title('原始图像')
%输入原始图像
%横向连接字符串
%读取图像文件
%设置图形窗口1
%显示原始图像
%原始图形标注
读取车牌原始图像
7
8
9
10
11
12
13
14
img1=rgb2gray(img);
figure
(2)
subplot(1,2,1)
imshow(img1)
title('灰度图像')
subplot(1,2,2)
imhist(img1)
title('灰度图像直方图')
%img图像转为灰度图像
%设置图形窗口2
%设置图形位置
%显示灰度图像
%灰度图像标注
%设置图形位置
%提取img1图像直方图信息
%灰度图像直方图标注
原始图像灰度变换
15
16
17
18
img4=edge(img1,'roberts',0.15,'both');
figure(3)
imshow(img4)
title('边缘检测后的图像')
%img1图像边缘检测
%设置图形窗口3
%显示边缘检测后的图像
%边缘检测后的图像标注
灰度图像边缘检测
19
20
21
22
23
se=[1;1;1];
img5=imerode(img4,se);
figure(4)
imshow(img5)
title('腐蚀后的图像')
%设置se初值
%img4图像腐蚀
%设置图形窗口4
%显示腐蚀后的图像
%腐蚀后的图像标注
图像腐蚀
24
25
26
27
28
se=strel('rectangle',[30,30]);
img6=imclose(img5,se);
figure(5)
imshow(img6)
title('膨胀后的图像')
%计算se
%img5图像膨胀
%设置图形窗口5
%显示膨胀后的图像
%膨胀后的图像标注
图像膨胀
29
30
31
32
img7=bwareaopen(img6,2200);
figure(6)
imshow(img7)
title('删除小面积后的图像')
%删除小于2200的图像
%设置图形窗口6
%显示删除小面积后的图形
%删除小面积后的图形标注
删除小面积对象
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[y,x,z]=size(img7);
img8=double(img7);
blue_Y=zeros(y,1);
fori=1:
y
forj=1:
x
if(img8(i,j)==1)
blue_Y(i,1)=blue_Y(i,1)+1;
end
end
end
img_Y1=1;
while(blue_Y(img_Y1)<5)&&(img_Y1 img_Y1=img_Y1+1; end img_Y2=y; while(blue_Y(img_Y2)<5)&&(img_Y2>img_Y1) img_Y2=img_Y2-1; end blue_X=zeros(1,x); forj=1: x fori=1: y if(img8(i,j)==1) blue_X(1,j)=blue_X(1,j)+1; end end end img_X1=1; while(blue_X(1,img_X1)<5)&&(img_X1 img_X1=img_X1+1; end img_X2=x; while(blue_X(1,img_X2)<5)&&(img_X2>img_X1) img_X2=img_X2-1; end img9=img(img_Y1: img_Y2,img_X1: img_X2,: ); figure(7) imshow(img9) title('定位切割后的车牌图像') imwrite(img9,'车牌图像.jpg') %获取img7图像大小 %img7转成双精度浮点型 %Y方向生成全零矩阵 %变量i循环开始 %变量j循环开始 %判断车牌位置区域 %像素点统计 %判断结束 %变量j循环结束 %变量i循环结束 %设Y坐标最小值为1 %判断Y方向值 %增加坐标值 %判断结束 %设Y坐标最大值为y %判断Y方向值 %减小坐标值 %判断结束 %X方向生成全零矩阵 %变量j循环开始 %变量i循环开始 %判断车牌位置区域 %像素点统计 %判断结束 %变量i循环结束 %变量j循环结束 %设X坐标最小值为1 %判断X方向值 %增加坐标值 %判断结束 %设X坐标最大值为y %判断X方向值 %减小坐标值 %判断结束 %确定X、Y最小值和最大值 %设置图形窗口7 %显示定位后的车牌图像 %定位后的车牌图像标注 %保存定位切割后的车牌图像 车牌定位切割 72 73 74 75 76 77 78 79 80 plate_img=imread('车牌图像.jpg'); plate_img1=rgb2gray(plate_img); figure(8) subplot(1,2,1) imshow(plate_img1) title('灰度图像') subplot(1,2,2) imhist(plate_img1) title('灰度图像直方图') %读取定位切割后的车牌图像 %转换成灰度图像 %设置图形窗口8 %设置图形位置 %显示灰度图像 %灰度图像标注 %设置图形位置 %提取灰度图像直方图信息 %灰度图像直方图标注 定位切割后的车牌图像灰度处理 81 82 83 84 85 86 87 88 plate_img2=histe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能网联汽车概论 课程设计2 车牌号码识别 智能 汽车 概论 课程设计 车牌 号码 识别
![提示](https://static.bdocx.com/images/bang_tan.gif)