当前位置:文档之家› 基于MATLAB的车牌识别系统

基于MATLAB的车牌识别系统

基于MATLAB的车牌识别系统
基于MATLAB的车牌识别系统

摘要

汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。

关键词:MATLAB、图像预处理、车牌定位、字符分割

ABSTRACT

Vehicle 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 .

焦作大学毕业设计说明书1

目录

1. 绪论 (1)

1.1 本课题的研究背景 (1)

1.2 本课题的研究目的及意义 (2)

1.3 国内外发展状况 (3)

1.4 主要应用领域 (5)

1.5 设计原理 (6)

2. MATLAB简介 (7)

2.1 MATLAB发展历史 (7)

2.2 MATLAB的语言特点 (7)

3.工作流程 (9)

3.1 系统框架结构和工作流程 (9)

4.各模块的实现 (11)

4.1设计方案 (11)

4.2图像预处理 (11)

4.2.1图像灰度化 (11)

4.2.2图像的边缘检测 (12)

4.3车牌定位和分割 (14)

4.3.1车牌的定位 (15)

4.3.2车牌的分割 (16)

4.3.3对定位后的彩色车牌的进一步处理 (17)

4.4字符的分割和归一化处理 (17)

4.4.1字符的分割 (18)

4.4.2字符的归一化处理 (19)

4.5 字符的识别 (19)

5.实验结果和分析 (22)

6.实验总结 (24)

致谢 (25)

参考文献 (26)

程序附录 (27)

第一章绪论

1.1 本课题的研究背景

现代社会已进入信息时代,随着计算机技术、通信技术和计算机网络技术的发展,自动化信息处理能力和水平不断提高,作为现代社会主要交通工具之一的汽车在人们的生产生活的各个领域得到大量使用,对他的信息进行自动采集和管理具有十分重要的意义,成为信息处理技术的一项重要研究课题。

此外,智能交通系统,简称ITS(Intelligent Traffic System)已成为现代社会道路交通发展趋势。只能交通系统,是在当代科学技术高速发展的背景下产生的。其目标在于将现金的计算机处理技术、数据通信技术、自动控制技术等综合应用于地面交通管理体系,从而建立起一种高效、准确、实时的交通管理系统。公路交通基础建设的不断发展和车辆管理体制的不断完善,为以视觉监控为基础的智能交通系统的实际应用打下了良好基础。

在智能交通系统中,车牌自动识别系统是一个非常重要的发展方向。车牌自动识别系统简称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 被认作进行高效研究、开发的首选软件工具。如美国 National Instruments 公司信号测量、分析软件 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, end

global 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]);%构造结构元素以正方形构造一个se I4=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

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

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*3

d=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);%如果小于则实现膨胀操作

end

基于MATLAB的车牌识别

