2023年11月28日发(作者:高尔夫球车价格)

本科生毕业设计(论文)

目: 车牌识别系统的设计与实现

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教

师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加

以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研

究成果,也不包含我为获得 及其它教育机构的学位或学历

而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,

均已在文中作了明确的说明并表示了谢意。

名: 期:

指导教师签名: 期:

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论

文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电

子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供

目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制

手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分

或全部内容。

作者签名: 期:

学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研

究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文

不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研

究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完

全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,

同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,

允许论文被查阅和借阅。本人授权 大学可以将本学位

论文的全部或部分内容编入有关数据库进行检索,可以采用影印、

印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、

程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错

别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所

有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程

字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装

指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

及格 不及格

2、学生掌握专业知识、技能的扎实程度

及格 不及格

3、学生综合运用所学知识和专业技能分析和解决问题的能力

及格 不及格

4、研究方法的科学性;技术线路的可行性;设计方案的合理性

及格 不及格

5、完成毕业论文(设计)期间的出勤情况

及格 不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

建议成绩: 及格 不及格

(在所选等级前的□内画“√”)

指导教师: (签名) 单位: (盖章)

评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

二、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

建议成绩: 及格 不及格

(在所选等级前的□内画“√”)

评阅教师: (签名) 单位: (盖章)

教研室(或答辩小组)及教学系意见

教研室(或答辩小组)评价:

一、答辩过程

1、毕业论文(设计)的基本要点和见解的叙述情况

及格 不及格

2、对答辩问题的反应、理解、表达情况

及格 不及格

3、学生答辩过程中的精神状态

及格 不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

评定成绩: 及格 不及格

教研室主任(或答辩小组组长): (签名)

教学系意见:

系主任: (签名)

7

目录

摘要 ............................................................................................................................... 1

英文摘要 ....................................................................................................................... 1

1 引言 ......................................................................................................................... 2

2 汽车牌照识别的研究 ............................................................................................. 3

2.1课题背景 ............................................................................................................. 3

2.2国内外研究现状 ................................................................................................. 3

2.3车牌识别的主要应用领域 ................................................................................. 5

3 汽车牌照识别系统设计 ........................................................................................... 7

3.1汽车牌照的特点 ................................................................................................. 7

3.2汽车牌照识别系统的组成 ................................................................................. 7

3.3图像预处理 ......................................................................................................... 8

3.3.1图像灰度化 ...................................................................................................... 8

3.3.2二值化 ............................................................................................................ 10

3.4车牌定位 ........................................................................................................... 11

3.4.1车牌粗定位 .................................................................................................... 12

3.4.2车牌细定位 .................................................................................................... 12

3.5车牌分割 ........................................................................................................... 13

车牌识别系统的设计与实现

行知学院 计算机科学与技术 ***09226***

指导老师:邓***(副教授)

摘要: 汽车牌照识别技术研究与实现一直是现代化交通发展中倍受关注的问题,也是

制约交通系统智能化、现代化的重要因素。该文使用一种基于模版匹配的车牌定位方法。首

先进行图像处理,然后进行图像分割并定位车牌。实验表明算法效果好,速度快,实现了车

牌字符识别。

关键词: 车牌识别;智能字符识别;模板匹配;C#

The design and implementation of license

plate recognition system

Yang Xiangyu DirectorDeng DayongProfessor

(Dept. ofComputer science and technology, Zhejiang Normal University, 091 No.09226244)

AbstractThe research and implementation of LPR is an all-concerned problem in the

modern traffic development. In addition, it is an important factor that restricts the intelligentization

and modernization of the traffic system. In this article, we use a LPR that is based on template

matching. At first, we deal with the images. Then we cut the images apart and locate the licence

plates. Our experiments show that the algorithm is very effective and efficient. It also has realized

the character recognition of licences.

Key Words LPR; ICR; Template matching;C#

1

1 引言

随着人们生活水平的不断提高,机动车辆数量大幅度增加,与之相配套的高

速公路,城市路网及停车场越来越多,显著提高了人们对交通控制方面的要求。

由于计算机技术的发展,信息处理水平的提高使智能交通系统成为世界交通领域

研究的重要课题。其中车牌识别是智能交通系统的重要组成部分。在有关字符识

别的大型系统中,通常采用的是神经网络算法,但这种算法计算量比较大,实现

起来较复杂。而车牌中,非汉字字符个数有限,利用神经网络算法识别车牌中非

汉字字符则显得大材小用,所以本文只设计实现基于模版匹配的车牌识别系统,

其主要步骤包含图片二值化、去噪、规整、细化、轮廓提取、模板匹配等。通常

情况下的车牌识别系统是通过OPENCVC++实现,或者是Matlab实现,而本文

采用编者大学期间学习的C#实现车牌识别的所有功能,具有安全性高,软件结

构清晰,识别速度快,运行环境简单的特点。

2

2 汽车牌照识别的研究

2.1 课题背景

随着经济社会的迅猛发展,人们的生活水平的提高,机动车辆的数量也越来越多。为了

提高车辆的管理效率,缓解公路上的交通压力,我们必须找到一种解决方案。而作为汽车“身

份证”的汽车车牌,是在公众场合能够唯一确定汽车身份的凭证。我们可以以此为依据,设

