汽车牌照识别系统研究车牌字符分割毕业设计

来源:小学周记 发布时间:2020-11-16 点击:

本科毕业论文(设计)
论文(设计)题目:汽车牌照识别系统的研究——车牌 字符分割 学 院:
专 业:
班 级:
学 号:
学生姓名:
___ 指导教师:
年 月 日 目录 目录 I 摘要 IV Abstract V 第一章 绪 论 1 1.1论文研究的目的 1 1.2论文研究的背景和意义 2 1.3 国内外研究现状 3 第二章 车牌识别系统的构成 5 2.1系统基本组成框架 5 2.2 车牌图像的提取 6 2.3 车牌的定位 6 2.3.1车牌图像定位研究现状 6 2.3.2车牌图像定位实现方法 7 第三章 图像的预处理 9 3.1色彩校正、图像增强 9 3.2 灰度化 10 3.2.1 灰度变化的实现 10 3.2.2 图像的灰度拉伸 12 3.3 二值化 13 3.3.1全局化阈值 14 3.3.2自适应阈值 14 3.4 去噪 15 3.5 车牌的倾斜校正 16 3.5.1车牌的倾斜类型 17 3.5.2 以线性回归法对车牌图像的校正 18 第四章 车牌字符的分割 20 4.1 字符切割研究现状 20 4.2 车牌上字符的基本特征 20 4.3 投影法分割字符 22 4.4 粗切割方法 23 4.4.1车牌图像上字符的粗切割 23 4.4.2去掉车牌图像上字符的多余空间 24 4.5 连通域提取的车牌字符分割 25 4.5.1 连通域矩形的位置关系 25 4.5.2连通域的合并 26 4.5.3 连通域提取字符分割 27 4.5.4误连接区的分割 28 第五章 车牌字符的识别算法分析 29 5.2 归一化 29 5.3 神经网络对车牌字符的识别 30 5.3.1神经网络概述 30 5.4.2神经网络的工作过程 30 5.5 汉字部分字符识别 32 5.5.1 支持矢量机基本原理 32 5.5.2 基于SVM的车牌汉字识别 33 5.6 车牌数字字母部分字符识别 33 第六章 总结与展望 35 6.1 总结 35 6.2 展望 36 参考文献 37 致谢 38 附录 39 汽车牌照识别系统的研究——车牌字符分割 摘要 本文主要介绍了车牌识别的过程,车牌识别系统是制约道路交通智能化的重要因素,其流程主要包括图像采集、图像预处理与图像识别,车牌字符的分割是图像预处理的一个重要处理过程。由于车牌图像摄取的特殊性以及车牌本身的破损,使得车牌图像上的字符通常模糊不清,而破损不清晰的车牌图像对于字符的分割是很困难的,因此车牌字符的分割已成为汽车牌照识别系统中一个必需解决的问题。本设计主要对车牌图像的分割方法的构成原理及算法实现进行了详细分析,并用软件实现了完整的系统。使用MATLAB软件编程实现了整个系统,并验证了所提出的方法的可行性。

本文主要给出了车牌字符分割的几种方法,并详细介绍了完成图像分割的原理、算法、具体程序实现过程、仿真结果及各自的优缺点。

关键词:车牌识别, 字符分割,图像处理,MATLAB Abstract The article introduces the process of license plate recognition whose laggard restrains the road traffic from being intelligent.The procedures mainly include image acquisition, image pre-processing and image recognition, and the license plate character segmentation is an important process of image pre-processing.Due to the particularity of license plate image capture and loss of the license plate itself making the characters on the license plate image is usually blurred ,While the damage and unclear license plate images cause characters segmentation difficult, so the license plate character segmentation has become a problem that must be settled in license plate recognition system. This design analyses the principle and algorithm of the composition of the license plate image segmentation method to achieve a detailed analysis of a complete system and software implementation using MATLAB software to program the entire system, and verify the the feasibility of the proposed method. This paper gives several methods of license plate image segmentation and details of the principle to complete the image segmentation algorithm , specific procedures for the implementation process, the simulation results and expounds their advantages and disadvantages. Key words:
license plate recognition,character segmentation,image processing,,MATLAB 第一章 绪 论 1.1论文研究的目的 论文的主要目的有两个方面;
一是对我们的基础知识进行一次全面的考核。二是对我们进行科学研究基本功的训练,培养我们综合运用所学知识独立地分析问题和解决问题的能力,为以后的工作打下良好的基础与创新意识。

大学本科毕业论文的撰写是对大学生所学基础知识的最后一次全面性的检验,是对我们基本理论、基本知识与基本的技能掌握跟提高的一次总的测试。在大学期间,我们虽然已经按照学校教学计划中的规定,完成了基础课、公共课、选修课跟相关专业的科目,并且每一门学科也都通过了学校的考查或考试。但是在校期间的这些考试是单方面进行的。这些考试的主要目的是考察学生对所学科目的一些基本知识的理解程度和记忆程度。跟毕业论文相比则不同,毕业论文不是单方面的对我们大学生进行某一课程的基本知识进行考察,而是着重考查我们应用所学到的基本知识来对一些问题进行深度的研究和探讨的能力。要做好毕业设计,它不仅要系统地了解和应用我们所学到的专业基本知识,还要要求我们有宽广的知识,并且同时也要具有一定的写作功底和逻辑思维推导能力。这样一来就使得我们不仅需要有良好的基础知识和公共科目的知识,而且更需要具有深厚的专业知识和良好的创新能力。通过论文的写作,使我们发现自己的长处和短处,以便在今后的工作中有针对性地克服缺点。

毕业论文的撰写是培养我们的科学研究能力,让我们在学大学生初步掌握对科学研究所需要的基本方法和程序。在我们毕业后,不论从事何种工作,都必须具有一定的研究和写作能力。大学是高层次的教育,其培养的人才应该具有开拓精神,既有较扎实的基础知识和专业知识,又能发挥无限的创造力,不断解决实际工作中出现的新问题;
既能运用已有的知识熟练地从事一般性的专业工作,又能对人类未知的领域大胆探索,不断向科学的高峰攀登。

另外撰写毕业论文的过程是训练我们独立进行科学研究的过程。通过撰写毕业论文,可以使学生了解科学研究的过程,掌握怎样调查、怎样观察和作样本的分析;
怎样收集、整理和利用材料
怎样在网上收索文献资料,怎样使用图书馆里的相关书籍;
怎样操作实验仪器等诸多方法。撰写大学生本科毕业论文,是我们对科学研究的过程的学习的一个很好的机会!因为在论文的写作过程中不仅有老师的传授与指导,可以让我们减少一些错误,让我们少走一些弯路,而且还可以直接参与并亲身体验科学的研究工作中所涉及到的全部过程和各环节,是一次系统的、全面的实践机会。在写论文的过程同时也是专业基础知识更深一步学习的过程,并且是更加的生动、更加深入、更加切实的专业基础知识全面学习的一个过程。首先,写做大学生本科毕业论文是与科研课题相结合,把在学校学过的相关专业基础知识应用于实际之中,在实际和理论结合的过程中更进一步的消化和加深、巩固自己所学到的相关专业基础知识,并且把所学到的专业基础知识转变为解决和分析问题的一种能力;
其次,当我们在调查研究和搜集所用材料、接触到实际操作的整个过程当中,既可以学到很多学校和课本里面学不到的、活生生的全新的知识,也可以通过实践来印证所学过的课本知识。

1.2论文研究的背景和意义 随着社会经济的发展,人民生活水平的不断提高,私人拥有机动车辆的数量迅速增加,车辆普及成为必然的趋势。在此情况下,伴随而来的交通事故、违章逃逸屡见不鲜,但仅仅依靠大力发展和改造交通设施,现在已经不能解决掉交通事故的发生、交通比较拥挤和环境污染越来越严重等问题。虽然世界上的诸多国家仍然主要靠修建更多的公路基本设施并建设完善的公路网络来缓解交通拥挤的问题,但由于修建新的道路所需要的资金比较多以及环境污染严重呢的压力和城市空间的不断减小将使得建设道路的空间将受到限制。因此,只有道路建设和现代化管理齐头并进,在加强交通建设的同时,大力发展智能交通系统,才有可能真正地解决日益严重的交通问题。车辆牌照识别 (LPR)技术是智能交通系统中的一个重要环节,它在交通监视和控制中占有很重要的地位,车辆牌照识别技术作为交通信息服务系统的重要手段,其任务是分析处理车辆图像,自动识别汽车牌号码。为了避免人工干预所带来的弊端,提高管理效率,对车辆牌照自动识别系统的需求和标准的要求越来越高。汽车牌照自动识别技术己经越来越受到人们的重视。车牌牌照自动识别系统的目的是在车辆图像中自动定位牌照位置并识别牌照号码,是数字图像处理与模式识别技术的典型应用。系统可以解决通缉车辆、停车场交通堵塞等问题;
还可以通过最简单的方式完成交通部门的车辆信息联网,解决数据统计自动化,模糊查询的问题。系统在桥梁路口自动收费、停车场无人管理的黑名单和自动放行方面、违章车辆自动记录等领域也有着广泛的应用。车牌图像由于受到采集镜头与车牌之间的距离,道路坡度,汽车驾驶速度,司机所挂车牌位置以及车牌本身的破损等原因,导致车牌在采集图像的时候会出现图像不清晰、倾斜、字符边缘破损等问题。这就为后期车牌图像的进一步处理带来了一定的困难,因此在图像预处理的字符分割阶段显得非常的重要。于是,对于车牌图像字符的分割的研究便也显得具有十分重要的意义。下面是车牌识别系统在生活当中的应用。

