数字车牌识别系统设计和灰度处理Word格式.docx
《数字车牌识别系统设计和灰度处理Word格式.docx》由会员分享,可在线阅读,更多相关《数字车牌识别系统设计和灰度处理Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
数字图像处理,起源于20世纪20年代,当时通过海底电缆从英国伦敦到美国纽约传输了一幅照片,采用了数字压缩技术。
1964年美国的JPL实验室处理了太空船“徘徊者七号”发回的月球照片,标志着数字图像处理技术开始得到实际应用。
其后,卫星遥感、军事、气象、医学等学科的发展推动了数字图像处理技术的快速发展。
目前。
数字图像处理己成为工程学、计算机科学、信息科学、物理学、化学、生物学等学科的学习研究对象。
在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。
对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。
3.步骤
3.1理论知识
3.1.1图像预处理
输入车牌图像———>
灰度校正——>
平滑处理——>
提取边缘
3.1.2灰度变换
输入的彩色图像包含大量颜色信息,会占用较多的存储空间,且处理时也会降低系统的执行速度,因此对图像进行识别等处理时.常将彩色图像转换为灰度图像,以加快处理速度。
可对图像进行灰度化处理、提取背景图像、增强处理、图像二值化,边缘检测、滤波等处理。
然后采用robert算子进行边缘检测,再用imopen和imclose对所得二值图像作开、闭操作进行滤波。
3.1.3边缘提取
数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础。
边缘是图像的重要特征,图像理解和分析的第一步往往就是边缘检测。
目前,边缘检测已成为计算机视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。
车牌的一个重要特征就是在该区域存在大量的边缘信息,所以边缘检测对于我们进行车牌识别来说也是相当重要的。
边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的部分,如灰度值的突变、颜色的突变、纹理结构的突变等,同时边缘也是不同区域的分界处。
图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向灰度变化剧烈。
由于边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就利用这个特点,通过计算图像中像素的梯度值来确定边缘点。
3.1.4车牌定位
自然环境下,汽车图像背景复杂,光照不均匀,在自然背景中准确地确定牌照区域是整个图像识别过程中的关键。
首先对采集到的图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳区域作为牌照区域。
将其从图像中分割嘲出来,同时要考虑车牌倾斜问题。
算法流程如下
3.1.5字符分割
完成牌照区域的定位后,再将牌照区域分割为单个字符,可采用垂直投影法。
由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值.并且该位置应满足牌照的字符书写格式、字符、尺寸限制等条件。
利用垂直投影法实现复杂环境下汽车图像中的字符分割效果较好。
3.1.6字符识别
字符识别方法主要有基于模板匹配算法和基于人工神经网络算法。
基于模板匹配算法是首先将分割后的字符二值化,并将其尺寸缩放为字符数据库中模板的大小,然后与所有模板进行匹配,最后选取最佳匹配作为结果。
建立数字库对该方法在车牌识别过程中很重要,数字库准确才能保证检测出的数据正确。
基于人工神经元网络的算法有两种,一种是先对特征提取待识别字符,然后用所获得的特征训练神经网络分配器;
另一种是直接将待处理图像输入网络由网络自动实现特征提取直至识别结果。
模板匹配实现简单,当字符较规整时,对字符图像的缺损、污迹干扰适应力强且识别率高。
因此,这里将模板匹配作为车牌字符识别的主要方法。
根据课程设计的内容和要求。
首先必须要了解Matlab用户界面设计工具箱,然后能灵活运用Matlab图形处理工具进行相应的用户界面设计和图像处理,最后程序设计和功能实现。
具体步骤如下:
双击打开MATLAB7.0→File→New→GUI→单击axes,设置用户界面。
axes1大小→单击OK,调用所需按钮→调整大小、颜色、修改名称;
再建axes2→单击OK,调整按钮大小和颜色,修改名称→保存→View→M-fileEdit→编写程序
打开
[name,path]=uigetfile('
*.*'
'
'
);
file=[path,name];
axes(handles.axes1);
x=imread(file);
%读取图像
handles.img=x;
guidata(hObject,handles);
%输出
保存
[filename,pathname]=uiputfile('
*.bmp'
ifisequal([filename,pathname],[0,0])
errordlg('
无图像或未处理'
return;
else
file=strcat(pathname,filename);
i=getimage(handles.axes2);
imwrite(i,file);
end
另存
Î
Þ
Í
¼
Ï
ñ
»
ò
´
¦
À
í
'
k=handles.axes2;
i=getimage(k);
打印
printdlg
printdlg(fig)
printdlg('
-crossplatform'
fig)
printdlg(-'
setup'
退出
clc;
closeall;
close(gcf)
直方图统计
axes(handles.axes2);
x=(handles.img);
set(handles.axes2,'
xtick'
0:
50:
255);
ifisrgb(x)
y=rgb2gray(x);
y=x;
a=imhist(y);
y1=a(1:
15:
256);
x1=1:
256;
bar(x1,y1);
直方图均衡
a=histeq(x(:
:
1));
b=histeq(x(:
2));
c=histeq(x(:
3));
k(:
1)=a;
2)=b;
3)=c;
imshow(k);
h=histeq(x);
imshow(h)
end
上下翻转
ifisrgb(handles.img)
fork=1:
3
y(:
k)=flipud(x(:
k));
end
imshow(y);
title('
É
Â
×
ª
)
)=flipud(x(:
));
imshow(y)
左右翻转
k)=fliplr(x(:
×
ó
Ó
Ò
)=fliplr(x(:
¡
Á
?
彩色变灰色
x=rgb2gray(handles.img);
imshow(x);
errordlg('
这已经是灰度图像,转换失败'
二值化处理
y=rgb2gray(x);
%
y=x;
y1=graythresh(y);
a=im2bw(y,y1);
imshow(a)
title('
图像二值化'
伪色彩增强
if
~isrgb(handles.img)
I=(handles.img);
I=double(I);
[m,n]=size(I);
c=256;
for
i=1:
m
j=1:
n
I(i,j)<
=c/4
R(i,j)=0;
G(i,j)=4*I(i,j);
B(i,j)=c;
else
=c/2
G(i,j)=c;
B(i,j)=-4*I(i,j)+2*c;
=3*c/4
R(i,j)=4*I(i,j)-2*c;
B(i,j)=0;
R(i,j)=c;
G(i,j)=-4*I(i,j)+4*c;
out(i,j,1)=R(i,j);
out(i,j,2)=G(i,j);
out(i,j,3)=B(i,j);