【北方工业大学毕业论文】基于机器学习的车牌识别系统

注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。

基于机器学习的车牌识别系统

摘  要:随着我国经济的发展,人民生活水平的提高,汽车的数量与日俱增。只靠人为力量已经不能满足庞大的交通系统管理的要求。利用高新技术开发一个智能化、信息化的智能交通管理系统成为行之有效并切实可行的办法。车牌号识别系统是智能交通管理系统的核心组成部分,它可以广泛的应用到各个公路、道路及城市的出入口处的监督管理,高速公路、桥梁、隧道等计费交通设施的收费管理系统,对于交通违章违法行为的智能监控管理(电子警察),公用的停车厂车辆的停靠管理,住宅小区、商场和单位等地的出入口处车辆的安全防盗管理,肇事车辆或被盗车辆的侦查和拦截,车流量的监控、识别和车辆分流等等。

车牌识别系统是对经摄像头拍摄的含有车辆牌照的图片利用图像处理的分析方法,提取出车牌区域,进而对车牌区域进行字符处理和分割,再对每个字符进行识别,最后对结果进行拼接,组成完整的车牌号。

本文的主要工作分为如下几个部分:

(1)车牌识别系统的分析与设计:通过对系统的业务需求分析以及功能需求分析确定了系统的功能架构组成,并对系统进行了安全性设计。

(2)车牌识别系统的实现的方法:主要是让车牌识别系统功能满足实现过程中用户的各种需求,让这种系统能够真正的应用到实际业务中,实际上这种系统功能的实现是在对系统进行需求分析的基础上进行的。

关键词:车牌识别系统;Python;MYSQL数据库

目录

1 概述

1.1 研究背景及意义

1.1.1 研究背景

1.1.2 研究意义

1.2 国内外研究现状

1.2.1 国内研究现状

1.2.2 国外研究现状

1.3论文的主要研究内容

1.4 论文的组织架构

2 基础理论知识

2.1 网站的开发环境

2.2 图像预处理

2.3 机器学习算法

3 系统分析

3.1 系统功能分析

3.2 车牌识别系统结构分析

3.3 网站设计原则

3.4 网站的需求分析

3.5 业务流程分析

3.6 数据流程分析

3.6.1 第一层数据流程图

3.6.2 第二层数据流程图

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

4.1 系统功能设计与实现

4.1.1 管理员的功能设计与实现

4.2 数据库设计与实现

4.2.1 概念结构设计与实现

4.2.2 逻辑结构设计与实现

4.3 系统功能模块设计与实现

4.3.1 车牌处理模块设计与实现

4.3.2 车牌数据加密存储设计与实现

5 系统测试

5.1 系统测试

5.2 测试结论

6 总结

致 谢

参考文献

1 概述

1.1 研究背景及意义

1.1.1 研究背景

随着我国交通技术的持续进步,经济发展水平的不断提升,汽车数量持续增加,城际交流的频度也在增大,这些都对当前的交通管理系统构成了沉重的压力。例如,频繁发生的交通事故和早晚高峰期的交通拥堵问题等。这种情况在全球范围内的交通管理系统中也是普遍存在的。因此,开发一套智能化、信息化的智能交通管理系统,已成为一种行之有效且实际可操作的解决策略。

车牌识别是一项经典的机器视觉任务,它通过图像处理技术实现车牌的定位、识别以及字符识别,从而实现计算机对车牌的智能管理功能。现在,车牌识别系统已经广泛应用于小区停车场、高速公路出口、监控场所、自动收费站等场所。虽然该技术已经被广泛应用,但在精度和识别速度方面仍有进一步提升的空间。因此,自己动手实现一个车牌识别系统,不仅可以帮助学习和理解图像处理的先进技术,而且还能为提高车牌识别系统的精度和识别速度做出贡献。

随着计算机技术的飞速发展和数字图像技术的成熟,传统的交通管理方式正在发生深刻的变革。先进的计算机处理技术能够解放人力,摆脱繁琐的人工观察和检测,同时提升精准度。在这样的背景下,车辆牌照自动识别系统(VLPRS)应运而生。