计一种车牌识别系统监控各个车辆的情况。为此,我国交通管理部门对汽车车牌的管理非常

重视并制定了一套严格的管理法规。其中对汽车车牌的制作、安装、维护都要求由制定部门

统一进行管理。在此基础上,如果研制出一种能在公众场合迅速准确地对汽车牌照进行自动

定位识别的系统(CPR),那么这将是一件非常有意义的工作,并将极大地提高汽车的安全管

理水平及管理效率。 车辆牌照定位与识别是计算机视觉与模式识别技术在智能交通领域应

用的重要研究课题之一, 该技术应用范围非常广泛, 其中包括: (1) 交通流量检测; (2)交通

控制与诱导;(3) 机场、港口等出入口车辆管理;(4) 小区车辆管理;(5) 闯红灯等违章车辆

监控;(6) 不停车自动收费;(7) 道口检查站车辆监控;(8) 公共停车场安全防盗管理;(9)

算出行时间;(10) 车辆安全防盗、查堵指定车辆等。其潜在市场应用价值极大,有能力产生

巨大的社会效益和经济效益。近些年,计算机的飞速发展和数字图像技术的日趋成熟,为传

统的交通管理。带来重大转变。先进的计算机处理技术,不但可以将人力从繁琐的人工观察、

检测中解放出来,而且能够大大提高其精确度,汽车牌照自动识别系统就是在这样的背景与

目的下进行开发的。

2.2 国内外研究现状

20世纪90年代初,国外就已经开始了对汽车牌照自动识别的研究,其主

要途径就是对车牌的图像进行分析,自动提取车牌信息,确定汽车牌号。在各种

应用中,有使用模糊数学理论也有用神经元网络的算法来识别车牌中的字符,

由于外界环境光线变化、光路中有灰尘、季节环境变化及车牌本身比较模糊等条

件的影响,给车牌的识别带来较大的困难。国外的相关研究有:(1)J Barroso

提出的基于扫描行高频分析的方法;(2) I.T. Lancaster提出的类字符分析方

法等。为了解决图像恶化的问题,目前国内外采用主动红外照明摄像或使用特殊

的传感器来提高图像的质量,继而提高识别率,但系统的投资成本过大,不适合

普遍的推广。

车牌识别系统中的两个关键子系统是车牌定位系统和车牌字符识别系统。

牌定位是指对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的

若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个

最佳的区域作为牌照区域,并将其从图象中分离出来。关于车牌定位系统的研究,

3

国内外学者已经作了大量的工作,但实际效果并不是很理想,比如车牌图像的倾

斜、车牌表面的污秽和磨损、光线的干扰等都是影响定位准确度的潜在因素。为

此,近年来不少学者针对车牌本身的特点,车辆拍摄的不良现象及背景的复杂状

况,先后提出了许多有针对性的定位方法,使车牌定位在技术和方法上都有了很

大的改善.然而现代化交通系统不断提高的快节奏,将对车牌定位的准确率和实

时性提出更高的要求。因而进一步加深车牌定位的研究是非常必要的。

车牌字符识别是在车牌准确定位的基础上,对车牌上的汉字、字母、数字进

行有效确认的过程,其中汉字识别是一个难点,许多国外的LPR系统也往往是因

为汉字难以识别而无法打入中国市场,因而探寻好的方法解决字符的识别也是至

关重要的。目前己有的方法很多,但其效果与实际的要求相差很远,难以适应现

代化交通系统高速度、快节奏的要求。因而对字符识别的进一步研究也同样具有

紧迫性和必要性。

从实用产品来看,如以色列的Hi-Tech公司研制的多种See/Car system

适应于几个不同国家的车牌识别,就针对中国格式车牌的See/Car syste而言,

它不能识别汉字,且识别率有待提高。新加坡Optasia公司的VLPRS产品,适合

于新加坡的车牌,另外日本、加拿大、德国、意大利、英国等西方发达国家都有

适合于本国车牌的识别系统。

我国的实际情况有所不同,国外的实际拍摄条件比较理想,车牌比较规范统

一,而我国车牌规范不够,不同汽车类型有不同的规格、大小和颜色,所以车牌

的颜色多,且位数不统一,对处理造成了一定的困难。在待处理的车牌图像中就

有小功率汽车使用的蓝底白字牌照,大功率汽车所用的黄底黑字牌照,军车和警

车的白底黑字,红字牌照,还有国外驻华机构的黑底白字牌照等。就位数而言,

有七位数字的,有武警车九位数字的,有军车、前两位字符上下排列的等,所以

也造成了处理的难度。

国内做得较好的产品主要是中科院自动化研究所汉王公司的“汉王眼”,此

外国内的亚洲视觉科技有限公司、深圳市吉通电子有限公司、中智交通电子系统

有限公司等都有自己的产品,另外西安交通大学的图像处理与识别研究室、上海

交通大学的计算机科学与工程系、清华大学、浙江大学等都做过类似的研究。通

常处理时为了提高系统的识别率,都采用了一些硬件的探测器和其他的辅助设备

如红外照明等,其中“汉王眼”就 是采用主动红外照明和光学滤波器来减弱可

见光的不可控制影响,减少恶劣气候和汽车大小灯光的影响,另外还要求在高速

