摘要
随着各省市高速公路的不断建设,基本上建成了大小规模不等的联网收费系统,在联网收费系统建设中,都面临了一个共同的问题——车辆行驶路径的识别。路径识别不仅仅涉及对每一通行车辆如何计算通行费,同时还要考虑将收入的通行费拆分给哪个收费单位的问题,通行费的拆分直接关系到各条高速公路的合法利益,是联网收费的关键。所以说解决多路径识别问题在完善高速公路联网收费系统中起着至关重要的作用。
本文介绍了多路径识别的多种算法,并着重分析了识别算法中的汽车牌照识别,根据车牌图像特点,对车牌识别算法关键环节包括数字图像预处理,车牌定位,车牌字符识别等三部分一一进行了分析研究。
本文采用直方图变换、边缘检测、二值化等方法对车牌图像进行了预处理。对车牌定位采用了一种基于灰度图像求取卷积能量极值区域的车牌定位方法。采用模板匹配法对车牌字符进行识别。并采用了MATLAB来完成算法的设计与实现。研究结果表明车牌识别率较高,适应性较强,实时性比较好。
关键词:多路径识别;车牌识别;车牌定位;模板匹配;字符识别
ABSTRACT
As expressway construction unceasingly in provinces, numbers of online charging systems was completed bascially. In the construction of online charging system, we are facing a common problem — The identification of vehicle path. Path recognition involves not only how to calculate the tolls to every vehicle, also should consider how to split the incomes to relevant charging unit. Toll split is directly related to the legitimate benifit of every expressway,and is the key to networking toll. So solving the problem of multipath recognition plays an important role in perfecting the expressway networking toll system.
This article introduces the multipath recognition algorithms, And emphatically analysed the recognition algorithm of license plate recognition. Based on image characters of license plate, we have a deeply research on the key technologies of the vehicle license plate recognition system, which include three parts: digital image pre-processing, license plate location, license plate characters recognition.
In the vehicle images pre-procession, the paper use the methods of Histogram Transformation, Edge detection, binarization. For license plate localization using a kind of calculating convolution based on gray image energy extremum region of license plate locating method.The paper use pattern matching which method has been improved to recognize the characters. And using MATLAB to complete the design and implementation of the algorithm. Research results show that the license plate recognition rate is higher, adaptability is stronger, better real-time performance.
Key Words: Multipath recognition;License plate identification; license plate location; template matching; OCR
目 录
第1章 绪论 1
1.1 研究背景和意义 1
1.2 MATLAB的概述 1
1.3 本文框架结构 4
第2章 国内外研究现状 5
2.1 国外研究现状 5
2.2 国内研究现状 6
第3章 多路径识别算法的基本理论 8
3.1 多路径识别方法的分类 8
3.1.1精确识别 8
3.1.2概率识别 9
3.2多路径识别算法的理论基础 9
3.2.1 车牌照识别的主要算法 9
3.2.2本文采用的识别算法 12
第4章 基于模板匹配的车牌识别详细设计 15
4.1图像采集 15
4.2图像预处理 15
4.3车牌定位 17
4.4倾斜校正 18
4.5字符分割 19
4.6字符识别 20
4.6.1字符识别流程概述 20
4.6.2本文字符识别流程 21
第5章 车牌识别系统在MATLAB工具下的实现 27
5.1实验环境 27
5.2平台搭建 27
5.3识别过程 28
5.4实验数据及分析 33
第6章 总结与展望 35
6.1 总结 35
6.2 展望 36
致谢 38
参考文献 39
附录 40
第1章 绪论
随着各省市高速公路的不断建设,基本上建成了大小规模不等的联网收费系统,在联网收费系统建设中,都面临了一个共同的问题——车辆行驶路径的识别。路径识别不仅仅涉及对每一通行车辆如何计算通行费,同时还要考虑将收入的通行费拆分给哪个收费单位的问题,通行费的拆分直接关系到各条高速公路的合法利益,是联网收费的关键。所以说解决多路径识别问题在完善高速公路联网收费系统中起着至关重要的作用。
1.1 研究背景和意义
随着高速公路路网规模的不断扩大,联网收费区域内的环状路结构变得更加复杂,仅河北省一片区(京津以南高速公路)联网收费区域内的已有路、在建路和未建路共有约20个最小封闭环路,如果在每个不同业主的路段设收费站,投资巨大,也会影响高速公路的效率,同时,传统的收费车道所采用的人工输入车牌号码后3位数字的方式时效性差,巨大的工作量直接影响高速公路的通行能力和服务水平。因此,高速公路上两点之间车辆行驶的多路径识别问题成为联网收费及网络费用清分模式中迫切需要解决的问题。
多路径识别主要解决高速公路通行费的合理收取以及通行费的准确拆分问题。同时由于高速公路中大型车辆倒卡、逃费现象十分猖獗,通常表现为利用目前机电系统存在的功能不完善漏洞,实现相同货车套牌倒卡具体表现为满载长途与空载短途同号牌车辆倒卡,即通过减少里程,逃避超载处罚力度。为高速公路正常收取车辆通行费造成的及大的损失,同时也带来了不良的社会影响。所以多路径识别在实现识别车辆的实际行驶路径从而进行收费拆分,同时也要解决倒卡、逃费问题。综上所述,多路径识别就需要解决以下三个问题:
(1)高速公路通行费的合理收取。
(2)通行费的准确拆分。
(3)倒卡、逃费问题。
1.2 MATLAB的概述
MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高科技计算语言和交互式环境。它具有以下特点:
1.友好的工作平台和编程环境
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
2.简单易用的程序语言
MATLAB一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
3.强大的科学计算数据处理能力
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
4.出色的图像处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
5.应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
6.使用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
7.应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。
本文设计的系统采用MATLAB搭建车辆牌照识别系统,具有非常明显的优势:
(1)可以直接使用MATLAB的Image Acquisition Toolbox、Image ProcessingToolbox以及Neural Network Toolbox作为骨架来搭建整个系统。
(2) 使用MATLAB的图形用户界面技术(GUI)编写牌照识别系统面板,可以达到与牌照定位切分程序及字符识别程序的无缝连接。
(3) 使用专业工具箱,使得研究人员不必过于关心程序的细节问题,可以将主要的精力放在算法的研究、设计方面,极大地减少了工作量,为算法的研究改进提供了先决条件。
1.3 本文框架结构
本文通过对多路径识别算法理论进行系统认真的学习和研究,查阅了大量的国内外相关的文献和资料,主要完成了围绕汽车牌照识别技术的多路径识别算法的实现。本文的主要结构如下所示:
第一章,绪论。本章首先介绍了多路径识别理论研究的背景和意义,然后综述了陈述了本文的内容安排。
第二章,国内外研究现状。本章介绍了多路径识别理论的历史、发展、国外各国发展现状及立足我国的研究发展方向。
第三章,多路径识别基本理论。本章详细阐述了多路径识别理论的基本原理。首先讲述了多路径识别理论的构成,然后围绕多路径识别算法的精确识别中汽车牌照识别技术的主要算法展开讨论,介绍了该技术应用了哪些方面的知识,是如何实现的。
第四章,基于模板匹配的车牌识别详细设计。本章是本文的重点,包括图像的采集、图像预处理、车牌定位、倾斜校正、字符分割、字符识别。
第五章,实验环境平台搭建、识别过程、实验数据及分析。
第六章,总结和展望。本章总结了本设计所完成的工作,并对其中的缺陷做出了说明,指出了所采用算法的不足指出,对下一步的工作做了展望。
第2章 国内外研究现状
多路径识别在高速公路联网收费系统中起到的关键作用,引起了大家广泛的关注和研究,下面我们将对该理论的历史和发展历程做出介绍。
2.1 国外研究现状
国外高速公路实行收费的虽然有一些,但是大部分规模不大,或者是路公司比较单一,他们的研究主要集中在电子不停车收费(ETC,即Electronic Toll Collection)系统上面,或者是更为智能的如德国研究的利用全球定位系统(GPS)的收费系统,但专门就在高速公路路径识别这方面的研究很少。
日本是一个典型的对高速公路实行收费制度的国家,其在高速公路收费防堵方面进行了不倦的探索。从2001年3月开始,ETC(电子不停车收费)技术在日本整体上投入运营。在实际应用中,ETC技术相对于传统收费技术来说有两个优势:一是更加适应于多个不同主体运营管理多条收费道路的情况;二是对非法行为、人为破坏和逃费行为有着更强的防范性。目前,日本高速公路 80%的出入口都实现了ETC化,而且越来越多的汽车安装了 ETC系统。据日本政府估计,到2007年,ETC的用户将达到1500万辆。日本最常用的ETC收费站采取3个门桥的样式,这3个门桥分别用于识别车型、识别入口和收费信息传输。关于其应用此项技术进行路径识别的研究还没有见诸报道,但这样一来就有望通过大量的ETC用户,在关键路段安装扫描器,来达到高概率智能识别车辆行驶路径的效果。
德国一直在高速公路上未建任何收费设施,对车辆收取的通行费包含在燃油费和养路费中。自2003年8月31日起,实施一项新的高速公路收费政策,即所有行驶在德国高速公路上的12吨以上的重型卡车,包括外国入境运输车辆, 都必须缴纳高速公路行驶费。所有收取的费用将用于改善德国交通基础设施,因为重型卡车将大量增加高速公路的建设和维护成本。德国实行高速公路收费没有采用传统的关卡式收费站,他们采用的是卫星定位和移动通讯技术相结合的收费系统。德国将投入的高速公路收费系统命名为“Toll Collect”,是目前世界上不设收费窗口的最先进的道路收费系统之一。它采用卫星辅助探测技术,依靠每辆行驶在高速公路上的车辆上安装的收音机大小的接收机精确计算出车辆所行驶里程。接收机含有GPS导航信号接收机和一个移动通讯终端,一旦卡车启动,接收机便会自动记录行驶里程, 并将计算出的缴费金额数据发送到监控中心。这种技术相当于已经识别出了车辆行驶路径,但其依赖于美国的 GPS定位系统,受其控制的识别精度影响,目前GPS的导航精度为10m,但不排除美国改变其导航精度的可能,使识别精度受到质疑,另外其车载接收机的价格也是一个问题。
2.2 国内研究现状
目前许多省市建设的高速公路都具有相当规模,联网收费己成大势所趋。由于路网结构的复杂性,有的里面具有环形结构,随着路网的不断完善这种环形结构将会越来越多, 而一个路网里面一般有多个路公司在管理,如何确定车辆行驶路径也就成为一个摆在眼前的问题了。
国内对这方面的专题研究不多,目前以软课题的形式开展此类研究的有江苏省苏北高速公路网和浙江省高速公路网。
江苏省以长江为界分为苏北高速公路网和苏南高速公路网,分别实现联网收费。江苏省苏北高速公路路径识别技术研究的对象即苏北高速公路网,苏北高速公路网的联网收费范围包括京沪高速沂淮江段、宁连高速淮连段、京福高速徐州东绕城段、徐宿高速公路、宁宿高速公路、宁通高速公路、广靖高速公路、连徐高速公路、宁靖盐高速公路、汾灌高速公路及江阴大桥。在研究中针对当时苏北具体路网提出了苏北高速公路联网收费的多路径判别方法及相关措施。
浙江省高速公路网对路径识别问题进行研究的时候,其高速公路路网中存在两个二义性路径的路环:一个是杭甫高速公路(沽清—大朱家)、上三高速公路全线、雨台温高速公路(宁波东—吴番枢纽)组成的路环;另一个是由沪杭、杭甫、绕城高速公路组成的路环。针对这两个二义性路径。浙江省当时采用的方法是以出口/入口隔离法为辅,通行费的拆分则是在对历史交通量和未来交通量的分析基础上,与路公司共同商讨,取得一致同意的情况下达成用节点位势法来进行多路径的路径识别,它仿照电学里面的节点位势法,确定用路段里程来表征路段阻抗,从而计算出多路径情况下各路径的行驶车辆数,进而依次在各路公司拆分通行费,对车辆的通行费按照最短路径来征收。其拆分为了适应不断变化的交通流量,省收费结算中心和路公司定期组织对二义性路径的交通流量进行统计调查,并通过实际运行一段时间后(三个月~半年),根据实际统计的流量状况和分布情况、车辆选择路径的情况以及与现用的二义性路径拆分原则的差距情况,对原来的分配方案和比例进行调整。
山东省高速公路通车里程超过3000km,预计2008年将达到4000km,高速公路通车里程为全国第一,联网收费里程已达到2144km,路网内有多家路公司。最初山东省采用最短距离法进行路径识别与通行费收入拆分。随着联网收费高速公路网规模的不断扩大,不同利益主体管辖的路段将会逐渐并入网中,路网结构日趋复杂,路径识别与通行费收入拆分问题日益突出,据估计由多路径产生的费用占路网总通行费用的3.396,每年达1000万元左右。为此山东省对山东省高速公路联网收费系统路径识别与通行费收入拆分问题进行研究认为:
要从山东省高速公路总体路网规划出发,综合考虑设备投资、受益及今后运营成本等多方面因素提出方案;
路径识别与通行费收入拆分问题主要从两个方面解决,一是收费车道业务操作层,主要是路径识别问题;二是收费管理层面,主要是通行费收入拆分问题。
车道收费业务操作要求尽可能精确识别每一车辆的行驶路径,不损害道路通行者利益,合理收取通行费。在进行路径识别时,根据具体情况对不同路段采取不同方法。根据当时道路情况,他们建议在对综合路阻之差在10%(可更多或更少)以上不同路径进行识别时,应用最短路径法;当不同路径的路阻之差在10%之内,且车流量较少,涉及的通行费较低时,可采取收费员入口指导,出口询问方式;当长度之差在10%之内,且车流量较大,多路径通行费较高时,也可以考虑在在关键点设立标识站,但标识站数量一定要控制, 尽量减少对全路网的影响;另外,在路径识别精度方面,不同路段也要有所侧重。当路网中多路径路段属于同一经营主体时,建议不对行驶路径进行精确识别。
由于目前我国联网收费还是刚刚开始,对其相关的技术研究的还不是都很深入,路径识别技术的研究在这种环境下也只是刚刚开始,在现有的“一路一公司”的情况下实行的协商法需要各路公司相互之间有良好的协调关系。高速公路多路径识别技术作为依附于高速公路联网收费的一门新技术必然会随着联网收费技术的进步而不断发展完善,特别是在当前提倡的电子不停车收费(ETC)技术不断成熟完善的情况下,对车辆行驶路径的精确识别必然会在现实和经济上都允许的前提下得以实现。
第3章 多路径识别算法的基本理论
多路径识别包含多种技术方法,下面主要介绍了多路径识别方法的主要分类,详细说明了识别方法涉及到的主要算法。
3.1 多路径识别方法的分类
目前,在高速公路路径识别的主要技术方法有:标识站法、车牌照识别法、最短路径法。从基本思路看,多路径识别技术可以分为精确识别和概率识别两类。
3.1.1精确识别
精确识别的原理是识别出路网中每一车辆的实际行驶路径,避免路网中出现行驶路径的歧义,从而解决路网中多路径问题。标识站法、车牌照识别法都属于精确识别的范畴。
要做到对车辆行驶路径的精确识别通常由两种方法:通过土建设施的手段,确保任意车辆从一个收费站(点)到另一收费站(点)间只能有唯一的行驶路径;通过标识方法采集车辆行驶路径信息,确认车辆行驶路径。第二种方法只需在产生歧义的路段设立标识站,获取车辆行驶的标识信息,就可以根据出口信息、入口信息、标识信息,识别出任意车辆的行驶路径。
1.标识站识别法
准确识别车辆的实际行驶路径,可分为停车式和不停车两种,以下提到的标识站均为“停车式标识站”。在收费车道上安装非接触式IC卡读写设备,司机通过此路段时,将IC卡(通行卡)在读写天线的规定距离内划过,自动栏杆开启、车辆通行,并记录该标识站信息。
标识站的主要缺点是车辆每次经过标识站时必须停车,导致行车速度减慢,降低了高速公路的服务水平,与联网收费的精神直接相违背,在实施时,轻易不采用。在国家政策方面,交通部交公路发 [1999]9号文件《关于认真做好公路收费站点清理整顿的通知》中规定“对通行车辆一次完成通行费收缴和票证发放工作,不准设立旨在进行内部监督验票的检查站”。显然,国家法律法规的规定对设置停车式标识站做出了限制,设置停车式标识站已不可行。
2.车牌照识别技术
随着图像识别技术的发展,也可应用“车牌照识别”技术进行多路径的识别。即高速公路入、出口以及路网内关键点设置车牌照抓拍系统,摄取通过车辆牌照。
车牌照识别方法虽然不影响行车速度,但是应用车牌照抓拍系统进行多路径的判别,投资较大且系统精度根据图像识别算法的不同效果也不同一般不能达到100%。
3.1.2概率识别
一般来说,道路使用者路径选择行为是基于道路使用效益最大化和运营成本最小化的原则之上的,即:花最少的时间、最少的费用、走最短的路、获取最大的效益。因此,运行时间最少的路径对于时间价值导向型的道路使用者来说具有更强的吸引力,用户一般采用最短路径法。
最短路径法取最短路径为行驶路径。从起点到终点存在两条或两条以上的路径,将最短路径作为车辆选择路径,此方法最为简便,投资最少。最短路径法直接将多路径车辆通行费分配给最短路径业主,因此,这种方法的精确度取决于车辆在实际的路径选择过程中选择最短路径的概率。但是在高速公路中倒卡、逃费问题严重,因此这种算法的拆分关系到将通行费拆分给哪个收费单位的问题,影响了一部分单位的收益。
所以在本次设计中主要研究了精确识别中的车牌照识别技术,分析研究图像处理得算法,用以提高车牌照识别的准确度。
3.2多路径识别算法的理论基础
在本文涉及到的多路径识别算法—车牌照识别技术中,对于一个完整的车辆牌照识别系统而言应该包括图像采集、图像预处理、车牌定位、字符切分、字符识别以及图像编码、数码传输与更新等步骤,基本可以分为硬件部分和软件部分,硬件部分主要完成车辆图像的摄取采集,软件部分主要完成对采集到的车辆图像进行车辆牌照定位、车牌字符切分与车牌字符识别等工作,这部分工作最为复杂,最后对识别结果进行数据传送和存储,将处理后的识别信息交给管理系统进行管理。整个系统的核心是软件部分的工作,能否通过牌照对车辆进行有效管理,很大程度上取决于软件部分识别车牌的准确性。
3.2.1 车牌照识别的主要算法
车牌识别的常用算法法有很多种,如结构模式识别方法、统计模式识别、人工神经网络识别等等。下面分别介绍各种方法:
1.结构模式识别
结构模式识别可能比较复杂,但都具有相当严格的规律性。换句话说,字符图像含有丰富的结构信息。可以设法提取含有这种信息的结构特征及其组字规律作为识别的依据,这就是结构模式识别。
结构模式识别是早期汉字识别研究的主要方法。其主要出发点是汉字的组成结构.从汉字的构成上讲,汉字是由笔划以及偏旁部首构成的;还可以认为汉字是由更小的结构基元构成的。由这些结构基元及其相互关系完全可以精确地对汉字加以描述,这种方法也叫句法模式识别。识别时,利用上述结构信息以及句法分析地方法进行识别,类似于一个逻辑推理器。
基于这种方法来描述字符的结构在理论上是比较恰当的,其主要优点在于对字体变化的适应性强,区分相似字的能力强;但是,在实际应用中,其所面临的问题是抗干扰能力差,因为在实际得到的文本图像中存在各种干扰,比如倾斜、断裂、粘连、污点等。这些因素直接影响到结构基元的提取。假如基元不能准确得到,后面的识别就成了无源之水。所以,在字符识别领域,纯结构模式识别方法己经逐渐衰落。
2.统计模式识别
统计决策论发展较早,理论也比较成熟.其要点是提取待识别模式的一组统计特征,然后按照一定准则所确定的决策函数进行分类判决。字符的统计模式识别是将字符点阵看作一个整体,其所用的特征是从这个整体上经过大量的统计而得到的.统计特征的特点是抗干扰能力强,匹配与分类的算法简单,易于实现.不足之处在于细分能力较弱,区分相似字的能力差一些。常见的统计模式识别方法有:
(1)投影直方图法。利用字符图像在水平及垂直方向的投影作为特征。这种方法是模式识别早期使用的方法。
(2)利用变换特征方法。对图像进行变换,变换后对图像从空间域变到频域,特征的维数大大降低。但是这些方法总的特征就是运算量太大,运算复杂度高,难以满足实时处理的要求。
(3)傅立叶描述子和Spline曲线近似。这两种方法都是针对字符图像轮廓的。傅立叶描述子是利用傅立叶函数模拟封闭的轮廓线,将傅立叶和函数的各个系数作为特征,该方法致命缺点是对于轮廓线不封闭的字符图像不适用。车牌字符本身所占象素点较少,常常会出现笔划断裂轮廓不封闭。Spline曲线是在轮廓上找到曲率大的折点,利用Spline曲线来近似相邻折点之间的轮廓线,该方法的缺点在于对旋转现象比较敏感。
(4)特征点方法。它的主要思想是利用字符点阵中一些有代表性的点作为特征来区分不同的字符。这些点包括端点、折点以及交叉点等等,获得了比较好的效果。其特点是对于内部笔划粘连的字符识别的适应性较强,直观性好,但是不易表示为矢量形式,不适合作为粗分类的特征,匹配难度大。
(5)基于微结构特征的方法。字符是由笔划组成的,笔划是由一定方向,一定位置关系和长宽比的矩形线段组成的。这些矩形则称为微结构。利用微结构及微结构之间的关系组成的特征对字符进行识别。其不足之处正好和特征点的方法相反,在内部笔划粘连时,微结构的提取会遇到困难。
统计模式识别认为图像可能包含一个或多个物体,并且每个物体属于若干事先定义的类型、范畴或模式之一。虽然模式识别可以用多种方法实现,但我们只关心用数字图像处理技术对它的实现。字符统计模式是把字符的点阵看成一个整体,通过做大量的统计得到所需要的特征。最常用的字符统计模式方法是模板匹配的字符识别方法。模板匹配的字符识别方法是通过一定准则确定决策函数,并进行分类判断的方法。模板匹配的字符识别方法是指度量输入模式与样本之间的某种相似性,取最相似者为输入模式所属类别。它根据字符的直观形象抽取特征,用相关匹配原理进行识别。这个方法不需要特征提取这个过程,字符图像直接作为特征与模板进行比较,相似度最高的模板即定为识别结果。它优点是可以并行处理,简单易行。缺点是如果进行简单的模板匹配,只能够识别同种字体、同样大小的字符,对于笔划变粗、变细、倾斜的字符适应能力比较差,特别是模板与字符笔划的匹配失误时,会有很大的误差。
3.人工神经网络识别
人工神经网络是模拟人脑思维方式的数学模型。神经网络是现代生物学研究人脑的组织成果基础上提出的,用来模拟人类大脑神经网络的结构和行为,它从微观结构和功能上对人脑进行抽象和简化。
人工神经网络方法的优点和缺点主要表现在如下的几个方面:
神经网络的优点:
1,能逼近任意线性函数
2,信息的并行分布式处理和存储
3,可以多输入多输出
4,便于用超大规模的集成电路或光学集成电路系统实现
5,具有自学习的能力;
6,具有联想存储功能;
7,具有高速寻找优化解的能力.
虽然人工神经网络有上述的优点,并且在OCR中也取得了一些成果,但是在车牌字符的识别中仍然存在很大的缺陷:
l,车牌字符象素点阵小,笔划常常出现断裂,通过学习规则,误差系数相差很小,容易出现误识;
2,神经网络在进行学习时,每次迭代的梯度值都受样本中噪声干扰,影响较大,整个系统收敛速度较慢,不适合实时识别的要求。用于字符识别最常用的神经网络是BP神经网络,所谓BP神经网络是指误差反向传播神经网络,核心方法是梯度下降法,它采用梯度搜索技术,以期使网络的实际输值与期望的均方差为最小。BP神经网络主要有两种形态:
(l)前向传播:计算网络的输出。
隐层神经元的输入为所有输入的加权之和,即
![v2-c05eacfb5baa83fb2e4af02d34dbaedd_b.jpg](https://ss.csdn.net/p?https://pic2.zhimg.com/v2-c05eacfb5baa83fb2e4af02d34dbaedd_b.jpg)
(式2.1)
隐层神经元的输出井采用S函数激发x,得
![v2-324ae31f590a8a3dd425887a4ca1b083_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-324ae31f590a8a3dd425887a4ca1b083_b.jpg)
(式2.2)
输出层神经元的输出为
![v2-4cf6d80661d38e820ea7313993f9bd62_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-4cf6d80661d38e820ea7313993f9bd62_b.jpg)
(式2.3)
误差性能指标函数为
![v2-b3b7f908530011ef1a8142039e9db36d_b.jpg](https://ss.csdn.net/p?https://pic2.zhimg.com/v2-b3b7f908530011ef1a8142039e9db36d_b.jpg)
(式2.4)
(2)反向传播:采用占学习方法,调整各层间的权值根据梯度下降法,权值学习方法如下:
输出层即隐层的连接权值W2、学习算法为
![v2-186639915ef232521b7e4f599d5aa938_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-186639915ef232521b7e4f599d5aa938_b.jpg)
(式2.5)
式中 为学习速率。
![v2-ee8929aa74c722788d2b14a2837e8453_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-ee8929aa74c722788d2b14a2837e8453_b.jpg)
BP网络有以下优点:只要能保证有足够的隐层和隐层节点,就可以逼近任意的非线性映射关系;由于其学习方法属于全局逼近算法,具有较强的泛化能力;神经网络有较强的容错性。
虽然BP神经网络有以上的优点,但因为其有收敛的速度比较慢;当按梯度下降学习法进行学习的时候很容易陷入局部的最小值;难以确定隐层和隐层节点的数目的缺点,所以在用于字符识别的过程中,还需要做大量的修改。
3.2.2本文采用的识别算法
本文采用的识别算法是基于模板匹配的车牌识别方案,模板匹配法就是将待识别字符与模板字符进行比对,从而确定字符内容。其大体步骤是:首先,制作模板并要求模板的大小必须统一。然后,对待识别字符进行图像的归一化操作,最后将字符与模板的每个像素点进行一一的对照,与所有模板比对完成之后,选取其中相似结果最高的,作为最终的识别结果。整个过程最重要的一步是模板的设计,它是后续工作的基础。模板的建立要针对字符的特征来进行,通常可以取笔画特征、几何特征还有图形的特征。模板匹配方法最大的优点是识别率很高,但是因为要逐点操作,所以效率比较低下。考虑到LRS对识别效果准确率要求比较高,此种方法比较合适,但是怎么样能提高效率,这还是一个堕待解决的问题。
算法实现总体设计方案中首先是要采集图片,而硬件设备采集到的图片要考虑其图像的存储格式。目前比较常用的图像格式有*.BMP、*.JPG、*.GIF、*.PCX等,本课题采集到的图片是*.JPG的格式。至于软件系统的选择,因为软件系统的编写大多采用VC或者MATLAB语言,本课题选用了MATLAB语言。
整个牌照识别的设计流程图如下图所示:
识别的整个流程就是:首先将采集到的汽车图像进行灰度化、灰度拉伸和滤波处理,以降低噪点、增加车牌部分的对比度。然后,通过对预处理后的图像进行小波变换分解提取图像边缘,并进行形态学处理,这时,车牌的轮廓已经非常清晰,并且可以和非车牌区域明显区分开来了,接着,根据车牌的特点进行车牌初步定位,对车牌区域和伪车牌区域进行筛选后,采用投影法进行车牌二次定位,提取出车牌图像。将提取出的车牌图像进行二值化处理,根据投影图的特点查找倾斜的角度,采用坐标变换的方法进行车牌倾斜校正,并利用其垂直投影图中字符显示出的峰群的特点进行字符切分。最后完成了整个车牌字符的识别。最后搭建了一个测试平台,将上述三个部分进行了系统化,对系统的性能进行了测试和分析。
第4章 基于模板匹配的车牌识别详细设计
本设计处理的流程包括:图像采集-图像预处理-车牌定位-倾斜校正-字符分割-字符识别六个部分。
4.1图像采集
图像采集部分所采集的图像一般是采用CCD摄像机摄取的车牌前视图或后视图,这些通过由光照检测装置控制现场的光照,位置检测装置控制摄像机的拍摄角度而得到的。
本设计中所用到图片是用数码相机拍的,模型如下图:
![v2-8c71fab4dea3cc65d838bda621de9d9d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/13fd7fd466501ceec223e1f19a6a1c23.png)
图4.1 照片模型
4.2图像预处理
图像预处理部分需要对采集到的图像进行图像加强、平滑滤波等操作,目的是突出车牌的主要特征,以便更好地提取车牌。
图像预处理一般包括以下步骤:对图像的灰度进行处理、图像平滑、图像增强、图像二值化、图像锐化、边缘检测。
![v2-ffa2dc3b42a4d042ffc10a31ba4c3b8e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/9cf53009dcb859dc47c207c2ffc16cdf.png)
图4.2 二值化的图像
![v2-a67836320c312adf60966fbc0544e975_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/37df655d34512879afff63626487db72.png)
图4.3图像边缘提取的图像
采集的车辆图像为彩色图像,应将彩色图像转化为灰度图像。由于光线不足或者反光等诸多因素,又可能造成车牌对比度较差,对接下来的纹理分析产生影响,所以有必要进行图像增强。本文对图像中特亮和特暗的地方进行灰度拉伸,有效增强图像对比度,提高车牌定位准确率。为了进一步提高定位准确率,我们通过连续的两帧图像定出车大概位置,再在车的位置上搜索车牌,这样不仅提高了准确率,还提高了整个程序的运行效率。同时为了减少图像中的孤立干扰点,保留车牌字符边缘,让车牌字符的图像灰度水平投影更有的连续性。选用 MXl的模板对灰度拉伸后的图像进行中值滤波。
4.3车牌定位
从人眼视觉的角度出发,并根据车牌的字符目标区域的特点,在灰度图像的基础上提取相应的特征。车牌定位是车牌识别系统中的关键和难点,实际图像中的噪声、复杂背景等干扰都会使定位十分困难。车牌牌照的提取是一个寻找最符合牌照特征区域的过程。从本质上讲,就是一个在参量空间寻找最优定位参量的问题。
自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。
流程图如下:
图4.4 车牌定位流程图
本文采用车牌定位方法是一种基于灰度图像,求取图像能量极值区域的车牌定位方法,刻意避开二值化中闽值的确定问题。该方法充分利用车牌纹理复杂、对比度鲜明、外型规则等特征构造车辆图像的对比度能量图,然后通过选取极值区域来定位车牌。基于求取卷积能量极值区域进行车牌定位的实验步骤基本如下:首先,为了提高定位准确率,我们通过连续的两帧图像定出车辆大概位置,再在车辆的位置上搜索车牌,这样不仅提高了准确率,还提高了整个程序的运行效率。同时减少图像中的孤立干扰点,保留车牌字符边缘,让车牌字符图像的灰度水平投影更有连续性。其次,由于车牌区域与车身相比,车牌区域的对比度特别大,灰度变化具有一定频度,所以我们先对图像的每一行相邻像素做求极值处理,再求相邻点间的差,从而减少由车身带来的误差。求极值处理公式如下:
求相邻点间的差公式如下:
(式4.2)
最后,由于车牌区域的变化频度较大,在一般情况下,车牌区域的卷积能量都是最大的,特殊情况下也是第二大。又由实验可知,对图像求卷积能量时,卷积长度越接近车牌的宽度,定位就越准确。再由先验知识可知车牌的宽度与车宽成一定的比例,所以车牌宽度可由车宽求出,因此对每帧图像求卷积能量时,卷积长度采用自适应的方法,进一步提高车牌定位的准确率。
卷积能量公式如下:
其中h(n)为长度为L的卷积核。
![v2-43b859ea9996d20869c5c5825abd02bc_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6cd56245244198db290e4c68b0a3782b.png)
图4.5 定位到的车牌图片
4.4倾斜校正
由于CCD摄像机采集车牌图像时,有时候会出现采集到的车牌图像里牌照区域是倾斜的。倾斜的牌照不利于后续的字符分割与识别,严重的还可能引起牌照内容的丢失,直接导致字符识别的失败。因此,在进行字符分割与识别之前,有必要对牌照进行倾斜校正。
目前,车牌的倾斜校正方法主要有:通过垂直和水平边缘检测相结合的方法;进行水平边缘检测,并进行垂直投影的方法;Hough变换法;求得车牌上字符连通域的中心点,然后拟成直线的方法;求取车牌字符区域的极小特征点和极大特征点的方法;.通过模板匹配的方法。其中Hough变换的方法比较常用。Hough变换运用两个坐标之间的变换来进行检测。平面内的有规则曲线和直线,将原始图像中直线和曲线上的点,都集中到变换空间上,形成峰点。这样就把原始图像中的曲线或直线的检测问题,转化为寻找变换空间的峰值问题。Hough变换只能对己知形状参数的曲线方程如二次曲线、直线来进行描述,不能对未知曲线来进行检测,这是此变换的缺点。但是变换的最大优点是抗干扰性强。只要检测出车牌的两条平行直线即可,符合变换的要求。
![v2-43b859ea9996d20869c5c5825abd02bc_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6cd56245244198db290e4c68b0a3782b.png)
图4.6 校正前的图片
![v2-97a3f7c86d9f9878586719d0d21df3b9_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/117f45bb2de30501b1e00830df2a6b75.png)
图4.7 校正后的图片
4.5字符分割
字符分割即是对获得的牌照分离出单个字符(包括汉字、字母和数字等),以便于字符识别。
字符分割的算法有很多,通常是根据处理对象的不同有许多相应的方法。为了实现更好的分割,有关的总体知识和先验信息是很有用的,根据包含在图像中的信息,可以制定相应的判决准则和控制策略,使其完成自动分割。
传统的字符分割算法可以归纳为以下三类:直接分割法、基于识别基础上的分割法和自适应分割线聚类法。直接分割法简单,但它的局限是分割点的确定需要较高的准确性;基于识别结果的分割是把识别结果和分割结合起来,但是需要高准确的识别结果。它根据分割和识别结果的耦合程度又有不同的划分;自适应分割线聚类法是一个分类器,用它来判断图像的每一列是否是分割线,它是根据训练样本来进行自适应的神经网络,但是对于粘连的字符很难训练。
由于本文处理的对象是相对类型较少,变化较小的车牌,因此采用直接分割法。具体就是采用投影法先将字符粗分割,然后根据单个字符的宽度进行分类,将粘连字符再分割,断裂字符合并。
完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用投影法对复杂环境下的汽车图像中的字符分割有较好的效果。分割步骤:
图4.8 车牌分割步骤
![v2-d03535bbb19fee144e9c9899e47c69b4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e8f41df0c050959fc3d017f5945a1a03.png)
图4.9 分割后的车牌
4.6字符识别
本文的字符识别采用的是基于模板匹配的识别方法。模板匹配是最为直观的一种方法,就如字面所理解的,选用一些样本作为模板,当进行判断时,首先计算待测数据与模板之间的距离,这个距离通常是两个数据向量差的一个范数,例如它们之间的直线距离等。找出距离最短的那个模板这个模板的输出值就可以作为该数据对应的输出值。
4.6.1字符识别流程概述
当一幅车牌的原始图像经过车牌定位和字符分割处理后,得到这个车牌的字符图像,首先对字符图像做归一化处理,即把字符图像归一化成20 ×32的标准大小的图像,然后对这幅归一化的图像调用设计好的模板匹配程序进行识别,字符识别流程如下:
1、识别车牌的第1个字符(若分割正确的话应该是汉字):
(1)调用汉字模板库进行匹配识别,若识别结果为汉字,则最终结果为一汉字,识别结束;若识别结果为空字符,即表示不是汉字,则进行第二步。
(2)调用字母模板库进行识别,若为字母,则最终结果为一个字母,识别结束;若识别结果为空字符,则表示不是字母,进行第三步。
(3)调用数字模板库进行识别,若为数字,则最终结果为一数字,识别结束;若为空字符,则最终结果为空字符,识别结束。
2、识别车牌的第2个字符(若分割正确的话应该是字母):
(1)调用字母模板库进行识别,若为字母,则最终结果为一个字母,识别结束;若识别结果为空字符,则表示不是字母,进行第二步。
(2)调用数字模板进行识别,若为数字,则最终结果为一数字,识别结束;若为空字符,则表示不是数字,进行第三步。
(3)调用汉字模板进行识别,若识别结果为汉字,则最终结果为一汉字,识别结束;若识别结果为空字符,则最终识别结果为空字符,识别结束。
3、识别车牌的第3、4个字符(若分割正确的话应该是字母或数字):
(1)调用字母模板库进行识别,若为字母,则最终结果为一个字母,识别结束;若识别结果为空字符,则表示不是字母,进行第二步。
(2)调用数字模板进行识别,若为数字,则最终结果为一数字,识别结束;若为空字符,则表示不是数字,进行第三步。
(3)调用汉字模板进行识别,若识别结果为汉字,则最终结果为一汉字,识别结束;若识别结果为空字符,则最终识别结果为空字符,识别结束。
4、识别车牌的第5、6、7个字符(若分割结果正确的话应该是数字):调用数字模板进行识别,若为数字,则最终结果为一个数字,识别结束;若为空字符,则最终识别结果为空字符,识别结束。
对于车牌图像的第1、2和3个字符,进行完全的识别,主要是因为考虑到字符的分割不一定正确,即不能保证分割后的第1个车牌字符为汉字,第2个车牌字符为字母,而第3、4个车牌字符为字母或数字。对这三个字符做这样的完全识别后,可以得到一些非常有用的信息,这些信息可以返回到字符分割模块,可以指导字符分割调整字符分割的策略。例如,若识别出的车牌图像的第2个字符是汉字,则说明字符模块做字符分割的时候在车牌图像的左边提取了一个多余的字符,因此字符分割模块要去掉这个多余的字符,从汉字字符起,依次提取出7个字符来。
![v2-56a8dd04c02823dc1b4288c3afbc6cbb_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/ff11e18a214eb7df1c8eeec1da015c69.png)
![v2-b5ff9efb43ceadea6f9840d3bae8a26c_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/a3be708fd29eb55aa4c0163a159c51f2.png)
图4.10 车牌中的字符 图4.11 模板字符
4.6.2本文字符识别流程
模板匹配是车牌字符识别最早使用的方法之一,本文也主要是研究基于模板匹配的系统,所以本章重点研究这种算法。具体模板匹配的字符识别步骤如下:
一般使用的模板匹配法是直接使用归一化后的图像作为待识别字符图像,而归一化后的图像由于预处理的原因,很有可能笔划粗细不均,并且存在着部分噪音点,不易于处理,所以我们首先采用细化的方法,将原来的待识别字符图像中的字符进行细化处理,然后再进行模板匹配的粗比对,在通过粗比对将字符图像分组后,再根据车牌字符的细节特征对字符进行细比对,最终得到识别结果,从而实现了我们识别字符的目的算法流程如下图所示:
首先进行第一步,细化处理。细化,又称为骨架化,即在不影响原图的拓扑连接关系的条件下,将宽度大于一个像素的图形线条转变为只有一个像素宽度的处理过程,也就是抽取图像的骨架,由于细化能很好地展现图像的形状,并且,细化还有一个优点就是可以减少所需用到的内存空间,这样就可以在进行图像处理时简化一些操作,加快处理速度。因此,细化在图像处理中占有着重要的地位,是图像分析、信息压缩、特征抽取及模式识别常用的技术。
由于细化处理在图像处理中的重要性,所以细化算法一直是人们比较关注的问题,人们也提出了许多的细化算法,这些算法的处理方法和结果也都不一样,但是不论其目的,用途怎样,细化过程都不能改变原图的拓扑连续性,也不能有显著的端点缩短和叉点分离的畸变情况。此外,在许多情况中,细化的过程占整个图像处理一半以上的时间,因而提高细化算法的速度也是非常有意义的。
我们采用的是一种简单而且效果很好的算法,能够实现抽取骨架的功能。所谓骨架,可以理解为图像的中轴,例如一个长方形的骨架就是它的长方向上的中轴线;正方形的骨架就是它的中心点;圆的骨架就是它的圆心;直线的骨架就是它自身;孤立点的骨架也是自身。那么,如果去除那些骨架以外的点呢?显然,是要根据它的八个相邻点的情况来判断,以下就是几个例子,如图所示:
图4.12 细化示意图
上图中的中心点就是我们所要处理的像素点,下面就来讨论像素点可不可以删除,图(1)的像素点不可以删除,因为它是个内部点,我们要求的是骨架,如果连内部点也删除了,那么骨架就会被掏空的,所以不能删除,图(2)中的像素点也不可以删除,因为它也是内部点,和图(1)一样,图(3)中的像素点可以删除,因为该点不是骨架,图(4)也不能删除,因为删除后,原来相连的部分就断开了,图(5)的可以删除,因为不是骨架,图(6)不能删除,因为它是直线的端点,如果这样的点删除了,那么整个直线也被删了,图(7)也不能删,因为它是孤立点,由此可以看出,有这样几条判断依据:
1、内部点不能删除;
2、孤立点不能删除;
3、直线端点不能删除;
4、如果P是边界点,去掉P后,如果连通分量不增加,则P可以删除。
根据这些判断依据,我们可以制作一张表格,从0到255共有256个元素,每个元素要么是0,要么是1。我们根据被处理点的八个相邻点的情况来查表,若表中的元素是1,则表示该点应该删除,否则保留。具体的查表方法如下:设白点为1,黑点为0;自左上方开始,左上方点对应一个8位数的第一位,正上方点对应第二位,右上方点对应第三位,左邻点对应第四位,右邻点对应第五位,左下方点对应第六位,正下方点对应第七位,右下方点对应第八位,这样就构成了一个8位二进制数。
我们判断用的表如下:
Staticinttable [256]={ 0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,
1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,10,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,0,0,0};通过这张判断表,我们就可以很简单的判断该点是否应该删除,整个算法也就非常简单了。我们首先水平方向扫描第一行最左边的点,然后是最右边的点,接着扫描第二行最左边的点,最右边的点,直到最后一行最左边的点,最右边的点;然后垂直方向扫描第二列最上边的点(因为第一列最上边的点已经被删除),第二列最下边的点,直到倒数第二列最上边的点,最下边的点。这样,刚好剥掉了一圈,这也正是我们细化所要做的事。通过对整个图像进行一遍扫描,即完成了细化操作。
接下来进行第二步,模板匹配的粗比对。所谓的粗比对,就是按照车牌字符所特有的特征,如车牌上汉字后面的第一位应该是英文字母,第二位和第三位有可能是英文字母也有可能是数字,最后三位应该都是数字,正是按照这些特征,我们将待识别字符分成三组,第一组是英文字母,第二组是数字,第三组是数字或者字母,这样,我们就把每一组分别和不同的字符标准模板进行模式匹配,在这一次匹配中我们不需要做到非常的精确,只需要匹配度达到一个基本的匹配阈值λ0以上就可以了,然后我们按照字符的匹配度将它分为几组,分组情况如下:G,Q,D,O,0一组,Z,2一组等,具体的识别流程图如下图所示:
这样,就完成了对字符模板匹配的粗比对,但是,其中也有例外,例如‘1’‘W’等字符,因为没有与它们相似的字符,所以通过粗比对就可以确定,而其它字符还要经过细比对才能得出识别结果。
最后一步,就是对待识别图像与标准模板进行细节比对,也就是我们所说的字符细比对。
字符的细比对,是在字符经过了粗比对的基础上,待识别字符与标准模板中的每一个字符都有一个匹配值,这时,就要根据它所处的位置和它与标准模板的匹配情况,选择匹配值最大的字符模板,认为待识别字符就是该模板所代表的字符。例如某个待识别字符如图5.8(图像为标准化的40×20的图像),它与‘0’,‘Q’,‘D’,‘G’标准字符模板的相似度均大于我们预定的阈值λ0,并且根据它所处的位置来进行判断,假设它处在最后一个位置,那么它就应该是数字,所以不用进行细比对,我们就可以确定它是数字‘0’,但是如果它处在第三个位置,它就有可能是数字也有可能是字母,这是我们就无法简单的确定它是‘0’,‘Q’,‘D’还是‘G’,我们就需要对它进行细比对。
![v2-57ecb86090922143556d260518ae92b7_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0ebaeb7e2fef3aa0dc328dd4c07af625.png)
![v2-5839abf864cee0847d9a082fb5931ee0_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/a22de5d01b8eeabfe6135e11e1f8690d.png)
图4.14 待识别的图像 图4.15 OQDG标准模板
首先,将待识别图像与字母‘Q’标准模板来进行细比对,我们发现数字‘0’与字母‘Q’最大的区别在于图像的右下方,如图5.12所示(为了方便显示,我们将图片放大,并且取反色以便观看),所以我们只需要选取待识别图像的右下角区域,再与字母‘Q’的标准模板的相同区域进行比较,这时,由于是细节比对,所以我们就需要提高判断阈值,当然,根据字母之间相似度,有些阈值要大一些,有些阈值就要小一些,例如这种比较,我们根据经验就设定阈值为0.6,通过比较,发现两者的相似度远远低于0.6,所以,我们就认为这个字符不可能是‘Q’。
![v2-e625d890f002b9ed45b0f5fb7ab83cd6_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/22b8cfb03b4ff8720acb67aa0c2c69e0.png)
图4.16 字符Q与O的区别
接下来,我们将待识别图像与字母‘D’标准模板来进行细比对,通过对比,我们注意到数字‘0’与字母‘D’最大的区别是图像的上1/3部,如图5.13所示,所以这次我们需要选取待识别图像的上1/3部,拿它来与字母‘D’的标准模板的上1/3部比较,这次,我们选定阈值为0.7,通过比较,发现两者的相似度远远低于0.7,所以,我们同样也不认为是字母‘D’。
![v2-35fdbfa50fae7f40a80b3b7916c0c8e4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0e76f338df8bf214abff8c69afd2ed8d.png)
图4.17 字符D与O的区别
然后,我们再把待识别图像与字母‘G’的标准模板来比对,通过图5.14我们可以看出,数字‘0’和字母‘G’的最大区别在于图像的右上部,所以我们只需要比较待识别字符图像的右上部分即可。这次比较,我们选用的阈值是0.8,通过比较,发现两者的相似度为0.5左右,所以我们也不认识该字符图像是‘G’。
![v2-bd8f55fac4cfc6009327385b294e774e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/57c61d6cc3f1cf4da3d7ca85ffcee6dc.png)
图4.18 字符O与G的区别
经过了三次细比对,我们发现待识别字符并不是‘Q’,‘D’和‘G’,所以我们就认为它是‘0’或者‘O’(对于这两种字符,我们认为通过字符匹配是无法区分的,我们只能通过他们所处的位置来确定,如果处在第二个字符位置,那么我们就认为它是‘O’,否则我们认为它是‘0’),至此,我们就完成了对这个字符的识别,识别结果也就出来了。
同样,采用相同的方法,我们也一样可以识别出其他的字符。这样,我们就通过改进的模板匹配方法达到了我们识别字符的最终目的。改进的方法采用了细化的方法提取了字符的骨架,减少了冗余信息,使其在复杂的应用环境中仍然能够准确的识别出字符,通过粗比对和细比对两次匹配方法,提高了识别的鲁棒性和准确性,并且是运算速度得到了提高。
第5章 车牌识别系统在MATLAB工具下的实现
本章是对算法的实现,介绍了实验环境平台搭建、识别过程、实验数据及分析。
5.1实验环境
硬件环境:
数码相机一台(用于采集图片),PC机一台。
软件环境:
操作系统:Windows XP
图像格式:jpg格式,24位真彩色
编程环境:MATLAB 2008。
5.2平台搭建
根据上文研究的算法,利用MATLAB的M语言分别实现了车牌识别系统的定位、字符切分和字符识别功能模块,利用MATLAB的GUI工具箱开发了测试系统,验证上面设计的算法在车牌识别系统中的应用效果,利用MATLAB的图形用户开发环境(GUIDE)设计了本测试平台,流程如下:
图5.1车牌识别系统流程图
启动测试界面时,将会先导入识别参数设置值,当改变参数设置后,更新识别参数设置值,使之与当前设置一致。
输入的图像信息和识别参数设置值以参数的形式传送到run.m文件中,在该文件中,完成整个车牌的识别。该模块调用二个子模块:车牌定位模块location.m,车牌字符切分模块segmentation.m和车牌字符识别模块ocr.m.
在每个子模块中,先用load 'global_ var.mat'语句导入最新的识别参数设置值。识别时首先将图像image以参数的形式输入到location.m中,利用小波变换和投影法对图像进行定位,得到车牌部分的图像bw,同时根据车牌的颜色特征判断出车牌的底色grounding。然后将车牌部分的l纠像bw输入到segmentation.m中,对其用改进的Otsu算法进行二值化,然后根据其投影进行倾斜校正和字符的切分,得到了切分后的七个字符的图像seg。接着导入net.mat文件,该文件中存有对创建的匹配字符模板进行BP网络训练得到的网络对象net。将切分好的字符图像seg和训练好的网络对象net输入到ocr.m中,调用函数sim模拟一个网络,根据训练好的网络net及输入向量seg进行模拟网络输出,最终得到识别的结果。
最后,将识别结果输出到文本框中,显示在界面上。即完成了车牌识别的整个过程。
5.3识别过程
通过对原始待识别图像的一系列预处理,然后进行图像矫正,将图像分割成单个字符图像,识别的大概过程如下面各图所示:
![v2-8c71fab4dea3cc65d838bda621de9d9d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/13fd7fd466501ceec223e1f19a6a1c23.png)
:
图5.2 原始彩色图片
![v2-d5596aa4f32f9f44ead9a3c7e7f56038_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/c13809c04ac52607eb74fe886ad05faa.png)
图5.3 原始黑白图像
![v2-4ecbd53470195f9ac2202f86a1b4c82a_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/881b58aca3dce635a19961be71fcc48e.png)
图5.4 背景图像
![v2-81e4c6a12614604f644dfe8a85e692b3_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0b2bc425526e38c32117c0a1af976d29.png)
图5.5 增强黑白图像
![v2-6d3438c8ea6cc9b08dbb1d404dc55017_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/16e0f4b7608af09ddea09e58168e5ea5.png)
图5.6 图像二值化
![v2-890f6c0a8b44d9a6f1cfdcd5b82ff1ba_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/767bd79070e3d3281cc16380d26948a0.png)
图5.7 图像彩色标记
![v2-982038095eef556904ec75de58f1ecee_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e5aa152d54b6d642813c353291b88b74.png)
图5.8 车牌灰度子图、二值子图
![v2-5198c045059b68492706de749d1b27e4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6883fc4e19a0fb0b08f3ff6f352aad22.png)
图5.9 水平投影及车牌二值子图
![v2-da77049a047b15c9516b22c4a80a32ef_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0472f4eca3c6e77b8acb767a816197eb.png)
图5.10 垂直投影及车牌字符高度
最终识别结果为:
![v2-b10778235ec5023eb5d4fd39feae892a_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b4f20188828ea5fb7b78733a22192c02.png)
图5.11 识别结果
5.4实验数据及分析
我们利用数码相机进行了车牌图像的采集工作,以用来验证我们的程序,具体数据如表5.1:
表5.1 结果分析
识别结果 | 识别正确 | 拒绝识别 |
个数 | 85 | 15 |
百分比 | 85% | 15% |
![v2-1f7323a058fb3d933ee7d23d0abfa6c6_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f607d58709c3a1446d7f081da33b70d8.png)
图5.12拒绝识别的图片
在图5.12中,由于提取车牌边缘的过程中,提取到的矩形边框不满足长宽比大于2且小于4,所以程序自动跳出,无法进行下一步车牌定位,不能识别出车牌。从上面的表格可以计算出,整个车牌系统的识别率为85%。系统可以较准确的进行定位,无法准确定位的车牌图像往往是由在车牌周围有垂直条纹、且大小与车牌相仿的图像块,以及提取矩形轮廓时不能完整提取整个车牌区,造成程序终止。这些干扰的去除需要对算法的进一步改进,例如可以考虑在粗定位后对图像的垂直投影图进行分析,将不符合几大峰群条件的伪车牌部分去除,然后重新进行搜索。车牌字符识别的准确率达到了85%,还是比较理想的,其中,字符识别错误的原因大多是由于字符特征非常接近、车牌局部存在污点的情况下,结果无法识别,主要原因则是车牌边框不明显或者车牌图像倾斜比较严重的情况。可以通过增加字符模板解决这个问题。
综上所述,本系统具有以下特点:
1)车牌识别率较高,达到了85%,基本满足需求;
2)车牌系统适应性较好,对天气的变化以及车身的弱干扰有较好的适应性;
3)通过我们对程序的计时显示,总体看来,识别所需要的时间在0.7s~1s之间,实时性比较好。
第6章 总结与展望
6.1 总结
经过几个月的奋战我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对大学几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己的综合知识。
本文对车牌识别系统的关键算法进行了较深入的分析和研究。在借鉴原有方法的基础上,提出了若干改进和新的方法。但同时,通过对本系统的研究,我感觉车牌识别仍有许多内容需要改进和完善。
车牌识别系统作为智能交通系统中重要的一部分,近年来引起专家们的重视,并已有部分产品投入使用。但在实际使用过程中,仍然存在着系统移植性差、对光照的适应性差、准确率不够高等缺点,在后续处理中还需人工辅助完成,所以对车牌识别系统的算法的研究改进一直在进行。本文以MATLAB为开发工具,在353张卡口汽车图像组成的数据库的支持下,对车牌识别进行了研究,对多种算法进行了分析、比较与改进,并提出了一些自己的见解,效果较好。
在课题的研究过程中,主要完成了以下工作:
1)在对国内外大量文献的阅读研究基础上,使用MATLAB开发了一套车牌识别系统,完成了车牌定位、车牌字符切分和车牌字符识别等功能,搭建了系统测试平台。实验证明,整个系统的识别准确率达到91.4%,单幅图像识别时间在0.7s~1s之间,基本满足实际要求。
2)车牌定位作为车牌识别系统的第一步,对识别准确率和运行时间有很大影响。在车牌定位中,最重要的是边缘的提取,边缘提取的效果好,后面进行形态学处理后车牌特征明显,车牌定位的准确性就高。本系统采用小波变换分解提取垂直分量的算法来提取边缘,有效的抑制了噪点的影响,在其后采用初步定位与精确定位相结合的方法实现了车牌的定位。小波变换分解后的高频垂直分量和低频水平分量,非常有益于图像特征的提取。从对小波变换的分析图来看,进行小波变换分解后,车牌部分的高频特征与非车牌部分的特征有着明显的差异,因而对车牌的定位79有很大帮助。在车牌识别中,如果仅仅应用车牌特征,或者仅仅使用投影法进行定位,车牌图像定位到非车牌区域的可能性会比较大,所以将两者结合,通过两次定位,可以达到较好的效果。实验证明,在93张图片中,最终准确定位的图片有90张,准确率为96.8%,较好的满足了要求。
3)车牌的二值化对于车牌字符识别有着非常重要的作用。二值化效果好,车牌图像的特征就明显,可以更好的满足后面的车牌字符切分与识别的需要。二值化算法的阈值的选取对于二值化的效果有很大的影响,这里采用了全局阈值的算法,传统的Otsu算法中,使用一维算法得到的特征不够明显,无法满足要求。而传统的二维算法计算范围缩小,可能会使得车牌不完整,所以本文对其进行改进,扩大了二维算法的计算范围,将复杂度降低为一维,在获得良好效果的同时,运行时间有所缩短。实验证明,改进的二维Otsu算法效果较好。
4)车牌的倾斜校正对车牌字符识别有很大的影响。一个倾斜的车牌字符的识别与一个很正的车牌字符的识别是不一样的。传统上,很多系统采用Hough变换来进行校正。但是Hough变换要从图像中截取较长一段直线来作为参照物,这样就需要前面保留有车牌边缘,且此边缘的横线和竖线都满足需求,这在实际中较难操作。本系统利用车牌水平投影,采用线性拟合的方法检测车牌的倾斜角度。借助MATLAB图像坐标轴的横轴确定倾斜角度,保证了参照物满足对横线和竖线的要求。实验证明,用投影法检测牌照的角度,然后使用坐标变换方法进行倾斜牌照校正处理,方法简单且效果良好。
5)车牌字符识别是车牌识别系统识别车牌的最后一步。传统算法中模板匹配字符识别和神经网络字符识别都是常用的算法。这里对两种方法进行了比较研究。对于模板匹配字符识别,在传统算法的基础上,对车牌字符的特征提取进行了改进,将其划分为六个部分,统计出各部分的特征,改进后识别准确率达91.4%。
6.2 展望
车牌识别系统在实验室里己经取得了令人满意的效果,但很难应用于实际工程中,这是因为实验室的环境是处于理想状态的,而在自然环境里,由于受到天气等因素的影响,识别率很难达到要求。
目前的车牌识别系统在快速发展中,虽然已经有一些公司开发的产品取得实际应用,但是在准确率和识别速度方面仍有很大的提高空间,对算法的研究仍然是车牌识别的一个重点。目前,虽然对车牌识别技术已经有了很深入和详细的研究,且也取得了一定的成果,但同样也存在很多问题有待下一步研究解决。主要有以下几个方面:
(1)在车牌定位中采用的梯度投影与彩色区域相结合的方法,该算法简单,容易实现,对光照不太弱的图像效果很好。由于是由底向上寻找第一个较大的峰,因此对车牌下方也有字符出现的情况失效。当然可以改进算法,进一步利用车牌自身的特点。比如根据车牌独特的底色,排除非车牌区域的干扰;也可以利用车牌字符之间有一定的间距,排除非车牌字符的干扰。在这个面,还有待进一步的研究。
(2)在车牌定位方面还存在一些可以改进的地方,对边缘检测这个处理环节可以再优化,以使本文的车牌定位算法能够适应质量更差的车牌图像。
(3)在字符识别方面存在很多需要改进的地方,比如说对字符图像进行特征提取、笔画分析等处理以进一步提高识别率。本文的字符识别算法只是应用于印刷体的字符识别,今后的研究应该使算法在手写体方面也能有很好的识别效果。此外,文字识别是一个综合的过程,还必须考虑其它的因素,诸如上下文的语意搭配等,这就涉及到诸如语意和内容的识别,这将是一个更加值得深入研究的领域。
(4)本文仅局限于从算法上以matlab为仿真平台实现对车牌的识别。今后应考虑在进一步优化算法的基础上通过硬件实现车牌识别,使之真正成为一套能为社会服务的产品。