. 小区和停车场管方面的管理: 在智能的停车场和小区中,应用汽车牌照识别系统之后,对出入的车辆就能够不停车直接通过入口,而且系统就可以及时的识别出车牌号,并将车辆的信息经过网络传送到停车场或小区的管理系统中,这样就免去了管理人员干扰,可以节省人力和物力。

②. 交通道路的监控: 在道路交通的检测部门中,每天都会出现大量的违规车辆。对于那些列进“黑名册”中的车辆,比如那些肇事过后逃跑的车辆和那些已经挂失过的车辆与那些欠费过的汽车等,我们通常可以将这些车的车牌用摄像机录制成视频记录下来。如果通过人工识别并比较车牌号码,这样会导致工作的效率会让你低,而且容易出现错吴,大事应用汽车牌照识别系统,就只要把车辆的信息输入到系统当中去,系统就可以在二十四小时之中连续的对过往的车进行自动的检测。对于车牌号码识别之后做比较并处理,如果符合条件就立刻报警。

. 收费站管理系统: 在桥梁、高速公路与隧道等诸多地点,我们将LPR系统应用在收费站管理系统当中,就可以实现效率高、自动、准确和不停收费,这样就能真正的实现了无人干预的过程,克服平常的收费系统中的工作量较大和人工容易产生疲劳等等的不足,汽车牌照识别系统极大的减少了劳动的强度,也节省了大量物力和人力。同时,对于那种不停车的收费系统还能够节省司机的大量开车时间。

④. 车流统计、车牌验证和移动车载系统 汽车牌照识别系统也能够应用在路桥卡口和交通管理部门等单位进行车流量的统计。在移动车载之中,应用汽车牌照识别系统可以对街道和公路等比较复杂的地点的车辆进行车辆的牌照识别。这样有利于了管理部门的监管、巡视和处理突发的情况。同时,LPR的基本方法我们还可运用到其他的识别和检测领域。所以对汽车牌照识别的问题已经成为了交通工程这个领域中比较重点的研究话题之一。

从上面的介绍中可以看出,车辆识别系统在道路交通监控、交通事故现场勘察、交通违章自动纪录、高速公路自动收费系统、停车场自动安全管理等方面有着广泛的应用前景,所以其研究的意义是非常大的。

1.3 国内外研究现状 目前,对于数字图像处理方法是车牌自动识别中最为常用和最为有效的方法。车牌识别系统的两个重要指标是识别速度和识别精度。随着计算机技术的发展,计算机处理能力越来越强,识别速度有了很大的提高,随着LPR技术的发展,国内外中都有很多关于车牌号码识别这一方面地研究报道。

国内也有大量的学者从事这方面的研究,中国科学院自动化所的刘智勇等发表文章针对车牌特点,设计了一个变换函数来突出其特点,从而进行车牌提取,该方法采用最大方差法来进行二值化闽值的选取,并对二值化后的图像进行水平扫描,找出候选区域。他们用一个样本的数目为3281的样本集合中,车牌的识别准确率为98,52%。分割准确率是96.51%,从那个时候看来这应该是一个很高的指标了,这套系统在后来和另一家公司所用的车牌识别系统有着很大的连系。

在国外对这方面的一些研究工作发展的也比较早,在其中就有几个比较具有代表意义的工作:R.Mullot等开发了一种可以用在集装箱的识别,还可以用在车牌识别的系统,这种系统它主要是通过文字的纹理在车牌图像中的一些共性来进行识别和定位。车牌识别与集装箱的识别共用一套硬件系统。Youngsungso开发出一套实时车牌识别系统,据报道该系统的车牌定位正确率达到99.2%。日本在车牌图像的获取的方面作了大量的研究,并为系统产业化作了大量的工作。

第二章 车牌识别系统的构成 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别模式识别技术。有一些汽车车牌号码识别系统还可以过视频所采集到的图像来判断车辆的驶入视野功能称作视频车辆的检测。其硬件的基础一般都包括了摄像装置、触发装置、照明装置、图像采集装置和对车牌号码识别的计算机等,其软件的核心部分包括车牌定位的算法、车牌字符的分割算法跟字符的识别算法等。对于一个完整地车牌识别系统来说还应包括车辆的检测、牌照的识别、图像的采集等几部分。当车辆经过识别系统所管辖的区域时,检测装置检测出车辆处在触发单元的范围,然后图像采集装置就提取当前的一些视频图像。后由牌照识别装置对采集到的图像进行预处理,并定位牌照的位置,在将牌照里面的有用字符分割出来后进行识别,最后组成车牌号码并输出。

2.1系统基本组成框架 车牌识是一辆汽车独一无二的信息,因此,对车辆牌照的识别技术可以作为辨识一样车最为有效地方法。车牌识别系统包括摄取的汽车图像,车牌号码的识别,车牌图像的采集和预处理,牌照区域的定位和提取,牌照字符的分割和识别等几个部分组成,如图2.1所示。

图2.1 车牌识别系统流程图 2.2 车牌图像的提取 如图2.2所示:当有汽车经过时,车辆检测单元(这里指的是地感装置)就会受到触发,接着图像采集装置会被触发自动获取车辆上的反面或正面图像,并且将所采集到的图像传送至计算机上处理,经车牌定位装置提取出车牌,由字符分割装置对车牌上面的字符进行分割,最后再经过字符识别装置进行字符的识别并且将识别的结果传送到监控中心去或收费处一些应用场合。

图2.2 车牌图像提取 2.3 车牌的定位 2.3.1车牌图像定位研究现状 因为车牌图像的定位对于整个识别系统对牌照的识别的成功与失败起着很关键性地作用;
所以国内外的许多研究员在研究车牌智能识别系统这一领域时,很早就开始对其进行了深入的研究。目前在研究车牌图像定位与提取方面主要有两种技术。第一种技术就是原始的黑白二值化基于灰度级的图像处理技术。当然这种方法出现的根源是因为存计算机发展的早期,由于受到了计算机硬件,如内存、CPU的速度方面的限制而不得不采取的图像处理技术。这种技术的主要局限性就是误识率比较高,而且无法提供车牌颜色等方面的信息。第二种技术是彩色图像处理技术。这种技术的基本思想就是车牌颜色(包括文字的颜色和车牌的背景颜色)是车牌的重要特征,不同种类的车辆的车牌有不同的颜色模式。近年来,随着计算机技术的发展和硬件价格的大幅度地下降,有很多学者在车牌的处理方面应用了后一种彩色图像处理技术。这种技术又可以分为四种方法:(1)利用彩色边缘术和区域生长相结合的方法来共同定位和提取车牌;
(2)首先利用神经网络技术对图像进行颜色分割,然后计算车牌底色的水平和垂肖投影值,最后根据车牌的宽高比相定位和提取车牌;
(3)利用颜色空间距离和相似度进行车牌的底色的颜色分割,再利用投影法根据车牌的宽高比确定侯选车牌区域.最后对侯选车牌区域的灰度图像进行纹珲分割来定位和提取车牌。(4)基于边缘颜色对来对车牌图像进行提取和定位。虽然,这些方法都有自己的优点:但是它们也或多或少存在着一定的缺点。

2.3.2车牌图像定位实现方法 牌照的定位从图像处理的意义上来说就是从一幅随机图像中找出一块具有某种特征的区域,该区域中包含了汽车牌照。这种特征就是牌照本身区别于图像其他部分的特征。根据特征提取的不同,牌照定位的方法也就有很大的不同: ①.利用牌照具有四边形边框的特点,通过检测图像中的长直线段,然后用一定的约束条件进行搜索的方法来确定牌照的位置。这种方法定位的精度较高,但是易受到噪声的影响。且对有些边框磨损、不明显的牌照效果不好。

②.利用统计投影直方图的方法,通过对含有汽车的图像水平和垂直两个方向的灰度投影直方图的分析,来推断出汽车牌照的位置,如图2.3所示。这种方法优点是对图像中的噪声不敏感,缺点是定位精度不够高。

③.区域生长法是对边缘图像进行均匀性区域生长以获得潜在车牌区域,然后利用车牌的几何特征以及车牌区域内的边缘灰度直方图统计特征删除伪车牌,即得到真实车牌。

④.DTF变换法是先对图像逐行做DTF变换,然后把频率系数逐行累加平均,并根据这些平均值做出频率谱曲线,根据频谱曲线中的“峰”的起始点位置确定车牌水平位置,对这一水平区域逐列做DTF变换可确定车牌竖直位置。

