




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、车牌识不采购、研发纵览车牌识不采购、研发纵览是目前最详细的关于车牌识不的资料。本书分两部分:第一编,介绍车牌识不的技术知识,包括目前我国要紧的车牌识不产品名单、车牌识不产品必备/附加的功能,以及车牌识不的应用范围;第二编,介绍车牌识不的研发知识,其中包括,车牌识不程序的模块、车牌识不程序内核模块的各种类型以及各个子模块的详细算法。第一编关于宽敞车牌识不采购人员十分重要;关于宽敞车牌识不开发人员,要在熟悉了解第一编的基础之上,研读第二编。第1编 采购这是车牌识不采购、研发纵览的前半部分,是宽敞车牌识不采购者的必读部分。关于车牌识不研发人员来讲也是有专门大的参考价值,而且对后面的开发有极大的关心。
2、第1章 车牌识不供应商通过本章,采购人员能够对我国的车牌识不技术水平有一个概括性的认识;研发人员也应该能够了解到这一技术目前的成熟程度。第1节 车牌识不供应商列表车牌识不并没有统一的国际标准。本章仅仅列举我国的车牌识不供应商。(因为车牌识不市场比较热门,下面的表格难免遗漏一些新的成员)名称网址备注绿睿(推举)高识不率,速度快SoftWell较高识不率,速度慢PlateDSP识不率较高,速度快CubicPlate普及较广,识不率,速度差不多上中游水平SupPlate速度差不多上中游水平汉王无法拿到试用软件车牌识不供应商 列表第2节 车牌识不供应商举例绿睿科技车牌识不属于知识密集型产业。研发车牌识
3、不需要大量的高级软件人才。绿睿科技公司正是一家拥有大量软件人才的公司。她座落于我国的硅谷 HYPERLINK javascript:; t _self 北京中关村。“爱国,勤奋踏实,困难创业”是该公司的主题。绿睿公司希望能和合作伙伴一起,实现我国的产业升级和结构性调整,提升合作伙伴产品的附加值。让更多的国内公司积极参与 HYPERLINK javascript:; t _self 世界 HYPERLINK javascript:; t _self 经济产业链条中,上游的竞争。绿睿科技以研发为主,而以市场推广为辅;绿睿集中精力提高产品质量,而将更多利润让给合作伙伴。绿睿科技全体同仁困难创业,于2
4、009年推出车牌识不这一智能交通领域产品。绿睿拥有该产品的核心技术和独立的知识产权,而且不断地对产品进行更新换代。有关绿睿科技更详细的资料请登陆该公司官方网站:。以下是该公司的标示:第2章 车牌识不的应用车牌识不要紧用于智能交通领域。随着计算机软硬件的不断升级,车牌识不所依靠的环境日臻完善,车牌识不的功能越来越丰富,应用场合也越来越多。第1节 车牌识不应用列表用途描述停车场治理对持用相同的RFID的车辆,检查车牌是否相同。智能停车场对车牌识不的要求要紧集中在准确度方面,对时刻要求不是专门苛刻。车辆稽查 治安卡口在都市的交通要道,架设“电子眼”,及时猎取“肇事逃逸”车辆地理信息。对车牌识不准确度
5、和速度都有较高要求。另外整个系统应该有强大的数据支持,保存 HYPERLINK javascript:; t _self 历史资料。高速公路收费目前专门多高速公路是“贷款筑路,收费还钞票”。联网收费时,需要通过车牌识不系统计算汽车高速公路里程。移动稽查官方为打击走私、偷税、违禁等的非法活动,对疑犯车辆进行跟踪。用车牌识不系统快速检查过往车辆。地磅称重治理用于库存治理。交通信息采集对卡口车辆进行统计,依靠车牌识不对过往车辆计数。获得车流密度随时刻变化的关系。路桥、隧道收费类似高速公路,实现过往车辆自动收费。同时记录车辆过往时的照片,方便收费系统核实。重要机关单位汽车出入口治理重要机关单位(比如驻
6、军部队)治理出入车辆。要求车牌识不系统能够识不军用车牌。闯红灯记录车牌识不系统实时接收红灯信号,依照路口逻辑计算车道上是否同意通过车辆,对违规车辆进行记录,并自动提交罚单。都市交通治理配合指纹识不,人脸识不对都市交通进行治理。比如限制超载,或者记录车内乘客过少(为了爱护环境,轿车内最好有三个以上的人)情况。车牌识不应用列表 列表第2节 车牌识不应用举例智能停车场智能停车场是车牌识不的典型应用。利用智能停车场系统公司、企业、机关等对车辆能够进行方便的治理;智能停车场系统还有助于提高单位形象,加强内部治理。智能停车场系统包括,RFID卡、读卡器、道闸、感应线圈、视频系统、MIS系统和车牌识不模块。
7、其中视频系统包括摄像机,视频传输电缆,视频显示终端。停车场一般有多个出入口。所有出入口都配置有联网的计算机,组成MIS系统,负责对车辆数据的记录和处理。出入口同时都配置,车牌识不设备,对进出车辆信息进行采集工作。当车辆进入停车场时,司机必须刷RFID卡。智能停车场系统依照RFID卡信息对车辆的合法性进行推断,并同意合法车辆通过道闸进入停车场。同时,智能停车场系统记录车辆进入时的视频信息。当车辆离开停车场时,司机也必须刷RFID卡。依照RFID卡信息,系统找到该车进入停车场的时刻点;并计算停车时刻长度,提供收费依据。为了防止不法分子的破坏,智能停车场系统要依照数据库信息,进行RFID卡信息和车牌
8、信息的比对。一旦发觉RFID卡信息和车牌信息不匹配,立即报警。因此智能停车场系统必须集成车牌识不模块。第3章 配套产品车牌识不作为一项核心技术必须结合其他技术才能被广泛应用。同时资优价廉的车牌识不软件必定会提高相关产品的销售量,其他产品因此实现高附加值。第1节 照明光源目前来讲,照明光源普遍采纳电光源(把电能转换成光能)。因为车牌识不系统本身也消耗电能,因此车牌识不的照明光源全部采纳电光源。从发光原理上讲,点光源一般分为以下三大类。热辐射光源 利用电流的热效应。让光源达到三千度以上的温度。光源便开始发出可见光。热辐射光源通常色温较低,比如我们平常见到黄色光源。性能优良的车牌识不系统可不能受此阻
9、碍。气体放电发光 这类光源是利用气体在通过电流时发光的原理制成的。某些光源色彩丰富,然而并不适合车牌识不。荧光灯使用的是水银蒸气发光,尽管发出白光,然而光线分散,不容易投射到车牌上。也不是夜间车牌识不理想光源。半导体光源 在电场作用下半导体p-n节发光,电能利用效率高,是近年来新开发的光源类型。能够采纳高功率白色的半导体光源,同时也方便将光束投射到车牌上。是夜间车牌识不的理想光源。第2节 信息系统信息系统,全称为治理信息系统Management Information System,亦即所谓的MIS系统。MIS系统要紧指惊醒日常事务操作的系统。这种系统对各种事件的属性进行记录,同时能够输出统计
10、信息。MIS系统的核心是CS(也确实是所谓的客户端/服务器 client/server)结构,也有基于BS结构的MIS系统,然而CS的MIS系统足以满足车牌的需要,因此BS的车牌识不系统并不多见。下图为一电力系统的MIS系统:需要指出的是,MIS系统和车牌识不同为软件。在整个车牌识不系统中互相配合工作。一般来讲,MIS系统理论较为成熟,开发难度不大;而车牌系统理论并没有完全成熟,开发难度极大。然而MIS系统必须针对单个项目单独开发,不容易复制。这就大大提高了MIS系统本身的成本,通常情况下MIS系统要比车牌识不核心模块报价高。因为车牌识不软件较容易复制,从而分担成本。第3节 相机车牌识不只能用
11、数码相机,不能够使用传统的模拟相机。数码相机利用感光电子元件把光学信号转换成数字图像信号。感光元件有两种CCD和CMOS。CCD相机质优价高,对车牌识不来讲没有必要。假如是关于一般的车牌识不系统,CMOS相机足以满足要求。相机种类专门多,具体到车牌识不相机也有专门多种。那个地点列举一下适合车牌识不使用的相机。工业相机:性能较好,它速度快,清晰度高。有的借助图像采集卡能够得到更好的效果。适合条件比较恶劣的环境。监视摄像头:这是目前普及最广的用于车牌识不的相机。产品技术都比较成熟。架设车牌识不系统时完全能够利用一有的监视系统。对原有系统进行升级。QQ摄像头:依照摩尔定律,电子产品QQ摄像头的性能不
12、断提高,价格不断下降。目前的QQ摄像头性能差不多达到或者超过一般监视摄像头的性能水平;而价格十分廉价。今后可能成为车牌识不相机的首选。第4节 视频传输视频传输设备要紧分为模拟传输和数字传输两种形式。尽管数字传输方式具有专门多优点。然而模拟技术比较成熟,产品种类多,因此模拟传输也比较普及。模拟视频信号,到达计算机前转换成数字信号即可进行车牌识不。数字信号普遍采纳以太网传输,使用超五类线。其传输速率高大1000兆,传输距离远达100米完全能够满足车牌识不的需要。数字视频信号通过压缩后,能够节约带宽,只是这对相机有一定的要求。目前车牌识不系统中的视频信号专门少压缩。另外在专门场合下,并不需要传输视频
13、,而仅仅需要传输单帧图像即可。比如交通路口,闯红灯的汽车触发相机拍照,相机仅把这时抓拍的 HYPERLINK javascript:; t _self 图片传至计算机即可,大大节约了带宽。同时如此方法也适合停车场。第5节 RFIDRFID的英文全称是Radio Frequency Identification。中文名称:射频识不、射频标示,俗称电子标签。RFID最大的特点确实是非接触式自动识不。这一过程是通过射频信号完成的。当RFID卡进入读卡器识不范围时,读卡器会发出射频信号。这时RFID卡就会感应出电流,RFID芯片利用感应出的电流提供能量,也发出射频信号,那个信号加载有标示信息。读卡器捕
14、获到RFID卡发出的射频信号,即可得到RFID卡的ID值。RFID被广泛应用于停车场和高速路收费系统中。为了更加安全的使用RFID,经常需要把RFID卡的ID值和汽车车牌号绑定起来。这就需要整个系统中集成车牌识不模块。第4章 软件接口车牌识不做为一个软件模块,需要提供软件接口,才能够被整合到整个车牌识不系统中,正常工作。车牌识不适合何种软件接口,下面将一一介绍:第1节 DLLDLL的全称是Dynamic Linkable Library,中文名称是动态链接库。他不能单独的运行,需要其它程序加载。DLL最大的优点是应用程序共享代码和其他只读资源,有效地节约系统开支。更为重要的是DLL迎合了程序的
15、模块思想。所谓的模块确实是一个功能相对完整的软件“零件”。一台机器的零部件可能来自于不同的生产厂家;同样的道理,车牌识不应用系统中,车牌识不模块能够由其它厂家提供。车牌识不系统中,相机驱动程序本质上也是一个动态连接库。除了windows系统外,linux系统也有类似的思想,只是叫做elf。其中的字母l标示连接的意思。同样地,车牌识不的动态库也能够提供linux的版本。第2节 ActiveXActiveX的本质也是上一节中提到的动态链接库。只是ActiveX的接口更为方便。AcitveX由开发人员事先打包,能够方便的嵌入包括扫瞄器的各种软件之中。专门多语言包括Java都支持ActiveX控件。A
16、ctiveX没有专门好的跨平台性,目前仅仅能在windows上运行。尽管如此,然而考虑车牌系统目前也差不多上在windows系列操作系统上运行,因此车牌识不模块封装成ActiveX控件的优越性也可不能打折扣。另外网页上的ActiveX有一定的安全问题,然而这并可不能阻碍到车牌识不系统的安全性。第3节 COM和ActiveX控件一样,COM的本质也是动态链接库,COM也是有一种共享代码的方法。有了COM,软件工程就能够像是搭积木一样进行,甚至一般人都能够编程序。对COM的调用者来讲,他们看到的每个COM是一个类,类有接口。类和接口差不多上用GUID标示的。那个地点的GUID本质上是一个全球唯一的
17、数,任何编程语言都能够处理。然而目前车牌识不模块,提供COM借口得并不是专门多。缘故在于COM技术差不多过时,微软差不多放弃了对COM的维护工作。COM也不如ActiveX控件来得方便。COM同样也只能用到Windows系列操作系统上。第5章 触发车牌识不系统,最简单的流程是系统从相机取出图像,然后进行识不。假如相机视野内有车牌,那么系统记录当前的图像和车牌号。假如视野内没有车牌,则要丢弃当前的图像。然而假如计算机对图像处理较慢,那么当计算机正处理当前图像的时候,下一幅图像差不多预备好了。如此的话,计算机就无法响应用户的操作。用户就会感受计算机较慢,或者死机。解决的方法确实是利用“触发技术”。
18、第1节 视频触发本章一开始提到的车牌系统的最简单的流程,确实是视频触发。依照视频信号,假如相机视野内有车牌,整个系统启动一个操作。假如相机视野内没有车牌,整个系统处于休眠状态。假如车牌识不模块的运算速度较快,视频触发一般没有大的问题。然而较快的速度,势必阻碍识不率。低识不率是视频触发固有的缺点,尽管随着硬件速度的提高,那个缺点变得越来越小。为了弥补视频触发的不足,人们引入了“线圈触发”的概念。第2节 线圈触发当有汽车功过道闸的时候,汽车会触发感应线圈。接下来,感应线圈触发相机拍照。然后图片传送到计算机,计算机对图像进行识不。最后系统记录识不信息和图像信息。在没有图像到来的时候,整个系统处于休眠
19、状态。计算机也没有必要识不车牌,那个时候计算机的任务较少,能够专门好的响应用户操作。对车牌识不软件来讲,识不时刻限制被大大放宽。能够更为准确的定位识不车牌。因此一般线圈触发的系统,车牌识不率都专门高。线圈触发被广泛应用于停车场和交通路口环境中。在施工过程中,线圈的铺设可能会有一定的额外工作量。相关于视频触发的系统,这一工作显然是多余的。这是线圈触发系统的一个缺点。第3节 RFID触发当汽车通过道闸的时候,用户需要主动刷RFID卡。刷卡机读取用户RFID卡信息后,触发相机拍照。接下来,照片被传送到计算机,进行车牌识不操作。这便是RFID触发的工作流程。显然,这种触发方式拥有和线圈触发相同的识不率
20、。但却无法应用于交通路口。RFID卡触发实际上受到RFID卡普及程度的限制。也有上述多种触发技术结合的方案。比如视频触发和线圈触发相结合,如此既能满足系统在无法埋设感应线圈场合下的应用,又能在有感应线圈的环境中提高识不率。第6章 车牌识不必备功能第1节 基础功能车牌定位车牌定位是车牌识不的基础。也是车牌识只是程中最重要的部分。车牌定位的成功率直接决定车牌识不率。当光线环境比较好、分辨率较大的时候,车牌定位比较容易;然而假如光线环境不行,分辨率较低,车牌定位就比较困难。另外还有专门多因素阻碍车牌定位的成功率,比如图像因 HYPERLINK javascript:; t _self 观看角度造成的
21、旋转、拉伸和斜切;再比如车牌遭到污染。上述情况都会阻碍车牌成功定位。假如增加车牌定位的容忍值,尽管会提高车牌定位的成功率,然而会出现错误定位的情况:把背景图像的一部分,当作车牌。当图像内没有车牌时,质量不行的车牌识不软件比较容易出现这种错误。字符识不字符识不功能包括识不汉字、英文字母和阿拉伯数字。汉字的范围一般来讲仅仅包括省、自治区和直辖市的简称。在所有的英文字母中,I和O,分不不容易和1和0区分。然而字母I和O能够做为发证机关代号,在车牌中出现,因为发证机关代号不能够取数字1和0。0和D或者Q无法区分是字符识不经常出现的错误。8和B关于质量较差的车牌识不软件成功区分的概率也专门小。在同一地区
22、,大部分车牌的省、自治区和直辖市的简称差不多上相同的,因此相关于字母数字的识不率,汉字的识不率不是专门重要,另一方面汉字识不技术也不是专门成熟;有的车牌识不软件干脆没有汉字识不功能。第2节 拓展功能多车牌识不在同一副图像中有两个或者两个以上的车牌。多车牌识不软件能够对这些车牌全部成功识不。相对地,有些车牌识不软件只能对其中之一进行定位识不,有的是依照车牌距离中心点的距离选择,有的依照车牌在图像中的大小选择,有的甚至是随机选择。车牌精确定位在环境比较好的情况下,有时车牌识不软件无法正确识不字符。缘故在于车牌本身受到一些干扰,其中包括固定螺丝和车牌边框。关于蓝色车牌,较新的固定螺丝会反射光线;在图
23、像中,螺丝呈现白色和字符颜色相近,干扰正常的识不程序。关于黄色车牌,比较旧的螺丝,或者悬空的螺丝孔,同样也会干扰正常的识不。标准尺寸的车牌,车牌边框可不能对车牌识不进行干扰。然而实际上,车牌并不差不多上按统一的标准制作的。有些车牌把边框向有文字的方向移动,腾出的空间用于标示汽车的品牌。然而这些非标准尺寸的车牌却给车牌定位带来了一定的干扰。因此质量好的车牌识不软件,要对车牌进行精确定位,排除各种干扰。国家标准车牌识不依据的是GA36-2007中华人民共和国机动车号牌,互联网上有可供下载的pdf版本。第2编 研发以下部分为车牌识不研发人员参考资料。第1章 开发环境车牌识不实质上包括两部分的内容,一
24、是车牌定位,二是字符识不。车牌定位要紧的工作是图像处理。目前来讲图像处理的开发软件环境局限于c/c+。因为c/c+效率高,执行速度快。字符识不要紧是人工智能。人工智能的开发环境较多,然而都不成熟。其中Prolog是目前比较好的人工智能语言之一。当考虑到统一开发环境时,一般字符识不也使用c/c+。车牌识不硬件环境的选择比较丰富。除了选择主流的Intel和Amd的机器,高性能AMR机的也是比较好的选项。假如要嵌入到相机之中,AMR机是最好的选择。第1节 软件环境c c+的开发环境c/c+语言是一种中级语言,它既有高级语言的简单性,又有和低级语言的相近的高效率。c/c+语言的高级语言特性,使得其描述
25、车牌识不中比较复杂的逻辑较为方便。而其低级语言的特性,使得用c/c+语言开发的车牌识不程序执行速度快,内存开销小。c/c+语言也十分容易移植,车牌识不的核心程序,在Windows系列操作系统上调试通过后,专门容易移植到Linux系列操作系统上,而Linux系列操作系统也能够是在Arm机上运行的。c是面向结构的,c+是面向对象的。这使得c/c+方便描述复杂的数据结构和算法。适合车牌识不中的字符识不操作。c/c+语言的资料丰富,技术成熟。网上图像处理方面的程序较多是用c/c+编写,专门容易把它们放到自我开的车牌识不程序中去。c/c+开发环境也比较好,vc支持可视化编程,调试时变量跟踪异常方便,将c
26、/c+不稳定性降到最低。最为重要的是多数车牌识不程序差不多上基于c/c+的。人工智能语言PrologProlog是目前为止中为重要的人工智能语言之一。他的语法中含有谓词,跟自然语言极为相似。使用Prolog描述完规则和事实后,Prolog内部进行演绎推理,自动给出结果;无需程序员关怀内部操作。如此能够就大大加速了车牌识不的研发进程。Prolog中的事实,用来描述对象和对象之间的关系。事实由谓词和对象组成。比如 Close(current_character,2). 表示当前识不的字符有两个封闭区域(车牌识不中“B”和“8”中的情况)。Prolog中的规则由多个相关的简单句子组成。规则中结论放在
27、前面,条件放在后面。例如:Q(character):-Anisomerous(character),Close(character,1). 表示假如字符只有一个封闭区域,而其不对称的话,那么那个字符是“Q”。Prolog中的目标能够在事实和规则提交之后自动得到。Prolog拥有和c语言的接口,Prolog能够融入c/c+的工程中。方便将整个车牌程序整合在一起。Matlab使用Matlab开发车牌识不比较快,然而最后发行软件的时候不容易脱离开Malab的环境。能够用Matlab研究车牌识不算法,然而开发车牌识不Malab并不是首选。第2节 硬件环境英特尔奔腾及其兼容机因为车牌识不需要大量的并行计
28、算,因此多核的CPU,占优势。假如不是通过系统,而是车牌识不软件本身分配给各个核心任务,效率会更高。设计较好的车牌识不系统占用内存并不大,只有几兆。目前CPU Cache完全能够满足要求,整个识只是程,CPU不需要跟内存通信。超线程技术也有助于车牌识不速度的提高。因为车牌识不程序并行计算的计算量较大,超线程技术也是针对有大量并行计算的软件设计的。英特尔和AMD,都推出了64位的CPU,这一点对车牌识不可能并没有多大的关心。浮点计算对车牌识不软件的意义不大,因为浮点计算比较慢,设计良好的车牌识不软件,尽量使用整型运算。从环保角度动身,CPU的功率越小越好。arm机Arm机是典型的精简指令系统。执
29、行速度快,也是车牌识不的一个不错的硬件环境。按性价比计算Arm机要比奔腾机好。假如算上周边芯片组成计算机系统,Arm机更占据成本优势。Arm机基于Linux操作系统,车牌识不产品可不能包含Windows的版本费用。Windows下面也有良好的Arm机调试环境。更能够移植差不多在Windows环境下调试成功的软件。同样地,64位的Arm机对车牌识不软件没有专门大的关心。Arm机市面上较少,不容易购买,这是其一大缺点。第2章 整体结构第1节 整体结构分类是否回溯举例来讲,依照车牌的特征在整个图片中定位车牌的时候,假如车牌在图像中受到了环境的干扰,可能无法找到图片。为了解决那个问题,引用了回溯算法:
30、当无法定位车牌的时候,增加对车牌错误的容忍程度,从新去查找车牌。有无回溯算法,对车牌识不的性能阻碍重大。无回溯算法的车牌识不软件速度快,然而定位成功率不高。适合视频触发的应用。有回溯算法的车牌识不软件定位成功率高,然而速度较慢。有时在成功定位车牌后,通过字符识不,发觉字符识不率较低,重新定位车牌。如此速度便会更慢。有回溯算法的车牌识不软件一般应用于有触发线圈的场合。试探和计算车牌识不中的定位操作,首先有一个推断某一区域是不是车牌的标准,然后对所有可能的区域依次依照那个标准推断。算法完成时,符合标准的区域便是车牌的位置。这是最原始的思路。那个算法在时刻上并不占优势,然而这是车牌定位的基础,改进后
31、的程序仍然沿用那个算法的绝大多数的函数。上述算法,对所有的区域进行试探。在试探之前没有做计算,推断有没有必要对当前区域和标准进行比较。另外一种算法确实是“暴力”算法的改进形式。尽量幸免没有必要的试探。或者依照差不多试探失败的结果,去否定某一个较大区域试探的必要性。开发流程实际上车牌识不代码量并不是专门大,假如不停的手工输入;用不到一天的时刻,即可大功告成。然而程序需要反复调试,才能够走向成熟。因此工作量是专门大的。另外车牌识不还有其本身的特点理论并不成熟。这就给车牌识不带来了更多的工作量。一般来讲,开发车牌识不程序,先按照最原始最朴素的思想编码,然后是不断地优化。这将贯彻到整个车牌识不的开发过
32、程中去。第2节 必备模块车牌识不最差不多的流程是:将采集后的图像二值化,然后依次通过车牌定位、字符分割、去除干扰,最后是字符识不。有时还会加入本节前面部分所叙述的思想(比如回溯)。下面将分五章具体介绍每一个模块。第3章 二值化二值化是车牌识不的第一步。二值化前后的对比如图:二值化的算法专门简单,首先有一个亮度的阈值(threshold),对每一个像素的亮度和那个阈值做比较,依照比较结果得出车牌的前景和背景。用c/c+描述如下:voidCLPR:Binary(intthreshold)inty;for(y=0;ym_height;y+) intx;for(x=0;xm_width;x+) uns
33、ignedcharred,green,blue; GetPixel(red,green,blue,x,y);intbright; bright=red+green;if(m_search_blue_plate) if(bright=threshold) SetBinary(x,y,FOREGOUND);elseSetBinary(x,y,BACKGROUND); 二值化算法尽管简单,然而阈值却不容易查找。本章后面的部分,将重点介绍各种求解阈值的算法。第1节 OTSUOTSU算法的思想是:把输入图像首先转换成灰度图象,然后对图像进行直方图分析。假如直方图呈双峰分布。那么双峰之间的“谷”确实是阈值
34、。从统计学角度讲,阈值两边的距离最大。由于车牌识不的专门性,图象象素点的亮度为该象素点的红色重量和绿色重量的和,同时忽略蓝色重量。这一点对蓝色车牌和黄色车牌差不多上适用的。OTSU算法仅对直方图呈双峰分布的图像有效。全部代码如下:voidLPR:OTSU() /直方图统计 intindex;for(index=0;indexm_bright_level_count;index+) m_pixel_numberindex=0; inty;for(y=0;y=m_height;y+) intx;for(x=0;x=m_width;x+) intbright; bright=Bright(x,y);
35、 m_pixel_numberbright+; /真正求阈值doublesum; sum=0;intn; n=0;intk;for(k=0;k=(m_bright_level_count-1);k+) sum+=k*m_pixel_numberk; n+=m_pixel_numberk; doublec_sum; c_sum=0.0;doublef_max; f_max=-1.0;intn1; n1=0;for(k=0;k(m_bright_level_count-1);k+) n1+=m_pixel_numberk;if(n1=0) continue;intn2; n2=n-n1;if(n2
36、=0)break; c_sum+=(double)k*m_pixel_numberk;doublem_1,m_2; m_1=c_sum/n1; m_2=(sum-c_sum)/n2;doublesb; sb=(m_1-m_2)*(m_1-m_2)*(double)n1*(double)n2;if(f_maxsb) f_max=sb; m_prepare_threhold=(int)(k+0.5); 第2节 Matlab算法使用Matlab进行车牌识不,也是一个比较好的选择。在Matlab的环境中首先把输入的彩色图像使用命令rgb2gray转换成灰度图像。有了灰度图像就能够使用命令graythr
37、esh获得阈值了。最后使用命令im2bw对图像进行二值化。十分方便!代码如下:I=imread(blood1.tif);imhist(I);% 人工观看灰度直方图,发觉灰度120处有谷,确定阈值T=120I1=im2bw(I,120/255);% im2bw函数需要将灰度值转换到0,1范围内figure,imshow(I1);改进为I=imread(blood1.tif);imhist(I);I1=graythresh(I);% im2bw函数需要将灰度值转换到0,1范围内figure,imshow(I1);第4章 车牌定位图像二值化,占用车牌识不中的大部分时刻。在二值化之后,车牌识不将变得比
38、较容易。车牌定位为二值化后的第一步。下面分小节分不介绍各种车牌定位算法。第1节 角点定位方法车牌识只是程中,角点定位的差不多思想是:在所有的边界点中,假如某些点的曲率半径比较小,那么这些点叫做“角点”:如下图所示(角点用红点表示):图中字符上和车牌的四角都有角点。然而这并不阻碍车牌的定位。依照距离最大的四个角点,得到了车牌的四个角,从而定了车牌。从角点定位的原理看出,假如通过旋转后车牌并可不能阻碍角点定位的成功率和速度。该算法的实现能够采取遍历匹配的算法,实现如下:voidLPR:GetConere()inty;for(y=0;ym_height;y+) intx;for(x=0;x=3) i
39、f(Line(x,y,x,y+4)=3) if(Line(x+1,y+1,x+4,y+4)=3) if(Line(x+1,y-1,x+4,y-4)=3) if(Line(x,y,x,y+4)=3) if(Line(x-1,y+1,x-4,y+4)=3) if(Line(x-1,y-1,x-4,y-4)=1) Add(x,y,RIGHT_DOWN_CONNER); 函数Line(x1,y1,x2,y2)返回过两点(x1,y1),(x2,y2)的直线,前景的象素个数。注意那个地点的4,是检验角点的区域范围,假如区域过大,图像旋转时就会阻碍车牌定位的成功率。第2节 上下定位方法认真观看二值化后的图像
40、,在车牌的上边和下边各有一条较长的背景线(上图用红线表示)。依照这两条背景线能够准确的定位车牌。定位算法如下:intLPR:HorizontalLine(intx,inty,intcount)intret; ret=0;intx_loop;for(x_loop=0;x_loopcount;x_loop+)if(!IsForegournd(x+x_loop,y) ret+;returnret;IsForegournd(x,y)为询问点(x,y)是不是前景点的函数。该算法比角点定位算法要快,然而不适合通过旋转后的车牌。尽管通过改进后也能够识不出旋转后的车牌,然而速度专门慢,不能出现在成熟的产品中。
41、第3节 变化率定位法图中有三条直线,假如沿着这三条直线扫描的话,会发觉:黑色的扫描线前景占专门大的比例,绿色的扫描线背景占专门大的比例;红色的扫描线前景背景比例都不突出,然而前景背景交替较为频繁。这讲明依照前景背景变化率能够定位车牌。这种算法能够有效防止车牌旋转的干扰。获得变化率的代码如下:doubleCLPR:ScanLine(intx,inty,intcount)boolcurrent_foreground; current_foreground=IsForeground(x,y);intchange_times; change_times=0;intloop;for(loop=1;loo
42、pcount;loop+) if(current_foreground) if(!IsForeground(x+loop,y) change_times+; current_foreground=false; elseif(IsForeground(x+loop,y) change_times+; current_foreground=true; doubleret; ret=change_times; ret/=(count+1);/do not div 0returnret;第5章 字符分割在车牌识只是程中,车牌定位后的工作便是分割字符。本章将分若干节介绍字符分割的算法。第1节 连续点分割
43、法关于一个数字或者字母,前景的点是连续的。用填充算法对种子点填充即可得到整个字符。因此汉字就不是了,因此这种分割算法仅仅适合数字或者字母。然而当整个车牌的数字和字母都得到之后,剩下的那个必定是汉字。那个思想用c/c+描述如下:voidLPR:Scan()inty;for(y=m_plate_top;y=m_plate_bottom;y+) intx;for(x=m_plate_left;x=0;left_x-)if(!IsForeGround(left_x,y)|IsVisited(left_x,y)break; left_x+;for(x=left_x;x=m_width) right_x=
44、m_width-1; left_x-;if(left_x0) left_x=0;intdown_y; down_y=y+1;if(down_ym_height) for(x=left_x;x=0) for(x=left_x;x=right_x;x+) if(IsForeGround(x,up_y)&!IsVisited(left_x,y) stackstack_length0=x; stackstack_length1=up_y; stack_length+; delete (int*)stack;尽管扫描线种子填充算法,比差不多的种子填充算法复杂一些,然而在车牌识不测试后发觉,扫描线种子填充
45、算法比种子填充算法要快三分之一左右。第2节 边界法边界法和连续点分割法专门相似,只只是连续的边界点,而不是所有的前景点。边界法需要事先得到前景像素中的边界点,这可能会花费一些时刻。然而如此会加速得到连续点的递归操作。边界点如下图:得到边界点的算法如下:voidCLPR:GetEdge()inty;for(y=0;ym_height;y+) intx;for(x=0;xm_width;x+) if(IsForeground(x,y) if(!IsForeground(x-1,y) SetEdge(x,y);elseif(!IsForeground(x+1,y) SetEdge(x,y);else
46、if(!IsForeground(x,y-1) SetEdge(x,y);elseif(!IsForeground(x,y+1) SetEdge(x,y); 连接边界点的算法和连接前景点的算法完全相同。第3节 依照尺寸分割从理论上讲,图片和实物相比,尺寸上有了专门大的变化。并不一定图片和实物几何意义上的相似。也确实是讲未必图像和实物成比例。然而实验证实,在一到两个像素范围内,在水平方向上,实物和图像差不多上成比例。那个是来自于GA36-2007中华人民共和国机动车号牌的车牌尺寸讲明。依照这幅图片,我们能够在一定位的车牌上,找到各个字符的坐标。请看下面的代码:voidGetCharacterPo
47、sition(intcharacter_position7,intplate_left,intplate_right) static constintmm= 3+45/2, character_position_mm0+12+45, character_position_mm1+12+10+12+45, character_position_mm2+12+45, character_position_mm3+12+45, character_position_mm4+12+45, character_position_mm5+12+45, character_position_mm6+45/2
48、+1, ;intindex;for(index=0;indexsizeof(mm)/sizeof(mm)-1;index+) character_positionindex=plate_left+(-plate_left+plate_right)*mmindex/mmsizeof(mm)/sizeof(mm0)-1;上面的代码技巧性专门大,需要读者认真揣摩。第6章 去除干扰干扰车牌识不的因素专门多。比如车牌旋转、污染、固定螺丝和车牌边框等等。下面分小节分不介绍去除各种干扰的方法。第1节 去除噪音去除噪音的原理是:每一个字符,差不多上专门大的一个连续块,然而噪音确是比较小的多个连续块。通过递归算
49、法得到每个字符中各个块的大小,保留最大的块,其余块当作噪音删掉。算法专门简单,那个地点不再列出代码。第2节 去除螺丝干扰去除螺丝的工作要和字符本身的特征联系在一起。对不同的字符、相同字符不同部位的螺丝,都要分不编码。工作量专门大。下面分小节举几个例子:0986等左上方螺丝这种情况如下图所示:在比较圆的9的上部出现了一个螺丝,比较明显。能够删掉,代码如下:voidCLPR:DeleteLeftUpSmallScrewCharacterRound()boolpossible_screw;intpossible_screw_start;intpossible_screw_end;if(m_chara
50、cter_index=5) possible_screw=false; intseek;for(seek=0;seek=m_delta_x/2) possible_screw=true;break; intdelta_x;if(possible_screw) possible_screw=false;for(possible_screw_end=possible_screw_start+1;possible_screw_endm_delta_x/2) continue;intright;if(!ExpandHorizontal(right,possible_screw_end,possible
51、_screw_end,m_max_x,SUB) continue;if(rightdelta_x/2) continue;if(possible_screw_end+4m_center_y) continue;intdistance1; distance1=HorizontalDistance(possible_screw_end,possible_screw_end);intdistance2; distance2=HorizontalDistance(possible_screw_end+2,possible_screw_end+2);intdistance3; distance3=Hor
52、izontalDistance(possible_screw_end+4,possible_screw_end+4);if(!(distance1=distance2&distance2=distance3&distance10) continue;if(distance3delta_x*3/4) continue;intseek;for(seek=2;seek=m_delta_x/2) possible_screw=false; if(possible_screw) boolknown_letter; known_letter=false;if(!known_letter) m_min_y=
53、possible_screw_end; RecognizeCharacterAdjustVertical(); 以上代码拷贝自绿睿车牌识不工程,实际上是比较旧的版本。读者能够进行修改,并放入自己工程中。EFT5等右上方螺丝这种情况如下图所示:在比较平的5的上部出现了一个螺丝,十分明显。删掉螺丝的代码如下:voidCLPR:RightUpSmallSideScrewCharacterWide()if(!(m_character_index=1|m_character_index=4)return;intpossible_screw_start; possible_screw_start=Reco
54、gnizeCharacterLocateVeritcalRightUpSmallSideScrewGetStart();if(possible_screw_start=-1)return;boolpossible_screw;intpossible_screw_end; possible_screw=false;intdelta_x;for(possible_screw_end=possible_screw_start+1;possible_screw_enddelta_x*0.63) intseek;for(seek=1;seek=delta_x/2) possible_screw=true;break; if(possible_screw)break; if(!possible_screw)return; inty; y=possible_screw_end-1;intleft;if(ExpandHorizontal(left,y,y,m_min_x,ADD) if(leftdelta_x*0.25)return; if(possible_screw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育项目创业介绍
- 拆迁补偿协议书模板(国有土地)
- 车辆长途运输保险保养合同-物流范本
- 文化活动传单派发与活动赞助协议
- 培训督导经理年度工作总结
- 残疾人就业安置服务合同
- 生态旅游园区场地运营与咨询服务合同
- 现代家居产品设计委托与智能家居系统集成合同
- 特色小吃店联合经营协议
- 城市综合体地下停车场租赁协议
- 2025年湖北省中考道德与法治试卷真题(标准含答案)
- 化妆品标签审核管理制度
- 2025年铜仁沿河土家族自治县“特岗计划”招聘考试笔试试题(含答案)
- 和美乡村示范村规范方案
- 2025春季学期国开电大本科《人文英语4》一平台机考真题及答案(第四套)
- 政府采购评审专家考试真题库(带答案)
- (2025)国家版图知识竞赛(附含答案)
- 2025年高考志愿填报-12种选科组合专业对照表
- 2025甘肃省农垦集团有限责任公司招聘生产技术人员145人笔试参考题库附带答案详解析版
- 牙科技术入股合作协议书
- 外墙保温层热桥防治要点
评论
0/150
提交评论