MATLAB车牌识别过程

  • 格式:doc
  • 大小:759.50 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.3 系统详细设计

7.3.1 车牌图像读入

目前常用的图像格式主要有*.PCX、*.BMP、*.JPG、*.TIFF、*.GIF 等,本设计采集到的图片格式为*.JPG格式,这种格式的图像占有的存储空间小,而且是使用最广的图片保存和传输格式,大多数的摄像设备也都是以*.JPG格式保存图像的。利用图像工具的图像读取函数imread() 来读取一副图像,其使用格式为:

I=imread(‘fn pn’); %fn为图像文件名,pn为文件路径

使用图像工具的图像显示函数imshow() 来显一副图像,使用格式为:

Imshow(I);

具体代码为:

[fn pn]=uigetfile (‘*.JPG’,’选择图片’);%选择图像文件,fn为文件名,pn为路径I= imread ([fn pn]); %显示所选图像

Figure,imshow(I);title(‘原始车牌图像’); %在新建的figure中显示所选图像文件,

figure标题为原始车牌图像

以一副名为“桂APC322”的车牌图片为例,程序运行结果为:

7.3.2 彩色(基于蓝色)车牌定位、提取

将彩色车牌读入后,采用水平垂直双向投影法,将图像分别投影到X、Y坐标轴,然后分别沿X、Y轴扫描图像。当沿Y轴扫描时,一边扫描一边统计图像中蓝色像素点的个数,第一次扫描到蓝色像素点最多的行时停止扫描,并记录下蓝色像素点最多的行,然后以这行为基点,分别向上、向下扫描直到统计的像素点小于像素点阀值时,停止扫描,记录上下行的

Y轴坐标PY2,PY1,I=(PY1:PY2,: ,:)就为Y轴方向的车牌区域,代码如下:

Blue_y=zeros(y,1);

for i=1:y

for j=1:x

if((myI(i,j,1)<=48)&&((myI(i,j,2)<=100)&&(myI(i,j,2)>=40))&&((myI(i,j ,3)<=200)&&(myI(i,j,3)>=80)))

Blue_y(i,1)= Blue_y(i,1)+1; %统计蓝色像素点

end

end

end

[temp MaxY]=max(Blue_y); %

PY1=MaxY;%

while ((Blue_y(PY1,1)>=Y_threshlow)&&(PY1>1)) %

PY1=PY1-1;

end

PY2=MaxY;

while ((Blue_y(PY2,1)>=Y_threshlow)&&(PY2

PY2=PY2+1;

end

PY1, PY2

figure(2),subplot(1,2,1),plot(Blue_y),title('行方向的蓝色像素点统

计');grid on

IY=I(PY1:PY2,:,:);

figure(2),subplot(1,2,2),imshow(IY),title('行方向车牌区域');

运行结果如下:

同理可得X轴方向的车牌区域:

两者结合可提取出完整的车牌区域:

7.3.3 车牌图像灰度化

由于车牌底色跟上面的字符的颜色对比度很大,所以将RGB图像转化为灰度图时,车牌底色跟字符的灰度值也会相差很大,这样就可以很明显的显现出车牌区域,便于后续处理。本系统使用的是MA TLAB内的灰度图转换函数rgb2gray(),其图像灰度值计算公式为:G=0.299R+0.578G+0.114B;

程序源代码为:

bw=rgb2gray (I);figure(6),imshow (bw);title(‘灰度图像’);

运行结果为:

7.3.4 车牌倾斜校正

由于摄像头拍摄角度的不同,可能使拍摄的车牌图片也发生倾斜,为了图像的后续处理以及很好的去识别字符,需对提取的带有倾斜的车牌图像进行校正。本系统采用的办法是,首先用radon 算法进行倾斜角度计算,然后根据倾斜角对图片精选修正,从而得到水平方向一致的图片,利于后期的分割识别。代码如下:

I=edge(I);%

theta = 1:180;

[R,xp] = radon(I,theta);

[I,J] = find(R>=max(max(R)));%

bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title ('车牌倾斜');

运行结果如下:

7.3.5 车牌图像处理

对车牌灰度图像的处理主要有二值化、腐蚀、去除干扰、膨胀、擦除、取反,都可以直接使用图像工具箱的图像处理函数。经过以上处理过程后可以得到带边框的白底黑字的车牌图片,但是由于还存在车牌的边框,需要对其进行二次的裁剪,裁剪方法跟上面阐述的提取彩色车牌方法相似,先将图片水平垂直投影,然后统计黑色像素点,找到字符边缘进行裁剪,得到除去边框的白底黑字的车牌照。代码如下:

SE=ones(3,3);

bw=im2bw(bw);figure,imshow(bw);title('二值化');

bw=imerode(bw,SE);figure,imshow(bw);title('腐蚀');

bw=bwmorph(bw,'clean',inf);

bw=bwmorph(bw,'hbreak',inf);

bw=bwmorph(bw,'spur',inf);

bw=imdilate(bw,SE);figure,imshow(bw);title('膨胀');

bw = bwareaopen(bw, threshold);figure,imshow(bw);title('擦除');

bw=~bw;figure,imshow(bw);title('颜色取反');

bw=touying(bw);figure;imshow(bw);title('投影');

运行结构如下: