基于MATLAB的车牌识别系统毕业论文.doc
摘要汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。关键词:MATLAB、图像预处理、车牌定位、字符分割ABSTRACTVehicle license plate recognition system is one important of the modern intelligent traffic management. License plate recognition system to make more intelligent vehicle management, digital, Effective traffic management to enhance the convenience and effectiveness. License plate recognition system includes image acquisition, image preprocessing, license plate localization, character segmentation, character recognition and other five core parts. In this paper, preprocessing, license plate localization, character segmentation method for the realization of three modules.This is the image preprocessing module and the use of the image grayscale Roberts edge detection operator steps. License plate location and segmentation using mathematical morphology method is used to determine the license plate location,Re-use license plate color segmentation method of color information to complete the license plate area segmentation. Character segmentation approach is based on the license plate after the binary part of the vertical projection, Then scan in the vertical projection, thus completing the character segmentation. This article is described for the core part and use the MATLAB software environment, the simulation experiments for character segmentation.Keywords: MATLAB software, image preprocessing, license plate localization, character segmentation .31 / 36目 录1. 绪论11.1 本课题的研究背景11.2 本课题的研究目的与意义21.3 国外发展状况31.4 主要应用领域51.5 设计原理62. MATLAB简介72.1 MATLAB发展历史72.2 MATLAB的语言特点73工作流程93.1 系统框架结构和工作流程94各模块的实现114.1设计方案114.2图像预处理114.2.1图像灰度化114.2.2图像的边缘检测124.3车牌定位和分割144.3.1车牌的定位154.3.2车牌的分割164.3.3对定位后的彩色车牌的进一步处理174.4字符的分割和归一化处理17 4.4.1字符的分割18 4.4.2字符的归一化处理194.5 字符的识别195实验结果和分析226实验总结24致25参考文献26程序附录27第一章 绪论1.1 本课题的研究背景现代社会已进入信息时代,随着计算机技术、通信技术和计算机网络技术的发展,自动化信息处理能力和水平不断提高,作为现代社会主要交通工具之一的汽车在人们的生产生活的各个领域得到大量使用,对他的信息进行自动采集和管理具有十分重要的意义,成为信息处理技术的一项重要研究课题。此外,智能交通系统,简称ITS(IntelligentTrafficSystem)已成为现代社会道路交通发展趋势。只能交通系统,是在当代科学技术高速发展的背景下产生的。其目标在于将现金的计算机处理技术、数据通信技术、自动控制技术等综合应用于地面交通管理体系,从而建立起一种高效、准确、实时的交通管理系统。公路交通基础建设的不断发展和车辆管理体制的不断完善,为以视觉监控为基础的智能交通系统的实际应用打下了良好基础。在智能交通系统中,车牌自动识别系统是一个非常重要的发展方向。车牌自动识别系统简称ALPRS或LPRS,该系统可以对车辆进行自动登记、验证、监视、报警。系统应用场合包括:高速公路,桥梁,隧道等收费管理系统。城市交通车辆管理,智能小区、智能停车场管理,车牌验证,车流统计等。同时,汽车牌照自动识别的基本方法还可以应用到其他检测和识别领域,所以车牌自动识别问题已成为现代交通工程领域中研究的重点和热点问题之一。车牌识别系统是一项科技含量很高的多种技术结合的产品,主要有计算机视觉、数字图像处理、数字视频处理、模式识别等技术组成。也是智能交通系统的核心技术,产生于60年代。在80年代,由于城市交通问题日益严重,美国和欧洲许多国家投入了大量的人力和物力,建立了自动化高速公路网,安装了摄像、雷达探测系统和光纤网络,简历智能交通系统。在美国、欧洲、日本等发达国家的带动下,世界各国也开始简历智能交通系统。由于公路车流量日益增大、道路交通日益拥挤,车辆管理相对越来越困难,因此各个发达国家和发展中国家都在积极建设适应未来交通运输需求的智能交通系统。车牌号识别系统是基于图像处理技术的基础进行研究的。本课题图像处理分为以下几方面:1.图像数字化其目的是将模拟形式的图像通过数字化设备变为数字计算机可用的离散的图像数据。2.图像变换为了达到某种目的而对图像使用一种数学技巧,经过变换后的图像更为方便、容易地处理和操作。3.图像增强图像增强的主要目标是改善图像的质量。采用某些处理技术来突出图像中的某些信息,削弱或消除某些无关信息,从而有目的地强调图像的整体或局部特征,让观察者能看到更加直接、清晰的分析和处理图像。直方图修正、灰度变换、强化图像轮廓等都是常用的手段。4.图像分割在图像研究和应用中,人们往往仅对图像的某些部分感兴趣。它们一般对应图像中待定的、具有独特性质的区域。图像分割就是把图像中需要的那一个部分分割出来。5.图像分析图像分析的容分为特征提取、图像分割、符号描述、和图像的检测与匹配。1.2 本课题的研究目的与意义车牌识别系统的主要任务是分析和处理摄取到的复杂背景下的车辆图像,定位分割牌照,最后自动识别汽车牌照上的字符,车牌识别是利用车辆牌照的唯一性来识别和统计车辆,它是以数字图像处理、模式识别、计算机视觉等技术为基础的智能识别系统。在现代化交通发展中车牌识别系统是制约交通系统智能化、现代化的重要因素,车牌识别系统应该能够从一幅图像中自动提取车辆图像,自动分割牌照图像,对字符进行正确识别,从而降低交通管理工作的复杂度。车牌识别系统将获取的车辆图像进行一系列的处理后,以字符串的形式输出结果,这样不但数据量小,便于存储,操作起来也更容易,因此车牌识别系统的便捷性是人工车牌识别所不能比拟的,它蕴藏着很大的经济价值和发展空间,对车牌识别技术的研究是非常有的意义的。在车牌识别系统中最为重要的两个技术是车牌定位和车牌字符识别,这两个技术的好坏直接影响到整个车牌识别系统的实时性和准确性。国外己有不少学者对车牌定位技术做了大量的研究,但在实际的应用中还没有一个有效可行的方法,如由于车辆抖动造成车牌图像的歪斜、由于污迹和磨损造成车牌字符的模糊、由于光照不均造成车牌图像的模糊等都会或多或少影响到车牌定位的准确度。针对以上实际情况,很多学者开始在鉴于车牌图像本身特征的基础上研究车牌定位技术,并先后提出了一些有效的定位方法,以减小种种主、客观因素对车牌定位准确度的影响。然而智能交通的不断发展使得对车牌定位系统有了更高的要求,主要表现在系统的实时性和准确性。 车牌字符识别的实质是对车牌上的汉字、字母和数字进行快速准确的识别并以字符串的形式输出识别结果,字符识别技术是整个车牌识别系统的关键。车牌识别系统与其它图像识别系统相比较而言要复杂的多,在字符识别中,汉字识别是最难也是最关键的部分,很多国外较为成熟的车牌识别系统无法进入中国市场的原因就在于无法有效的识别汉字。此外,由于外界环境的影响,系统必须保证能够在任何天气情况下全天不间断的正常工作。到目前为止,在众多的车牌自动识别方法中还没有一个可以达到理想的效果,因此对车牌识别技术的研究意义重大。1.3 国外的发展状况从20世纪90年代初,国外就已经开始了对汽车牌照自动识别的研究,其主要途径就是对车牌的图像进行分析,自动提取车牌信息,确定汽车牌号。在各种应用中,有使用模糊数学理论也有用神经元网络的算法来识别车牌中的字符,但由于外界环境光线变化、光路中有灰尘、季节环境变化与车牌本身比较模糊等条件的影响,给车牌的识别带来较大的困难。国外的相关研究有:(1)J Barroso提出的基于扫描行高频分析的方法; (2) I.T. Lancaster提出的类字符分析方法等。为了解决图像恶化的问题,目前国外采用主动红外照明摄像或使用特殊的传感器来提高图像的质量,继而提高识别率,但系统的投资成本过大,不适合普遍的推广。 车牌识别系统中的两个关键子系统是车牌定位系统和车牌字符识别系统。 关于车牌定位系统的研究,国外学者已经作了大量的工作,但实际效果并不是很理想,比如车牌图像的倾斜、车牌表面的污秽和磨损、光线的干扰等都是影响定位准确度的潜在因素。为此,近年来不少学者针对车牌本身的特点,车辆拍摄的不良现象与背景的复杂状况,先后提出了许多有针对性的定位方法,使车牌定位在技术和方法上都有了很大的改善.然而现代化交通系统不断提高的快节奏,将对车牌定位的准确率和实时性提出更高的要求。因而进一步加深车牌定位的研究是非常必要的。 车牌字符识别是在车牌准确定位的基础上,对车牌上的汉字、字母、数字进行有效确认的过程,其中汉字识别是一个难点,许多国外的LPR系统也往往是因为汉字难以识别而无法打入中国市场,因而探寻好的方法解决字符的识别也是至关重要的。目前己有的方法很多,但其效果与实际的要求相差很远,难以适应现代化交通系统高速度、快节奏的要求。因而对字符识别的进一步研究也同样具有紧迫性和必要性。 从实用产品来看,如以色列的Hi-Tech公司研制的多种See/Car system,适应于几个不同国家的车牌识别,就针对中国格式车牌的See/Car syste而言,它不能识别汉字,且识别率有待提高。新加坡Optasia公司的VLPRS产品,适合于新加坡的车牌,另外日本、加拿大、德国、意大利、英国等西方发达国家都有适合于本国车牌的识别系统。 我国的实际情况有所不同,国外的实际拍摄条件比较理想,车牌比较规统一,而我国车牌规不够,不同汽车类型有不同的规格、大小和颜色,所以车牌的颜色多,且位数不统一,对处理造成了一定的困难。在待处理的车牌图像中就有小功率汽车使用的蓝底白字牌照,大功率汽车所用的黄底黑字牌照,军车和警车的白底黑字,红字牌照,还有国外驻华机构的黑底白字牌照等。就位数而言,有七位数字的,有武警车九位数字的,有军车、前两位字符上下排列的等,所以也造成了处理的难度。 国做得较好的产品主要是中科院自动化研究所汉王公司的“汉王眼”,此外国的亚洲视觉科技、市吉通电子、中智交通电子系统等都有自己的产品,另外交通大学的图像处理与识别研究室、交通大学的计算机科学与工程系、清华大学、大学等都做过类似的研究。通常处理时为了提高系统的识别率,都采用了一些硬件的探测器和其他的辅助设备如红外照明等,其中“汉王眼”就 是采用主动红外照明和光学滤波器来减弱可见光的不可控制影响,减少恶劣气候和汽车大小灯光的影响,另外还要求在高速公路管理窗口到“汉王眼”识别点埋设两条线路管 道,一条管道铺设220伏50赫兹1安培的交流供电线路:另一条管道铺设触发信号线路和汉王眼与管理计算机的通讯线路,投资巨大,不适合于大面积的推广。 另外,还有两种专门的技术被用于车牌的识别中,条形码识别技术和无线射频技术。条形码识别要求预先在车身上印刷条形码,在系统的某一固定位置上安装扫描设备,通过扫描来读取条形码,以达到识别车辆的目的。无线射频技术要求在车安装标示卡,在系统某一位置安装收发器等装置,通过收发器来接受标示卡的信号,从而识别出经过的车辆。显然,这两种技术更难以推广。 从目前一些产品的性能指标可以看出,车牌识别系统的识别率和识别速度有待提高。现代交通的飞速发展以与车牌识别系统应用围的日益拓宽给车牌识别系统提出了更高的要求。因此,研究高速、准确的定位与识别算法是当前的主要任务,而图像处理技术的发展与摄像设备、计算机性能的提高都会促进车牌识别技术的发展,提高车牌识别系统的性能。1.4 主要应用领域车牌自动识别系统具有广泛的应用围,主要应用于:(1)高速公路收费、监控管理;(2)小区、停车场管理;(3)城市道路监控、违章管理;(4)车牌登录、验证;(5)车流统计、安全管理等。车牌自动识别系统应用于这些系统,可以解决通缉车辆的自动稽查问题,可以解决车流高峰期因出入口车流瓶颈造成的路桥卡口、停车场交通堵塞问题,可以解决因工作人员作弊造成的路桥卡口、高速公路、停车场应收款流失的问题,还可以以最简单的方式完成交通部门的车辆信息联网,解决数据统计自动化,模糊查询的问题。车牌自动识别系统可安装于公路收费站、停车场、十字路口等交通关卡处,其具体应用可概括为: (l)交通监控利用车牌识别系统的摄像设备,可以直接监视相应路段的交通状况,获得车辆密度、队长、排队规模等交通信息,防和观察交通事故。它还可以同雷达测速器或其他的检测器配合使用,以检测违犯限速值的车辆。当发现车辆超速时,摄像机获取该车的图像,并得到该车的牌照,然后给该车超速的警告信号。 (2)交通流控制指标参量的测量,为达到交通流控制的目标,一些交通流指标的测量相当重要。该系统能够测量和统计很多交通流指标参数,如总的服务流率,总行程时间,总的流入量流出量,车型与车流组成,日车流量,小时/分钟车流量,车流高峰时间段,平均车速,车辆密度等。这也为交通诱导系统提供必要的交通流信息。 (3)高速公路上的事故自动测报这是由于该系统能够监视道路情况和测量交通流量指标,能与时发现超速、堵车、排队、事故等交通异常现象。 (4)对养路费交纳、安全检查、运营管理实行不停车检查根据识别出的车牌从数据库中调出该车档案材料,可发现没与时交纳养路费的车辆。另外,该系系统还可发现无车牌的车辆。若同车型检测器联用,可迅速发现所挂车牌与车型不符的车辆。 (5)车辆定位由于能自动识别车牌,因而极易发现被盗车辆,以与定位出车辆在道路上的行驶位置。这为防、发现和追踪涉与车辆的犯罪,保护重要车辆(如运钞车)的安全有重大作用,从而对城市治安与交通安全有重要的保障作用。 车牌自动识别系统拥有广阔的应用前景,但若在每个街口都装配一套全新的车辆探测器的硬件系统则投资巨大,所以急需一个纯软件实行的车牌自动识别系统来最大限度的减少费用,而纯软件的设计,不仅投资小而且灵活性高,适合我国的国情。1.5 设计原理车牌识别系统的摄像头通过对经过指定区域的机动车辆进行拍照,因为照片会受到光照、拍摄位置和车辆行驶速度的影响,导致拍摄的图片不能准确的确定汽车的车牌。而车牌识别系统就通过对机动车辆的照片进行图像预处理、车牌定位、字符分割、字符识别等技术手段,从而得到清晰的机动车牌照的照片,从而提高现代智能交通的管理效率,可以说车牌识别系统对于现代智能交通至关重要。第二章 MATLAB简介2.1 MATLAB发展历史MATLAB是一门计算机编程语言,取名来源于Matrix Laboratory,本意是专门以矩阵的方式来处理计算机数据,它把数值计算和可视化环境集成到一起,非常直观,而且提供了大量的函数,使其越来越受到人们的喜爱,工具箱越来越多,应用围也越来越广泛。MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的 UMIST ,瑞典的LUND,和 SIMNON ,德国的 KEDDC )纷纷淘汰,而改以 MATLAB 为平台加以重建。在时间进入 20 世纪九十年代的时候,MATLAB 已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上 30 几个数学类科技应用软件中,MATLAB 在数值计算方面独占鳌头,而Mathematica 和 Maple 则分居符号计算软件的前两名。 Mathcad 因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。 国际学术界,MATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB 的应用。 在设计研究单位和工业部门,MATLAB 被认作进行高效研究、开发的首选软件工具。如美国 NationalInstruments 公司信号测量、分析软件 Lab VIEW ,Cadence 公司信号和通信分析设计软件 SPW 等,或者直接建筑在 MATLAB 之上,或者以 MATLAB 为主要支撑。又如 HP 公司的 VXI 硬件,TM 公司的 DSP,Gage 公司的各种硬卡、仪器等都接受 MATLAB 的支持。2.2 MATLAB的语言特点一种语言之所以能如此迅速地普与,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点。正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB的最突出的特点就是简洁。MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点:(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。 (2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。(3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。(4)语法限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。 (5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。 (6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。 (7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。 (8)功能强劲的工具箱是MATLAB的另一重大特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心部函数。其工具箱又可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以与与硬件实时交互功能。功能性工具箱能用于多种学科。而学科性工具箱是专业性比较强的,如control、toolbox、signal processing toolbox、communication toolbox等。这些工具箱都是由该领域的学术水平很高的专家编写的,所以用户无需编写自己学科围的基础程序,而直接进行高、精、尖的研究。下表列出了MATLAB的核心部分与其工具箱等产品系列的主要应用领域。第三章 工作流程3.1系统框架结构和工作流程 汽车牌照识别(LPR)系统通过引入数字摄像技术和计算机信息管理技术,采用先进的图像处理、模式识别和人工智能技术,通过对图像的采集和处理,获得更多的信息,从而达到更高的智能化管理程度。在LPR 系统产品的性能指标中,识别率和识别速度难以同时提高其中原因既包括图像处理技术不够成熟,又受到摄像设备计算机等性能的限制。因此,研究高速准确的定位与识别算法,是当前的主要任务。 汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。图像采集车牌定位字符分割字符识别输出结果触发牌照图像预处理图1.1车牌识别系统工作流程图触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以与激光触发。其中线圈触发和视频触发得到了广泛的应用。图像采集:该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行拍照并借助网络传送到汽车自动识别系统。图像预处理:该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。在外界光照不均匀,光照强度不稳定的情况下,通过摄像机采集到的车牌原始图像会模糊不清,因此需要对其进行图像增强的处理;在外界环境噪声以与电子器件自身产生的噪声干扰下,车牌图像质量会有所下降,因此需要对原图像进行去噪处理等等。以上所做的这些处理均属于图像预处理的工作。车牌定位:是指对预处理过的汽车图片进行处理,把车牌部分进行定位,把无用的部分去除,得到定位好的车牌图片。在一完整的车辆图像中,大部分区域都是背景图像,对识别工作毫无意义,我们可以将背景区域视为无用区域,并设法将其去除,即从复杂的背景图像中准确的定位并分割出车牌区域图像,从原图像中提取出需要的部分舍弃不需要的部分,以便节省系统识别时间,这也是车牌定位分割的目的与意义所在。在定位分割的过程中要保证不能把非车牌区域误判为车牌区域,也不能漏检车牌区域,否则后继的工作将无法进行。字符分割:对已经定位的车牌图片的进行字符分割,将车牌分割为7个单一的字符图片。被分离出的车牌区域图像,系统并不能直接对其进行识别,还需要将车牌上的每一个字符都独立的完整的分割出来,即从车牌区域图像中将车牌上所包含的每一个字符都切分出来,使其成为不具有任何相关性的单个字符图像,再由系统分别对每个字符进行识别,在对字符进行切分时,要注意保证每个字符的完整度。字符识别:车牌字符识别是最为关键的一步,前面对车牌图像所做的处理都是为了完成最终的识别。系统输入的是单个的字符图像,输出的却是文本格式的完整的车牌,车牌字符识别的准确率直接反映出车牌识别系统性能的好坏。输出结果:输出识别结果,并进行数据存储。对于车牌识别系统而言,以上的每一个步骤都是必不可少的,并且后一步骤均是建立在前面步骤的基础之上进行的,因此,只有确保做好每一步才能顺利完成系统最终的识别工作。一、对车辆图像进行预处理1.载入车牌图像:function d=main(jpg)filename, pathname = uigetfile('*.jpg', 'JPEG 文件(*.jpg)');if(filename = 0), return, endglobal FILENAME %定义全局变量FILENAME = pathname filename;I=imread(FILENAME);figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:2.将彩图转换为灰度图并绘制直方图:I1=rgb2gray(I);%将彩图转换为灰度图figure(2),subplot(1,2,1),imshow(I1);title('灰度图像');figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示:3. 用roberts算子进行边缘检测:I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测figure(3),imshow(I2);title('roberts 算子边缘检测图像');结果如下:4.图像实施腐蚀操作:se=1;1;1;I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像');5.平滑图像se=strel('rectangle',25,25);%构造结构元素以正方形构造一个seI4=imclose(I3,se);% 图像聚类、填充图像figure(5),imshow(I4);title('平滑图像');结果如下所示:6. 删除二值图像的小对象I5=bwareaopen(I4,2000);% 去除聚团灰度值小于2000的部分figure(6),imshow(I5);title('从对象中移除小的对象');结果如下所示 :二、车牌定位y,x,z=size(I5);%返回I5各维的尺寸,存储在x,y,z中myI=double(I5);%将I5转换成双精度tic %tic表示计时的开始,toc表示计时的结束 Blue_y=zeros(y,1);%产生一个y*1的零阵 for i=1:y for j=1:x if(myI(i,j,1)=1) %如果myI(i,j,1)即myI的图像中坐标为(i,j)的点值为1,即该点为车牌背景颜色蓝色 %则Blue_y(i,1)的值加1 Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计 end end end temp MaxY=max(Blue_y);%Y方向车牌区域确定 %temp为向量white_y的元素中的最大值,MaxY为该值的索引 PY1=MaxY; while (Blue_y(PY1,1)>=5)&&(PY1>1) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)>=5)&&(PY2<y) PY2=PY2+1; end IY=I(PY1:PY2,:,:); %x方向车牌区域确定 % X方向 % 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 PX1=PX1-1;%对车牌区域的校正 PX2=PX2+1; dw=I(PY1:PY2-8,PX1:PX2,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');%行方向车牌区域确定 figure(7),subplot(1,2,2),imshow(dw),title('定位裁剪后的车牌彩色图像');的车牌区域如下所示:三、字符分割与处理1.车牌的进一步处理对分割出的彩色车牌图像进行灰度转换、二值化、均值滤波、腐蚀膨胀以与字符分割以从车牌图像中分离出组成车牌的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌。代码如下:imwrite(dw,'彩色车牌.jpg');%将彩色车牌写入彩色车牌文件中a=imread('彩色车牌.jpg');%读取车牌文件中的数据b=rgb2gray(a);%将车牌图像转换为灰度图imwrite(b,'车牌灰度图像.jpg');%将灰度图像写入文件中 figure(8);subplot(3,2,1),imshow(b),title('车牌灰度图像')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,'均值滤波前.jpg'); subplot(3,2,2),imshow(d),title('均值滤波前')%均值滤波前% 滤波h=fspecial('average',3);%建立预定义的滤波算子,average为均值滤波,模板的尺寸为3*3d=im2bw(round(filter2(h,d);%使用指定的滤波器h对h进行d即均值滤波imwrite(d,'均值滤波后.jpg'); subplot(3,2,3),imshow(d),title('均值滤波后')% 某些图像进行操作% 膨胀或腐蚀% se=strel('square',3); % 使用一个3X3的正方形结果元素对象对创建的图像进行膨胀% 'line'/'diamond'/'ball'.se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵m,n=size(d);%返回矩阵b的尺寸信息, 并存储在m,n中if bwarea(d)/m/n>=0.365 %计算二值图像中对象的总面积与整个面积的比是否大于0.365 d=imerode(d,se);%如果大于0.365则图像进行腐蚀elseif bwarea(d)/m/n<=0.235 %计算二值图像中对象的总面积与整个面积的比是否小于0.235 d=imdilate(d,se);%如果小于则实现膨胀操作endimwrite(d,'膨胀或腐蚀处理后.jpg'); subplot(3,2,4),imshow(d),title('膨胀或腐蚀处理后');运行结果如下所示:2.字符分割在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。字符识别的算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。在此只进行了归一化处理,然后进行后期处理。% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割%首先创建子函数qiege与getword,而后调用子程序,将车牌的字符分割开并且进行归一化处理d=qiege(d);m,n=size(d); % subplot(3,2,5),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; % 分割 endend% 再切割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