车牌识别含程序.docx
- 文档编号:30079301
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:14
- 大小:623.25KB
车牌识别含程序.docx
《车牌识别含程序.docx》由会员分享,可在线阅读,更多相关《车牌识别含程序.docx(14页珍藏版)》请在冰豆网上搜索。
车牌识别含程序
图形通信论文
--基于matlab的车牌检测设计
学院:
信息科学科学与工程学院
班级:
姓名:
爱捆得宠
学号:
指导老师:
2013年6月15日
摘要
车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。
车牌识别系统主要包括了图像采集、图像预处理、车牌定位、车牌分割、字符识别等五大核心部分。
本文主要介绍车牌的检测部分,即图像预处理、车牌定位模块的实现方法。
本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。
车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。
本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。
关键词:
MATLAB、图像预处理、车牌定位、车牌分割
1、模块及其作用
车牌检测的整体模块框图如下图1所示:
图1.整体模块图
1.1.灰度化
汽车图像样本目前大都是通过摄像机、数码相机等设备拍摄获取的,因而预处理前的图像都是彩色图像。
真彩色图像又称RGB图像,它是利用R、G、B分量表示一个像素的颜色,R、G、B分别代表红、绿、蓝3种不同的颜色,通过三基色可以合成出任意颜色。
而每个分量有255种值可取,这样一个像素点可以有,1600多万(255*255*255)的颜色的变化范围。
而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,每一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
所以,对一个尺寸为m*n的彩色图像来说,存储为一个m*n*3的多维数组。
彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度。
由于图像的每个象素都具有三个不同的颜色分量,存在许多与识别无关的信息,不便于进一步的识别工作,因此在对图像进行识别等处理中,经常将彩色图像转变为灰度图像,以加快处理速度。
数字图像分为彩色图像和灰度图像。
在RGB模型中,如果R=G=B,则颜色表示一种灰度颜色,其中R=G=B的值叫做灰度值。
由彩色转换为灰度的过程叫做灰度化处理。
灰度图像就是只有强度信息而没有颜色信息的图像,存储灰度图像只需要一个数据矩阵,矩阵每个元素表示对应位置像素的灰度值。
彩色图像的象素色为RGB(R,G,B),灰度图像的象素色为RGB(r,r,r),R,G,B可由彩色图像的颜色分解获得.而R,G,B的取值范围是0-255,所以灰度的级别只有256级。
对于将彩色图像转换成灰度图像时,目前比较主流的灰度化方法叫平均值法,公式为:
H=0.229R+0.588G+0.144B
公式中H表示灰度图的亮度值;R代表彩色图像红色分量值;G代表色彩图像绿色分量值;B代表彩色图像蓝色分量值。
RGB三分量前的系数为经验加权值。
加权系数的取值建立在人眼的视觉模型之上。
对于人眼较为敏感的绿色取较大的权值;对人眼较为不敏感的蓝色则取较小的权值。
通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。
在MATLAB中我们可以调用im2gray函数对图像进行灰度化处理。
程序:
I=imread('cp.jpg');
figure
(1),imshow(I);title('原图');%显示原图
gray_pic=rgb2gray(I);%灰度变换
figure
(2),imshow(gray_pic);title('灰度图');%显示灰度图
结果:
1.2边缘检测
边缘是指图像灰度发生空间突变或者在梯度方向上发生突变的像素的集合。
用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。
因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,使其易于后面的分割和识别。
通过良好的边缘检测可以大幅度的降低噪声、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。
由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。
因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。
本文采用经典的Roberts边缘检测算子来对图像进行边缘检测。
程序:
edge_pic=edge(gray_pic,'roberts',0.2,'both');%进行robert边缘检测
figure(3),imshow(edge_pic);title('robert算子边缘检测');%显示robert边缘检测图
结果:
1.3车牌定位
该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。
所以我们要对照片进行车牌定位和分割。
车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。
车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,因此很容易用边缘检测来对图像进行分割。
车牌定位和分割的准确度直接关系到最后的字符识别的质量。
机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。
本文采用的是用数学形态学来进行图像处理和模式识别。
数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。
现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。
程序:
se=[1;1;1];
imerode_pic=imerode(edge_pic,se);%进行腐蚀
figure(4),imshow(imerode_pic);title('腐蚀后图像');%显示腐蚀后图像
se=strel('rectangle',[25,25]);
imclose_pic=imclose(imerode_pic,se);%闭运算平滑轮廓
figure(5),imshow(imclose_pic);title('平滑图像的轮廓');
bopen_pic=bwareaopen(imclose_pic,1000);
figure(6),imshow(bopen_pic);title('移除小面积对象');%移除小面积对象
结果:
1.4车牌分割
车牌字符分割是车牌自动识别系统中的重要步骤,这一模块的正确性受到很多因素的影响,最大问题是二值化不彻底使投影图像中字符间的波谷不够分明;其次,车牌污损、反光、光照不均等原因使车牌图像交差,存在大量噪声;再次,车牌边框和铆钉也会造成分割不正确;还有车牌的前两个字符和后面五个字符之间的间隔符(小圆点)对字符识别有影响;车牌旋转对水平分割有较大影响。
本文车牌部分的分割采用的是利用车牌彩色信息的彩色分割法。
使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB对应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,确定车牌在行方向的区域。
然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。
最后经过灰度变化及二值化分别显示车牌灰度图及二值化图。
程序:
%**************************************************************%
%***以下是分别对XY方向进行蓝色像素点的统计以确定车牌区域*****%
[y,x,z]=size(bopen_pic);
myI=double(bopen_pic);
tic
%***************************Y方向*****************************%
Blue_y=zeros(y,1);
fori=1:
y
forj=1:
x
if(myI(i,j,1)==1)
Blue_y(i,1)=Blue_y(i,1)+1;%蓝色像素点统计
end
end
end
[tempMaxY]=max(Blue_y);%Y方向车牌区域确定
PY1=MaxY;
while((Blue_y(PY1,1)>=5)&&(PY1>1))
PY1=PY1-1;
end
PY2=MaxY;
while((Blue_y(PY2,1)>=5)&&(PY2 PY2=PY2+1; end IY=I(PY1: PY2,: : ); %************************X方向**************************% Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 forj=1: x fori=PY1: PY2 if(myI(i,j,1)==1) Blue_x(1,j)=Blue_x(1,j)+1; end end end PX1=1; while((Blue_x(1,PX1)<3)&&(PX1 PX1=PX1+1; end PX2=x; while((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end PX1=PX1-1;%对车牌区域的校正 PX2=PX2+1; cpz=I(PY1: PY2-8,PX1: PX2,: ); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向区域'); figure(7),subplot(1,2,2),imshow(cpz),title('定位后的彩色车牌图像'); imwrite(cpz,'cpz.jpg');%将车牌图储存为cpz.jpg a=imread('cpz.jpg'); b=rgb2gray(a); imwrite(b,'车牌灰度图像.jpg');%显示车牌灰度图像 figure(8);imshow(b),title('车牌灰度图像'); g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/3);%二值化的阈值 [m,n]=size(b); d=(double(b)>=T);%显示二值图像 imwrite(d,'车牌二值图像.jpg'); figure(9),imshow(d),title('车牌二值图像'); 结果: 2.设计总体分析: 该设计对于蓝色牌照的车辆正面图片的车牌检测准确。 但是对于白色以及黄色的牌照无法检测,而且对于那些拍摄有一定角度的车辆,这无法正确地检测出车牌的位置,故方案有待改进。 附录: 程序 %***********************************************% %题目: 车牌检测 %作者: aikundechong %***********************************************% I=imread('cp.jpg'); figure (1),imshow(I);title('原图');%显示原图 gray_pic=rgb2gray(I);%灰度变换 figure (2),imshow(gray_pic);title('灰度图');%显示灰度图 edge_pic=edge(gray_pic,'roberts',0.2,'both');%进行robert边缘检测 figure(3),imshow(edge_pic);title('robert算子边缘检测');%显示robert边缘检测图 se=[1;1;1]; imerode_pic=imerode(edge_pic,se);%进行腐蚀 figure(4),imshow(imerode_pic);title('腐蚀后图像');%显示腐蚀后图像 se=strel('rectangle',[25,25]); imclose_pic=imclose(imerode_pic,se);%闭运算平滑轮廓 figure(5),imshow(imclose_pic);title('平滑图像的轮廓'); bopen_pic=bwareaopen(imclose_pic,1000); figure(6),imshow(bopen_pic);title('移除小面积对象');%移除小面积对象 %*********************************************************% %***以下是分别对XY方向进行蓝色像素点的统计以确定车牌区***% [y,x,z]=size(bopen_pic); myI=double(bopen_pic); tic %***************************Y方向************************% Blue_y=zeros(y,1); fori=1: y forj=1: x if(myI(i,j,1)==1) Blue_y(i,1)=Blue_y(i,1)+1;%蓝色像素点统计 end end end [tempMaxY]=max(Blue_y);%Y方向车牌区域确定 PY1=MaxY; while((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while((Blue_y(PY2,1)>=5)&&(PY2 PY2=PY2+1; end IY=I(PY1: PY2,: : ); %************************X方**************************% Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 forj=1: x fori=PY1: PY2 if(myI(i,j,1)==1) Blue_x(1,j)=Blue_x(1,j)+1; end end end PX1=1; while((Blue_x(1,PX1)<3)&&(PX1 PX1=PX1+1; end PX2=x; while((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end PX1=PX1-1;%对车牌区域的校正 PX2=PX2+1; cpz=I(PY1: PY2-8,PX1: PX2,: ); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向区域'); figure(7),subplot(1,2,2),imshow(cpz),title('定位后的彩色车牌图像'); imwrite(cpz,'cpz.jpg');%将车牌图储存为cpz.jpg a=imread('cpz.jpg'); b=rgb2gray(a); imwrite(b,'车牌灰度图像.jpg');%显示车牌灰度图像 figure(8);imshow(b),title('车牌灰度图像'); g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/3);%二值化的阈值 [m,n]=size(b); d=(double(b)>=T);%显示二值图像 imwrite(d,'车牌二值图像.jpg'); figure(9),imshow(d),title('车牌二值图像');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车牌 识别 程序