11图像处理班别:11医学应用(2)班组长:组员:指导老师:22目录一、摘要----------------------------------------------------------------------------------3二、设计原理---------------------------------------------------------------------------31、车牌的定位研究----------------------------------------------------------------32、字符分割的研究----------------------------------------------------------------43、字符识别的研究----------------------------------------------------------------4三、详细设计步骤---------------------------------------------------------------------41、车牌定位-------------------------------------------------------------------------41.1图像的预处理-------------------------------------------------------------41.2车牌定位--------------------------------------------------------------------82、字符分割------------------------------------------------------------------------102.1对读入图像进行预处理操作-------------------------------------------112.2图像校正-------------------------------------------------------------------122.3去除水平方向上的边框-------------------------------------------------132.4去除垂直方向上的边框-------------------------------------------------152.5去除车牌上的圆点-------------------------------------------------------173、字符识别------------------------------------------------------------------------193.1建立字符模板数据库----------------------------------------------------203.2对分割字符进行匹配----------------------------------------------------224、系统界面的实现---------------------------------------------------------------25四、设计结果分析--------------------------------------------------------------------29五、设计体会--------------------------------------------------------------------------2933车牌识别系统的设计一、摘要车牌是一辆汽车独一无二的信息,因此,对车辆牌照的识别技术可以作为辨识一辆车最为有效的方法。随着ITS(智能交通系统)的高速发展,对车牌识别技术的研究也随之发展。从根本上讲,牌照识别应用了先进的图像处理,模式识别,人工智能技术来获取,处理,解释,记录拍照的图像。目前,汽车牌照的自动识别技术已经得到了广泛应用。汽车牌照自动识别整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,其中字符识别过程主要由以下3个部分组成:①正确地分割文字图像区域;②正确的分离单个文字;③正确识别单个字符。用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析、处理。二、设计原理车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其核心包括车牌定位算法、车牌字符分割算法和字符识别算法等。图1牌照识别系统原理图主要研究内容如下:1、车牌的定位研究。先进行图像的预处理,包括RGB彩色图像的灰度化、图像灰度拉伸、图像边缘检测、灰度图的二值化等;车牌定位采用基于水平和垂直投影分布特征的方输入要处理图像预处理车牌定位字符分割字符特征提取单字符识别44法。2、字符分割的研究。先对定位后的车牌图像进行预处理,然后按照车牌的先验信息,用区域增长算法来确定候选车牌的字符区域。3、字符识别的研究。对于提取出的单个字符,先进行归一化操作,再与给定的模板做对比,识别出字符。三、详细设计步骤1.车牌定位:车辆牌照识别整个系统主要是由车牌定位和字符识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位;流程图:1.1图像的预处理为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。(1)一般的车牌识别只对小对象进行移除,但是有时候因为拍照原因,即使对图像进行了很好的预处理,还是不能排除一些比较大的又和车牌比较相像的地方,例如图(1)中,车后面的玻璃窗仅仅进行灰度处理和形态学处理,平滑处理是无法排除其对车牌定位的影响的,因此需要对大对象移除(移除大对象前需对图像进行统一化--压缩)。导入图像对图像进行压缩处理基于颜色的基础移除大对象图像灰度校正对灰度校正后图像进行形态学处理提取边缘移除图像中小对象平滑处理计算X,Y方向车牌区域寻找到车牌,完成车牌定位55图(1)实现的代码:img=image;I=img;[x,y,z]=size(img);ifx2000||y2000img=img(1:2:end,1:2:end,:);[x,y,z]=size(img);endhsi=rgb2hsi(img);fori=1:xforj=1:yif(hsi(i,j,1)=0.65&&hsi(i,j,1)=0.55&&hsi(i,j,2)0.4);%0.40.hsi(i,j,2)=0;hsi(i,j,3)=1;;elsehsi(i,j,2)=0;hsi(i,j,3)=0;endendendorigonImg=hsi2rgb(hsi);rgbnew=origonImg;(2)灰度校正:66由于牌照图象在拍摄时受到种种条件的限制和干扰,图象的灰度值往往与实际景物不完全匹配,这将直接影响到图象的后续处理。如果造成这种影响的原因主要是由于被摄物体的远近不同,使得图象中央区域和边缘区域的灰度失衡,或是由于摄像头在扫描时各点的灵敏度有较大的差异而产生图象灰度失真,或是由于曝光不足而使得图像的灰度变化范围很窄。这时就可以采用灰度校正的方法来处理,增强灰度的变化范围、丰富灰度层次,以达到增强图象的对比度和分辨率。灰度校正图graynew=rgb2gray(rgbnew);(3)边缘检测:边缘是指图像局部亮度变化显著的部分,是图像风、纹理特征提取和形状特征提取等图像分析的重要基础。所以在此我们要对图像进行边缘检测。图象增强处理对图象牌照的可辩认度的改善和简化后续的牌照字符定位和分割的难度都是很有必要77实现代码:origonImg=hsi2rgb(hsi);rgbnew=origonImg;graynew=rgb2gray(rgbnew);graynew=imfill(graynew,'holes');fori=1:3se1=[111;111;111];graynew=imdilate(graynew,se1);se=[1;1;1];graynew=imerode(graynew,se);%腐蚀Imerode(X,SE).其中X是待处理的像,%SE是结构元88素对象graynew=getcenter(graynew);graynew=double(graynew);[rowcol]=size(graynew);1.2车牌定位牌照的定位是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用。图为定位出的车牌实现代码:车牌裁剪:[rowcol]=size(graynew);colArray=zeros(row,1);fori=1:rowforj=1:colif(graynew(i,j,1)==1)colArray(i,1)=colArray(i,1)+1;endendend[maxcountmaxIndex]=max(colArray);roughY=maxIndex;while((colArray(roughY,1)=5)&&(roughY1))roughY=roughY-1;99endy1=roughY;roughY=maxIndex;while((colArray(roughY,1)=5)&&(roughYrow))roughY=roughY+1;endy2=roughY;rowArray=zeros(1,col);fori=1:colforj=y1:y2ifgraynew(j,i)==1rowArray(1,i)=rowArray(1,i)+1;endendend[maxcountmaxIndex]=max(rowArray);roughX=maxIndex;while((rowArray(1,roughX)=5)&&(roughX1))roughX=roughX-1;endx1=roughX;roughX=maxIndex;while((rowArray(1,roughX)=5)&&(roughXcol))roughX=roughX+1;endx2=roughX;dw=img(y1:y2,x1:x2,:);greenframe=drawframe(img,y1,y2,x1,x2);imwrite(greenframe,'imgAfterLocation/greenframe.jpg');imwrite(dw,'imgAfterLocation/dw.jpg');10102、字符分割:传统的字符分割方法有投影法、模板匹配法、聚类分析法。由于投影法比较准确、编程较简单,且易于实际操作,能满足在复杂环境下,所以我们采用的是投影法分割车牌字符。车牌分割总流程图:各部分代码实现和运行效果:11112.1、对读入图像进行预处理操作I=imread('imgAfterLocation/dw.jpg');%读取图像I1=rgb2gray(I);%彩色图像转化为灰度图像T=graythresh(I1);%找到灰度图像的阈值[y,x,z]=size(I1);%计算I1各维的大小Se=strel('disk',fix(y/45));%创建一个平坦的圆盘形结构元素I2=imopen(I1,Se);%取圆盘形的开运算subplot(2,2,3);%图一的第三幅图imshow(I2),title('开运算后图像');Se=strel('diamond',fix(y/140));%创建一个平坦的菱形结