车牌识别系统的设计与实现毕业论文

更新时间:2024-05-30 08:16:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

车牌识别系统的设计与实现毕业论文

目录

1引言 ........................................................................................................................ 1 1.1课题研究目的与意义 ..................................................................................... 1 1.2国内外研究现状 ............................................................................................. 3 1.2.1国内研究现状 ........................................................................................ 3 1.2.2国外研究现状 ........................................................................................ 4 1.3目前存在的问题 ............................................................................................. 5 2系统开发编程语言 ................................................................................................ 7 2.1 Visual C++介绍 ............................................................................................... 7 2.2 OpenCV介绍 .................................................................................................. 8 3系统的总体设计 .................................................................. 错误!未定义书签。 3.1需求分析 ....................................................................... 错误!未定义书签。 3.2软件系统组成 ............................................................... 错误!未定义书签。 3.3系统的层次结构 ........................................................... 错误!未定义书签。 3.4系统的软硬件环境 ....................................................... 错误!未定义书签。 4系统的详细设计 .................................................................. 错误!未定义书签。 4.1图像预处理 ................................................................... 错误!未定义书签。 4.1.1功能概述 .............................................................. 错误!未定义书签。 4.1.2问题分析 .............................................................. 错误!未定义书签。 4.1.3预处理方法及实现 .............................................. 错误!未定义书签。

i

4.2车牌定位 ....................................................................... 错误!未定义书签。 4.2.1功能概述 .............................................................. 错误!未定义书签。 4.2.2问题分析 .............................................................. 错误!未定义书签。 4.2.3车牌定位方法及实现 .......................................... 错误!未定义书签。 4.3车牌倾斜校正 ............................................................... 错误!未定义书签。 4.3.1功能概述 .............................................................. 错误!未定义书签。 4.3.2问题分析 .............................................................. 错误!未定义书签。 4.3.3倾斜校正方法及实现 .......................................... 错误!未定义书签。 4.4车牌图像分割 ............................................................... 错误!未定义书签。 4.4.1功能概述 .............................................................. 错误!未定义书签。 4.4.2问题分析 .............................................................. 错误!未定义书签。 4.4.3图像分割方法及实现 .......................................... 错误!未定义书签。 4.5车牌字符识别 ............................................................... 错误!未定义书签。 4.5.1功能概述 .............................................................. 错误!未定义书签。 4.5.2问题分析 .............................................................. 错误!未定义书签。 4.5.3字符识别方法及实现 .......................................... 错误!未定义书签。 5软件测试与分析 .................................................................. 错误!未定义书签。 5.1软件测试 ....................................................................... 错误!未定义书签。 5.1.1测试方法 .............................................................. 错误!未定义书签。 5.1.2测试平台及测试步骤 .......................................... 错误!未定义书签。 5.1.3测试结果与分析 .................................................. 错误!未定义书签。 5.2遇到的问题与解决方法 ............................................... 错误!未定义书签。 结束语 ..................................................................................... 错误!未定义书签。

ii

致谢 ......................................................................................... 错误!未定义书签。 参考文献 ................................................................................................................. 10 附录 ......................................................................................................................... 13

iii

1引言

1.1课题研究目的与意义

智能交通系统(Intelligent Transportation System,ITS)是人们将先进的信息技术、数据通讯传输技术、电子控制技术、传感器技术以及计算机处理技术等有效地综合运用于整个运输体系,从而建立起的一种在大范围内、全方位发挥作用的实时、准确、高效的运输综合管理系统。其目的是使人、车和路能够密切地配合,和谐地统一,极大地提高交通运输效率、保障交通安全、改善环境质量和提高能源利用率[1]。

在当今城市化高速发展的时代,随着社会经济的高速发展,机动车数量增长很快,全社会机动车保有量增长速度不低于经济增长速度。改革开放以来,中国道路交通设施及管理设施虽然有较大改观,但跟不上机动车增长速度。总体水平与发达国家有较大差距,特别是大多数城市路网结构不合理,道路功能不完善,道路系统不健全,交通管理设施缺乏,管理水平不高。即使各地都建立了交通控制中心,大多只是实现了监视功能,而远没有发挥控制功能的效应。

随着汽车数量的逐年递增,摆在我们面前的是巨大的城市交通压力。如何高效地进行交通管理,越来越成为我们现实生活中的焦点问题。针对这些问题,人们运用先进的科学技术,相继研制开发出了各种交通道路监视、管理系统,这些系统一般都包括车辆检测装置。通过这些装置对过往的车辆实施检测,提取相关的交通数据,达到监控、管理和指挥交通的目的,全面实现交通系统的智能化建设。