⑤.近年来又出现了基于彩色汽车图像牌照定位的方法。这种方法主要是利用我国汽车牌照字符与底色对比较多,彩色图像比灰度图像能够更多的视觉信息并对各种光照不敏感等特点。这种方法也取得了较好的效果。

本文采用的是统计投影直方图的方法来对车牌图像的定位,定位后的图像如下所示:
图2.3 水平和垂直两个方向的灰度投影直方图 图2.4 车牌定位后的图像 第三章 图像的预处理 3.1色彩校正、图像增强 本文采用的是RGB转化为CIE-XYZ系统来进行运算。CIE国际照明委员会选取的标准红、绿、蓝三种光的波长分别为:
红光,R,波长=700nm 绿光,G,波长=546nm 蓝光,B,波长=435.8nm 任何光的颜色可以表示为式(3.1)所示:
C=Rr+Gg+Bb (3.1)
其中权值r/g/b为需要R/G/B三色光的相对量,即三刺激值,这个系统被称为CIE-RGB系统。

在此系统中,三刺激值可能是负数,由于实际上不存在负的光强,而且这种计算极不方便,不易理解,1931年的CIE-XYZ系统利用三种假想的标准原色X(红)、Y(绿)、Z(蓝),能够使得到的颜色的三刺激值都是正值。即在CIE-XYZ系统中,任意光的颜色可以表示为:
C=Xx+Yy+Zz (3.2)
而且x/y/z均为正。

由XYZ在坐标平面形成的虚线三角形将整个光谱轨迹包含在内。因此整个光谱色变成了以XYZ三角形作为色域的域内色。在XYZ系统中所得到的光谱三刺激值和色度坐标x、y、z将完全变成正值。经数学变换,两组颜色空间的三刺激值有以下关系:
X=0.490R+0.310G+0.200B
 Y=0.177R+0.812G+0.011B  
 Z= 0.010G+0.990B 两组颜色空间色度坐标的相互转换关系为:
   x=(0.490r+0.310g+0.200b)/(0.667r+1.132g+1.200b)
   y=(0.117r+0.812g+0.010b)/(0.667r+1.132g+1.200b)
 z=(0.000r+0.010g+0.990b)/(0.667r+1.132g+1.200b)
  只要知道某一颜色的色度坐标r、g、b,即可以求出它们在新设想的三原色XYZ颜色空间的的色度坐标x、y、z。通过上式的变换,对光谱色或一切自然界的色彩而言,变换后的色度坐标均为正值,而且等能白光的色度坐标仍然是(0.33,0.33),没有改变。由CIE-RGB系统按表的数据,计算的结果。所有光谱色度坐标,,的数值均为正值。

通过以上的变换,完全色彩简单的校正与图像增强。

3.2 灰度化 用数码相机获取的图像是彩色图像,它由R、G、B三个单色调配而成。在汽车牌照分割中,也有一些基于彩色图像的处理方法,但实际效果并不显著,一般情况下,由CCD采集到的图像会有不理想的情况,如光线过强,或者偏弱,这些都会对后续的图像处理产生影响。而且车牌位于车身下部,靠近散热片,对比度较差,此时若直接对灰度图像进行定位会有不小的困难,为了获得较好处理的灰度图像,在对CCD采集的原始图像进行灰度化后,要对其灰度转换。

灰度图(GrayScale)是指只包含亮度信息,不包含色彩信息的图像,例如平时看到的亮度由暗到明连续变化的黑白照片。要表示灰度图,就需要把亮度值量化,通常分成0~255共256个级别,O表示最暗(全黑),255表示最亮(全白)。由于256级灰度比较简单,若是彩色图像,其颜色种类较多,不利于图像处理,因此一般部是将彩色图像转换为灰度图进行处理。其转化式可为式(3.3)。

灰度值=O.299R+0.587G+0.114B (3.3) 3.2.1 灰度变化的实现 颜色可以分为黑色和彩色,黑白是指颜色中不包含任何的色彩成分,仅由黑色、白色组成。在RGB模型中,如果R=G=B,则颜色(R、G、B)表示一种黑白颜色,其中R=G=B的值叫灰度值,所以黑白颜色又称为灰度颜色,色彩和灰度之间可以相互转换,由彩色转换为灰度的过程叫做灰度化处理 灰度花就是使彩色的R、G、B分量值相等的过程,由于R、G、B的取值范围一般是0至255,所以灰度的级别只有256级,即灰度图像只能表现256种灰度。灰度化处理的方法主要有三种:
①. 最大值法:使R、G、B的值等于三者中最大的一个作为该点的灰度,即:
R=G=B=max(R、G、B) (3.4) 本方法会形成亮度很高的灰度图像。

②. 平均值法:
用R、G、B的值求出平均值作为该点的灰度,即:
R=G=B=(R+G+B)/ 3 (3.5)
本方法会形成较为柔和的灰度图像。

③. 加权平均值法:
根据某种指标给R、G、B赋予不同的权值,取R、G、B的加权平均值作为该点的灰度,即:
R=G=B()/3 (3.6)
式中的、、分别为R、G、B的权值。、、取不同的值,加权平均值法就会形成不同的灰度图像。由于人眼对颜色的敏感最高,对红色的敏感度次之,对蓝色的敏感度最低,所以使>>将得到合理的灰度图像。当=0.587,=0.229,=0.114时能得到最合理的灰度图像。

由于一般通过摄像机获得的是RGB彩色图,所以使用公式:
Gray=(Red×299+Green×587+Blue×114)/1000 (3.7)
把图像化为256级的灰度图像,式中Gray是灰度值,Red、Green、Blue是像素的红绿蓝色彩分量。灰度化的原因在于:虽然色彩图像包含了更多的信息,但同时也增加了处理的时间和难度。标准的24位彩色BMP图像的一个像素需要用三个字节来表示,而256级的灰度BMP图像一个像素只需要用一个字节,转换为灰度图像可以使图像的大小缩小为原来的1/3,对于节约硬盘容量、减小计算量来说都十分有必要。另外RGB彩色图像也存在着缺点,在有些光照情况下色彩会发生失真,不能真实再现物体的原貌。在转换为灰度图像后同样可以获得足够的图像细节,减少了不必要的干扰,降低处理的复杂。

3.1 车牌的灰度图像 3.2 灰度图的直方图 3.2.2 图像的灰度拉伸 图像的灰度拉伸变换和灰度的线性变换有点类似,都用到了灰度的线性变换。但不同之处在于灰度拉伸不是完全的线性变换,而是分段的线性变换。它的灰度变换函数的表达式可表示为:
(3.8)
它的图,如下图所示:
图3.3 灰度拉伸变换 上图中横轴为原灰度,纵轴为变换后的灰度,灰度拉伸可以更加灵活的控制输出灰度直方图的分布,它可以有选择的拉伸某段灰度区间以改善输出图像。上图所示的变换函数的运算结果是将原图在和之间的灰度拉伸到和之间。如果一副图像灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像,同样如果图像灰度集中在较亮的区域而导致图像偏亮也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。

3.3 二值化 二值图像是指整幅图像内仅有黑、白二值的图像,在它们之间不存在其它灰度层次的变化。二值化算法又称阈值算法,目的是找出一个合适的阈值将待研究的车牌区域划分为前景和背景两部分。二值化后的车牌要能再现原字符图像,基本不出现笔画断裂和粘连现象,尽量不丢失原字符的特征。另外二值化算法可以用于车牌定位过程中精确定位车牌的上下左右边界。对图像进行二值化可以给后续的分割识别工作带来很大的方便。

图像的二值化算法很多,常用的二值化方法有直方图统计法、固定门限法、动态阈值法、松弛法、抖动矩阵二值化法等。由于在光照较弱的情况下,车牌图像的光照程度很不均匀,车牌字符与底色的对比度偏低,所以采取全局动态阈值法。全局动态阈值法对于目标物体和背景明显分离、直方图有明显双峰特性的效果较好,但也存在不足,主要是对于输入图像量化噪声或不均匀光照等情况抵抗能力差,而局部自适应阈值法则对光照不均匀、噪声干扰较大等较为复杂的情况更为有效。本文采用一种改进的限定阈值二值化算法,即先对图像灰度拉伸,再设定阈值。因为对于前景和背景区别较大的车牌而言,其图像灰度直方图具有明显的双峰特征,进行灰度拉伸后,双峰之间的波谷范围变大,使得在不同光照下的照片得到共同的波谷范围,在这段灰度范围内确定的阈值可以适用于不同的图像。灰度拉伸后,在视觉上体现为增加了背景和前景的对比度。