VLPRS通过对道路摄像头捕获的图像进行数字化处理和分析,运用最新的图像处理技术和数学形态学方法,对汽车图像进行平滑、二值化、模糊处理、边缘检测、图像分割、开运算、闭运算和区域标记等步骤,从而准确地提取出车牌区域。通过这些处理手段,VLPRS能够实现对汽车牌照的精确定位,并最终完成对汽车牌照的识别。VLPRS技术的发展和应用,将会推动智能交通系统的不断发展,进一步提高道路交通的安全性、智能化和高效化程度。这项技术的重要性不仅在于它可以提高交通管理效率和安全性,同时也为智慧城市建设提供了技术支持。随着城市化进程的不断加快,城市交通问题愈发突出,人们对交通安全和效率的要求也越来越高。而车辆牌照定位与识别技术的应用可以为城市交通管理带来重大改善。

最近几年,汽车牌照智能识别的技术发展飞速,基于其识别基础,主要可以分为间接方法和直接方法两类:间接方法是基于IC卡认证(REID)或基于条形码的识别;直接方法则是基于图像的汽车牌照识别。由于计算机视觉和深度学习技术的持续发展,直接方法在汽车牌照识别方面的应用越来越普遍,不断实现了新的突破和进步。

1、关于间接方法:这种方法是通过识别安装在汽车上的IC卡或条形码中的车牌信息来识别车牌和相关信息。IC卡技术具有高识别准确度和可靠性,能够全天候工作。但是,整个设备的价格高昂,硬件设备极其复杂,不适合异地作业。条形码技术具有识别速度快、准确度高、可靠性强和成本较低等优点,但是对扫描器的要求非常高。此外,这两种方法都需要制定全国统一的标准,且无法验证车辆和条形码是否匹配,这也是技术上的不足,给近期的推广造成了困扰。

2、关于直接法:基于图像的车牌识别技术,能够对在行驶或停止状态的车辆进行非接触式的信息收集和实时智能识别。相比于间接法,直接法的优点在于节省了设备配置和大量资金投入,从而提升了经济效益。这种方法采用了前沿的计算机应用技术,从而提高了识别的速度并解决了实时性的问题。此外,它依赖于图像进行识别,因此可以通过人为的干预来解决系统中的识别误差,而其他方法难以实现与人的交互。直接法主要采用图像处理技术、传统模式识别技术和人工神经网络技术等方式。

关于车辆牌照的识别,有三种主要技术:

1、图像处理技术:自20世纪80年代以来,图像处理技术就开始被用于车牌识别,并逐渐被实际应用。当时的研究大多集中在车牌识别的某一特定问题上,采用了基础的图像处理技术,但并未形成完整的系统。识别过程主要包括使用工业摄像机拍摄车辆的前方图像,并通过计算机进行初级处理,尽管这个过程仍需要人工参与。特别是在省份汉字的识别问题上,1985年有研究者提出了一个汉字识别的分类方法,该方法通过提取汉字特征,然后进行粗分类,最后利用动态规划方法实现省名的自动识别。

2、传统模式识别技术:传统模式识别技术主要包括结构特征法和统计特征法等。进入90年代,随着计算机视觉技术的发展,系统化的车牌识别研究开始盛行。1990年,AS.Johnson等人成功地应用计算机视觉技术和图像处理技术构建了车牌自动识别系统。这个系统包括图像分割、特征提取和模板构造、字符识别等步骤。该系统能够通过设定不同的阈值来准确地分割出车牌,并通过预设的标准字符模板进行模式匹配,从而识别出字符。

3、人工神经网络技术:近期,一些计算机科技发达的国家开始研究使用人工神经网络技术进行车牌自动识别。例如,1994年,M.M.M.FANHY等人成功地运用了BAM神经网络方法进行车牌字符的自动识别。BAM神经网络是一种由相同神经元构成的双向联想单层网络,每一个字符模板都对应一个唯一的BAM矩阵。通过与车牌字符的比较,BAM神经网络可以识别出正确的车牌号码。