公路管理窗口到“汉王眼”识别点埋设两条线路管 道,一条管道铺设22050

赫兹1安培的交流供电线路:另一条管道铺设触发信号线路和汉王眼与管理计算

机的通讯线路,投资巨大,不适合于大面积的推广。

4

另外,还有两种专门的技术被用于车牌的识别中,条形码识别技术和无线射

频技术。条形码识别要求预先在车身上印刷条形码,在系统的某一固定位置上安

装扫描设备,通过扫描来读取条形码,以达到识别车辆的目的。无线射频技术要

求在车内安装标示卡,在系统某一位置安装收发器等装置,通过收发器来接受标

示卡的信号,从而识别出经过的车辆。显然,这两种技术更难以推广。 从目前

一些产品的性能指标可以看出,车牌识别系统的识别率和识别速度有待提高。

代交通的飞速发展以及车牌识别系统应用范围的日益拓宽给车牌识别系统提出

了更高的要求。因此,研究高速、准确的定位与识别算法是当前的主要任务,而

图像处理技术的发展与摄像设备、计算机性能的提高都会促进车牌识别技术的发

展,提高车牌识别系统的性能。

2.3 车牌识别的主要应用领域

车牌自动识别系统具有广泛的应用范围,主要应用于:(1)高速公路收费、

监控管理;(2)小区、停车场管理;(3)城市道路监控、违章管理;(4)车牌登录、

验证;(5)车流统计、安全管理等。车牌自动识别系统应用于这些系统,可以解

决通缉车辆的自动稽查问题,可以解决车流高峰期因出入口车流瓶颈造成的路桥

卡口、停车场交通堵塞问题,可以解决因工作人员作弊造成的路桥卡口、高速公

路、停车场应收款流失的问题,还可以以最简单的方式完成交通部门的车辆信息

联网,解决数据统计自动化,模糊查询的问题。车牌自动识别系统可安装于公路

收费站、停车场、十字路口等交通关卡处,其具体应用可概括为:

(l)交通监控利用车牌识别系统的摄像设备,可以直接监视相应路段的交通

状况,获得车辆密度、队长、排队规模等交通信息,防范和观察交通事故。它还

可以同雷达测速器或其他的检测器配合使用,以检测违犯限速值的车辆。当发现

车辆超速时,摄像机获取该车的图像,并得到该车的牌照号码,然后给该车超速

的警告信号。

(2)交通流控制指标参量的测量,为达到交通流控制的目标,一些交通流指

标的测量相当重要。该系统能够测量和统计很多交通流指标参数,如总的服务流

率,总行程时间,总的流入量流出量,车型及车流组成,日车流量,小时/分钟

车流量,车流高峰时间段,平均车速,车辆密度等。这也为交通诱导系统提供必

要的交通流信息。

(3)高速公路上的事故自动测报这是由于该系统能够监视道路情况和测量交

通流量指标,能及时发现超速、堵车、排队、事故等交通异常现象。

(4)对养路费交纳、安全检查、运营管理实行不停车检查根据识别出的车牌

号码从数据库中调出该车档案材料,可发现没及时交纳养路费的车辆。另外,该

系系统还可发现无车牌的车辆。若同车型检测器联用,可迅速发现所挂车牌与车

5

型不符的车辆。

(5)车辆定位由于能自动识别车牌号码,因而极易发现被盗车辆,以及定位

出车辆在道路上的行驶位置。这为防范、发现和追踪涉及车辆的犯罪,保护重要

车辆(如运钞车)的安全有重大作用,从而对城市治安及交通安全有重要的保障作

用。

车牌自动识别系统拥有广阔的应用前景,但若在每个街口都装配一套全新的

车辆探测器的硬件系统则投资巨大,所以急需一个纯软件实行的车牌自动识别系

统来最大限度的减少费用,而纯软件的设计,不仅投资小而且灵活性高,适合我

国的国情。

6

3 汽车牌照识别系统设计

3.1 汽车牌照的特点

目前国内汽车牌照有六种类型:①大型民用汽车所用的黄底黑字牌照;②小

型民用汽车所用的蓝底白字牌照;③军队或武警专用汽车的白底红字、黑字牌照;

④使、领馆外籍汽车的黑底白字牌照;⑤试车和临时牌照是白底红字,且数字前

分别标有“试”“临时”字标志;⑥汽车补用牌照是白底黑字,对于车前牌照,

其尺寸均为44cm长,14cm宽,共有7个或8个字符。民用汽车牌照上有省、直辖市、

自治区的名称和发证照及监督机关的盗代号,编号是英文大写字母。接着是一个

“·后面的汽车编号,一般为5位数字,即从00001~99999编号超过10万时,

就由ABC等英文字母代替,第三个字符可能是英文字母,也可能是阿拉伯数

字,第四至第七个字符均为阿拉伯数字。

从人的视觉特点出发,车牌目标区域具有如下特点:①车牌底色往往与车身

颜色、字符颜色有较大差异;②车牌有一个连续或由于磨损而不连续的边框,车

牌内字符有多个,基本呈水平排列,所以在牌照的矩形区域内存在较丰富的边缘,

呈现出规则的纹理特征;③车牌内字符之间的间隔比较均匀,字符和牌照底色在

灰度值上存在跳变,而字符本身与牌照底的内部都有较均匀灰度;④不同图像中

