毕业设计(论文)-C++6.0车牌识别系统设计_第1页
毕业设计(论文)-C++6.0车牌识别系统设计_第2页
毕业设计(论文)-C++6.0车牌识别系统设计_第3页
毕业设计(论文)-C++6.0车牌识别系统设计_第4页
毕业设计(论文)-C++6.0车牌识别系统设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(论文)摘要摘要随着信息技术和智能技术的发展,交通管理系统的信息化、智能化已成为发展的趋势。车牌识别系统(LPR)是智能交通系统的核心组成部分,在现代交通收费管理系统中发挥着举足轻重的作用,而车牌定位又是车牌识别系统中的重要环节。近年来,对车牌识别系统中关键技术的研究已经成为智能交通领域的一个热点问题。本文对车牌识别系统中的车牌定位算法进行了比较深入、全面的分析与论述.基于编程软件MicrosoftVisualC++6.0平台,利用数字图像处理对车牌定位算法进行了实现,并得到了预期的效果。主要步骤包括以下几个方面:1.采集到的彩色图像转换为灰度图像后,采用直方图均衡化方法对车牌图像进行图像增强。2.使用Sobel算子对图像进行边缘处理,并进一步加深,为车牌定位做好准备工作。3.针对车牌定位问题,采用模板匹配算法确定车牌区域,即用一个与车牌部分相似的模板图像与原图像进行比较,确定原图中有与该模板相同或相似的区域就是车牌所在的区域,进而定位出车牌。实验结果表明,对图像进行一系列的处理后进行模板匹配,定位出了车牌所在的区域,达到了预期的目标。关键词:车牌定位;MicrosoftVisualC++6.0;数字图像处理;图像转换;模板匹配东华理工大学软件学院毕业设计(论文)目录(论文)ABSTRACTABSTRACTWiththeinformationtechnologyandintelligenttechnologydevelopment,thetrafficmanagementsystemandintelligenceinformationhasbecomethedevelopmenttrend.Licenseplaterecognitionsystem(LPR)isthecoreoftheintelligenttransportationsystemcomponents,inmoderntransportationchargesadministrationsystemplaysanimportantroleinandlicenseplatelocalizationisanimportantlinkinthelicenseplaterecognitionsystem.Inrecentyears,thesystemofvehicleplaterecognitionofthekeytechnologyresearchinthefieldofintelligenttransportationhasbecomeahotissue.Inthispaper,thelicenseplateidentificationsystemoflicenseplatelocalizationalgorithmismorethorough,comprehensiveanalysisanddiscussed.BasedonthesoftwareMicrosoftVisualC++6.0platform,usingdigitalimageprocessingtolicenseplatelocalizationalgorithmwasrealized,andtogetthedesiredresults.Mainstepsincludethefollowingaspects:Thecollectedcolorimagesintothegrayimage,themethodofhistogramequalizationlicenseplateimageoftheimageenhancement.UseSobeloperatortodoimageedgeprocessing,andfurtherdeepen,licenseplatelocationreadyforwork.Accordingtolicenseplatelocationproblem,atemplatematchingalgorithmsareusedtodeterminethelicenseplatearea,whichisapartofthelicenseplatewithsimilartemplateimagecomparisonwiththeoriginalimage,sureinthetemplatewiththesameorsimilarareaiswherethelicenseplatearea,andlocatethelicenseplate.Theexperimentalresultsshowthattheimageofaseriesofprocessingafterthetemplatematching,positioningoutofthelicenseplatearea,achievetheexpectedgoal.Keywords:Licenseplatelocation;MicrosoftVisualC++6.0;Digitalimageprocessing;Imagetransformation;Templatematching目录绪论 20.1选题背景和意义 20.2主要技术及应用领域 30.3国内外研究现状 41.MicrosoftVisualC++6.0简介 61.1MicrosoftVisualC++6.0的发展历程 61.2 MicrosoftVisualC++6.0的基本特点 71.3MicrosoftVisualC++6.0的新特点 72.车牌图像预处理 82.1车牌图像的获取 82.2图像灰度化 82.2.1灰度变换增强 92.2.2灰度变换 102.3灰度直方图 122.4直方图均衡化 122.5图像的边缘检测 132.6本章小结 163.车牌的定位 173.1车牌的特征 173.2车牌定位常用方法 183.2.1车牌区域内字符的纹理特征 183.2.2颜色特征 183.2.3频谱分析法 193.3车牌定位算法 193.3.1车牌定位方法的基本思路 193.3.2图像灰度化 203.3.3绘制直方图 223.3.4图像均衡化 243.3.5边缘检测 253.3.6模板匹配 273.4本章小结 30结论与展望 31致谢 32参考文献 33绪论0.1选题背景和意义随着世界经济的发展,各国汽车数量不断增加,城市交通拥挤和堵塞状况口益受到人们的重视。如何有效地进行交通管理,越来越成为各国政府和有关部门所关注的焦点问题。针对交通迅速发展所引起的一系列问题,智能交通系统ITS(IntelligentTransportationSystem)的思想被提到了重要位置。它是以信息技术为代表的高新技术在道路交通运输中的集成应用,是先进的信息技术、数据传输技术、控制技术数字图像处理技术及计算机处理技术等技术结合应用的综合管理系统。车牌识别系统(LicensePlateRecognitionSystem)正是在这种应用环境下提出来的,它是能自动、实时地检测车辆经过和识别车辆牌照号码的智能交通管理系统的重要组成部分。车牌识别系统是智能交通系统中一个非常重要的方向,主要由图像采集、车牌定位、字符分割以及字符识别四部分组成,己经越来越受到人们的重视。它具有良好的实际应用价值,目前主要应用于公路治安卡口、开放式收费站、车载移动查车、违章记录系统、门禁管理、停车场管理等场合。为了避免人工干预所带来的弊端,提高管理效率,要求车牌识别系统有更高的准确率、智能化和实时性。车牌定位的技术已经越来越受到政府的重视。车牌识别系统在高速公路自动收费系统、道路交通监控、交通事故现场勘察、停车场自动安全管理、智能园区管理、交通违章自动纪录等方面都有着广泛的应用前景,并且可开发的经济潜力巨大。我国从70年代开始在传统的交通运输和管理中应用了电子信息技术,随着社会的发展与进步,我国的道路在未来20年内仍然处于建设阶段,这期间正是智能交通系统在世界范围内进入全面实施的阶段,因此由我国公路交通的实际需要来说,对在我国公路网中应用智能交通系统来提高交通效率、保障安全和保护环境进行探讨,是十分必要的。目前,对汽车牌照进行识别可以采用IC卡识别技术或者条形码识别技术两种,但是由于造价昂贵和必须要在全国制定统一的标准等问题,使得这两种方法推广不易。而基于数字图像处理的车牌识别是一种智能识别方法,这种方法不需要在汽车上安装任何发送车牌号码的车载发射设备,对运动或者静止的车辆均可以进行非接触性信息采集并实时识别,从而节省了辅助设备,降低了成本,提高了识别速度,可以较好的解决实时性和异地适应性问题。但是由于天气、环境、照明、车速以及车辆自身的状况等很多原因,所得到的图像可能存在大量的噪声和变形,同时还有可能存在车牌被遮挡的情况,从而影响识别率。另外,利用数字图像处理技术进行车牌识别还有一个十分显著的特点,就是所采用的识别算法对车牌识别的正确率和识别速度有直接的影响。因此,研究基于数字图像处理的汽车牌照识别方法,对提于高车牌识别算法的性能具有十分重要的实际意义。0.2主要技术及应用领域智能车牌识别是车辆管理的重要前提和关键技术,车牌定位又是其核心内容,主要可分为间接法和直接法两种。间接法是基于无线射频识别技术(RadioFrequencyIdentification,简称RFID,俗称电子标签)的自动检测识别方法;直接法是基于图像处理技术的检测识别方法。车牌识别使用的技术包括:IC卡识别、条形码识别、数字图像处理、传统模式识别和人工神经网络等。1.IC卡识别技术IC卡是一种高科技产品,它集成了微电子技术、通讯技术和计算机技术,这种识别技术是将车牌号码以及其它信息存储于安装在车辆上的一个微型电子信号的接收、发射装置即IC卡上,车辆通过检测装置时,司机持IC卡在读卡机附近晃动,IC卡与读卡机交换信息,使之识别出车牌信息。虽然IC卡识别误差率小、运行可靠、可以全天候作业,但整套装置昂贵,设备硬件复杂,不适用于异地作业,且需要全国范围内统一标准,所以难以推广。2.条形码识别技术条形码技术已被广泛应用于众多领域,如超市销售、图书借阅管理、邮政管理、仓库进出货管理等。而条形码技术被用于车牌照识别还是一种新方法,这种方法是在车辆侧面印刷包含车型、车牌号等信息的条形码,当车通过检测装置时,条形码所含信息被读取,从而实现识别功能。虽然条形码识别误差率小、识别速度快、成本低、可靠度高,但该技术对扫描器有着很高的要求,且同IC卡一样需要全国范围内统一的标准,所以可用性不高。3.数字图像处理技术数字图像处理(DigitalImageProcessing)是利用计算机或其它数字硬件将图像信号转换成数字信号并进行处理的过程。亦即把空间上离散、在幅度上量化分层的数字图像,用特定的数学、物理模型处理,从而得到要求所需图像的过程。基于数字图像处理技术的车牌识别系统,是运用图像处理技术提取并处理车牌信息,从而实现车牌识别。这种识别方法具有低成本、识别速度快、对硬件依赖小等优点,但车牌识别由于复杂背景已经光照条件的影响,其识别率的高低主要取决于识别算法。4.传统模式识别技术传统模式识别技术是基于计算机视觉技术(ComputerVisionTechnique)的发展而出现的,包括模板匹配算法、统计特征法等。运用计算机视觉技术开发出的车牌识别系统分为图像分割、特征提取和模板构造、字符识别等三个部分。识别分为两步:先根据闭值对应的直方图分割出车牌,再使用预先设置好的标准字符模板进行模式匹配。这种识别方法的识别率高,但是识别速度较慢。5.人工神经网络技术使用人工神经网络解决车牌识别问题是近几年出现的技术。由于人工神经网络技术具备自适应学习功能,并能进行分布式信息存储,还具有并行计算以及较强的容错能力等优点,所以人工神经网络技术能较好的解决车牌识别中因字符残缺不完整而无法识别的问题。但它的初始权值常取为零或随机数,这无形中增加了网络的训练时间或使系统容易陷入非要求的局部最小值。总结上述技术,可以得出这样的结论:现阶段,基于数字图像处理技术的车牌识别方式仍然是主流方式,具有很强的可行性。智能车牌识别系统主要应用在以下领域:停车场管理:对持用相同的RFID的车辆,检查车牌是否相同。智能停车场对车牌识别的要求主要集中在准确度方面,对时间要求不是很苛刻。治安卡口,车辆稽查:在城市的交通要道,架设“电子眼”,及时获取“肇事逃逸”车辆地理信息。对车牌识别准确度和速度都有较高要求。另外整个系统应该有强大的数据支持,保存历史资料。高速公路收费:目前很多高速公路是“贷款筑路,收费还钱”。联网收费时,需要通过车牌识别系统计算汽车高速公路里程。移动稽查:官方为打击走私、偷税、违禁等的非法活动,对疑犯车辆进行跟踪。用车牌识别系统快速检查过往车辆。地磅称重管理:用于库存管理。交通信息采集:对卡口车辆进行统计,依靠车牌识别对过往车辆计数。获得车流密度随时间变化的关系。路桥、隧道收费:类似高速公路,实现过往车辆自动收费。同时记录车辆过往时的照片,方便收费系统核实。重要机关单位汽车出入口管理:重要机关单位(比如驻军部队)管理出入车辆。要求车牌识别系统能够识别军用车牌。闯红灯记录:车牌识别系统实时接收红灯信号,根据路口逻辑计算车道上是否允许通过车辆,对违规车辆进行记录,并自动提交罚单。城市交通管理:配合指纹识别,人脸识别对城市交通进行管理。比如限制超载,或者记录车内乘客过少(为了保护环境,轿车内最好有三个以上的人)情况。0.3国内外研究现状国外的研究人员对于车牌识别的研究工作开展较早,研究方向主要是分析车牌图像,提取车牌信息,确定车牌号。现如今,国外在车牌检测、识别方面的研究已取得一些令人瞩目的成绩,开发出了很多技术成熟的车牌识别产品。例如英国IPI公司研究开发的RTVNPR系统,它是一款便携式的设备,可以应用在道路收费站、交通检测口等场所;新加坡Optasia公司自行研发的车牌识别系统IMPS,可以在各种天气条件和光照环境下准确定位识别,给出和车牌一致的处理结果。另外,日本、加拿大、德国、意大利等各发达国家都有适合于本国车牌的识别系统。国外比较好的车牌定位算法有:J.Barroso等人提出的基于水平线搜索的车牌定位方法;R.Parisi等人提出的基于DFT变换的频域分析的车牌定位方法;CharlCoetzee提出的基于Niblack二值化算法以及自适应边界搜索算法的车牌定位方法等。我国对车牌识别技术的研究工作开始于20世纪90年代,当前比较成熟的产品有:北京汉王公司采用DSP芯片作为识别算法的运行硬件平台的“汉王眼”;深圳吉通电子有限公司的“车牌通”;上海高德威智能交通系统有限公司的汽车牌照识别器;川大智胜软件股份有限公司的zTZ000车牌自动识别系统等等。这些产品都达到了较好的识别效果。除此之外,上海交通大学计算机科学和工程系、西安交通大学的图像处理和识别研究室、浙江大学的自动化系、清华大学人工智能国家重点实验室等也都在进行类似的研究。国内常用的车牌定位技术有:基于彩色图像的定位算法;基于边缘检测的定位算法;基于灰度值变化的定位算法;基于神经网络的定位算法;基于遗传算法的定位算法;基于数学形态学的定位算法等。由于车牌图像在采集和传输过程中不可避免受到各方面因素的影响,因此目前为止还没有一种最优定位算法。车牌定位目前仍然有以下几个难点:(1)环境干扰。主要是光线对车牌的干扰;(2)背景干扰。图像背景复杂多变,一些背景区域有车牌区域类似的纹理结构;(3)车牌污损干扰。车牌因为各种外界或人为原因造成了污损,给定位带来一定的难度;(4)图像干扰。采集到的图像由于各种原因发生畸变,很大程度上影响定位的准确率。1.MicrosoftVisualC++6.0简介1.1MicrosoftVisualC++6.0的发展历程自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。MicrosoftVisualC++1.0:集成了MFC2.0,是VisualC++第一代版本,1992年推出,可同时支援16位处理器与32位处理器版,可算是MicrosoftC/C++7.0的更新版本。MicrosoftVisualC++1.5:集成了MFC2.5,增加了“目标文件链接嵌入(OLE)2.0和支持MFC的开放式数据库链接(ODBC)。这个版本只有16位的,也是第一个以CD-ROM为软件载体的版本。这个版本也没有所谓“标准版”。它是最后一个支持16位软件编程的软件,也是第一个支持基于x86机器的32位编程软件。MicrosoftVisualC++2.0:集成了MFC3.0,第一个只发行32位的版本。这个版本提前发行了,几乎成了一个“丢失的版本”。这是因为那个时候Windows95(开发代码为"Chicago")还没有发行,而WindowsNT又只占有很小的市场份额。该版本用户可以通过微软公司的订阅服务(MicrosoftSubscriptionService)升级至2.1和2.2版本。微软公司在这个版本中集成并升级了VisualC++1.5,作为2.0版本(VisualC++1.5升级后版本号:1.51)以及2.1版本(VisualC++1.5升级后版本号:1.52)的一部分。VisualC++2.x附带了16位和32位版本的CDK,同时支持Win32s的开发。VisualC++2.2及其后续版本不再升级VisualC++1.5(尽管它一直被集成至VisualC++4.x)。尽管出生的比Windows95早,这个版本的发行日期还是非常接近Windows95,可是当Windows95发行时,VisualC++4.0也已经发行了。因此很多程序开发者直接从1.x过渡到4.0,把2.x跳过去了。MicrosoftVisualC++4.0:集成了MFC4.0,这个版本是专门为Windows95以及WindowsNT设计的。用户可以通过微软公司的订阅服务(MicrosoftSubscriptionService)升级至4.1和4.2版本(此版本不再支持Win32s开发)。MicrosoftVisualC++5.0:集成了MFC4.21,是4.2版以来比较大的一次升级。MicrosoftVisualC++6.0:集成了MFC6.0,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。但是,这个版本在WindowsXP下运行会出现问题,尤其是在调试模式的情况下(例如:静态变量的值并不会显示)。这个调试问题可以通过打一个叫“VisualC++6.0ProcessorPack”的补丁来解决。MicrosoftVisualC++6.0的基本特点VisualC++6.0由Microsoft开发,它不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。Microsoft的主力软件产品。VisualC++是一个功能强大的可视化软件开发工具。VisualC++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。MicrosoftVisualC++6.0应用程序的开发主要有两种模式,一种是WINAPI方式,另一种则是MFC方式,传统的WINAPI开发方式比较繁琐,而MFC则是对WINAPI再次封装,所以MFC相对于WINAPI开发更具备效率优势。MicrosoftVisualC++6.0的优点是界面简洁,占用资源少,操作方便。由于C++是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。仅支持Windows操作系统。目前发现与windows7兼容性不好,安装成功后可能会出现无法打开cpp文件的现象。1.3MicrosoftVisualC++6.0的新特点●支持WindowsAzure,微软云计算架构迈入重要里程碑。●助力移动与嵌入式装置开发,三屏一云商机无限。●实践当前最热门的Agile/Scrum开发方法,强化团队竞争力。●升级的软件测试功能及工具,为软件质量严格把关。●搭配Windows7,Silverlight4与Office,发挥多核并行运算威力,创建美感与效能并重的新一代软件。●支持最新C++标准,增强IDE,切实提高程序员开发效率。2.车牌图像预处理在景物成像的过程中,受多种因素的影响,图像质量都会有所下降,这种图像质量下降的过程称为图像的退化。同样,在车牌识别系统中,由于自然光照度的变化、车辆自身的运动,采集图像设备本身的因素等,都会引起牌照图像的退化,导致对车牌信息的提取干扰很大。所以为了改善退化了的牌照图像质量,必须对图像进行预处理。对图像进行预处理,主要包括图像的灰度化、均衡化、图像的边缘检测等。2.1车牌图像的获取进行车牌图像预处理之前,先要获得一幅汽车图片,车辆图像的采集是整个系统的第一步,采集的图像效果好坏直接影响后续的处理,一般车辆图像都是室外拍摄,因此不可避免地受到自然光线、季节等的影响。在动态的车辆牌照识别中,图像的采集和后续的识别工作应该是紧密相连的,要能体现实时性,不能有太长的延时,否则就没有多大的实用价值。传统的以地感线圈和采集卡为核心的汽车收费系统的设计如下:硬件设备包括车道前线圈传感器、抓拍控制器、CCD摄像头、图像采集卡、辅助照明设备和工控计算机等,信号的触发机制有地感触发、红外线触发以及电子标签触发等等,在这里对车道前线圈传感器具体采用地感触发的地感线圈,当地感线圈感应到汽车通过关口时,发出信号给抓拍控制器,抓拍控制器控制图像采集卡采集车辆图像并数字化后送入计算机,经车牌识别软件得到车牌字符,由收费系统查询相应的数据库或添加新的车牌记录,进行收费、统计、查询以及通缉报警等操作。近年来,数码相机以其高分辨率、方便、快捷等优点受到广泛关注。基于数码相机的图像采集系统框图如图2.1所示。数码相机摄取图像后通过串行口传输到计算机进行处理,计算机可通过相机的驱动软件直接控制数码相机。图2.1基于数码相机的图像采集系统框图2.2图像灰度化目前,我们对车牌原始图像的采集大都是通过摄像机、数码相机等设备来拍摄获取的。因此,一般情况下我们得到的都是彩色图像。彩色图像包含大量的颜色信息,它的每个像素都具有二个不同的颜色分量R,G,B,所以其需要占用的存储空间很大,而在对其进行处理时也会浪费较多的系统资源,会降低系统的执行速度。而灰度图是只含亮度信息不含色彩信息的图像,其中亮度值量化为256级。灰度图进行算法处理相对方便,首先RGB值一样,目_图像数据就是调色板索引值,也就是实际的RGB亮度值,又因调色板是256色的,所以图像数据中一个字节代表一个像素。如果是彩色的256色,则经过图像处理算法后,可能产生不属于这256种颜色的新颜色,而真彩色RGB图像必须用二个与图像尺寸相同的矩阵来存储,这样计算代价过大。所以,在实验室中一般采用256级灰度图来进行处理。拍摄的车辆图像默认为24位真彩色图像。常规的灰度化转换方法为:首先将原始图像从RGB空间转化为YCbCr空间,Y分量包含亮度信息,Cb分量包含色度信息,Cr分量包含饱和度信息,然后仅提取Y分量即生成灰度图。彩色图像由RGB空间变换为YCbCr空间的转化关系为:彩色图像由YCbCr空间变换为RGB空间的转换关系为:所以,最终得到RGB颜色和灰度值的转换关系:由于处理灰度图像的速度会比处理彩色空间的图像快很多,加上在拍摄照片时,不可避免的受到天气和光线的影响导致车辆本身的颜色区分度不够明显,因此绝大多数的LPR系统采取对灰度图像进行处理。本文所研究的算法也是在灰度图的基础上进行的,值得注意的是首先提取了色彩方面的相关信息,然后把图像的格式转换为256色的BMP文件(即位图文件),对256色位图进行灰度化等处理。在转换的过程中图像往往会出现一定的损失,所以又称有损转换。2.2.1灰度变换增强由于车牌图像在拍摄时受各种各样条件的限制和干扰,图像的灰度值往往与实际景物不完全匹配。一般成像系统只具有一定的亮度范围,亮度的最大值和最小值之比称为对比度。由于成像系统的亮度有限,常出现对比度不足的情况,使人眼观看图像时视觉效果很差,这将直接影响到图像的后续处理。通过灰度变换可以增强对比度,改善视觉效果。2.2.2灰度变换如果造成对比度不足的原因主要是由于被摄目标的远距不同,使得图像中央区域和边缘区域的灰度失衡,或是由于摄像头在扫描时各点的灵敏度有较大的差异而产生图像灰度失真,或是由于曝光不足或过度而使得图像的灰度值被限制在一个很小的范围。这时人们看到的将是一个模糊不清、似乎没有灰度层次的图像。可以采用灰度变换的方法来处理,增强灰度的变化范围、丰富灰度层次,达到增强图像对比度的目的。用一个线性单值函数,对图像内的每一个像素作线性扩展,将有效的改善图像的视觉效果。如果原图像f(x,y)中,大部分像素的灰度级在一个比较小的范围内,或者我们只对灰度级在某一范围内的像素感兴趣,设这一灰度范围为[a,b]。经过线性灰度变换后,可以将这一灰度范围[a,b]扩展到图像到g(x,y)中一个比较大的灰度范围[c,d],其中g(x,y)为进行灰度变换后的图像,并且有|d-c|>|b-a|。如图2.2所示,f(x,y)和g(x,y)之间的灰度变换关系如下:从灰度直方图分析,由于|d-c|>|b-a|,所以对离散图像来说,尽管变换前后像素的个数不变,但是不同像素之间的灰度差变大,图像质量优于变换前。但是这种两端截取式的变换使小于灰度级a和大于等于灰度级b的像素分别强行变为c和d,这将会造成一小部分图像信息的丢失。图2.2线性灰度变换图2.3分段线性灰度变换同理,可以采取分段线性灰度变换,将图像灰度区间分成两段或多段分别线性变换。分段线性变换的优点是可以根据需要,拉伸感兴趣的灰度范围,相对抑制不感兴趣的灰度范围。分成二段进行线性变换如图2.3所示,变换公式如下:图2.3中对灰度范围[a,b]进行了灰度扩展,而对灰度范围[0,a]和[b,m]进行了压缩。通过调整折线拐点的位置和分段直线的斜率,可以对任意灰度范围进行扩展或压缩。用某些非线性函数,例如对数函数、指数函数等作为映射变换函数时,可以实现图像灰度的非线性变换。对数变换一般为:其中a,b和c为可调参数,用于调整曲线的位置和形状,它使图像的低灰度区得以扩展,而高灰度区得到压缩。与之相对应的指数变换一般为:其中a,b和c为可调参数,用十调整曲线的位置,它的效果与对数变换的相反,它使图像的高灰度区进行扩展,而对图像的低灰度区进行压缩。利用对数函数进行灰度变换在实际应用中有重要意义,它能扩展低灰度区,符合人们在视觉上的主观感觉。2.3灰度直方图灰度直方图(Histogram)是灰度级函数的显示,描述的是图像中具有该灰度级的像素的个数,横坐标为灰度级,纵坐标为图像中该灰度级出现的频率。灰度直方图是图像最基本的统计特征,也是数字图像处理一种实用工具。灰度直方图具有以下三个特性:(l)直方图位置的缺失性。指的是直方图只反映图像中不同灰度级出现的频数,而不反映某一灰度值像素所在位置。(2)直方图与图像的一对多映射特性。指的是任意一幅图像都有唯一确定的一幅直方图与之对应,而任意一幅直方图可能反映的是不同图像的灰度级分布。(3)直方图的可叠加性。指的是一幅图像各子区域的直方图之和等于该图像全图的直方图。直方图的计算非常简单,令r示灰度级nr表示具有r灰度级像素的个数,n表示图像总的像素个数,则图像概率密度函数可表示为:坐标系中作出与Pr(r)的关系图形,即为该图像的直方图。车牌图像具有用L级灰度(L=256,即8位灰度),大小为m_1Hight*m_1Width,则灰度直方图可以用如下算法得到:(1)初始化m_1Count[i]=0;i=0,…,L-1。(2)统计m_1Count[f(x,y)]++:x,y=0…,m_1Height-1,0,…,m_1Width-1。2.4直方图均衡化灰度直方图反映的是数字图像中每一灰度级与其出现频率之间的关系。它与图像的清晰性有如下关系:(1)暗图像对应的直方图组成成分分布在灰度值较小的左边一侧。(2)明亮的图像对应的直方图组成成分则分布在灰度值较大的右边一侧。(3)对比度较低的图像对应的直方图窄而集中于灰度级的中部。(4)对比度高的图像对应的直方图分布范围很宽而且分布均匀。因此,灰度直方图反映了图像的清晰程度,当直方图分布均匀时,图像最清晰。通过修改灰度直方图的方法增强图像是一种实用并且有效的图像增强技术。直方图均衡化(HistogramEqualization)就是这样一种把给定图像的直方图分布变换成均匀直方图分布的新图像的方法。通过直方图均衡化使给定图像中具有灰度近似且占有大量像素点的区域的灰度范围展宽,使大区域中的微小灰度变化显现出来,使图像更清晰,突出了所需目标信息。由信息学的理论来解释,具有最大嫡(信息量)的图像为均衡化图像。直观地讲,直方图均衡化导致图像的对比度增加。直方图均衡化处理以累积分布函数变换法为基础。设;代表原图像中像素的灰度级,在灰度级中r=0代表黑,r=1代表白,r∈[0,1],变换函数为:式中ω是积分变量,T(r)是r的累积分布函数。这里,累积分布函数是r的函数,且从0到1单调增加,所以变换函数s=T(r)满足以下两个条件:1)T(r)0<r<1内单调增加,保证灰度级从黑到白的次序不变;2)在0<r<1内有0<T(r)<1,保证映射后的像素灰度值在允许范围内。经推导,用r的累积分布函数作变换函数,产生的是一幅灰度级分布具有均匀概率密度的图像。其结果扩展了像素取值的动态范围。当灰度级是离散值时,可用频数近似代替概率值,则其累积分布函数为:车辆灰度图像直方图均衡化算法流程如下:(1)遍历整个图像中的所有像素点,用一个数组m_1Count[]记录统计图像中各灰度级像素点的数目nk,k=0,1,…,l-1;(2)创建一个新数组bMap,用其记录原来灰度值与新灰度值之间的映射关系。映射关系可以表示为bMap[i]_(BYTE)(1Temp*255/(1Height*1Width)),其中1Temp为原灰度统计数组中低于灰度值i的所有像素点的个数之和,1Height、1Width分别为图像的高度和宽度;(3)将当前点的灰度值更新为映射后的灰度值。根据原图像的直方图统计值就可以算出均衡化后各像素的灰度值。按上述步骤对图像进行均衡化处理时,直方图上灰度分布较密的部分被拉伸,灰度分布稀疏的部分被压缩,从而使一幅图像的对比度在总体上得到很大的增强。直方图均衡化的结果如图所示。可以看出直方图均衡化以后的图像对比度得到了增强,它的直方图接近十均匀分布,各灰度级出现的概率基本相同。2.5图像的边缘检测所谓边缘是指其周围像素灰度值呈阶跃变化或屋顶状变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域,基元与基元之间。因此它是图像分割所依赖的重要特征,也是纹理特征的重要信息源和形状特征的基础;而图像的纹理形状特征的提取又常常依赖于图像分割。图像的边缘提取也是图像匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘具有方向和幅度两个特征。沿边缘走向,像素值变化比较平缓;而垂直于边缘走向,则像素值变化比较剧烈。而这种剧烈可能呈现阶跃状,也可能呈现斜坡状。边缘上像素值的一阶导数较大;二阶导数在边缘处值为零,呈现零交叉。边缘检测是一种确定图像中物体边界的方法,简言之,边缘检测就是用边缘点勾画出物体的轮廓。在实质上是一种梯度锐化的方法,在图像变化缓慢的地方其值很小(对应于图像较暗);而在线条轮廓等变化较快的地方的值很大。这就是图像在经过梯度运算后使轮廓清晰化从而达到锐化的目的。经典的、最简单的边缘检测方法是对原始图像按像素的某邻域构造边缘算子。由于原始图像往往含有噪声,而边缘和噪声在空间域上表现为灰度有比较大的起落;在频域则反映为同是高频分量,这就给边缘检测带来困难。Marr和Hildreth提出的零交叉边缘检测是一种十分有效的方法,他们认为:其一,图像强度的突变将在一阶导数中产生一个峰或等价于二阶导数中产生一个零交叉(Zero-Crossing);其二,图像中的强度变化是以不同的尺度出现的,故应该用若干大小不同的算子才能取得良好的检测效果。常见的边缘检测算子有梯度算子、Roberts算子、Laplacian算子、Krisch算子、Sobel算子、Prewitt算子等。1.Roberts算子图2.4Roberts边缘算子模板图2.4采用了两个2×2卷积核形成Roberts边缘算子,图像中的每个点都用这两个核进行卷积,运算结果是一幅边缘幅度图像。Roberts算子对边缘定位比较准,所以分割结果的边界宽度不像后面的Prewitt算子分割的那样宽。在图像噪声较少的情况下,分割的结果还是相当不错的。对具有陡峭的低噪声图像响应最好。像Sobel算子、Prewitt算子、Krisch算子都是3×3的算子,它们对灰度渐变和噪声较多的图像处理得较好。2.Prewitt算子图2.5Prewitt算子模板图2.5所示的两个卷积核形成了Prewitt边缘算子,和使用Roberts算子的方法—样,图像中的每个点都用这两个核进行卷积,取最大值作为输出,Prewitt算子也产生一幅边缘幅度图像。Prewitt算子并不是各向同性的,边缘并不是完全连通的,有一定程度的断开,而使用Roberts算子和拉普拉斯算子就不存在这样的问题。对边缘定位不如Roberts算子。3.Sobel算子图2.6(a)Sobel垂直边缘算子图2.6(b)Sobel水平边缘算子图2.6所示的两个卷积核形成了Sobel边缘算子,图像中的每个点都用这两个核做卷积,一个核对通常的垂直边缘响应最大,即为图2.6(a)的Sobel垂直边缘算子,而另一个对水平边缘响应最大,即为图2.6(b)的Sobel水平边缘算子两个卷积的最大值作为该点的输出值,运算结果是一幅边缘幅度图像。Sobel算子对噪声有抑制作用,因此不会出现很多孤立的边缘像素点。此种算子对边缘的检测还是较准确的,在边缘灰度值过渡比较尖锐且图像中噪声比较小时,该算子的工作效果较好。4.Krisch算子图2.7Krisch算子模板图2.7所示的8个卷积核组成了Krisch边缘算子。图像中的每个点都用8个核进行卷积,每个核都对某个特定边缘方向做出最大响应,把所有8个方向中的最大值作为边缘幅度图像的输出,最大响应掩模的序号构成了边缘方向的编码。Krisch算子是由8个3×3卷积核组成的算子,图像中的每个点都用8个卷积核进行卷积,每个卷积核都对某个特定边缘方向做出最大响应,所有8个方向中的最大值作为边缘幅度图像的输出。它对灰度渐变和噪声较多的图像处理得较好。5.Laplacian算子图2.8Laplacian算子模板图2.8所示的两个卷积核形成了通常使用的Laplacian(拉普拉斯)边缘算子,该算子是对二维函数进行运算的二阶导数算子。Laplacian算子是二阶微分算子,对噪声比较敏感,所以分割结果中在一些像素上出现了散碎的边缘像素点。可以证明,它具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。它是一个与边缘方向无关的边缘检测算子。2.6本章小结这一章首先介绍了本文中车牌图片的获取办法,主要是数码相机进行拍摄得到的照片,这些照片在拍摄时会有意识的选取一些较为复杂的背景,以验证系统的定位能力。接着讨论了图像的灰度化、灰度变换增强、直方图、边缘检测等比较经典的算法。它们在以后的车牌识别、字符分割和字符识别中会经常用到,所以应该说这些算法是属于车牌定位算法不可分割的一部分。在合适的场合采用合适的图像预处理算法,可以有效改善退化图像的视觉效果,有利于对图像进行更进一步的处理。3.车牌的定位车牌定位的主要工作是从摄入的汽车图像中找到汽车牌照所在的位置,并把车牌从该区域中准确地分割出来,供字符分割使用。因此,牌照区域的确定是影响系统性能的重要因素之一。车牌定位是车牌识别技术的一个关键技术,牌照定位的准确与否直接影响到字符分割和字符识别的准确率,并且直接影响着车牌识别系统的效率。在车牌定位算法中,关键是寻找某种图像处理方法,使原始图像经过该算法的处理后能够清楚的显示出车牌区域,同时使图像中的非车牌区域消失或者减弱,从而能准确有效的定位出车牌在图像中的位置。由于车辆图像都是采集于自然环境当中,而在自然环境中车牌和背景的成像条件一般是不可控制的,随机变化的因素(尤其是光照条件)和复杂的背景信息给目标搜索带来巨大的困难,不同的光照下,车牌的颜色、亮度、明暗对比度变化都很大,背景信息往往比车牌信息更加复杂,某些背景区域又可能与车牌区域差异不大。再加上拍摄距离、角度的不同,要从种种干扰中区分出车牌区域是十分困难的。而车牌区域在整幅图像中所占的比例比较小,要从整幅图像中定位车牌区域必然要在大量的背景信息中搜索,而且应用的特殊性,要求快速、准确地完成车牌定位。如果没有高效率的搜索方法,就要耗费很多的计算时间和存储空间。所以车牌定位技术一直以来是一个难点,是车牌识别技术中的一个关键技术环节。3.1车牌的特征车牌的本身具有许多固有特征,这些特征对于不同的国家是不同的,我国现在使用的车牌的模型化知识,主要是根据中华人民共和国机动车牌号GA36-92标准。它具有以下的特征:1.字符特征:标准的车牌(军车,警车,教练车,外交车除外)上有七个字符,字符样式为X,XzX3X4X5X6X7}。其中X,是各省、直辖市的简称,Xz是英文字母,X3X4是英文字母或者阿拉伯数字,X5X6X7是3位阿拉伯数字。它们基本呈水平排列,在矩形内部存在较丰富的边缘。由此待识别的字符模板可以分为以下三类,汉字(包括省级简称、天干、地支以及“警”字),英文字母和阿拉伯数字。这部分特征多用在字符切分、构件字符特征数据库,对字符进行匹配识别方面。2.形状特征:汽车前车牌的标准外轮廓尺寸为440×140,每个字符宽度为45,字符高度为90,间隔符宽10,字符间隔12,整个车牌的宽高比近似为3:1。车牌的边缘是线段围城的有规则的矩形,大小变化有一定的范围,存在最大长度和宽度。这部分特征主要用在车牌的定位分割方面。3.灰度变化特征:车牌的底色、边缘颜色以及车牌外的颜色往往都是不相同的,表现在图像中就是灰度级互不相同,这样在车牌边缘形成了灰度突变边界。实际上,车牌的边缘在灰度上的表现是一种屋脊状边缘。在车牌区域内部,字符和车牌底的灰度较均匀的呈现波峰波谷。这部分特征主要用在对灰度图像进行车牌定位分割、字符切分方面。4.颜色特征:现有的车牌底色和字符颜色搭配有四种类型,小功率汽车的蓝底白字车牌,大功率汽车的黄底黑字车牌,军警用的白底黑字车牌,国外驻华使馆用的黑底白字车牌。可以发现,车牌二值化有两种结果,其中蓝底白字车牌和黑底白字车牌的二值化结果是黑底白字,而黄底黑字车牌和白底黑字车牌的二值化结果是白底黑字。这部分特征主要用在对彩色图像进行车牌的定位分割。3.2车牌定位常用方法车牌定位是整个车牌识别系统中较难解决的问题,定位精度和定位时间直接影响整个车牌识别系统的性能。近年来在车牌定位方面主要的算法都是基于灰度图像的处理技术。随着计算机处理速度的不断加速和硬件价格趋于下降,基于彩色图像的车牌定位技术的研究也得到了快速发展。车牌定位算法大多是基于汽车牌照的不同特征而提出的,主要包括以下几小节内容。3.2.1车牌区域内字符的纹理特征包括利用字符宽度和高度、笔划宽度、字符串的长度、字符的连通性。将数字信号处理技术应用与车牌纹理分析中,利用纹理特征,采用Gabor小波和K-means聚类算法完成车牌分割,进行水平扫描,利用车牌字符与背景的灰度跳变实现车牌提取。张西宁和郑南宁通过提取车牌的垂直边缘和分析纹理特征来确定车牌的位置。文献提出了利用扫描行离差数据、有效谷峰点特征及先验知识来初步定位车牌区域。杨海廷根据车牌区域的竖向纹理特征比非车牌区域丰富的特性提出了基于竖向纹理特征的车牌定位方法。BarrosoJ等提出的基于水平线搜索的定位方法,以及BulasJ等提出基于扫描行的提取方法。这些方法对图像的质量要求较高。3.2.2颜色特征中国车牌主要由四种类型组成:黄底黑字、蓝底白字、白底黑字、黑底白字。车牌底色和字符颜色反差很大,根据这些颜色信息可以准确地定位出车牌的边界。Nijhui:提出基于颜色的车牌提取算法。金玲玲采用彩色分割及多级联合混合集成分类器的车牌提取技术,通过多层感知器网络对输入彩色图像进行彩色分割,以确定车牌区域,郭大波提出利用纹理和形状分析得到若干车牌候选区域后再进行颜色特征提取并根据车牌底色排除部分非车牌区域。3.2.3频谱分析法该方法将图像从空间域变换到频率域进行分析,例如采用小波变换法等。小波分析可以在不同的分辨率层次上对图像进行分割,在低分辨率层次上进行粗分割,这样节约时间同时为细分割缩小检测范围。在高分辨率层次上实现车牌区域的准确定位。王建平基于小波分析利用在某个尺度的高频信息重构,获得车牌轮廓信息,parisiR等提出基于扫描行的车牌提取方法。随着新理论如小波变换、分形理论、数学形态学方法和遗传算法等的逐步发展,在车牌定位方面,研究人员将这些新理论和传统理论相结合,提出了一系列新型的车牌区域定位算法。由于车牌提取是一个寻找最符合牌照特征区域的过程,也就是在一个参考空间里寻找最优定位参量的问题,而寻找参量空间的全局最优解应用遗传算法可以得到很好的解决。文献将图像中每一矩形区域中的每一行灰度值进行一维的波峰波谷检测,统计波峰密度、波峰均值、波峰波谷均值差、波峰方差、波谷方差和波峰分布的均匀程度,将这六个统计量进行线性变换得到新的特征矢量。这样通过确定矩形区域的参量,提取最优的特征矢量即为目标区域。在实际应用中,依据所选择的不同特征,可采用不同的定位方法。主要是利用车牌区域特征,通过彩色信息分析、阈值分割、边缘检测、人工神经网络、数学形态学以及遗传算法等诸多方法及其融合实现车牌准确定位。3.3车牌定位算法车牌的定位在车牌识别系统中的地位非常重要,是后续车牌字符识别的前提条件。经过前面的分析已经发现,单一的运用上一节的中的任一方法都不能对车牌区域实现很好的定位。同时,一般在复杂环境下采集的彩色汽车图像都包含有大量的边缘信息,尤其是车身正面的边缘信息往往比较多。如果采用常规的灰度。3.3.1车牌定位方法的基本思路车牌定位遵循以下基本步骤:(1)采集到的RGB图像转换为256色位图格式,然后把彩色图像转换为灰度图像,同时把彩色图像信息备份,再对灰度图用分段的灰度线性变换进行灰度拉伸,以提高对比度;(2)此时的图像进行均衡化,得到均衡化图像;(3)均衡化图像用Sobel垂直算子进行边缘检测,得到边缘图像;(4)用经验阈值法对车牌区域进行粗定位(第一次定位),提取得到的车牌区域;(5)提取的车牌区域中利用颜色信息对车牌进行精确的二次定位(模板匹配);(6)取出车牌区域。3.3.2图像灰度化将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种。本实验实现灰度化的方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。灰度化流程图:读入源图像(真彩色位图)读入源图像(真彩色位图)读取源图像像素R,G,B分量求目标图像对应像素灰度值Y=0.3R+0.59G+0.11B为目标图像申请空间生成目标图像信息头结构和位图颜色表像素读取完毕?YN灰度化代码:unsignedchar*aData=newunsignedchar[cxDIB*cyDIB];if(!aData){AfxMessageBox("申请内存失败!");//提示出错return;}inti;unsignedchar*pPixBits=(unsignedchar*)pDocument->m_dib.GetBits(lpDibSection);//灰度化Y=0.3R+0.59G+0.11Bfor(i=0;i<cxDIB*cyDIB;i++){aData[i]=(unsignedchar)((int)(pPixBits[i*3]*0.11+pPixBits[i*3+1]*0.59+pPixBits[i*3+2]*0.3));}运行结果:原图像灰度化图像3.3.3绘制直方图灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的图像个数,反应图像中每种灰度出现的频率。灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率。从概率的观点看,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf,而概率分布函数就是直方图的累计和。在离散情况下,设定图像像素总数目为n,具有r灰度级的像素为nr,则图像概率密度函数为Pr(r)=nr/n。直方图流程图:获取目标灰度图像获取目标灰度图像创建对话框类CDlgHistogram灰度直方图统计BOOLCDlgHistogram::OnInitDialog()在对话框中绘制直方图CDlgHistogram::OnPaint()直方图统计代码:unsignedchar*lpDibSrc;//指向源图象像素的指针 longi;//循环变量 longj; CWnd*pWnd=GetDlgItem(IDC_COORD);//获取绘制直方图的指针 for(i=0;i<256;i++)//置0 { m_lDibCount[i]=0;//各个灰度值的计数 } //计算图象每行的字节数,通过文档类的Dib对象的成员函数来获得 longlLineBytes=(CImageView::pView->GetDocument())->m_dib.GetReqByteWidth(m_lDibWidth*8); for(i=0;i<m_lDibHeight;i++)//各灰度值的计数 { for(j=0;j<m_lDibWidth;j++) { lpDibSrc=(unsignedchar*)m_lpDibBits+lLineBytes*i+j; m_lDibCount[*(lpDibSrc)]++;//加1 } }运行结果:3.3.4图像均衡化直方图均衡化的思想是把原是图像的直方图变换为均匀分布的形式,这就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。设源图像的像素总数为N,有L个灰度级,第k个灰度rk出现的频数为nk,若源图像素点(i,j)的灰度为rk,则直方图均衡化处理后的图像点(i,j)处的灰度为:其中k=0,1,2,···,L-1。灰度均衡化代码:longi;//行循环变量 longj;//列循环变量 unsignedchar* lpSrcUnChr; //指向像素的指针 BYTE bGrayMap[256];//灰度映射 long lGrayNum[256];//灰度映射 for(i=0;i<256;i++)//置0 { lGrayNum[i]=0; } for(i=0;i<lHeight;i++)//各灰度值计数 { for(j=0;j<lWidth;j++) { lpSrcUnChr=(unsignedchar*)lpSrcStartBits+lLineBytes*i+j; lGrayNum[*(lpSrcUnChr)]++;//加1 } } for(i=0;i<256;i++)//计算灰度映射表 { longvarLong; //临时变量 varLong=0;//初始为0 for(j=0;j<=i;j++) { varLong+=lGrayNum[j]; } bGrayMap[i]=(BYTE)(varLong*255/lHeight/lWidth);//计算对应的新灰度值 } for(i=0;i<lHeight;i++)//行 { for(j=0;j<lWidth;j++)//列 { //指向DIB第i行,第j个像素的指针(unsignedchar*) lpSrcUnChr=(unsignedchar*)lpSrcStartBits+lLineBytes*(lHeight-1-i)+j; *lpSrcUnChr=bGrayMap[*lpSrcUnChr];//计算新的灰度值 } } 运行结果:3.3.5边缘检测物体的边缘是由灰度不连续性所反应的。边缘检测局部算子法指的是考察图像的每个像素的某个邻域内的灰度变化,利用边缘邻近的一阶或二阶导数变化规律,利用简单的方法检测边缘。常见的边缘检测算子有梯度算子、Roberts算子、Laplacian算子、Krisch算子、Sobel算子、Prewitt算子等。本文采用Sobel算子。边缘检测流程图:获取源图像获取源图像进行Sobel水平算子模板运算进行Sobel垂直算子模板运算将两次运算的相同位置的像素值较大值赋值给目标图像对应像素Sobel算子代码: if(!Template((LPSTR)lpImage2,lmageWidth,lmageHeight,nTempWidth,nTempHeight, nTempCenX,nTempCenY,Tempdata,TempCoef)) { returnFALSE; } delete[]Tempdata; //求两幅缓存图像的最大值 for(j=0;j<lmageHeight;j++) { for(i=0;i<lmageWidth;i++) { //指向缓存图像1倒数第j行,第i个象素的指针 lpDst1=(unsignedchar*)lpImage1+lmageWidth*j+i; //指向缓存图像2倒数第j行,第i个象素的指针 lpDst2=(unsignedchar*)lpImage2+lmageWidth*j+i; if(*lpDst2>*lpDst1) { *lpDst1=*lpDst2; } } } //复制经过模板运算后的图像到源图像 memcpy(lpDIBBits,lpImage1,lmageWidth*lmageHeight);运行结果:加深操作包含三个步骤:阈值变换:阈值设定为250。水平开运算:结构元素大小为3个像素。垂直开运算:结构元素大小为3个像素。运行结果如下:3.3.6模板匹配模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与该模板相同或相似的区域。本文中,模板匹配的测度为模板与源图像对应区域的误差平方和。设f(x,y)为M×N的源图像,t(j,k)为J×K(J≤M,K≤N)的模板图像,则误差平方和测度定义为:将上式展开得:令DS(x,y)称为源图像中与模板对应区域的能量,它与像素位置(x,y)有关,但随像素位置(x,y)的变化,DS(x,y)变化缓慢。DST(x,y)称为模板与源图像区域的互相关,当模板与源图像区域匹配时取最大值。DT(x,y)称为模板能量,与图像位置无关,只用计算一次即可。采用归一化办法确定误差平方和的测度,定义为:模板选取:模板图像的原型是车辆图片example06.bmp,其车牌图像如下作图所示。模板图像如下右图所示。模板的大小是50×110像素,白色大方块的大小是40×100像素。中间大黑色方块表示车牌中地区信息字符与车牌编号字符之间的间隔;右边的几个小黑色方块表示车牌编号间的间隔。白色包围色带对应车牌白色边框;黑色外围边框表示车牌外部的区域。模板匹配流程图:获取源图像获取源图像计算模板图像的DT(x,y)值cofT遍历源图像像素点完毕?计算DST(x,y)值cofTS计算DS(x,y)值cofS记录最大R(x,y)值和对应坐标(x,y)结束YN模板匹配代码:for(j=0;j<TemplateHeight;j++) { for(i=0;i<TemplateWidth;i++) { //指向模板图像倒数第j行,第i个象素的指针 lpSrc2=(unsignedchar*)lpDIBBits2+TemplateWidth*j+i; //取得模板图像当前指针处的像素值,注意要转换为unsignedchar型 pixeltemp2=(unsignedchar)*lpSrc2; //进行自相关运算 cofT=cofT+pixeltemp2*pixeltemp2; } }for(n=0;n<TemplateHeight;n++) { for(m=0;m<TemplateWidth;m++) { lpSrc1=(unsignedchar*)lpDIBBits1+lmageWidth*(n+matchpoint.y)+(m+matchpoint.x); lpDst=(unsignedchar*)lpImage+lmageWidth*(n+matchpoint.y)+(m+matchpoint.x); *lpDst=*lpSrc1; } } //复制图像 memcpy(lpDIBBits1,lpImage,lmageWidth*lmageHeight); //释放内存 delete[]lpImage;运行结果:3.4本章小结本章主要提出了一种结合阈值分析、边缘检测、颜色特征以及模板匹配的综合定位方法,可以在复杂背景图像中有效的提取车牌区域。该方法分为粗定位和精确定位,在粗定位中,用Sobel垂直算子对均衡化的图像进行边缘检测,使用阈值提取车牌存在的大致区域。在精确定位中,利用了车牌的形状和颜色等特征确定模板,利用模板匹配精确提取出车牌的区域。实验证实,该方法速度较快,定位性好,系统设计简单,能够满足实际车辆车牌自动定位的需要。但是在实际情况中,尤其是在夜晚以及车身颜色与车牌颜色相近的时候,此方法的识别率会下降,这也是今后研究要解决的主要问题。结论与展望本文利用数字图像处理的相关技术,针对车牌自动识别系统中的车牌定位部分进行了研究和分析,在图像增强、均衡化方面对已有的算法进行仿真实验比较,最终确定使用的算法:在车牌定位方面结合已有的算法提出了一些改进的算法,经过粗定位和细定位两步实现车牌定位的要求,并通过仿真实验验证了这些方法的可行性,为了在实际使用中达到更好的效果,课题还需要进一步的完善。结论:本文研究分析了近年来国内外的车牌定位算法,在此基础上,运用数字图像处理知识提出了本文的车牌定位算法,并给出了实验结果。主要工作如下:1.采集回来的彩色图像转换为灰度图像后,采用直方图均衡化方法,通过改变车牌图像的灰度直方图进行图像增强。2在车牌定位模块中,首先归纳了车牌的特征,为后面的算法提供了依据;接着介绍了几种传统的车牌定位方法,并对它们进行了简单的评价;最后提出了一种较为高效的车牌定位算法:考虑到汽车牌照颜色的独特性,并且其底色和字符是一一对应的,所以采用了基于色彩信息、粗定位和精确定位相结合的车牌定位方法。3.针对车牌定位问题,提出了一种包含边缘检测、投影法、二值化、连通域标卜记、最小二乘拟合等在内的粗定位、细定位结合的车牌定位算法。经过边缘检测、粗定位、模板匹配、细定位四步,确定车牌区域。后续研究工作:本文所应用的这些算法主要是在仿真的环境下提出的,而在实际应用中,由于车牌定位受到环境、硬件设备、软件程序等方面的影响,对定位速度、定位准确率都有一定的影响。因此,本文所采用的方法及算法也需要进一步完善和改进,概括如下,为今后的工作方向奠定基础。(l)本文在对车牌图像进行定位分割时,考虑的仅仅是单车的情况,对于复杂背景下多车辆的情况下进行车牌的定位分割还有待进一步分析和研究。(2)本文的定位方法都以边缘特征为辨识车牌的主要依据,对边缘特征不明显的车牌容易定位失败。在后续工作中,应着重考虑车牌表面存在缺损、掉漆、泥污等边缘特征不明显的情况进一步分析研究。(3)本文主要对单排字符的车牌进行定位,双排字符的车牌定位需要进一步研究。致谢在此论文即将完成之际,我要特别感谢我的指导老师刘自强老师。刘老师学识广博,待人亲切,他严谨的治学态度、渊博的学识和人格魅力使我受益匪浅。在我撰写论文的过程中,刘自强老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了刘老师悉心细致的教诲和帮助。经由刘老师悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”之感。“授人以鱼不如授人以渔”,置身其间,使我圆满的完成了论文的写作,再此向他致以深切的谢意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论