3.3.1全局化阈值 采用阈值确定边界的最简单做法是在整个图像中将灰度阈值的值设置为常数。如果背景的灰度值在整个图像中可合理地看作为恒定,而且所有物体与背景都具有几乎相同的对比度,那么,只要选择了正确的阈值,使用一个固定的全局阈值一般会有较好的分割效果。如图4-7所示,我们能够看出该图像的灰度级直方图有两个波峰和一个波谷;
在这两个波峰中第一个波峰是背景的灰度级直方图,它的像素数目比较多,颜色比较淡。第二个波峰是物体的灰度级直方图,它的像素数目相对于背景来说比较少,颜色比较浓。图中的一个波谷对应于物体边缘附近相对较少数目的点。在类似于这样的情况下,通常使用固定阈值来对图像进行二值化操作。这时候我们可以定义灰度阈值T对物体面积进行计算的表达式为:
(3.9)
显然,如果阈值对应于直方图的谷,阈值从T增加到T+A T只会引起面积略微减少。因此,在这种情况下我们就把阈值设在直方图的波谷处,可以把阈值选择中的小错误对面积测量的影响降到最低。

3.3.2自适应阈值 在许多情况下,背景的灰度值并不是一个常数,物体颜色和背景颜色的对比度在图像中也有变化。这时,一个在图像中某一区域效果良好的阈值在其他区域却可能效果很差。在这种情况下,把灰度值取成一个随图像中位置缓慢变化的函数值是适宜的。

二值化后的车牌图像如图3.5所示。

图3.4 灰度的取值变化图 图3.5 二值化后的车牌图像 3.4 去噪 在灰度化后,由于光照、天气、成像设备等因素的影响,图像会存在有噪声、模糊等干扰,影响进一步的图想想处理,所以我们必须对图像进行增强处理。

在图像处理中一般使用滤波技术去除噪声干扰,比较常用的几种滤波器是均值滤波器、高斯滤波器和中值滤波器。

均值滤波器是一种线性滤波器,对图像进行局部均值运算,每一个像素值用其局部领域内所有值的均值来代替,其公式为:
(3.10)
其中:F(x,y)是输出图像,是点(x,y)附近的点,M是邻域N内的像素点数目。邻域N的大小控制着滤波程度,大尺度的邻域会加大滤波程度,去除大噪声的同时也会导致图像细节损失。一般使用的有3×3、5×5邻域进行滤波。

高斯滤波器是根据高斯函数的形状来选择权值的线性平滑滤波器,对于滤除服从正态分布的噪声十分有效。一维零均值高斯函数为:
(3.10) 其中高斯分别参数决定了高斯滤波器的宽度。对于图像处理来说,常用二维零均值离散高斯函数作平滑滤波器,函数表达式为:
(3.11) 中值滤波是一种非线性滤波器,其基本思想是用像素点邻域灰度值的中值来代替该像素的灰度值,能有效的去掉脉冲噪声同时又保持了图像中的边缘细节,这是因为它不依赖与邻域内与典型值差别很大的值。中值滤波器在处理图像时与线性滤波器的工作方式类似,但滤波过程不是加权运算,以3×3邻域为列求点[i,j]的灰度值计算方法为:
①按灰度值顺序排列[i,j]邻域中的像素点:
②取排序像素集的中间值作为[i,j]的灰度值。

对以上三种滤波器进行比较我们认为在字符图像识别过程中值滤波器可以克服线性滤波器造成图像细节模糊的缺点,能够强化图像的边缘特征,滤除掉干扰噪声,其应用效果较好。

本文采用的是均值滤波器,对车牌的滤波结果如下图所示:
图3.6 均值滤波前 图3.7 均值滤波后 3.5 车牌的倾斜校正 车牌图像由于受到采集镜头与车牌之间的距离,道路坡度,汽车驾驶速度以及司机所挂车牌位置的影响等的影响,总有一定的倾斜度。这就为后期车牌图像的进一步处珲带来了一定的困难,因此在后续的处理之间必须要对其进行倾斜校正。根据许多文献资料的记载,目前车牌倾斜校正的主要方法有:1、通过模板匹配来寻找车牌固定时的二个顶点或四个顶点,再通过双线性空间的变换来重建车牌所在的矩形区域,从而得到车牌倾斜校正目的。这种方法的主要缺点就是当车牌的背景颜色与车子的颜色差别不大时,所取得的车牌的倾斜校正的结果将不理想。2、通过求取车牌字符区域的极大特征点和极小特征点,再对它们进行投影来求得车牌的倾斜角,最后再进行图像旋转,从而得到车牌倾斜校正的目的。这种方法的主要缺点就是当车牌上的噪声比较大时,所取得的结果将很不理想。3、通过求得车牌上各个字符连通域的中心点,然后拟合成近似的直线来确定车牌的倾斜角,最后再对车牌图像进行旋转,从而得到车牌倾斜校正的目的。这种方法的主要缺点就是当需要对车牌进行二值化处理时,车牌卜的符就会出现断裂等现象,这就使得该方法在有些情况下也不够理想。4、Hough变换法。这种方法主要就是通过Hough变换来求得车牌的区域边框,这样进一步地确定了车牌的倾斜角;
虽后冉对车牌图像进行旋转,从而得到车牌倾斜校正的目的。这种方法的主要缺点就是当车牌上的噪卢比较大时,所取得的结果将很不理想。5、先进行水平边缘的检测,然后再旋转边缘图像并进行垂直投影,并把垂直投影的最大投影值所得到的角作为车牌的倾斜角。并根据这个倾斜角来对车牌图像进行旋转,从而得到车牌倾斜校正的目的。这种方法的主要缺点就是它只考虑了水平倾斜没有考虑垂直倾斜。因而得到的结果具有偏面性。6、通过采用水平和垂直边缘检测法相结合的办法来旋转投影求取车牌的水平和垂直倾斜角度,对水平的车牌图像进行双线性插值旋转校正,对垂直倾斜的车牌进行双线性插值错位校正,而且在进行校正时确定车牌的上下位置。进而得到倾斜校正的目的”“。这种法的最大缺点就是当倾斜角比较大时,所得到的结果不够理想。因此,本文将在前人水平垂直倾斜校正方法的基础上提出一种新的水平垂直倾斜旋转校正方法,并使它分别在垂直方向上和水平方向上进行倾斜校正。由于车牌在垂直方向上发生了倾斜,使得所得到的图像的像素在不同行之间发生了错位或重叠;
车牌在水平方向上发生了倾斜,使得所得到的图像的像素在不同列之间发生了错位或重叠:对于下一步字符的切割来说,水平的投影应该更加重要;
因此为了不影响下一步字符的切割,本文提出了先进行垂直方向上的倾斜校正,然后再在水平方向上进行倾斜校正。

3.5.1车牌的倾斜类型 众所周知,在中国车牌都是一个矩形。它在不同的车辆上可能有不同的倾斜类型和倾斜角,但总的来说,它的倾斜样式可以分成三种不同的类型:①水平倾斜、②垂直倾斜、③水平垂直倾斜。它们的倾斜样式分别如图3.8所示。对于水平倾斜的这种情况,不管它是向上倾斜或是向下倾斜(从x轴的正方向看),只要将车牌图像向下或向上旋转所倾斜的角度即可。对垂直倾斜这种情况,不管它是向内倾斜或是向外倾斜(从Y轴的正方向看),只要将车牌图像向外或向内旋转所倾斜的角度即可。对于水平垂直倾斜,这也是最多的一种情况。为了解决这种情况我们必须先在水平方向上进行向下或向上旋转在水平方向上所倾斜的角度;
再进行垂直方向上进行向外或向内旋转在垂直方向下所倾斜的角度,这样才能达到倾斜校止的效果。

(a)
(b)
(c)
图3.8 (a)图像的水平倾斜 (b)图像的垂直倾斜 (c)图像的水平垂直倾斜 3.5.2 以线性回归法对车牌图像的校正 如果我们有一系列相互独立的点,其近似分布在一条直线附近,我们就可以通过一元线性回归法拟合这条直线。

图3.9 最小二乘原理图 这条直线的一元线性回归模型为:
(3.12)
(3.13)
设上图中点的坐标分别是(x1,y1) , (x2,y2) , …… , (xn,yn) 。用最小二乘算法来估计和。则有:
I = 1 , 2 , 3 , … ,n , (3.14)
用最小二乘算法来计算,找到准则函数,记为 (3.15)
求Q的最小值:
(3.17)
(3.18)
由上式可得:
(3.19) (3.20) 其中:
(3.21) (3.22) 估计出了直线的斜率和截距,我们就可以估计出这条直线的方程了。

将汽车牌照图像进行二值化,就可以得到其与背景的明显的交线,对于汽车牌照图像二值化的阈值完全可以取的高一点。

具体方法如下:
(1)找出边界直线上的点(每列第一次由黑变白的点,且这一列的下两点还是白的话就可以判为边界点[6]),将其行坐标存入数组a即,列坐标存入数组b。

(2)通过最小二乘法拟和这条边界直线,计算出其斜率L。

(3)通过rot=atan(L),计算直线的倾斜角度,然后对其矫正。