牌照的具体大小、位置不确定,但其长度比变化有一定范围,存在一个最大和最

小长度比。根据这些特点,可以在灰度图像的基础上提取相应的特征。

3.2 汽车牌照识别系统的组成

汽车牌照识别(LPR)系统通过引入数字摄像技术和计算机信息管理技术,

采用先进的图像处理、模式识别和人工智能技术,通过对图像的采集和处理,获

得更多的信息,从而达到更高的智能化管理程度。LPR 系统产品的性能指标中,

识别率和识别速度难以同时提高其中原因既包括图像处理技术不够成熟,又受到

摄像设备计算机等性能的限制。因此,研究高速准确的定位与识别算法,是当前

的主要任务。

车辆牌照识别系统一般可按顺序分为车辆图像采集、图像预处理、车牌定位、

字符分割与识别五大部分。如下图所示。

图像采集 图像预处理 车牌定位 字符分割 字符识别

3-1 车辆牌照识别系统

7

图像采集:可以通过高清摄像头与计算机的视频捕捉卡直接相连来完成图像

采集,可以实时在监控图像中抓取到含有车辆的图像。该部分功能可简单调用计

算机视频捕捉卡厂商提供的各种软件开发包工具即可实现。

汽车牌照识别(LPR)系统的关键在于后四部分。首先要对采集到的图像进

行预处理,而牌照定位又决定其后的车牌字符识别,因此牌照定位是车牌识别系

统的关键的关键,牌照定位就是从包含整个车辆的图像中找到牌照区域的位置。

目前,已经提出了很多种方法,一个共同的出发点是:通过牌照区域的特征

来判断牌照,利用的车牌特征主要包括:车牌区域内的边缘灰度直方图统计“特

征”、车牌的几何特征、车牌区域的灰度分布特征、车牌区域水平或垂直投影特

征、车牌形状特征和频谱特征。

3.3 图像预处理

根据三基色原理,世界上任何色彩都可以由红绿蓝(RGB)三色不同比例的

混合来表示,如果红绿蓝(RGB)三个信号分别由一个字节表示,则该图像颜色

位数就达到二十四位真彩,也就是说在二十四位真彩的数字图像中每个像素点由

三个字节来表示,根据数字图像水平和垂直方向像素点数(即图像分辨率)可计

算出一幅图像实际位图大小。事实上,在车牌自动识别系统中车辆图像是通过图

像采集卡将运动的车辆图像抓拍下来,并以位图的格式存放在系统内存中。这时

的车辆常会因为各种各样的原因使得所拍摄的车辆图像效果不理想,但我们可以

对车辆图像根据不同应用特点进行识别前的预处理,尽最大可能提高车牌正确识

别率,这些图像预处理包括图像平滑、倾斜校正、灰度修正等。

3.3.1 图像灰度化

汽车图像样本,目前大都是通过摄像机、数码相机等设备拍摄获取的,因而

预处理前的图像都是彩色图像。真彩色图像又称RGB图像,它是利用R, G, B3

个分量表示一个像素的颜色,R, G, B分别代表红、绿、蓝3种不同的颜色,通

过三基色可以合成出任意颜色。所以对一个尺寸为m*n的彩色图像来说,存储为

一个二m*n*3的多维数组。如果需要知道图像A(x, y)处的像素RGB值,则可

以使用这样的代码A (x, y,1: 3)

彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也

会降低系统的执行速度。由于图像的每个象素都具有三个不同的颜色分t,存在

许多与识别无关的信息,不便于进一步的识别工作,因此在对图像进行识别等处

理中经常将彩色图像转变为灰度图像,以加快处理速度。

数字图像分为彩色图像和灰度图像。在RGB模型中,如果R=G=B,则颜色表示一

8

种灰度颜色,其中R=G=B的值叫做灰度值.由彩色转换为灰度的过程叫做灰度化

处理。灰度图像就是只有强度信息,而没有颜色信息的图像,存储灰度图像只需

要一个数据矩阵,矩阵的每个元素表示对应位置的像素的灰度值。彩色图像的象

素色为RGB (R, G, B ),灰度图像的象素色为RGB ( r, r, r ), R, G, B可由

彩色图像的颜色分解获得.R, G, B

的取值范围是0-255,所以灰度的级别只有256级。灰度化的处理方法主要有如

下三种:

(1)最大值法:使R. G, B的值等于三值中最大的一个,即

R=G=B=max(R,G,B)

(2)平均值法:使R, G, B的值值等于三值和的平均值,即

R?G?B

R=G=B=

3

(3)加权平均值法:根据重要性或其它指标给R, G, B赋予不同的权值,并使

R,G,B等于它们的值的加权和平均,即

R=G=B=

WrR?WcG?WaB

3

其中Wr Wc,Wa,分别为R, G, B的权值。由于人眼对绿色的敏感度最高,对

红色的敏感度次之,对蓝色的敏感度最低,当Wr=0.30, Wa=0.59, Wc=0.11时,

能得到最合理的灰度图像。

3-2 原图像 3-3 灰度化后的图像

9

3.3.2 二值化

图像二值化是指整幅图像画面内仅黑、白二值的图像。在数字图像处理中二

值图像占有很重要的地位。这是因为,一方面,有些需要处理的如文字图像、指