liccode=char(['0':'9' 'A':'Z' '京津沪渝冀晋辽吉黑苏浙皖闽赣鲁豫鄂湘粤琼川贵云陕甘蒙新青藏桂宁港']); %建立自动识别字符代码表 l=1; [m2,n2]=size(subcol); for k=findmax-4:findmax+3 cleft=markcol5(k)-maxwidth/2; cright=markcol5(k)+maxwidth/2-2; if cleft<1 cleft=1; cright=maxwidth; end if cright>n2 cright=n2; cleft=n2-maxwidth; end SegBw1=sbw(rowtop:rowbot,cleft:cright); SegBw2 = imresize(SegBw1,[32 16]); %变换为32行*16列标准子图 if l==1 %第一位汉字识别 kmin=37; kmax=68; elseif l==2 %第二位A~Z 字母识别 kmin=11; kmax=36; elseif l>=3 & l<=5 %第三、四位0~9 A~Z字母和数字识别 kmin=1; kmax=36; else %第五~七位0~9 数字识别 kmin=1; kmax=10; end for k2=kmin:kmax fname=strcat('D:\sample\',liccode(k2),'.bmp'); SamBw2 = imread(fname,'bmp'); SubBw2 = SamBw2-SegBw2; Dmax=0; for k1=1:32 for l1=1:16 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax;

车牌识别地matlab程序

( 附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 " figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 ¥ figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 、 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界

基于MATLAB的车牌识别系统研究

上海交通大学 硕士学位论文 基于MATLAB的车牌识别系统研究 姓名:王璐 申请学位级别:硕士 专业:电工理论与新技术 指导教师:陈洪亮 20090101

基于MATLAB的车牌识别系统研究 摘 要 近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域,对国家的安全发展有很大的作用。虽然目前已有一些车牌识别系统相关产品出现,但是对其算法的研究发展从没有停止,仍有许多学者在做着进一步的研究改进。 本文首先对车牌识别系统的现状和已有的技术进行了深入的研究,在研究的基础上开发出一个基于MATLAB的车牌识别系统。确定了整体设计方案,其中软件部分包括车牌定位、车牌字符切分及车牌字符识别三个模块。车牌定位模块中提出了基于小波变换的车牌边缘提取的算法,以及车牌二次定位的算法,提高了系统在光照条件较差的情况下的定位准确率,该算法对于各种底色的车牌具有良好的适应性;车牌的二值化采用了改进的Otus算法,重新划分了其两维直方图的区域,改进后的算法大大减少了运行时间,对于各种类型的车牌都能达到较好的二值化效果;针对BP神经网络字符识别算法,采用有动量的梯度下降法训练网络,减小了神经网络学习过程的振荡趋势,使得BP网络能够较快的达到收敛,完成车牌字符的识别。对模板匹配算法和BP网络算法进行对比,证明了BP网络算法要优于模板匹配算法。 根据上述算法搭建了一个测试平台。整个测试平台的软件部分采用MATLAB的M语言编写。通过测试平台,对353幅卡口汽车照片进行车牌识别,测试系统的性能。测试结果表明,本课题设计的车牌识别系统可有效地实现车牌识别,为今后的产品化奠定了很好的技术基础。 关键词:车牌识别,小波变换,Otsu算法,模板匹配,BP网络,MATLAB I

基于matlab的车牌号码识别程序代码

基于matlab的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 分院(系)信息科学与工程专业 学生姓名学号 设计题目车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。 1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。 2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。 3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。 进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 20周:课程设计验收与答辩 指导教师(签字): 年月日学院院长(签字): 年月日 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置;

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。 基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小, 然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 clear ; close all;

matlab车牌识别程序代码

% 车牌识别程序主体 clc; close all; clear all; %========================================================== %说明: % % %=========================================================== % ==============测定算法执行的时间,开始计时================= tic %%%%%记录程序运行时间 %=====================读入图片================================ [fn,pn,fi]=uigetfile('*.jpg','选择图片'); I=imread([pn fn]); figure; imshow(I); title('原始图像');%显示原始图像 chepailujing=[pn fn] I_bai=I; [PY2,PY1,PX2,PX1]=caitu_fenge(I); % I=rgb2hsv(I); % [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色 %================分割车牌区域================================= %===============车牌区域根据面积二次修正====================== [PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1); %==============更新图片============================= Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu %==============考虑用腐蚀解决蓝色车问题============= bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像 %==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像'); %================倾斜校正====================== qingxiejiao=rando_bianhuan(bw) bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转 %============================================== bw=im2bw(bw,graythresh(bw));%figure,imshow(bw); bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw); bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');

车牌识别的matlab程序

附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算

车牌识别的matlab程序(程序-讲解-模板)

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像

for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角 x1=first_point(1)+4; %坐标值修正 x2=last_point(1)-4; y1=first_point(2)+4;

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global 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]);%构造结构元素以正方形构造一个se

基于Matlab的车牌识别实现源码

function[]=main(jpg) close all clc tic %测定算法执行的时间 [fn,pn]=uigetfile('timg1,jpg','选择图片') %读入图片 I=imread([pn,fn]); figure,imshow(I);title('原始图像'); %显示原始图像 Im1=rgb2gray(I); figure(2), subplot(1,2,1), imshow(Im1); title('灰度图'); figure(2), subplot(1,2,2), imhist(Im1); title('灰度图的直方图'); %显示图像的直方图 Tiao=imadjust(Im1,[0.19,0.78],[0,1]); %调整图片 figure(3), subplot(1,2,1), imshow(Tiao);title('增强灰度图'); figure(3), subplot(1,2,2), imhist(Tiao); title('增强灰度图的直方图'); Im2=edge(Tiao,'Roberts','both'); %使用sobel算子进行边缘检测figure(4), imshow(Im2); title('sobel算子实现边缘检测') se=[1;1;1]; Im3=imerode(Im2,se); figure(5), imshow(Im3);