第四章 车牌字符的分割 4.1 字符切割研究现状 由于车牌图像字符切割足下一步字符识别的前提,而且字符切割的好坏将直接影响到下一步字符的识别率。因此,国内外的研究者们对这一步的研究一直都很重视。在已有的印刷体字符分割技术的基础上,研究者们提出了各式各样的方法,目前,关于这一方面研究的主要方法有:①利用车牌上字符的固定长宽比和字符之间的间距作为先验知识来以字符进行切割。这种方法在切割字符前先估算出字符的长度和宽度,还有字符之间的间距,并从图像的垂直方向上的投影直方图中确定字符的起始位置,再参考以上估算值逐个定位切割各个字符。②根据车牌图像在垂直方向上的投影直方图的数学期望E和方差D来确定一个阈值T=E—D,当像素值满足piexl[i]<T<piexl[i+1]时,判别该点为字符的起始位置,当像素值满足piexl[O<T<piexl[i-l]时,判别该点piexl[i]<T<piexl[i-l]为字符的结束位置,就这样划出所有的字符。当然这种方法的切割效果主要取决于阈值T,因此这种方法要求每次对切割的结果进行研究,如果偏离太大就要对阈值重新进行调整。③根据车牌图像在水平和垂直方向上的投影值得剑灰度直方图,再根据这个灰度直方图,选择合适的闽值再来分离车牌图像的背景和字符,然后再结合字符的一定长宽比进行字符切割,并做归一化处理,以便下一步的特征提取。本文将在前人研究的基础上先对车牌图像应用基本形态学中的开运算进行处理,然后再对车牌图像进行二值化处理,并将其二值化图像在垂直方向上进行投影,而且利用先验知识中的字符长宽比和字符之问的间距,再加上轮廓分析的帮助来切割车牌图像上的字符。

4.2 车牌上字符的基本特征 中国车牌都有一定的特点;
一般来说,它的字符为规则的印刷字体其字符串的长宽比、字符之间的间隙、字符的长宽比及笔画宽度都是严格地按照一定的标准来制造的;
虽然车牌图像数据化后,会对它上面的字符进行提取和校正时会代入一定的噪声,但字符串中原有的表示各个字符之间关系的各个参数之间的相互关系不会发生太大的变化。为了准确地识别牌照上的汉字、英文字母和数字。必须把单个字符从牌照中提取分离出来。在实际处理中,我们面对的是要识别的牌照字符情况非常复杂。可能会存在较大的干扰、噪声,这是由于各种设备可能产生的噪声所引起的,使得牌照图像中可能产生字符之间断裂的现象,图像中算符的笔画可能产生字符之间粘连或者字符断裂的现象;算符的笔画可能变粗,其影响是字符的轮廓模糊不清、字符之间粘连。同时,经牌照定位而分割出的牌照区域亦非完全精确到牌照上的字符区域,所面对的是在牌照四个边框附近误差几个象素;并且字符为白字,还将有汽车保险杠与牌照四边边框的残留图像以及牌照上两个铆钉干扰的一个区域。这就要求我们对牌照要有一定的了解。现有的牌照有四种类型:(1)小功率汽车所用的蓝底白字牌照;(2)大功率汽车所用的黄底黑字牌照;(3)军用或警用的白底黑字、红字牌照;(4)国外驻华机构用的黑底白字牌照。这四种牌照的外轮廓长度均为45Omm,总的宽度为150mm,共有字符7个(不包括第二、三字符之间的小圆点)。标准的民用车辆牌照(军车、警车、教练车、领事馆车除外)均为七个字符,首位为省名缩写(汉字),次位为英文字母,再次位为英文字母或阿拉伯数字,末四位字符均为数字。字符总长度为409mm,其中单个字符统一宽度为45mm,高90mm,第二三个字符间间距为34mm(中间小圆点10mm宽,小圆点与第二、三个字符间间距分别为12mm),其余字符间间距为12mm。牌照字符为规则的印刷体字,其字符串长度比、字符间隙、字符的宽高比及笔画宽高都是按照严格的标准制造的,在牌照图像数字化、提取和校正的过程中会代入一些干扰,但字符串参数之间的相互关系都不会发生很大的变化。

以下是中国车牌的特征:
① ② ③ ④ 其中式中的L为字符串长度,H为字符串的高度,为常规字符的宽度(这里的常规字符不包含‘1’),为字符‘1’的宽度,为字符‘1’的两侧的字符间隙。上面的4个公式为中国车牌上字符之间关系的主要参数,其中的参数常量是实际车牌图像统计的平均值。利用它们之间的关系,可使单一字符之间的估计更加准确。下面我们将利用这些关系对车牌进行切割。

4.3 投影法分割字符 传统的字符分割方法是使用投影法来进行分割。字符图像二值化后,以像素点为单位逐列扫描图像,累加该列值为1的像素点,累积的结果即为该列的垂直投影。对图像的的所有列扫描完毕后即得到整幅图像的垂直投影。

在垂直投影直方图中由于字符的分界处灰度为1的像素点很少,故投影后该处表现为很低的波谷,将统计值等于零的列作为字符分割的界限。据此我们就可以实现字符分割。

但简单的垂直投影法也存在很大的缺陷,由于字符中经常存在空洞,导致字符的垂直投影具有多处波谷,在进行分割时难以依据波谷来确定字符的分界点。而且当获取图像质量不高时二值化后字符会粘连在一起,这时垂直投影基本上不会出现十分明显的波谷。

对传统的垂直投影法的一种改进方法是使用上下边缘投影。上下边缘投影是指字符上边缘与下边缘间的距离,其中“字符上边缘”指以像素为单位沿图像某列自上而下搜索直至遇到字符区域的第一个点,“字符下边缘”是指以像素为单位沿图像某列自下而上搜索直至遇到字符区域的第一个点,则上下边缘投影即为字符上边缘与下边缘两者之间距离之差,如图4.1所示。

图4.1 字符的垂直投影和上下边缘投影对比 从图4.1可以看出,由于字符内部空洞的存在,简单垂直投影中大部分都存在一个波谷,单纯一句投影的波谷来分割字符很难避免将单个字符分割为两个部分。与垂直投影相比,上下边缘投影具有较好的单波峰特性,对投影曲线使用分裂算法可以较容易地分割出完整的字符区域。分割结果如下图所示:
图4.2 分割结果图 投影法实现起来比较简单,但是适应性较差,在预处理不好的情况下,很难有满足条件的图像,而为了获取满足传统方法的条件,只有加强预处理的条件。因此,处理完的图像不可避免的损失一部分有用的信息,给进一步的处理造成不必要的困难,可能引入额外的误差。当字符倾斜的角度比较大、多行字符或是拍摄的图像上的字符较为密集的时候,投影法就完全失效了。另外对于很多汉字来说是由多个部分组成,在投影的时候会形成多个相互独立的波峰,其结果是经常把完整的汉字错误地分离开,总的来说,投影法只适应于较为清晰、包含的数字和字母、倾斜不太大的图像,对于很多其他复杂的应用场合,投影的方法经常从本质上失去了意义。因此,我们就引入了一些更为实用的车牌字符分割方法。

4.4 粗切割方法 4.4.1车牌图像上字符的粗切割 大家都知道,我的车牌都是由7个字符加上一个点所构成的。它们的排列顺序依次为,汉字、英文字母、点、英文字母、阿拉伯数字、阿拉伯数字、阿拉伯数字、阿拉伯数字;
或者是汉字、英文字母、点、阿拉伯数字、阿拉伯数字、阿拉伯数字、阿拉伯数字、阿拉伯数字。当然还有其它的样式的车牌,但他们的数目特别少,可以忽略不记。而且从表向卜看,这7个字符加上一个点不可能以第四字符对称,但仔细分析这7个字符加上一个点的实际车牌会发现,它们的的确确是以第四字符,也就是倒数第四个阿拉伯数字为对称的,而且车牌上的7个字符都有同一个高度。基于这种思想,按照下面的步骤我们来切割车牌上的字符。

①首先,在内存中开辟七个长为车牌长的七分之一和宽为车牌宽的区域。

②从车牌图像长边的巾问向下开始扫描车牌图像,并把扫描到的所有的点灰度值复制到0区域的第四个区域对应位置上。然后再从上向下扫描刚扫描过这一努的左边或右边,直到所扫描的这一峰上的所有点的灰度都是0时为止,并把这一竖认为是字符的分离处。

③切割第五到第七个字符。方法就是,切割完了第四个字符之后,再依次扫描剩下的空间,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始并依次扫描直到所扫描的这一竖上的所有点的灰度值全为0时认为是字符的结束。

④切割第三到第四个字符。这两个字符的切割方式与第五到第七个字符一样。

⑤切割第一到第二个字符。当第三个字符切割完之后,我们将遇到一个点,我们也把它看作一个字符,只不过这个点扫描之后就不要了。扫描完这个点之后,我们来切割第二个字符,它的切割方式与前面一样。切割完了第二个字符之后,再向左扫描,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始,并依次扫描直到所扫描所有剩下的,并填到相应的位置,直到剩下的空间填满。经过粗分割后,可以得到一些单个字符区域和多余的空间。下一步我们将把这些多余的空间去掉。这将更有利于下一步字符的识别。

4.4.2去掉车牌图像上字符的多余空间 车牌上的字符经过了粗切割所得到的是一些单的字符,但由于在分配空间时是按照车牌的宽和长的七分之一来分配的;
所以这个空间可能大于字符应该占的空问。因此,这一步我们将把它去掉。对于第一个字符从第一行开始向下扫描,把那些一行中所有的点的灰度值全为0的点去掉,直到扫描到有一行不全为0时为止。然后再从第一列开始向右扫描把那些一列中所有的点的灰度值全为0的点去掉,直到扫描到有一列不全为0时为止。接下来从最后一行开始向上扫描,把那些一行中所有的点的灰度值全为0的点去掉,直到扫描到有一行不全为0时为止。最后从最后一列开始向左扫描把那些一列中所有的点的灰度值全为0的点去掉,直到扫描到有一列不全为0时为止。重复上面的步骤完成剩下字符的切割。

下图显示了切割的结果。

图4.3 投影法车牌字符的切割结果 4.5 连通域提取的车牌字符分割 4.5.1 连通域矩形的位置关系 只要确定了矩形的相对位置,我们就可以对矩形进行合并,下面就对矩形的四种位置关系分别进行讨论。

①包含关系 给定两个矩形m和n,如果m包含n,则这个包含关系可以定义为:
且且且 (4.1) ②交错关系 给定两个矩形m和n,如果m与n相交,则m或n必有一个定点在另一个矩形内,设点在矩形内的判定式为,矩形的定点为, 则交错关系可以定义为:
或者 (4.2) ③上下关系 这个判定要稍微复杂一些,我们定义为一个矩形的中心点的垂直投影落在另一个矩形的垂直投影内,即:
或者 (4.3) ④左右关系 经过前三个关系的处理,图像中的大部分连通域矩形已经进行了合并,剩下的就是左右合并,一般来说,同一字符区域中字符的大小是基本相同的,字符间距离也大致是左右合并,一般来说,同一字符区域中字符的大小是基本相同的,字符间距也大致一样相同,而字符间距明显要大于字符内笔画的间距。设矩形的平均宽度和平均间距为:
(4.4) 对于两个矩形m和n,定义左右关系如下:
且且 或者 (4.5) 其中、、为常数,式(4.8)的意义为两个矩形宽度小于平均宽度并且两者的间距小于平均间距,式(4.9)的意义为两个矩形合并后的宽度接近于平均宽度。

4.5.2连通域的合并 在作出字符连通域矩形后,我们看到,由于英文字母和数字都是一个连通域,其外接矩形恰好就包含了整个字符,故可以很容易地进行分割,而汉字由于本身结构的原因,一个汉字很有可能由多个连通域构成,单个矩形可能只是汉字的一个部分,所以必须对连通域进行合并。

汉字的结构有若干种情况,上下、包含、左右等,连通域的矩形的相对位置也可以归结为四种基本情况,包含、交错、上下、左右,其合并的顺序先左后右。

设整个图像中的矩形集合为,则字符可定义为集合中一个或者若干个矩形的并集,即,而所有个矩形集合,即。

矩形的基本信息是四个定点的坐标,可以具体化为四个参数:
,,,,故两个矩形m和n合并为矩形k可以表示为:
(4.6)
4.5.3 连通域提取字符分割 通过图像的预处理后, 一般车牌的第2 个到第7个字符, 构成了独立的连通域。于是只要得到每个连通域行列的起始位置和终止位置, 构成一个矩形区, 就得到了包含连通域的最小矩形区, 最后, 将每个矩形分别剪切, 分割出各个字符, 算法具体的实现过程如下: ①初始化。将标记数组flag 附初值为0。扫描中值为0时, 表示未被扫描; 为N( 从自然数1开始) 表示该像素点被扫描过, 且表示该点在第N个连通域。

②寻找起始点。顺序扫描二值图, 如果像素灰度值为0, 扫描下一个像素。若灰度值为1且未被标记, 则依次扫描相邻像素的标记值, 当全为零, 说明当前像素是新连通域的起始点, 标记值为前一个标记值加1。

③确定同一连通区域的像素集合。从起始点开始顺序扫描, 当目标像素标记值为N时扫描相邻像素。对于起始点像素, 遍历它所有相邻像素, 如果相邻像素中有m (1m8)个像素点的灰度值为1, 且未被标记, 则这m 个像素与当前像素属于同一连通域, 标记值都置为N。之后该连通域的所有目标像素只需扫描右侧的3 个相邻像素。而当目标像素标记值不为N 时, 停止前向扫描, 转到第② 步。

④寻找连通域的始终位置。从标记数组的左上角开始,从左到右、从上到下逐行扫描标记数组的标记值, 当找到第一个像素点标记值为N时, 记录该点像素的横坐标为方框左上顶点的横坐标; 从上到下, 从左到右扫描, 当找到第一个像素点标记值为N时, 记录该点像素的纵坐标为方框左上顶点的纵坐标y1; 同理, 逆向扫描, 找出方框的右下顶点的横、纵坐标, 。以这两点画框, 就能把属于同一连通域的分离出来。按照这种方法, 最后也能把二值图像中的所有独立的连通域都用方框标示出来, 如图4.4( a)所示。

⑤分割字符。车牌图像每个字符都有一个外接矩形, 而连通域的数字标识并不是按车牌字符顺序排列的, 需将各个外接矩形的左顶点的横坐标值按降序排列。车牌字符中除了汉字外, 其它都是连通的, 因此, 按左顶点坐标的大小从右到左切割出6 个字符后, 剩下的就为汉字字符。其中, 字符块的宽为, 字符块的高为, 按此方法剪切出各个字符。分割结果如图4.4( b)所示。

(a)方框分离连通域图 (b)分割出来的单个字符 图4.4连通域字符分割结果 4.5.4误连接区的分割 由于拍摄条件的影响或者物体本身的污损等原因,二值化后的字符区域有可能会出现粘连现象,表现为两个货若干个字符相互连接,形成了一个较大的连通域。这种情况下仅使用连通域方法不能把他们分割出来,我们可以用以下的公式来确定有无误连区域:
或者 (4.7) 式中的和为根据实验确定的常数,发现有误连区域后,可以使用垂直投影的方法,找出区域中最低的波谷作为分割界限,这样就可以把误连接区域分割开来。

第五章 车牌字符的识别算法分析 5.1 字符识别现状 车牌图像字符识别是整个智能化识别系统的最后一步,也是整个系统的设计目的所在;
因此,研究人员很早就注意对这一步的研究。到目前为止,他们已经提出了各式各样的识别方法和算法。但总的来说可以分成以下几类:①基于模板匹配字符识别方法。这种车牌图像的工作过程是,首先对待识别字符进行二值化处理并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。它的缺点是,任何有关光照、字符清晰度和大小的变化都会影响模板的匹配结果,在实际应用中为了提高正确率往往必须使用大的模板或者多个模板进行匹配,当然处理的时间则随着模板的增大和增多而增加。②基于神经网络的字符识别方法。它又可以分为有特征提取和没有特征提取。③基于小波包特征提取的车牌字符识别。这种方法的工作过程是,针对车牌字符识别的特点,提出了基于二维小波包的车牌字符特征提取方法,将车牌字符图像进行二维小波包变换,搜索最佳小波包基,提出了寻找最佳小波包基的准则,最后应用神经网络进行识别。④基于模板匹配和神经网络的车牌字符识别方法。

5.2 归一化 归一化图像就是要把原来各不相同的字符统一到同一尺寸。因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高。具体算法如下:先得到原来字符的高度和宽度,与系统要求的作比较,得出要变换的系数,然后根据得到的系数按照插值的方法映射到原图像中。

归一化仿真图如图5.1所示:
图5.1 归一化 5.3 神经网络对车牌字符的识别 5.3.1神经网络概述 人工神经网络是近几年开始应用于图像模式识别的一种重要的工具和方法,可以理解为一个由大量类似于生物神经系统的简单计算处理单元构成的非线形动力学系统。人工神经网络在不同程度和层次上对人脑神经系统的信息处理、存储和检索等功能进行了模仿,并且具备学习、记忆和计算的能力。由于人工神经网络表现出类似于人脑的学习分类能力以及并行、分布式处理方式,使得图像在模式识别上的处理方式有了质的飞跃。另外,由于其具有自学能力,在进行图像识别时,可以先把许多不同的图像样板和对应的识别结果输入到人工神经网络,这样网络就会在训练中通过自学功能慢慢学会识别类似的图像。这种自学功能对于预测有着特别重要的意义。总而言之,人工神经网络在模式识别问题上,相比其他传统方法的优势大致可以总结为以下三点:①要求对问题的了解少;
②可对特征空间进行较为复杂的划分;
③适合于用高速并行处理系统来实现。但是,人工神经网络同其他理论一样也不是完美的,也有其固有的弱点,比如需要更多的训练数据,在非并行处理系统中的模拟运行速度很慢,以及无法获取特征空间中的决策面等。

目前,虽然对人工神经网络的研究日臻深入并且已经做了大量的工作,但是时至今日仍未有任何突破性进展,甚至连一个可以称为“理论”的理论基础都没有建立。由于人工神经网络自身理论不够完善,加之人工神经网络对图像模式识别的研究也才刚刚起步,这就使得人工神经网络在对包括模式识别在内的图像理解与计算机视觉等领域的研究有着广阔的探索空间。人工神经网络根据结构可以分为前向传播网络、反向传播网络、自组织竞争网络、交互传播网络和随机网络等多咱。目前常用的神经网络模型已有数十种之多,如BP网络、Hopfield网络、ART网络和Kohonen网络等均为其中比较典型的模型。

5.4.2神经网络的工作过程 一个人工神经网络是由为数众多的相互连接的处理单元(Processing Element,PE)构成的,具体到每一个PE,其动作一般比较简单(基本上是对输入向量与权向量的乘积求和),各个PE从前向的几个PE接受输入信号,并在产生一个标量后将其输出给后向PE(如图6-1所示):到其他PE在设计人工神经网络时,网络的结构设计是其中主要问题。通常是将PE分成不同的层,各层PE数量也要视情况而定。在流程E,有的神经网络当前层的每个PE从前一层的所有PE获取输入信号,输出信号也传送给下一层的所有PE:也有一些神经网络允许与层之间PE的相且通信,反馈结构共至还允许位丁.前一层的PE接受后一层PE的输出。

图5.2 人工神经网络处理单元概图 对于网络中的这些层,只有最终的那一层才是输出层,其余的层均为隐藏层。对于各个层的每一个PE,其处理过程均可通过一个点积函数予以描述:
(5.1)
式中O为输出,X为输入向量,W为该处理单元的权重向量(weight Vector)。在训练过程中,己知类别的特征向量是随机地呈现给神经网络,并且通过遵循某种固定法则的权重向量使每一次的输入都能得到细微的调整,从而使输出向正确的方向靠拢。随着训练过程的层层深入,网络的整体性能在权重向量的指导下也逐步得到改善,最终使网络中的所有PE均收敛到某个合适的权重集。

在模式识别应用中,神经网络的输入是未知对象的特征向量。这个特征向量将呈现到第一层的所有PE。通常特征向量会增加一维,其值恒为1。这为求和提供了一个附加的权重,在函数g中起到偏移量的作用。输入的信息绎小同层传播,使输出层上产生相应的输出向量,根据输出的结果将该对象划分到某一类中。因此,神经网络接受特征向量作为输入,产生一个输出向标志着该未知对象属于不同类别的可能性。

当PE的定义和网络连接结构确定后,PE之间互连的权重系数决定了网络的行为。在训练过程中权重系数不断得到调整,但当训练结束进入实际应用时,权重系数保持不变。目前,绝大多数的神经网络是用数字化仿真来实现的,人们使用软件或数字信号处理芯片来模拟并行计算。这种实现方法的步骤为:为所选的网络结构对模拟软件进行配置,然后训练该网络。而仿真器的脱模则将嵌入最终的应用系统中交付使用。在任何一个包含一组互联PE的数字化模拟进程中,存在处理顺序问题,也就是单元以怎样的处理次序更新的问题。更新规则也是神经网络设计的一个重要因素。

5.5 汉字部分字符识别 5.5.1 支持矢量机基本原理 SVM是统计学习珲论中最年轻的部分,丰要用于解决有限样本情况下的模式识别问题。如果用内积K(x,X’)代替最优分类面中的点积,就相当于把原特征空间变换到了某一新的特征空间,此时优化函数变为:
(5.2) 相应的判别函数也应变为:
(5.3) 算法的其他条件均不变。这就是支持向量机。支持向量机的基本思想可以概括为:首先通过非线性变换将输入空间变换到一个高维空间,然后在这个新空间中求取最优线性分类面,而这种非线性变换是通过定义适当的内积函数实现的。统计学习理论指出,根据HilbertSchmidt原理,只要一种运算满足Mercer条件,就可以作为这里的内积使用。常用的核函数有以下几种:
① 线性内积函数 (5.4) ②多项式内积函数 (5.5)
③径向内积函数 (5.6)
④ 二层神经网络内积函数 (5.7)
5.5.2 基于SVM的车牌汉字识别 SVM分类器是二分类器,因此本文采用多个二分类器组合的one.against-the—others算法,将多类识别问题转化为二类识别问题来解决。每个分类器只将一个汉字与其余汉字区分开,训练样本中该汉字对应的Y值为+l,其余样本对位的Y值为一l。首先确定使用的核函数K,将训练样本值带入优化函数式(5.2)中,求出最优解及其非零值对应的支持向量,并根据任一训练样本值求出阂值b。并将求出的所有参数值带入式(5.3)即得到判别函数f(x)。依此类推,分别求出所有汉字对应的判别函数。进行字符识别时将输入信号送到每一个分类器,然后循环检查所有的分类器输出。若某一分类器的输出值为“l”,则认为输入的车牌字符为该类对应的汉字字符;
否则,若所有输出值均不为“l”,则拒绝识别该字符。由于识别存在一定的误差,可能同时有多个分类器的输出值为“1”,此时则判断为第一个输出值为“l”的字符类。

5.6 车牌数字字母部分字符识别 车牌数字字母部分字符识别模块是由字符特征提取模块、3一层B-P神经网络 模块和拓扑分析模块所组成。它的结构图如图5.2所示:
图5.3 车牌字符识别模块 其中特征提取模块的主要功能就是对切割下来的字符进行特征提取,为下一步真正的识别工作做准备。3层B-P神经网络模块的主要功能就是进行真正的字符识别。拓扑分析模块的主要功能就是对3层pP神经网络模块也许不能正确地分辨的字符,如13和8,T和7,Q、0、D和0进行重新识别。

车牌字符识别仿真图像如图5.3所示:
图 5.4 车牌字符识别仿真图 第六章 总结与展望 6.1 总结 本文主要研究了字符图像的分割,字符分割是正确识别字符的重要步骤。使用单一的方法未必获得最佳效果,最好的办法就是将几种切割方法综合使用,先用投影法对字符进行粗略切割,然后使用联通域方法精确分割,充分利用具体应用场合的先验知识可以极大的提高字符分割的准确度。在汽车车牌识别的整个过程中,我查找了很多资料,综合了各方面的信息。车牌实现的每一步都有许多的方法,各种方法都有其优劣,但是对于具体的图像处理,并不是每一种理论在实践中都可以实现,即使实现了也很难说哪一种方法最合适,还得在具体的实验中比较选择。第二点在程序调试的过程中要耐心的检查每一个错误。测试结果表明,本设计有以下几条优点: ①.充分利用MATLAB中已有的函数库,使整个程序设计简单易行。

②. 使用了MATLAB的自定义函数功能,使程序设计更简洁。

不过也有许多的缺点:
①. 程序的局限性:只能针对图像中一辆汽车的牌照进行识别;
对于图像内的元素较复杂的照片可能无法进行识别。

②. 神经网络的训练要花费30秒以上的训练时间才能进行下一步的字符识别,效率太慢。

③. 程序可能会受软件环境的影响识别准确性。

车牌识别程序设计能够得以顺利完成。在很大程度上得利于MATLAB这套软件, MATLAB功能强大,它包括数值计算和符号计算,并且计算结果和编程可视化。这为编程调试创造了一个便利的环境。作为图像处理最适用的工具之一,其突出的特点是它包含一个图像处理工具包,这个工具包由一系列支持图像处理操作的函数组成。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT 变换等) 、图像分析和统计、二值图像操作等。在图像的显示方面,MATLAB 提供了图像文件读入函数imread ( ) ,用来读取如: bmp 、tif 、jpg、pcx、tiff 、jpeg、hdf 、xwd 等格式图像文件;
图像写出函数imwrite () ,还有图像显示函数image ( ) 、imshow() 等等。这些,都使编程效率大为提高。

