图像处理和理解大作业要点

上传人:无*** 文档编号:37531000 上传时间:2021-11-03 格式:DOCX 页数:14 大小:443.05KB
返回 下载 相关 举报
图像处理和理解大作业要点_第1页
第1页 / 共14页
图像处理和理解大作业要点_第2页
第2页 / 共14页
图像处理和理解大作业要点_第3页
第3页 / 共14页
点击查看更多>>
资源描述
图像处理和理解目录1 .整体方案设计 2.2 .各模块具体实现4.2.1 原始图像 42.2 图像灰度化处理 42.3 车牌定位 52.4 车牌字符的分割 62.5 车牌字符识别 83 .程序调试与结果分析 9.4 .总结9.5 .附录1Q14摘要:当今生活中汽车的作用越来越重要,带给了人们生活无尽便利,车辆总数越来越大,对汽车的管理也越来越困难。在这样的背景下图像处理领域内的汽车车牌识别技术具有巨大实用性的意义, 而MATLABT其突出的处理图像数据的能力,运用MATLAB;现对图像的预处理、车牌定位、车牌字符分割以及字符识别,进行车牌的自动识别。关键词:MATLAB图像处理;车牌定位;字符分割;字符识别1 .整体方案设计车牌识别的整体方案流程图如下:1)图像采集包括 CCD摄像机、照明设备、图像采集卡等。感应设备发出的信号出发 图像采集卡,采集卡将模拟信号转换为数字信号后送到计算机。2)图像预处理:因为车牌图像都是在室外拍摄的,所以会受到光照、气候等因素的影 响,而且车辆的移动会造成图像的模糊。要去除这些干扰就得先对车牌图像进行预 处理。由于当前数码相机的像素较高,原始图像的数据一般比较大,输入的彩色图 像包含大量颜色信息,会占用较多的存储空间,且处理时也会降低系统的执行速度。 因此对图像进行识别等处理时,常将彩色图像转换为灰度图像,以加快处理速度。 对图像进行灰度化处理后常用的方法是图像二值化、去除背景图像、增强处理、边 缘检测、滤波等处理等。3)车牌定位方法:车牌识别前期的关键就是准确定位车牌的位置,然后才能进行车牌 中字符的识别。经过查阅资料发现目前主要有以下四种车牌定位的方法:A .基于灰度边缘检测与形态学重构的方法。这种方法只要利用车牌区域局部对比度明显和有规律的纹理特征来定位,然后利用形态学方法将车牌区域与其它背景区域分离。B.基于直线检测的方法。这种方法主要Hough变换的方法来检测车牌周围边框直 线,利用车牌形状特性来定位车牌。C.根据车牌的固有长宽比进行定位的方法。因为中外车牌的长宽比都是固定的3.1 : 1,在预处理完成后对二值化的图像进行膨胀腐蚀,计算联通区域长宽比确定车牌位置。D.基于彩色图像的车牌定位方法。现在的牌照有四种类型:第一种是最常见的小型汽车所用的蓝底白字牌照;第二种是大型汽车所用的黄底黑字牌照;第三种 是军用或警用的白底黑字、红字牌照;第四种是国外驻华机构用的黑底白字、 红字牌照。基于彩色图像的车牌定位方法主要利用车牌颜色与车身其他部位颜 色具有明显不同的差异来分割与提取车牌。为了与课程内容联系我选择了第一种方法进行实验,即边缘检测与形态学重构的方法。4)字符分割:字符分割是指将车牌区域分割成单个的字符区域,分割越准确,识别效 果越好。目前有许多种车牌字符分割算法,由于在车牌字符分割中存在噪声干扰, 边框、钏钉影响,车牌旋转和光照不均等问题,造成分割不准确,甚至分割错误, 目前很难找到普遍适用的分割方法。常用的字符分割法主要是基于投影分析字符的分割方法和基于连通域分析的字符分割方法。A .投影分析常采用的是水平投影法,即沿水平方向计算每一列属于车牌字符的象素数目,在字符的间隙处取得局部最小值,分割位置应在其附近。先根据车牌 水平投影的统计特征呈现出明显“波峰一一波谷一一波峰”,进行水平方向上的粗分割,若字符出现合并和粘连现象,再采用递归回归办法进行二次字符分 割。B.投影法进行字符分割实现起较为简单,但在预处理效果不好的情况下,较难获 得满足条件的列。若增加预处理,则使处理后的图像不可避免地损失一部分有 用信息,还可能导致额外误差。基于连通域聚类分析切分车牌字符的方法按照 属于同一个字符的像素构成一个连通域的原则,结合牌照字符的固定高度和间距比例关系等先验知识,较好地解决了汽车牌照在复杂背景条件下的字符切分 问题,降低了对车牌定位准确度的要求,对不规范的车牌识别也具有一定的适 用性。5)字符识别方法:现阶段主要使用的方法是基于模板匹配和神经网络的方法。A .模板匹配法是最简单的一种字符识别方法。将待识别字符经分割归一化成模板字体的大小,将它输入字符识别模块进行匹配。根据实际字符和模板图像之间 匹配方差最小的原则,判定车牌图像字符所属类别。这种方法对于标准、规范 的字符识别效果较好。但在复杂环境下的车牌字符会与理想模板字符不完全一 致,这导致了识别结果存在较大误差。B.模版匹配法简单、成熟,但其自适应不强。对于字符有断裂和粘连等情况容易 造成误判。神经网络匹配法具有良好的容错性、自适应和学习能力,但样本的 训练收敛速度慢,而大规模并行处理为此提供了解决途径。其中一种方法是采 用并行识别的 BP网络,让汉字、英文、阿拉伯数字,阿拉伯数字分别送到各 自的网络识别。还有学者结合小波变化的优点,提出基于小波和BP神经网络的车牌字符识别新方法,采用小波变换提取字符特征,神经网络实现字符识别, 加快了算法的执行,提高了识别率。2.各模块具体实现2.1 原始图像如下:2.2 图像灰度化处理由于彩色图像含有大量的颜色信息,它的存储空间占用大。如果直接使用 彩色图像将大大降低图像处理的速度,通过将图像灰度化处理将彩色图像转换 为256个级别的灰度图像可以大大减小存储量和提高处理速度。Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。与使用Sobel算子的方法一样,图像中的每个点都用两个核进行卷积,取最大值输出。它与Sobel算子不同,这一算子没有把重点放在接近模板中心的像素点。Prewitt边缘检测算子近似计算 f (x, y)对x和y的偏导数:Gx =(Z7Z8Zg)-(乙Z2Z3)Gy = (Z3Z6Z9)-(乙Z4Z7)计算出Gx, Gy的值后,用下式计算(x,y)点处的梯度值:22g =(GGy2) 计算出各点的值后,设定一个合适的阈值T,如果(x, y)处的g T则认为该点的边缘点。由于车牌一般是由字符、背景和边框组成 ,提取图像的边缘图像后,在字符与背景处就形成了较强的边缘。再考虑汽车本身的特点,通常车牌位于汽车缓冲器上或附近,靠近整幅图像的下部,在往下便是路面,路面一般是比较光滑,因此可以在边缘提取时就很有效的将这部分杂质滤除掉,而使干扰图像的噪声处于车牌之上,如车灯,或散热片。进行边缘检测后,使用自定义线性结构元素se=1;1;1进行图像边缘的腐蚀,得到更加清晰的边缘图像。然后使用矩形结构元素对图像进行聚类和填充。最后通过bwareaopen(I4,2000); 去除灰度团小于2000的部分。下图是经过边缘提取、腐蚀、填充、形态滤波得到最终的边缘图像。2.3 车牌定位车牌定位问题其本质就是图像的分割问题,即如何把具有特征性或规律性的区域提取出来的过程。图像分割是由图像处理转到图像分析的关键。一方面,它是目标图像表达的基础,对特征测量有重要的影响。另一方面,图像分割和 分割的且标表达、特征提取和参数测量等将原始图像转化为数学表达形式,使 得利用计算机进行图像分析和理解成为可能。采用行列像素点灰度值累计的统计方法来定位车牌的位置,车牌内的行和 列的像素点灰度值的累计和会较大,因此得到灰度值累积和的多出峰值就能够 确定车牌的起始和终止的行和列,进而确定车牌位置。下图是行列像素点灰度值累计和的曲线,车牌位置可以从图中观察得到。用上图计算得到的车牌位置坐标去截取彩色图像,得到彩色车牌:2.4 车牌字符的分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。考虑到基于投影分析字符的分割方法和基于连通域分析的字符分割方法实现起来比较复杂,于是我就综合前人方法总结出自己的算法。车牌字符分 割包括字符分割和单个字符识别两个模块。考虑到获取的图像可能存在一定缺 陷,因此在进行字符分割之前要先对定位后的车牌图像进行预处理,以方便后 面的工作车牌上共有7个字符,间距相等,设平均字宽为 W,还有一个分隔符占1/2字宽。通过之前的预处理, 可以将分隔符“ . ”用滤波器去掉。设f (i, j)是文字的二维点阵图形,有文字处为1,否则为0。首先在f( f(i, j) = 0处切割,若两个文字相粘连时,其间隔处便不会出现 f (i, j) = 0,此时就要辅之以求平均字宽的方法。若某个字宽Wk至W ,说明Wk中含有一个以上的文字,需要继续分割。由于在字符识别中我准备采用模板匹配的方法,因此需要将已分割出来的字符进行归一化处理。因为我所采用的模板的尺寸为40 X 20 ,因此需要将分割出来的字符也归一化为40X20的尺寸。首先对彩色车牌进行二值化:g_max=double(max(max(I1);g_min=double(min(min(I1);T=round(g_max-(g_max-g_min)/3);通过以上代码得到原彩色图像的灰度图像的二值化阈值,使用这个阈值将彩色车牌灰度化后的灰度图像二值化为黑白图像,便于车牌中字符的识别。下图为二值 化的车牌图像:同样通过形态学滤波,去掉像素点小于500的区域,由于车牌中汉字有比较小的笔划容易被滤除,所以像素点的个数不宜取的过大。经过滤波后的黑白车牌图像图下图所示:由于滤波的作用字母 A后面的圆点消失了。gk上if |nwrt loah Dokbop Window 中 匕 tFd i t 二丁的 4J X同 0 a E 0措定学京整后的二值iLEl管接下来通过列像素点灰度值累计和来分割字符。由于车牌字符间有空隙,因此累计和的图像上一定有多出为0的列,按照这些为0的列来分割车牌就能够达到理想的提取字符的目的。采用的方法同车牌定位的方法相同。下图是列方向上的像素点灰度值累计和曲线:观察上图,车牌被6个灰度值累计和为 0的列区域分为很明显的七个区域, 即七个字符所在的位置。最后得到七个字符的图像:2.5 车牌字符识别对分割出来的字符进行识别的方法很多,主要有以下几种方法:A.利用字符的结构特征和变换(如Fourier 变换、Karhunen-Loeve变换等)进行特征提取。该方法对字符的倾斜、变形都有很高的适应性,但运算量大, 对计算机性能的要求较高。B.利用字符统计特征进行特征提取。如提取字符的投影特征、网格特征和轮廓特征组成字符特征矢量进行匹配的方法,识别率较高。C.基于字符结构分析的识别方法。该方法可以识别有较大旋转、变形、缩放的字符图像, 但需要进行复杂的字符笔划分析和抽取,对字图像质量要求较高。D.模板匹配法。由于车辆牌照字符中只有 26个大写英文字母、10个阿拉伯数 字和约50个汉字,所以字符集合较小,该方法对于有一定变形、 污损或笔画缺损的字符图像有较好的识别效果,总体识别率较高,同时也能满足实时性的要求。考虑到本字符识别只涉及 31个汉字26个字母以及10个数字,字符库很容 易建立,运用模板匹配法应该是最好的选择。首先需要建立字库,可将每个字 符模板(模板均为二值图像)按约定好的顺序大小依次排入一张.bmp图中,再用matlab调用图片与所要识别图像用 corr2 ()函数一一比较,找出其中最大值 及其对应位置编号再用 switch函数赋相应的值即完成。最终识别结果:苏AS51813程序调试与结果分析在程序设计过程中,碰到很多的问题。3.1.1 一个函数只能对灰度图像处理,不能对RGBS像处理,那么如何才能对RGB图像处理呢?这主要是对 MATLAB!数的不够清楚,用到的很多函数是针对二维数据的,而 RGBS像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我 认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理, 同样使用二维的函数,只要是同样处理三次。比如,彩色图像的滤波处理,直方图均衡等。3.1.2 同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就 会出错?这是由于设计程序时,本身程序是有针对性的,有些程序只能对灰度图像有效, 有些对彩色图像有效, 但是用户并不清楚这些,所以在设计的过程中就要考虑全面,要分开设计。在本次课程设计中,我均对每个程序的开始时,用if isrgb(x)进行判断。经过几幅图像的测试,本系统都能较好的识别出来,但系统还是存在适用范围, 对于车牌在整副图片中占的比例很小时不能够准确的识别,受到背景的干扰十分严 重,所以在应用时应该尽可能获得足够清晰的车牌,并且车牌在整幅照片中应该占 有相当大的比例。在边缘检测阶段尝试了不同的边缘检测算子,并且对其效果进行了比较。梯度 算子计算简单,但精度不高,只能检测出图像大致的轮廓,而对于比较细的边缘可 能会忽略。Prewitt 和Sobel算子比Roberts效果要好一些。Canny算子的检测效果 优于梯度算子,能够检测出图像较细的边缘部分。不同的系统,针对不同的环境条 件和要求,选择合适的算子来对图像进行边缘检测。4总结本次作业我主要是对车牌识别系统的软件部分进行了研究,分别从图像预处理、车牌定位、字符分割以及字符识别等方面进行了系统的分析。通过这次车牌识别系 统的课程设计的完成,对数字图像处理和理解课程的作用和意义有了更深的理解, 对课程所教授的内容也在实践中灵活运用加深了印象,也学会了运用MATLAB一数学编程工具。对于科研的一般过程有了了解。同时也提升了独立解决问题的能力, 以及一些自己的创新能力。总结起来主要有以下三点:1、巩固了数字图像处理课上所学的知识,比如滤波、膨胀、腐蚀、边缘提取等等。2、通过这次大作业使我对Matlab的使用更加熟练了。 3、为了完成车牌识别系统,从网上查阅了不少资料, 与同学交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,在整个设计 中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心, 相信会对今后的学习工作生活有非常重要的影响。参考文献1崔江、王友仁.车牌自动识别方法中的关键技术研究.计算机测量与控制,2003.112崔江 王友仁.车牌自动识别方法中的关键技术研究J计算机测量与控制,2003.11 (4)3王刚,冀小平.基于MATLAB的车牌识别系统的研究.中国科技论文在线4潘中杰,车牌自动识别技术的研究与实现,广东:中山大学,20075孙彬.车牌自动识别图像处理关键技术研究.电子科技大学学位论文5附录字符提取程序代码:I=imread( P1.jpg figure(););%?& e ? 1 ?imshow(I), title( I1=rgb2gray(I);?- e ? i ?);%x a? ?a? o ? e i ?figure();imshow(I1),title(I2=edge(I1,prewitt%I2=edge(I1,robert);%2 figure();?o ?e i ?);,0.065, bothe o ?robert?);%26 o ?robert? x o ?DD ?心? i 2ax o ?DD ?心? i 2asubplot(2,2,1),imshow(I2),title( se=1;1;1;%?Di ?a 11?a?I3=imerode(I2,se);%?一 esubplot(2,2,2),imshow(I3),title( se=strel( rectangle ,25,25);I4=imclose(I3,se);%i ? a a士?心? i 2ao 6 i ?:i ?6 o 6 士?心 i ?%?D?a 11?a?0 i ?3? i ?subplot(2,2,3),imshow(I4),title(i ?3?oo i ?);I5=bwareaopen(I4,2000);%6 3y? i ?o ?e ?|i D?o u 2000 心?2? ?subplot(2,2,4),imshow(I5),title( y,x,z=size(I5);I6=double(I5);Y1=zeros(y,1);for i=1:yfor j=1:xif (I6(i,j,1)=1)Y1(i,1)= Y1(i,1)+1;endendendD? i ?2 oo i ?);temp MaxY=max(Y1);figure();subplot(1,2,1),plot(0:y-1,Y1),title(DD ? 6 ?心? 6 ? 6 ?心 a ?o ),Xlabel( DD?),ylabel( ?);%?3 fi? fi ?DD?ee ?o i ?1?%PY1=MaxY;while (Y1(PY1,1)=50)&(PY11) PY1=PY1-1;endPY2=MaxY;while (Y1(PY2,1)=50)&(PY2y) PY2=PY2+1;endIY=I(PY1:PY2,:,:);X1=zeros(1,x);for j=1:xfor i=PY1:PY2if (I6(i,j,1)=1)X1(1,j)= X1(1,j)+1; end end endsubplot(1,2,2),plot(0:x-1,X1),title( a D- ? o ?心?6?6?心 自 ?O,xlabel( & D?a )ylabel( ?);%?3 fi? fi? a D?ee ?o i ?1?%PX1=1;while (X1(1,PX1)3)&(PX1x) PX1=PX1+1;endPX2=x;while (X1(1,PX2)PX1) PX2=PX2-1;endPX1=PX1-1;PX2=PX2+1;% ?3?3 心? i ?%dw=I(PY1:PY2,PX1:PX2,:);figure();imshow(dw),title( ? 一 ?Doo ?2 e e ?3 ? i ?;I1 = rgb2gray(I);%?RGB ? x a? ?a? o ? e i ?g_max=double(max(max(I1);g_min=double(min(min(I1);T=round(g_max-(g_max-g_min)/3);% T ?a?t?心? 心?D?aI1=im2bw(dw,T/256);figure();imshow(I1),title(?t?心? 3 心? i ?);I2=bwareaopen(I1,500);figure();imshow(I2),title(D? i ? ?2 一 o 6 心?t?心? 一 i ?% ?心 & ?立 士? ? u | a iI1 = rgb2gray(I);I1=imresize(I1,50 25);%?i ? i 3 o ?a50*25 o D?I1=im2bw(I1,0.9);m,n=size(I1);inpt=zeros(1,m*n);% ?i ?。& DX a?3 e o ?DD?6 a?for j=1:nfor i=1:minpt(1,m*(j-1)+i)=I1(i,j);endend%end%StringSplito 6 y o%function PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6 = StringSplit(I2)y1,x1,z1=size(I2);I3=double(I2);TT=1;%3y i ? ?o i 心 x ?心?2?DD?6 O ? o o % Y1=zeros(y1,1);for i=1:y1for j=1:x1if (I3(i,j,1)=1)Y1(i,1)= Y1(i,1)+1 ;endendendPy1=1;Py0=1;while (Y1(Py0,1)20)&(Py0=20)&(Py1y1)Py1=Py1+1;endI2=I2(Py0:Py1,:,:);figure();imshow(I2),title(? 6 3 心? o 可:%? x ? ?DD?yd ? & ?%X1=zeros(1,x1);for j=1:x1for i=1:y1if (I3(i,j,1)=1)X1(1,j)= X1(1,j)+1;endendendfigure();plot(0:x1-1,X1),title( a D- ? 6 ?心? 6 ? 6 ?心 d ?O,xlabel( & D?a ),ylabel( a ? a ?);Px0=1;Px1=1;%?%? ?%for i=1:7while (X1(1,Px0)3)&(Px0=3)&(Px1x1)|(Px1-Px0)=3 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat( SamBw2 = imread(fname); for i=1:40 for j=1:20SubBw2(i,j尸SegBw2(i,j)-SamBw2(i,j); end end% d?e?a|.L6ua ? u i ?&?心?心?心(! 6 y (1(? Dmax=0;for k1=1:40for l1=1:20if ( SubBw2(k1,l1) 0 | SubBw2(k1,l1) 0 ) Dmax=Dmax+1;end end end Error(k2)=Dmax;endError1=Error(kmin:kmax);MinError=min(Error1); findc=find(Error1=MinError);Code(l*2-1)=liccode(findc(1)+kmin-1);Code(l*2)=;l=l+1;endfigure,imshow(dw),title (3 心?o?:, Code, Color , b);
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!