se=strel('square',40);%'rectangle',[25,25]/'diamond',25/ Im4=imclose(Im3,se); figure(6), imshow(Im4); title('平滑图像的轮廓'); Im5=bwareaopen(Im4,1500); figure(7), imshow(Im5); title('移除小对象'); [y,x,z]=size(Im5); %返回Im5各维的尺寸,并存储在变量y、x、z中 Im6=double(Im5); %将Im5换成双精度数值 %开始横向扫描 tic %tic计时开始,toc结束,计算tic与toc之间程序的运行时间 Blue_y=zeros(y,1); %产生y*1的全0矩阵 for i=1:y %逐行扫描 for j=1:x if(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域, Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1, end end end [temp MaxY]=max(Blue_y);%temp为向量Blue_y的矩阵中的最大值,MaxY为该值的索引(最大值在向量中的位置) %返回包含最大元素的列,即白色区域最宽的列 %Y方向车牌区域确定 figure(8),subplot(1,2,1), plot(0:y-1,Blue_y),title('行方向白色像素点累计'),xlabel('行数'),ylabel('个数'); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2

基于Matlab的车牌识别算法

基于Matlab的车牌识别算法 摘要 车牌系统是计算机视觉和模式识别技术在智能交通领域的重要应用课题之一。车牌识别系统是以特定目标为对象的专用计算机系统,该系统主要包括三个内容:车牌定位、字符分割和字符识别。其中车牌定位的目的就是从所拍摄的汽车图像中确定车牌的位置,从而便于后续的字符分割和字符识别工作。目前常用的方法有:基于模板匹配的方法、基于特征的方法和神经网络法等。 本设计采用基于模板匹配算法和基于人工神经网络算法对车牌进行定位识别,此算法只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,。此算法分割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一致所带来的问题。但对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0)。 关键词:车牌识别系统;字符分割;车牌定位

LICENSE PLATE RECOGNITION ALGORITHM BASED ON MATLAB ABSTRACT License plate system is a computer vision and pattern recognition technology in one of the important application research topic in the field of intelligent transportation. License plate recognition system based on specific goals of a special computer system, the system mainly includes three contents: license plate locating, character segmentation and character recognition. One of the purpose of license plate location is taken from the auto locate the license plate in the image, so as to facilitate the subsequent work character segmentation and character recognition. Now commonly used methods are: based on template matching method, based on the characteristics of the method and neural network, etc. This design USES based on template matching algorithm and based on artificial neural network algorithm to locate license plate recognition, the algorithm is only for blue white license plate segmentation recognition, the algorithm can be directly applicable in principle to the black white plate,. This algorithm to segment the image pixel values and template image, thus to avoid the cut out in the process of image pixel values are not consistent. But black on white background and black text plate, yellow bottom plate, adjustments need to license plate localization algorithm, and the image inversion of (0, 1, 1, 0). Key words: license plate recognition system; Character segmentation; License plate location

基于matlab的车牌定位源程序及运行结果 (1)

I=imread('E:\毕业设计\基于matlab的车牌定位的源程\车牌识别程序 \Car1.jpg') [y,x,z]=size(I); myI=double(I); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3) <=142)&&(myI(i,j,3)>=119))) Blue_y(i,1)= Blue_y(i,1)+1; end end end [temp MaxY]=max(Blue_y); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2=10))&&((myI(i,j,3) <=65)&&(myI(i,j,3)>=40))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1PX1)) PX2=PX2-1; end PX1=PX1-2; PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc figure,imshow(I); figure,plot(Blue_y);grid

最新车牌识别系统MATLAB源代码完整解析

