*.PCX、*.BMP、*.JPG、*.TIFF、*.GIF等,本设计采集到的图片格式为*.JPG格式,这种格式的图像占有的存储空间小,而且是使用最广的图片保存和传输格式,大多数的摄像设备也都是以*.JPG格式保存图像的。利用图像工具的图像读取函数imread()来读取一副图像,其使用格式为:I=imread(‘fnpn’);%fn为图像文件名,pn为文件路径使用图像工具的图像显示函数imshow()来显一副图像,使用格式为:Imshow(I);具体代码为:[fnpn]=uigetfile(‘*.JPG’,’选择图片’);%选择图像文件,fn为文件名,pn为路径I=imread([fnpn]);%显示所选图像Figure,imshow(I);title(‘原始车牌图像’);%在新建的figure中显示所选图像文件,figure标题为原始车牌图像以一副名为“桂APC322”的车牌图片为例,程序运行结果为:(基于蓝色)车牌定位、提取将彩色车牌读入后,采用水平垂直双向投影法,将图像分别投影到X、Y坐标轴,然后分别沿X、Y轴扫描图像。当沿Y轴扫描时,一边扫描一边统计图像中蓝色像素点的个数,第一次扫描到蓝色像素点最多的行时停止扫描,并记录下蓝色像素点最多的行,然后以这行为基点,分别向上、向下扫描直到统计的像素点小于像素点阀值时,停止扫描,记录上下行的Y轴坐标PY2,PY1,I=(PY1:PY2,:,:)就为Y轴方向的车牌区域,代码如下:Blue_y=zeros(y,1);fori=1:yforj=1:xif((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;%统计蓝色像素点endendend[tempMaxY]=max(Blue_y);%PY1=MaxY;%while((Blue_y(PY1,1)>=Y_threshlow)&&(PY1>1))%PY1=PY1-1;endPY2=MaxY;while((Blue_y(PY2,1)>=Y_threshlow)&&(PY2<y))%ÕÒµ½Í¼Æ¬Éϱ߽çPY2=PY2+1;endPY1,PY2figure(2),subplot(1,2,1),plot(Blue_y),title('行方向的蓝色像素点统计');gridonIY=I(PY1:PY2,:,:);figure(2),subplot(1,2,2),imshow(IY),title('行方向车牌区域');运行结果如下:同理可得X轴方向的车牌区域:两者结合可提取出完整的车牌区域:,所以将RGB图像转化为灰度图时,车牌底色跟字符的灰度值也会相差很大,这样就可以很明显的显现出车牌区域,便于后续处理。本系统使用的是MATLAB内的灰度图转换函数rgb2gray(),其图像灰度值计算公式为:G=++;程序源代码为:bw=rgb2gray(I);figure(6),imshow(bw);title(‘灰度图像’);运行结果为:,可能使拍摄的车牌图片也发生倾斜,为了图像的后续处理以及很好的去识别字符,需对提取的带有倾斜的车牌图像进行校正。本系统采用的办法是,首先用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('车牌倾斜');运行结果如下:、腐蚀、去除干扰、膨胀、擦除、取反,都可以直接使用图像工具箱的图像处理函数。经过以上处理过程后可以得到带边框的白底黑字的车牌图片,但是由于还存在车牌的边框,需要对其进行二次的裁剪,裁剪方法跟上面阐述的提取彩色车牌方法相似,先将图片水平垂直投影,然后统计黑色像素点,找到字符边缘进行裁剪,得到除去边框的白底黑字的车牌照。代码如下:SE=ones(3,3);bw=im2bw(bw);figure,imshow(bw);title('二值化');bw=imerode(bw,SE);figure,imshow(bw);tit
MATLAB车牌识别过程 来自淘豆网m.daumloan.com转载请标明出处.