然而,尽管基于图像的车牌识别系统日渐成熟,车牌识别在面对不同光照条件和复杂背景时,其分割和识别任务仍然非常挑战性,这导致了当前市场上的车牌识别系统虽有一定实用性,但依然存在局限性。至今,车牌自动识别技术仍未达到很完善的水平。因此,针对车牌识别系统的研究仍需进一步深入和完善,以期能够提高车牌识别的准确性和实用性。

2.2 图像预处理

在计算机视觉领域,图像的预处理是图像识别的前提,因为计算机需要通过像素点的值和排列关系来识别图像。因此,在实现计算机视觉算法之前,需要对图像进行一系列的预处理。预处理旨在提高图像视觉品质,还原图像的真实信息,并提高相关信息的可识别性和可靠程度。为了达到这个目的,需要使用各种不同的预处理技术。首先,将彩色图像转化为灰度图像是图像预处理中的一个重要步骤,因为灰度图像只包含黑、白和灰三种色调,简化了图像的颜色信息,同时保留了图像的亮度和对比度信息,有助于后续的处理。

其次,边缘识别是另一个重要的预处理步骤,它可以在图像中识别出不同区域之间的边缘。常用的边缘检测算法包括Sobel算子、Canny算子和Laplacian算子等。接下来,腐蚀是一种用于降低二值图像中物体大小的预处理技术。它可以通过对图像进行一系列的腐蚀操作,逐渐缩小物体的大小,从而去除一些噪点。平滑处理是一种消除图像中噪声的方法,它通过对图像进行模糊处理,平滑图像中的细节和噪声,以提高图像的质量和可识别性。常用的平滑处理算法包括高斯模糊和中值滤波等。最后,移除最小对象是一种用于去除图像中面积很小的物体的预处理技术,这些物体通常是噪声或不需要的细节,对于后续的处理没有意义。综上所述,图像预处理是图像识别的前提,通过预处理技术可以提高图像的视觉品质,还原图像的真实信息,提高相关信息的可识别性和可靠程度,为后续的处理提供更准确的数据基础。

1、图像灰度图的转化:由于我国车辆的种类较多,车牌的底色和字符的颜色会因为车辆种类的不同而有多种不同的组合,但是其色彩对比度是很大的,这就有利于将图像转化为灰度图像,然后再分割提取出车牌区域。下面是图像灰度值H的计算公式。

H=0.299R+0.587G+0.114BH=0.299R+0.587G+0.114B(1);

H=B+G+R3H=B+G+R3(2);

公式(1)用的是权值加重法,公式(2)用的是均值法。可以用函数rgb2gray()来实现权值法。

2、图像的边缘识别:由于输入系统的由监控拍到的车辆的图片可能会因为车速.噪声.车辆本身导致拍摄到的图片模糊或者受到干扰。因此,必须先进行边缘识别得到清晰的车牌轮廓,才能进一步处理进而进行车牌的定位分割,可以用函数edge()来完成边缘识别。根据阈值0.15,并且在横向纵向上,用Prewitt算子进行边缘识别,具体函数为edge(I,'prewitt',0.15,both)。

3、灰度图像的侵蚀:图像侵蚀是对拍摄的照片进行形态学分析处理,旨在去除多余的边缘线条,减轻噪声的干扰。图像侵蚀能够去除在边缘识别后图像中的小的无关的点和线,降低这部分的干扰,我们可以通过使用imerod()函数完成灰度图像的侵蚀。

4、平滑化处理:在完成边缘识别和侵蚀处理后,车牌处理模块已经能够揭示出车牌区域的轮廓。然而,由于噪声和其他因素的影响,车牌区域还无法被精确地提取。因此,在进行车牌区域的计算和切割前,需要对图像进行平滑处理,消除一些孤立且无意义的噪点。我们可以通过使用imclose()函数实现图像的平滑处理,使图像实现闭运算。