本文的主要特点和性能指标总结如下:
①. 对于复杂场景、灰度低质量差的图像识别能力好。经过对多幅大场景、夜晚等质量较差的图像进行实验,表明本系统能够准确地定位字符区域,速度快,精确高。

②. 对固体场景的图像可以去除背景提高识别速度和精度。使用去除背景的方法可以极大地减少需要处理的数据量,加快了识别速度。

③. 字符区域定位准确,误检率、漏检率低。

6.2 展望 论文研究的课题汽车拍照识别系统是一个实用性很强的智能识别系统,但由于实际的环境和学术上的知识有限,让整个系统还有很多有待改善的地方。

汽车识别系统从技术角度来讲,运用以计算机、通讯和控制技术,即3C技术为代表的现代科技对交通系统进行控制和管理。涉及的技术领域很广,包括系统工程、信号处理、电子工程、机械工程、计算机科学以及运筹学等领域。牌照识别在其中占有重要地位,可以广泛应用于高速公路监控、电子警察、停车管理等系统。这对于我国交通状况智能化有很大现实意义。由于存在巨大的市场潜力,很多公司对牌照识别项目投入了大量的资金。但是由于牌照识别的技术含量高、受客观条件影响大等因素,并未见有较为通用的牌照识别系统由国内的公司所开发。大部分的牌照识别系统属于实验室产品,未经过严格的测试和市场检验。从目前的技术发展角度来看,开发一套通用的、可适应于各种环境且真正具有应用能力的牌照识别系统仍是较为困难的,但是开发一种特定条件下的牌照识别系统是完全可行的,并且具有很大的应用价值。