交通作为国民经济基础性产业,大力推进信息化,对于实现交通新的跨越式发展具有十分重要的意义。信息化是实现交通现代化的必然选择。在这种

1

大背景下如何建立一个集中、高效、快捷、网络化的智能交通管理系统就成为信息处理技术的一项重要课题。

智能交通系统的研究领域广阔,其中电子收费系统是 ITS 在公路收费领域的具体表现,其应用可解决收费站的“瓶颈”制约作用,较好地缓解收费站的交通拥挤、排队等候以及环境污染等问题。在电子收费系统中,由于收费过程需要实现自动化,车辆直接驶过收费站而不停车,因而对车辆准确迅速的识别和分类就成了关键的问题。为了满足这些需求,有必要在智能交通管理系统中引入车辆牌照自动识别技术。

汽车牌照是车辆最清晰、准确和唯一的标志。中华人民共和国交通部是这样陈述汽车牌照识别技术的:汽车牌照识别技术(License Plate Recognition, LPR)是一个以特定目标为对象的专用计算机视觉系统,该系统能从一幅图像中自动提取车牌图像,自动分割字符,进而对字符进行识别,它运用模式识别、人工智能技术,对采集到的汽车图像进行处理,能够实时准确地自动识别出车牌的数字、字母及汉字字符,并以计算机可直接运行的数据形式给出识别结果,使得车辆的电脑化监控和管理成为现实。

车辆牌照识别系统综合运用了图像处理、模式识别以及人工智能等方面的理论技术。系统主要包括:提取含有车牌的图像,对复杂背景中的车牌进行定位以及车牌上的字符切分和识别。车牌定位、字符切分、并运用独创的基于二值特征的识别算法和基于灰度特征的识别算法相结合,是 ITS 的一个重要组成部分,它的成功开发必将大大加速 ITS 的进程。

汽车牌照识别系统具有不影响车辆行驶状态,不需要车辆安装额外的设备,自动化水平高等优点。由于车辆牌照识别系统的处理方法简单有效,适用于多种不同环境,车辆牌照识别系统正成为 ITS 系统最主要的组成部分。车

2

辆牌照识别系统可以广泛地应用于众多车辆认证的实际系统中。 如它可以广泛应用在:高速公路收费、监管管理;停车场收费管理;偷盗车辆识别;城市交通路口“电子警察”;安防系统以及小区物业管理系统等。

汽车牌照识别系统是以图像识别技术为基础的智能交通管理系统,是21世纪世界道路交通管理的发展趋势。高速公路的车辆管理体制通过智能管理可以杜绝漏收、少收、人情收费和个别贪污的行为;可以实现特殊车辆的跟踪、丢失车辆的实时查询、小区车辆的科学管理以及道路车辆流量、型号的自动化统计。

汽车牌照的自动识别是车辆检测系统中的一个重要环节,可以切实有效地提高交通系统的车辆监控和管理的自动化程度,它在交通监视和控制中占有很重要的地位,是实现交通管理现代化和智能化的重要前提。汽车牌照的识别问题己成为现代交通工程领域中研究的重点和热点之一。 1.2国内外研究现状 1.2.1国内研究现状

车辆自动识别系统是以解决交通拥挤问题和高速公路多发事故问题而产生的,是近20 年来新兴起的一个跨学科的、系统化的综合研究体系,其目的是在不扩张路网规模的前提下,通过综合运用现代科学技术,来提高交通路网的通行能力和交通运输能力。

国内也有多家单位在进行这方面的研究,北京弗雷德科技有限公司,亚洲视觉科技有限公司,中科院沈阳自动化所的沈阳聚德公司,深圳市科安信实业有限公司,中国信息产业部下属的中智交通电子有限公司等也都有自己的产品。各个大学也有自己的研究,如西北工业大学开发了一套基于 OCR 的车辆号牌的识别系统;西安交通大学有基于视频的车辆号牌的识别系统;浙江大

3

学人工智能研究所也推出了一套车辆号牌的识别系统,据报道其号牌定位正确率为94%;上海交通大学叶晨周研制的车辆号牌的识别系统,据报道汉字、数字和字母的识别率都大于96%,车辆号牌的识别率为82%;同济大学关于车辆号牌自动定位分割算法的成功率据报道为90%,由上可得,都未见完全的识别率和识别正确率报道[2]。 1.2.2国外研究现状