纹图像、工程图纸等图像本身是二值的;另一方面,在某些情况下即使图像本身

是有灰度的,我们也设法使它变成二值图像再进行处理(即灰度图像的二值化)

这是考虑到在实用系统中,要求处理的速度高、成本低、信息量大的浓淡图像处

理的花销大。此外二值化的图像能够用几何学中的概念进行分析和特征描述,

灰度图像优势大得多。

在实际的车牌处理系统中,进行图像二值化的关键使确定合适的阈值,使得

字符与背景能够分割开来,而且二值变换的结果图像必须要具备良好的保形性,

不丢掉有用的形状信息,不会产生额外的空缺等。同时车牌识别系统要求处理的

速度高、成本低、信息量大,采用二值图像进行处理,能大大提高处理效率

二值化的关键是找到合适的阈值t来区分对象和背景。设原灰度图像为

f(x,y),二值化后的图像为g(x,y),二值化的过程表示如下:

0 f(x,y)

g(x,y)=

255 f(x,y)>t

[1]

二值化,基于实时性的要求,我力求寻找一种快速而且效果较好的方法,能

够更有针对性的解决在不同条件下牌照图像的二值化问题。求解阈值的方法很

多,微分直方图法、最大方差法、基于灰度的数学期望的方法、可变阈值法等。

我们采用最简单的方法,当象素灰度级低于常数C时,[0-C]象素灰度为0[C-255]

象素灰度为255

10

3-4 二值化后的图像

3.4 车牌定位

车牌图像往往是在复杂的环境中拍摄得到的,车牌由于与复杂的车身背景融

为一体,由于车牌在使用中磨损与灰尘及拍摄仪器的影响以及由于拍摄角度的不

同,车牌在图像中往往有很大的形变,如何在复杂背景中准确、快速找出车牌的

位置成为车牌识别中的难点。

目前已有不少学者在这方面进行了研究。总结起来主要有如下几类方法:

(1) 基于水平灰度变化特征的方法,这种方法主要在车牌定位以前, 需要

对图像进行预处理,将彩色图像转换为灰度图像,利用车牌区域水平方向的纹理

特征进行车牌定位;

(2) 基于边缘检测的定位方法,这种方法是利用车牌区域丰富的边缘特征进

行车牌定位,能够进行检测的方法有多种,如Roberts 边缘算子、Prewitt

[3]

子、Sobel 算子以及拉普拉斯边缘检测;

(3) 基于车牌颜色特征的定位方法,这种方法主要是应用车牌的纹理特征、

形状特征和颜色特征即利用车牌字符和车牌底色具有明显的反差特征来排除干

扰进行车牌的定位;

(4) 基于Hough 变换的车牌定位方法,这种方法是利用车牌边框的几何特

征,采取寻找车牌边框直线的方法进行车牌定位;

(5) 基于变换域的车牌定位方法,这种方法是将图像从空域变换到频域进行

分析,例如采用小波变换等;

(6) 基于数学形态学的车牌定位方法,这种方法是利用数学形态学图像处理

的基本思想,利用一个结构元素来探测一个图像, 看是否能将这个结构元素很

好的填放在图像内部,同时验证填放元素的方法是否有效。腐蚀、膨胀、开启和

关闭是数学形态学的基本运算。

本文采用sobel算子进行边缘检测定位车牌,sobel算子公式如下:

and

C#实现代码为:

for(Times=0;Times<128&&iThreshold!=iNewThreshold;Times++)