总而言之,车牌智能识别系统是一个实用性很强大型系统;
要想使该系统真正地应用到实际之中,还需要不断的完善,不断的创新! 参考文献 1. 史其信,陆化普.智能交通系统发展趋势与我国的发展战略[J],97北京智能交通系统发展 趋势国际学术研讨会论文集, 1997,1-8 . 2. 段里仁.智能交通系统在我国道路交通管理中的应用[J],97北京智能交通系统发展趋势 国际学术研讨会论文集, 1997,15-22 . 3. 章毓晋.图像工程上册:图像处理和分析[M].北京:清华大学出版社,1999. 231-234 4. 吴翊.数理统计[M].长沙:国防科技大学出版社,1995,135-140. 5. 赵楠楠,欧阳鑫玉,吴庆洪.线性回归与Hough变换在图像倾斜角度中的应用[J].鞍山科 技大学学报,2003.12,30-34. 8. 韩广琳。[学位论文],南开大学 2006年 6. Richard E.woods 数字图像处理[M](matlab版):电子工业出版社,2005,285-320. 7. 张毓晋. 图像工程(上册)图像处理[M](第二版):清华大学出版社,2006.3 8. 赵茜. 天津大学硕士学位论文[D],2006.6 致谢 首先,我要感谢我的指导老师XX老师!XX老师是XX大学电工学院的一名教授,为人谦和,具有严谨的治学态度,在论文的创作中一直给与我无私的帮助和关心。在此表达我对XX老师的崇高的敬意,感谢老师从立题到论文完成整个过程对我的悉心指导和全力支持。我很庆幸自己能够遇到宁媛老师这样一位有耐心的老师,并能在她的直接指导下完成这次论文。感谢宁媛老师的耐心指导,并教给我一些很有意义的方法,尤其是在整个论文研究的思想和思维方式宁媛老师为提供了准确的指引和参照。