5、删除小对象:在图像平滑处理后,可能会有很多封闭区域,比如一些噪点和车标,这些不是车牌部分的区域需要尽可能地删除。我们可以使用bwareaopen()函数,将图像中小于设定面积值的部分去除。

3.6.1 第一层数据流程图

3.6.2 第二层数据流程图 

4.2 数据库设计与实现

车辆识别系统的数据库设计可以包括以下表:

1、车辆信息表:存储车辆的基本信息,包括车牌号、车型、颜色、品牌、型号等。

2、车辆图片表:存储车辆的图片信息,包括车辆正面、侧面、后面等多个角度的图片。

3、车辆识别记录表:存储车辆的识别记录,包括识别时间、识别结果、识别图片等信息。

4、用户信息表:存储系统管理员和普通用户的信息,包括用户名、密码、权限等。

5、系统日志表:存储系统的操作日志,包括管理员的登录、操作记录等。

6、车辆违规记录表:存储车辆的违规记录,包括违规时间、违规地点、违规类型等信息。

7、车辆黑名单表:存储被列入黑名单的车辆信息,包括车牌号、原因、列入时间等。

8、车辆白名单表:存储被列入白名单的车辆信息,包括车牌号、原因、列入时间等。

4.2.1 概念结构设计与实现

通过上述对系统分析对数据库进行结构设计,系统整体E-R图如图4-6所示:

各相关属性图如下所示:

这是一个后台管理员管理数据的截图,列出了该表包含的字段及其属性。下面是对每个字段的分析:

  1. MemberID: 表示管理员ID,是一个整型(int)数据类型,长度为4。该字段不允许为空(null),并且作为主键(primary key)。
  2. Sex: 表示管理员的性别,是一个字符(char)数据类型,长度为4。该字段允许为空(null),意味着有些管理员可能没有填写性别信息。
  3. TrueName: 表示管理员的真实姓名,是一个变长字符(varchar)数据类型,长度为10。该字段允许为空(null),意味着有些管理员可能没有填写真实姓名信息。
  4. Power: 表示管理员的权限,是一个变长字符(varchar)数据类型,长度为50。该字段不允许为空(null),因为权限是管理系统中非常重要的信息。
  5. Nickname: 表示管理员的管理者名,是一个变长字符(varchar)数据类型,长度为20。该字段不允许为空(null),并且作为管理员的唯一标识。
  6. Password: 表示管理员的密码,是一个变长字符(varchar)数据类型,长度为50。该字段不允许为空(null),因为密码是管理系统中非常重要的信息。

这个表结构描述了一个管理员表,包括了管理员的基本信息。其中MemberID作为主键,确保了每个管理员的唯一性。管理员的性别、真实姓名、管理者名和密码等信息也被记录在表中。通过这些字段,系统可以进行管理员的管理和授权操作。

4.3 系统功能模块设计与实现

4.3.1 车牌处理模块设计与实现

车牌处理模块是车牌识别系统中的一个重要模块,主要负责对采集到的车辆图像进行处理,以便更好地进行车牌识别。车牌处理模块的主要功能包括:

1、图像预处理:对采集到的车辆图像进行预处理,包括图像增强、去噪、灰度化等操作,以便更好地进行车牌定位和字符分割。

2、车牌定位:对预处理后的车辆图像进行车牌定位,找到车牌在图像中的位置和大小,以便后续进行字符分割和识别。

3、字符分割:对车牌图像进行字符分割,将车牌中的字符分离出来,以便后续进行字符识别。

4、字符识别:对分割出来的字符进行识别,得到车牌号码。

车牌处理模块的实现可以采用传统的图像处理算法,也可以采用深度学习算法。传统的算法包括边缘检测、形态学处理、投影法等,深度学习算法包括卷积神经网络、循环神经网络等。不同的算法有不同的优缺点,可以根据实际需求进行选择和优化。该车牌识别系统的车牌处理模块界面如图4-12所示:

注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值