clc; clear all; close all; [filename, pathname, filterindex] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';... '*.*','All Files' }, '选择待处理图像', ... 'images\01.jpg'); file = fullfile(pathname, filename);%文件路径和文件名创建合成完整文件名 id = Get_Id(file);%得到file中的所有对象 Img = imread(file);%根据路径和文件名读取图片到Img [Plate, bw, Loc] = Pre_Process(Img); % 车牌区域预处理 result = Plate_Process(Plate, id); % 车牌区域二值化处理 % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割bw = Segmation(result); words = Main_Process(bw); % 主流程处理 Write_Mask(words, id); % 写出到模板库 str = Pattern_Recognition(words); % 识别 function id = Get_Id(file) % 获取图像id信息 % 输入参数: % file——图像路径 % 输出参数: % id——图像id信息 info = imfinfo(file); FS = [422227 354169 293184 235413 214202 ... 130938 490061 120297 98686 137193 ... 80558 46208 69947 58110 62115 ... 59072 52168 60457 53979 50223]; id = find(FS == info.FileSize); if isempty(id) warndlg('未建立该图像模板库,可能运行出错!', '警告'); id = 1; end function R = Cubic_Spline(P) % 三次样条插值 % 输入参数: % P——节点矩阵 % 输出参数: % R——样条节点矩阵

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。 一、设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。 二、设计步骤 总体步骤为: 车辆→图像采集→图像预处理→车牌定位

→字符分割→字符定位→输出结果 基本的步骤: a.车牌定位,定位图片中的车牌位置; b.车牌字符分割,把车牌中的字符分割出来; c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。 车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。 (1)车牌定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。 流程图: (2)车牌字符分割 : 完成车牌区域的定位后,再将车牌区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足车牌的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 导入原始图像 图像预处理增强效果图像 边缘提取 车牌定位 对图像开闭运算

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像'); I_final=bwareaopen(I_close,2000); %去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像'); %========================== 车牌分割============================= I_new=zeros(size(I_final,1),size(I_final,2)); location_of_1=[]; for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2) if I_final(i,j)==1; newlocation=[i,j]; location_of_1=[location_of_1;newlocation]; end end end mini=inf;maxi=0; for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角

基于MATLAB的车牌识别课程设计

MATLAB课程设计报告书 课题名称基于MATLAB的车牌识别课程设计 姓名 学号 学院 专业 指导教师 2016年6月21日

基于MATLAB的车牌识别课程设计 目录 一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤…………………………………………… 四. 设计结果及分析………………………………………… 五. 总结……………………………………………………… 六. 设计体会………………………………………………… 七. 参考文献…………………………………………………

一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤:

1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合

车牌识别matlab程序[1]

[, pathname] = uigetfile({'*.jpg', 'JPEG文件(*.jpg)';'*.bmp','BMP文件(*.bmp)';}); if( == 0), return, end global %声明全局变量 = [pathname ]; I=imread(); imshow(I); %显示图像I I1=rgb2gray(I);%RGB图转化为灰度图 figure,imshow(I1); w1=medfilt2(I1); figure,imshow(w1); s1=histeq(w1,256); figure,imshow(s1); t1=imadjust(s1); figure,imshow(t1); I2=edge(t1,'robert',0.15,'both'); %用ROBERT算子提取图像边缘 figure,imshow(I2); se=[1;1;1]; I3=imerode(I2,se); %弱化二进制图像I2的边缘 figure,imshow(I3);%为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(下面两句) se=strel('rectangle',[25,20]); %用来腐蚀的形状为矩形,面积20*25 I4=imclose(I3,se); figure,imshow(I4); I5=bwareaopen(I4,2000); %去除图像中面积过小的,可以肯定不是车牌的区域。 figure,imshow(I5); [y,x,z]=size(I5); %z=1。y,x分别为I5图像的高和宽 myI=double(I5) %myI=I5; tic %begin横向扫描 white_y=zeros(y,1); %white_y为y行1列的零矩阵 for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为白色 %则white_y的相应行的元素white_y(i,1)值加1 white_y(i,1)= white_y(i,1)+1; end end end [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置)

相关主题
文本预览
相关文档 最新文档