车牌自动识别技术的研究国外起步地较早。早在 20 世纪 80 年代,便有一些零零散散的图像处理方法用于车牌自动识别的某些具体应用。在这个阶段,车牌自动识别技术的研究还没有形成完整的系统体系,一般采用简单的图像处理方法来解决某些具体问题,并且最终结果通常需要人工干预。

进入 20 世纪 90 年代后,车牌自动识别的系统化研究开始起步。典型的如A.S.Johnson等提出车辆牌照的自动识别系统分图像分割(Image Segment)、特征提取(Feature Extraction)和模板构造(Template Formation)、字符识别(Character Recognition)等三个部分,完成车牌的自动识别。R.A.Lotufo 使用视觉字符识别技术(Optical Character Recognition Technology)分析所获得的图像,首先在二值化图像中找到车牌,然后用边界跟踪技术提取字符特征,再利用统计最邻近分类器(Statistical Nearest Neighbor Classifying System)与字符库中的字符比较,得出一个或几个车牌候选号码,再对这些号码进行核实检查,确定是否为该车牌号码,最终确定车牌号码。这个时期的应用在识别正确率方面有所突破,但还没有考虑识别实时性的要求,识别速度有待进一步提高。

目前国际上,一些发达国家已经将车牌识别技术广泛应用于实际中了。例如,以色列 Hi-tech 公司的 see/car system 系列,新加坡 Opt Asia 公司的 VLPRS系列都是比较成熟的产品。其中 VLPRS 产品主要适合新加坡的车牌,

4

Hi-tech公司的 see/car system 有多种变形的产品来分别适应某一个国家的车牌。see/car system 系统可以对中国大陆的车牌进行识别,但不能识别车牌中的汉字,另外日本、加拿大、德国、意大利、英国等各个西方发达国家都有适合本国车牌的识别系统[3]。 1.3目前存在的问题

车牌识别系统在国内外研究都有一段时间了,国外的车牌识别系统有一定的应用,但是国内的车牌识别系统总体上来说还处于实验室阶段,识别率不高,原因具体体现在以下几点[4]。

首先,在具体应用中采集到的图片背景比较复杂,这对于图像的处理明显增加了难度。

其次,采集得到的图片受天气、光照等的影响,故在图像处理过程中需要利用有效的算法排除光照、天气对图像的影响,这无疑对我们车牌识别系统的算法提出了更高的要求。这就需要研究性能更好的算法来提高算法的鲁棒性。

第三,在实际采集的图片中,很多采集到的车牌是旧车车牌,或者车牌表面不洁净,这造成图片中的车牌区域很模糊、车牌区域的颜色信息丢失、车牌字符粘连等情况。这对车牌的定位、分割、识别都增加了难度。

第四,由于在路上行驶的车辆所挂的车牌多是在标准 GA36-1992 下生产的,由于该标准的不严密性,在该标准下生产的号牌其色度值分布范围广,再加上上一条原因,使得采集所得到的号牌其色度值分布范围广泛,从而加大了我们利用该信息的难度。

第五,在国内的车牌识别系统需要解决的一个难题就是在字符识别过程中的对汉字的识别问题。由于中国汉字复杂、笔画多、分布较密,再加上如果

5

图像的分辨率如果不是很高的话,那么图像中汉字将粘连在一起从而很难辨别。

在同一幅图像中,上面提到的困难可能几项都存在而不仅仅是单一困难的存在,当其中几项困难一起存在时,其带来的难度并不是简单相加的过程,所以难度更大。这些就是存在于车牌识别系统中的一些问题,从这些问题中,我们也能看到车牌识别系统的难度。

6

2系统开发编程语言

2.1 Visual C++介绍

VC 是一个面向对象的可视化集成开发系统,它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单设置就可使其生成的程序框架支持数据库接口、OLE2、WinSock网络、3D控制界面。VC以拥有语法高亮、只能感知(在编辑环境中,光标悬停在函数上时显示类定义和注释,键入函数或属性名时可以自动完成名称的输入)、高级除错、最小重建及累加链接功能而著称,这些特色功能有助于缩短程序编辑、编译及链接的时间花费,在大型软件开发中效果尤其显著[5]。

VC 已历经数个版本,伴随着Microsoft.NET计划的展开,又诞生了一系列VC.NET版本,从当年1.0版本到现在最新的VC 2010(10.0 版本),VC 在界面、功能、库支持方面都增强了很多。

