彩色车牌分割

来源:互联网 发布:linux 限制访问目录 编辑:程序博客网 时间:2024/04/16 19:53

把彩色图片中的车牌号分割出来


clc;clear;I=imread('Car.jpg');[y,x,z]=size(I); %x=640,y=480,z=3;myI=double(I);tic   % 测定算法执行的时间,开始计时%%%%%%%%%%% 统计分析 %%%%%%%%%%%%%%%%%%%%%%% Y 方向 %%%%%%%%%%Blue_y=zeros(y,1);for i=1:y    for j=1:x            if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3)<=142)&&(myI(i,j,3)>=119))) % 蓝色RGB的灰度范围               Blue_y(i,1)= Blue_y(i,1)+1;     % 蓝色象素点统计                     end      end       end[temp MaxY]=max(Blue_y);  % Y方向车牌区域确定   %求Blue_y的最大值,MaxY是最大值所在的位置,temp是最大值。%统计 y方向 上蓝色点数超过5的,上下极限对应的坐标PY1=MaxY;while ((Blue_y(PY1,1)>=5)&&(PY1>1)) %以蓝色点最多的坐标MaxY为中心,向上统计,直到坐标PY1的蓝色点数为5为止。       PY1=PY1-1;end    PY2=MaxY;while ((Blue_y(PY2,1)>=5)&&(PY2<y))       PY2=PY2+1;endIY=I(PY1:PY2,:,:);    %确定y方向的车牌区域%%%%%%%% X 方向 %%%%%%%%%% Blue_x=zeros(1,x);             % 进一步确定X方向的车牌区域for j=1:x    for i=PY1:PY2            if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3)<=142)&&(myI(i,j,3)>=119)))  % 蓝色RGB的灰度范围               Blue_x(1,j)= Blue_x(1,j)+1;                          end      end       endPX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x)) %从左到右,找到首个蓝色点数大于等于3的  x轴的坐标。       PX1=PX1+1;end    PX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) %从右到左,找到首个蓝色点数大于等于3的 x轴的坐标。       PX2=PX2-1;endPX1=PX1-2; % 对车牌区域的修正PX2=PX2+2;Plate=I(PY1:PY2,PX1-2:PX2,:);  %把图像中蓝色车牌的区域摘出来t=toc % 读取计时%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%figure,imshow(I);figure,plot(Blue_y);grid;title('BlueY')figure,plot(Blue_x);grid;title('BlueX')figure,imshow(IY);figure,imshow(Plate);


0 0
原创粉丝点击