{

iThreshold=iNewThreshold;

11

lP1=0;

lP2=0;

lS1=0;

lS2=0;

for(i=iMinGray;i

{

lP1+=Histogram*i;

lS1+=Histogram;

}

iMean1Gray=lP1/lS1;

for(i=iThreshold;i

{

lP2+=Histogram*i;

lS2+=Histogram;

}

iMean2Gray=lP2/lS2;

iNewThreshold=(iMean1Gray+iMean2Gray)/2;

}

3.4.1 车牌粗定位

由摄像机采集的彩色车辆图像首先转化为灰度图像,经过灰度均衡变换、

数量,设定合理的阈值,确定车牌在行方向的合理区域。然后,在分割出的行区

域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。

3-6 定位后的车牌

3.5 车牌分割

车牌图像的分割即把车牌的整体区域分割成单字符区域,以便后续进行识

别。车牌分割的难点在于噪声合字符粘连,断裂对字符的影响。要想从图像中直

接提取出目标物体,最常用的方法就是设定一个阈值TT将图像的数据分成两

部分:大于T的像素群和小于T的像素群,即对图像二值化。均值滤波是典型的

线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周

围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。

在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定

位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。字符识别的

算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的

方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,

需要分割。

3-7 分割出来的7个字符

一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。

但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。

3-8 分割处理后的7个字符

3.6 字符识别

车牌字符识别方法基于模式识别理论,主要有:

(1) 统计识别;

(2) 结构识别;

(3) 基于神经网络的字符识别;

13

(4) 基于模板匹配的字符识别。

由于汽车车牌图像所处成像环境复杂多变很难采集到一个完整的有代表性

原始图像集作为统计分析的基础,因此统计方法难于实现。另外车牌字符常发生

变形、断缺等情况,使字符结构受损,则依赖于字体结构完整性的结构识别方法

所提取的特征会不准确,识别结果的误识率也高。因此实际用于车牌识别的方法

主要是后两类。

基于神经网络的字符识别方法,具有良好的容错能力,分类能力和并行处理

能力及自我学习能力,应用神经网络实现模式识别,运行速度快,自适应好,分

辨率高。对信息复杂、背景不清楚、推理不明确的问题尤为有利。但人工神经网

络为了保证系统高识别率也需要大量样本,通过学习获取知识并改进自身性能。

当学习系统所处环境平稳时(统计特性不随时间变化)神经网络可以学到这些环

境统计特性,作为经验记住。

基于模板匹配的字符识别方法,相对算法简单,速度较快,得到了广泛应用。

基于模板匹配的字符识别方法主要有:简单模板匹配,外围轮廓匹配,投影序列

特征匹配,外围轮廓投影匹配,基于Hausdorff距离的模板匹配等等。本文采

[5]

用了基于模板匹配的字符识别方法。

基于模板匹配的OCR的基本过程是:首先对待识别字符进行二值化并将其尺

寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最

佳匹配作为结果。

14

建立自动识别的代码表

读取分割出来的字符

第一个字符与模板中

的汉字模板进行匹配

第二个字符与模板中

的字母模板进行匹配

5个字符与模板中的字

母与数字模板进行匹配

待识别字符与模板字符相减,值越小相似度越

大,找到最小的一个即为匹配的最好的

识别完成,输出此模板对应值

3-9 字符识别流程图

模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹

干扰适应力强且识别率相当高。综合模板匹配的这些优点我们将其用为车牌字符

识别的主要方法。

模板匹配是图象识别方法中最具代表性的基本方法之一,它是将从待识别的

图象或图象区域f(i,j)中提取的若干特征量与模板T(i,j)相应的特征量逐个进

行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示期间

相似程度最高,可将图象归于相应的类。也可以计算图象与模板特征量之间的距

离,用最小距离法判定所属类。以下是模版匹配中的平方差匹配公式:

=

这类方法利用平方差来进行匹配,最好匹配为0,匹配越差,匹配值越大。

在实际设计模板的时候,是根据各区域形状固有的特点,突出各类似区域之

间的差别,并将容易由处理过程引起的噪声和位移等因素都考虑进去,按照一些

基于图象不变特性所设计的特征量来构建模板,就可以避免上述问题。

汽车牌照的字符一般有七个,大部分车牌第一位是汉字,通常代表车辆所属

15

省份,或是军种、警别等有特定含义的字符简称;紧接其后的为字母与数字。车

牌字符识别与一般文字识别在于它的字符数有限,汉字共约50多个,大写英文

字母26个,数字10个。所以建立字符模板库也极为方便。为了实验方便,结合

本次设计所选汽车牌照的特点,只建立了4个数字26个字母与10个数字的模板。

其他模板设计的方法与此相同。

首先取字符模板,接着依次取待识别字符与模板进行匹配,将其与模板字符

相减,得到的0越多那么就越匹配。把每一幅相减后的图的0值个数保存,然后

找数值最大的,即为识别出来的结果。识别结果如图3-10所示。

3-10 字符识别效果图

3.7系统实现

3.7.1 系统界面

3-11 系统主界面

16

系统功能介绍:①操作菜单;②载入图片显示区;③处理中图片的图片信

息;④车牌定位结果显示窗;⑤车牌精确定位与提取显示窗;⑥字符分割结果;

⑦识别过程用到的模版显示窗。

3-12 特征训练界面

3.8 实验结果分析

本文以Visual Studio2010为实验平台,以照相机拍取和网络下载的25

彩色车牌照片为对象进行实验。实验结果如图3-13所示:

车牌识别结果识别时间错误原因

津000000528ms

粤AAD263301ms

浙G56069351ms

浙G1W117448ms

浙G9122A429ms

浙D6078T×272ms定位失败

见图3-16

浙G1797C376ms

浙D2922L×281ms分割错误

见图3-17

浙G59099×361ms定位失败

浙G91958×325ms汉子识别错误

见图3-18

浙G1Y735×395ms定位失败

411ms浙G60A20

浙G0N583403ms

3-13 25张车牌识别结果

实验中对25张汽车图片进行识别,正确识别18张图片,识别错误7张,识别率达到72%

错误包括三类,分别是定位失败4例,分割错误2例,汉字识别错误1例。见图3-14

3-14 车牌识别正确率

成功识别图例:

3-15 成功识别图例

错误识别类型与图例:

18

3-16 定位失败图例

3-17 分割错误图例

3-18 汉字识别错误图例

分析认为,汉字识别错误可以由完善汉字特征库纠正。图3-18是图3-17的纠正结果:

19

3-19 汉字识别错误纠正

定位失败,分析认为是复杂环境的影响,例如出现复杂图案,或者广告牌之类,导致无

法正确定位车牌,此处可以由规范照片格式,以及改进摄像设备提高成功定位的概率。

分割错误主要是由于光线,杂质,角度影响车牌的字符分割,导致有些字符粘连,无法

识别或者识别错误,可以在提升硬件设备的基础上,改善识别方式,来改进正确分割的概率。

本次实验选取的照片很有局限性,而且范围不够大,所以实验数据会有偏差。

4

高速公路、城市交通、停车场等基础设施建设水平的不断发展和车辆管理体

制的不断完善,为以计算机视觉为基础的智能交通管理系统的实际应用提供了契

机。在智能交通系统中,车牌自动识别系统是智能化交通系统非常重要的发展方

向。从开始的收费辅助系统演变过来的车牌识别技术现在运用的领域是越来越

广。它在车辆过路、过桥全自动不停车收费,交通流量控制指标的测量,车辆自

动识别,高速公路上的事故自动测报,不停车检查,车辆定位,汽车防盗,稽查

和追踪车辆违规、违法行为,维护交通安全和城市治安,防止交通堵塞,提高收

费路桥的服务速度,缓解交通紧张状况等方面有重要作用,有重要的现实应用意

义。

本文主要解决了以下几个问题:一、在背景的图象中如何定位分割牌照区域;

二、对分割下来的牌照字符如何提取具有分类能力的特征;三、如何设计识别器。

在车辆牌照字符识别系统的研究领域,近几年出现了许多切实可行的识别技术和

20

方法,从这些新技术和方法中可以看到两个明显的趋势:一是单一的预处理和识

别技术都无法达到理想的结果,多种方法的有机结合才能使系统有效识别能力提

高。在本系统的设计时,也汲取了以上一些算法的思想,结合实际,反复比较,

综合分析;二是在有效性和实用的原则下,结合神经网络和人工智能的新技术的

应用是研究的一个方向。

虽然系统本身还存在许多不足,距离具体实用的要求仍有很大差距,但我却

在这次毕业设计中学到了很多知识。

使我受益终身。在该论文完稿之际,谨向导师邓大勇副教授表示最衷心的感谢。

在此,我还要感谢我的同学们,感谢他们对我的关心和督促使我能顺利完成

毕业论文的撰写。

最后,祝所有尊敬的师长们身体健康,工作顺利万事如意。

22

参考文献

[1]王耀南.计算机图像处理与识别技术.高等教育出版社.2001.

[2]孙即样.现代模式识别.国防科技大学出版社.2001.

[3]郑南宁.计算机视觉与模式识别.国防工业出版社.1998.

[4]王亦兵.韩曾晋.贺因光.城市告诉交通控制综述[J].自动化学报.

[5]牛欣.沈兰荪.基于特征的车辆牌照定位算法[J].交通与计算机.2000.

[6]吴进军.杜树新.分层次车牌定位方法[J].科技通报.2005.

[7]王东明.葛武滇.Visual C#.NET程序设计与应用开发.2009.

[8]王小科.c#开发实战宝典.清华大学出版社.2010.

[9] 特罗尔森. C#NET4高级程序设计-5.中国邮电出版社.2011.

[10] 尼克松.阿瓜多.特征提取与图像处理.电子工业出版社.2010.

23

附源代码:

private void t灰度化 ()

{

if (m_Bitmap != null)

{

int tt = 0;

for (int i = 0; i < 256; i++)

{

gray[i] = 0;

}

for (int i = 0; i < 256; i++)

{

rr[i] = 0;

}

for (int i = 0; i < 256; i++)

{

gg[i] = 0;

}

for (int i = 0; i < 256; i++)

{

bb[i] = 0;

}

BitmapData bmData = m_ts(new Rectangle(0, 0, m_,

m_), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

int stride = ;

System.IntPtr Scan0 = 0;

unsafe

{

byte* p = (byte*)(void*)Scan0;

int nOffset = stride - m_ * 3;

byte red, green, blue;

int nWidth = m_;

int nHeight = m_;

for (int y = 0; y < nHeight; ++y)

{

for (int x = 0; x < nWidth; ++x)

{

blue = p[0];

green = p[1];

red = p[2];

tt = p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114

24

* blue);

rr[red]++;

gg[green]++;

bb[blue]++;

gray[tt]++;

p += 3;

}

p += nOffset;

}

}

m_Bits(bmData);

flag = 1;

graydo();

}

}

private void t灰度均衡化 ()

{

if (m_Bitmap != null)

{

BitmapData bmData = m_ts(new Rectangle(0, 0, m_,

m_), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

int stride = ;

System.IntPtr Scan0 = 0;

int tt = 0;

int[] SumGray = new int[256];

for (int i = 0; i < 256; i++)

{

SumGray[i] = 0;

}

unsafe

{

byte* p = (byte*)(void*)Scan0;

int nOffset = stride - m_ * 3;

int nHeight = m_;

int nWidth = m_;

{

gray[i] = 0;

}

for (int y = 0; y < nHeight; ++y)

{

for (int x = 0; x < nWidth; ++x)

{

tt = p[0] = p[1] = p[2] = (byte)(SumGray[p[0]]);

gray[tt]++;

p += 3;

}

p += nOffset;

}

}

m_Bits(bmData);

flag = 1;

graydo();

}

}

private void t高斯滤波 ()

{

if (m_Bitmap != null)

{

BitmapData bmData = m_ts(new Rectangle(0, 0, m_,

m_), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

for (int i = 0; i < 256; i++)

{

gray[i] = 0;

}

unsafe

{

int stride = ;

System.IntPtr Scan0 = 0;

byte* p = (byte*)(void*)Scan0;

{

for (int x = 0; x < nWidth; ++x)

{

if (!(x <= 1 || x >= nWidth - 2 || y <= 1 || y >= nHeight - 2))

{

pp = p;

sum = 0;

int dividend = 79;

for (int i = -2; i <= 2; i++)

for (int j = -2; j <= 2; j++)

{

pp += (j * 3 + stride * i);

sum += pp[0] * gaussianMatrix[i + 2, j + 2];

if (i == 0 && j == 0)

{

if (pp[0] > 240)

{

sum += p[0] * 30;

dividend += 30;

sum = sum / dividend;

if (sum > 255)

{

sum = 255;

}

p[0] = p[1] = p[2] = (byte)(sum);

}

tt = p[0];

gray[tt]++;

p += 3;

}

p += nOffset;

}

}

flag = 1;

m_Bits(bmData);

graydo();

}

}

private void sobel边缘检测()

{

if (m_Bitmap != null)

{

BitmapData bmData = m_ts(new Rectangle(0, 0, m_,

m_), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

float valve = 67;

for (int i = 0; i < 256; i++)

{

gray[i] = 0;

}

unsafe

double sumCount = 0;

int[] marginalMx = { -1, 0, 1, -2, 0, 2, -1, 0, 1 }; ??

int[] marginalMy = { 1, 2, 1, 0, 0, 0, -1, -2, -1 };

int[,] dlta = new int[nHeight, nWidth];

for (int y = 0; y < nHeight; ++y)

{

for (int x = 0; x < nWidth; ++x)

{

if (!(x <= 0 || x >= nWidth - 1 || y <= 0 || y >= nHeight - 1))

{

pp = p;

Sx = 0;

Sy = 0;

for (int i = -1; i <= 1; i++)

for (int j = -1; j <= 1; j++)

{

pp += (j * 3 + stride * i);

Sx += pp[0] * marginalMx[(i + 1) * 3 + j + 1];

Sy += pp[0] * marginalMy[(i + 1) * 3 + j + 1];

pp = p;

}

m[y, x] = (int)(Math.Sqrt(Sx * Sx + Sy * Sy));

if (m[y, x] > valve / 2)

{

if (p[0] > 240)

{

m[y, x] += valve;

}

}

}

float tan;

if (Sx != 0)

{

tan = Sy / Sx;

}

else tan = 10000;

if (-0.41421356 <= tan && tan < 0.41421356)

{

dlta[y, x] = 0;

}

else if (0.41421356 <= tan && tan < 2.41421356)

{

dlta[y, x] = 1;

}

else if (tan >= 2.41421356 || tan < -2.41421356)

{

dlta[y, x] = 2;

{

p[0] = p[1] = p[2] = (byte)(m[y, x]);

}

else

{

m[y, x] = 0;

p[0] = p[1] = p[2] = 0;

}

if (x >= 1 && x <= nWidth - 1 && y >= 1 && y <= nHeight - 1 &&

m[y, x] > valve)

{

switch (dlta[y, x])

{

case 0:

break;

}

}

if (p[0] == 255)

{

m[y, x] = 1;

}

else

{

m[y, x] = 0;

p[0] = p[1] = p[2] = 0;

}

tt = p[0];

gray[tt]++;

p += 3;

}

}

m_Bits(bmData);

flag = 1;

graydo();

}

}

}

private void 车牌定位()

{

for (int i = 0; i < 256; i++)

{

rr[i] = 0;

}

for (int i = 0; i < 256; i++)

{

gg[i] = 0;

}

for (int i = 0; i < 256; i++)

{

bb[i] = 0;

}

BitmapData bmData = c_ts(new Rectangle(0, 0, c_,

c_), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

int stride = ;

System.IntPtr Scan0 = 0;

unsafe

{

byte* p = (byte*)(void*)Scan0;

int nOffset = stride - c_ * 3;

byte red, green, blue;

int nWidth = c_;

int nHeight = c_;

for (int y = 0; y < nHeight; ++y)

{

for (int x = 0; x < nWidth; ++x)

{

blue = p[0];

green = p[1];

red = p[2];

tt = p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114

* blue);

rr[red]++;

gg[green]++;

bb[blue]++;

gray[tt]++;

p += 3;

}

p += nOffset;

}

}

c_Bits(bmData);

flag = 2;

this.date();

date();

graydo();

}

}

private void c二值化()

{

if (c_Bitmap != null)

{

int Mr = 0;

long sum = 0;

int count = 0;

for (int i = 0; i < 256; i++) {

sum += gray[i] * i;

count += gray[i];

}

Mr = (int)(sum / count);

int sum1 = 0;

int count1 = 0;

for (int i = 0; i <= Mr; i++)

{

sum1 += gray[i] * i;

count1 += gray[i];

}

int g1 = sum1 / count1;

unsafe

{

int stride = ;

System.IntPtr Scan0 = 0;

byte* p = (byte*)(void*)Scan0;

int nOffset = stride - c_ * 3;

int nWidth = c_;

int nHeight = c_;

for (int y = 0; y < nHeight; ++y)

{

for (int x = 0; x < nWidth; ++x)

{

if (p[0] > va)

{

p[0] = p[1] = p[2] = 255;


更多推荐

车牌识别