VC 1.0 是Microsoft公司于 1993 年推出的,它集成了MFC 2.0(MFC是一个以C++类的形式封装了Windows API 的基础类库,其中包含一个应用程序框架、大量 Windows 句柄封装类和很多Windows 的内建控件和组件的封装类,1992 年随着微软的 Microsoft C/C++ 7.0 编译器发布,可以减少应用程序开发人员的工作量),可算是Microsoft C/C++ 7.0 的更新版本。VC 1.5 集成了MFC 2.5,增加了OLE 2.0 和支持 MFC 的 ODBC。VC 2.0 集成了MFC 3.0。VC 4.0 集成了MFC 4.0,这个版本是专门为Windows 95 以及 Windows NT 设计的。由于VC 2.0 是在 Windows 95 之前发布的,其发布时间与 Windows 95 非常接近,当Windows 95 发布时,VC 4.0 也已经发布了,很多程序员直接从 1.x 过渡到 4.0,把 2.x 跳过去了,所以 VC 2.0 应用并不广泛。VC 5.0 集成

7

了MFC 4.21,是4.2版以来比较大的一次升级。VC 6.0 集成了MFC 6.0,于 1998 年发布,发布至今一直被广泛地应用于大大小小的项目开发。VC.NET 2002(VC 7.0)于 2002 年发布,集成了 MFC 7.0,支持.NET 1.0,支持链接时代码生成和调试执行时检查。VC.NET 2003(VC 7.1)集成了MFC 7.1,于2003年发布,支持.NET 1.1。VC 2005(VC 8.0)集成了MFC 8.0,于 2005 年发布,支持.NET 2.0,该版本引进了对C++/CLI 语言和 Open MP 的支持。VC 2008(VC 9.0)集成了MFC 9.0,于 2007 年发布,支持.NET 3.5。VC 2010(VC 10.0)于 2010 年发布,集成了MFC 10.0,支持.NET4.0,支持 C++0x 新标准。

Visual C++ 作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。Microsoft 的基本类库 MFC 使得开发Windows应用程序比以往任何时候都要容易。C++提供的各种函数、指针操作和直接对硬件操作使得图像处理速度较快,专门为VC++设计的OpenGL和DirectX技术可以使开发人员在 Windows 环境下比较容易地完成图像图形的高性能处理和显示。用 VC++ 编制的应用软件无论在处理速度和图像的显示等方面都表现出较高的效率,因此在编制基于 Windows 的各类数字图像处理程序时,VC++是程序人员进行图像处理的最佳选择。 2.2 OpenCV介绍

OpenCV(Open source Computer Vision library)是 1999 年由 Intel 公司开发的图像处理和计算机视觉开放源码库,它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法[6]。现在由Willow Garage实验室提供支持。OpenCV 提供C++、C和Python接口,可以运行在Linux、Windows、Mac OS和Android 操作系统上。

OpenCV拥有包括 500 多个C/C++函数的跨平台的中、高层API,具有强

8

大的图像和矩阵运算能力。截止到 2012 年年初,OpenCV 已发展到 2.3.1 版本。每一次版本升级都伴随着众多的函数更新和优化。

早期版本的 OpenCV 包括 CxCore、Cv、CxAuv、HighGUI 和 ml 5 个主要模块。CxCore 包括一些基本结构和算法函数,如数据结构和线性代数支持,主要提供对各种数据类型的基本运算功能;Cv 主要实现图像处理和计算机视觉功能,包括图像处理、结构分析、运动分析、物体跟踪、模式识别及摄像机标定等功能;CxAuv 是 OpenCV 附加库函数,包括一些实验性的函数,如View Morphing、三维跟踪、PCA(Principal Component Analysis)和 HMM(Hidden Markov Model)等函数;HighGUI 是用户交互部分,包括 GUI(Graphical User Interface,图形用户接口)、图像视频 I/O 和系统调用函数等;ml是机器学习模块,只要内容为分类器。OpenCV 中曾经还有一个 CvCam 模块,但从 1.1 版本开始 OpenCV 便不再包含它,其功能被 HighGUI 所取代。

由于OpenCV提供的视觉处理算法非常丰富,并且它部分以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,所以用它来进行图像处理非常方便。本系统就是在VC++平台上使用MFC构建了一个软件,结合OpenCV视觉库针对车牌识别系统中各流程进行编程设计。

9

本文来源:https://www.bwwdw.com/article/ty96.html

Top