同时,感谢我的同学XX等对我撰写论文工作的指导和帮助。同时感谢我们同一组的同学,在这个研究项目的仿真使我获益匪浅。

最后,感谢我的父母,今天的成果来自于他们的默默支持。感谢所有帮助和支持过我的老师、同学、亲人和朋友。

附录 主程序:
function [d]=main(jpg) I=imread('car贵1.jpg'); figure(1),imshow(I);title('原图'); I1=rgb2gray(I); figure(2),subplot(1,2,1),imshow(I1);title('灰度图'); figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图'); I2=edge(I1,'robert',0.08,'both'); figure(3),imshow(I2);title('robert算子边缘检测') se=[1;1;1]; I3=imerode(I2,se); figure(4),imshow(I3);title('腐蚀后图像'); se=strel('rectangle',[40,40]); I4=imclose(I3,se); figure(5),imshow(I4);title('平滑图像的轮廓'); I5=bwareaopen(I4,2000); figure(6),imshow(I5);title('从对象中移除小对象'); [y,x,z]=size(I5); myI=double(I5); %begin横向扫描 tic Blue_y=zeros(y,1); for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为蓝色 %则Blue_y的相应行的元素white_y(i,1)值加1 Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计 end end end [temp MaxY]=max(Blue_y);%temp为向量white_y的元素中的最大值,MaxY为该值的索引( 在向量中的位置)
PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2<y)) PY2=PY2+1; end IY=I(PY1:PY2,:,:); %IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分 %end横向扫描 %begin纵向扫描 Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 for j=1:x for i=PY1:PY2 if(myI(i,j,1)==1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1<x)) PX1=PX1+1; end PX2=x; while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end %end纵向扫描 PX1=PX1-2;%对车牌区域的校正 PX2=PX2+2; dw=I(PY1:PY2,:,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域'); figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像') imwrite(dw,'dw.jpg'); [filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像'); jpg=strcat(filepath,filename); a=imread('dw.jpg'); b=rgb2gray(a); imwrite(b,'1.车牌灰度图像.jpg'); figure(8);subplot(3,2,1),imshow(b),title('1.车牌灰度图像') g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值 [m,n]=size(b); d=(double(b)>=T); % d:二值图像 imwrite(d,'2.车牌二值图像.jpg'); figure(8);subplot(3,2,2),imshow(d),title('2.车牌二值图像') figure(8),subplot(3,2,3),imshow(d),title('3.均值滤波前') % 滤波 h=fspecial('average',3); d=im2bw(round(filter2(h,d))); imwrite(d,'4.均值滤波后.jpg'); figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后') % 某些图像进行操作 % 膨胀或腐蚀 % se=strel('square',3); % 使用一个3X3的正方形结果元素对象对创建的图像膨胀 % 'line'/'diamond'/'ball'... se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵 [m,n]=size(d); if bwarea(d)/m/n>=0.365 d=imerode(d,se); elseif bwarea(d)/m/n<=0.235 d=imdilate(d,se); end imwrite(d,'5.膨胀或腐蚀处理后.jpg'); figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后') % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割 d=qiege(d); [m,n]=size(d); figure,subplot(2,1,1),imshow(d),title(n) k1=1;k2=1;s=sum(d);j=1; while j~=n while s(j)==0 j=j+1; end k1=j; while s(j)~=0 && j<=n-1 j=j+1; end k2=j-1; if k2-k1>=round(n/6.5) [val,num]=min(sum(d(:,[k1+5:k2-5]))); d(:,k1+num+5)=0; % 分割 end end % 再切割 d=qiege(d); % 切割出 7 个字符 y1=10;y2=0.25;flag=0;word1=[]; while flag==0 [m,n]=size(d); left=1;wide=0; while sum(d(:,wide+1))~=0 wide=wide+1; end if wide<y1 % 认为是左侧干扰 d(:,[1:wide])=0; d=qiege(d); else temp=qiege(imcrop(d,[1 1 wide m])); [m,n]=size(temp); all=sum(sum(temp)); two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:))); if two_thirds/all>y2 flag=1;word1=temp; % WORD 1 end d(:,[1:wide])=0;d=qiege(d); end end % 分割出第二个字符 [word2,d]=getword(d); % 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符 [word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d); figure(9),imshow(word1),title('1'); figure(10),imshow(word2),title('2'); figure(11),imshow(word3),title('3'); figure(12),imshow(word4),title('4'); figure(13),imshow(word5),title('5'); figure(14),imshow(word6),title('6'); figure(15),imshow(word7),title('7'); [m,n]=size(word1); % 商用系统程序中归一化大小为 40*20,此处演示 word1=imresize(word1,[40 20]); word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); figure(16), subplot(3,7,8),imshow(word1),title('1'); subplot(3,7,9),imshow(word2),title('2'); subplot(3,7,10),imshow(word3),title('3'); subplot(3,7,11),imshow(word4),title('4'); subplot(3,7,12),imshow(word5),title('5'); subplot(3,7,13),imshow(word6),title('6'); subplot(3,7,14),imshow(word7),title('7'); imwrite(word1,'1.jpg'); imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg'); 切割子程序1:
%子程序:(getword子程序)
function [word,result]=getword(d) word=[];flag=0;y1=8;y2=0.5; while flag==0 [m,n]=size(d); wide=0; while sum(d(:,wide+1))~=0 && wide<=n-2 wide=wide+1; end temp=qiege(imcrop(d,[1 1 wide m])); [m1,n1]=size(temp); if wide<y1 && n1/m1>y2 d(:,[1:wide])=0; if sum(sum(d))~=0 d=qiege(d); % 切割出最小范围 else word=[];flag=1; end else word=qiege(imcrop(d,[1 1 wide m])); d(:,[1:wide])=0; if sum(sum(d))~=0; d=qiege(d);flag=1; else d=[]; end end end result 切割子程序2:
% (qiege子程序)
function e=qiege(d) [m,n]=size(d); top=1;bottom=m;left=1;right=n; % init while sum(d(top,:))==0 && top<=m top=top+1; end while sum(d(bottom,:))==0 && bottom>1 bottom=bottom-1; end while sum(d(:,left))==0 && left<n left=left+1; end while sum(d(:,right))==0 && right>=1 right=right-1; end dd=right-left; hh=bottom-top; e=imcrop(d,[left top dd hh

推荐访问:汽车牌照识别系统的设计 基于深度识别汽车牌照 车牌图像的分割与识别 车牌字符识别算法 车牌字符分割系统设计与实现 基于阈值分割的车牌定位识别 汽车牌照螺丝怎么卸 汽车牌照的自动定位和识别 数字图像课程设计汽车牌照识别 字符分割的方法
上一篇:乡村振兴思考体会交流发言
下一篇:电大专科《电子商务法律与法规》论述题题库及答案(试卷号:2185)

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有