赞
踩
%车牌识别
%%%
clc
clear
I=imread('%%%图像所在位置');%%%位置自己定
subplot(2,3,1);
imshow(I);
title('原始图像')
%%%提取原始图像行、列、维数
[y,x,z]=size(I);
myI=double(I);
%%%Y方向统计分析
Blue_y=zeros(y,1);
for i=1:y
for j=1:x
if(((myI(i,j,1)<=241)&&(myI(i,j,1)>=15))&&...
((myI(i,j,2)<=170)&&(myI(i,j,2)>=90))&&...
((myI(i,j,3)<=240)&&(myI(i,j,3)>=210)))%%%蓝色RGB的灰度范围%%%灰度范围值选取自己定,需要使用pixval函数选取RGB值
Blue_y(i,1)=Blue_y(i,1)+1;
end
end
end
[temp MaxY]=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,:,:);
subplot(2,3,2);
plot(Blue_y);
grid;
title('Y方向统计')
subplot(2,3,4);
imshow(IY);
title('Y方向车牌区域确定')
%%%X方向统计分析 %%%重复上面的思路
Blue_x=zeros(1,x);%%%进一步确定X方向的车牌区域
for j=1:x
for i=PY1:PY2
if(((myI(i,j,1)<=241)&&(myI(i,j,1)>=15))&&...
((myI(i,j,2)<=170)&&(myI(i,j,2)>=90))&&...
((myI(i,j,3)<=240)&&(myI(i,j,3)>=210)))
Blue_x(1,j)=Blue_x(1,j)+1;
end
end
end
%%%[temp MaxX]=max(Blue_x);%%%X方向车牌区域确定
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
subplot(2,3,3);
plot(Blue_x);
grid;
title('X方向统计')
IX=I(:,PX1:PX2,:);
subplot(2,3,5);
imshow(IX);
title('X方向车牌区域确定')
%%%对车牌区域的修正
PX1=PX1-2;
PX2=PX2+2;
Plate=I(PY1:PY2,PX1-2:PX2,:);
subplot(2,3,6);
imshow(Plate);
title('车牌显示')
%%%%%上面的算法自己是可以进行改进的。
有问题可以参考(《精通MATLAB》.葛哲学.电子工业出版社)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。