APP下载

高校车牌登记识别管理系统的设计与实现

2021-07-28徐莉孙龙飞

现代信息科技 2021年2期
关键词:Python语言车牌识别Java语言

徐莉 孙龙飞

摘  要:为保证校园安全,提高车辆出入管理效率,外来访客在高校访问登记界面填写个人信息,车辆到达时,高校车牌登记识别系统通过摄像头捕获车牌信息,系统自动识别放行。该系统包含车牌在线登记子系统和车牌识别子系统两个部分。车牌在线登记子系统前端页面使用JSP技术,通过DIV+CSS对页面进行布局。后端基于Java语言、SSM框架开发,使用Maven进行项目管理。车牌识别子系统基于Python语言,使用OpenCV进行图像处理,提取车牌字符,结合TensorFlow对所获得的车牌字符进行分类识别。

关键词:高校;车牌登记;车牌识别;Java语言;Python语言

中图分类号:TP391.41      文献标识码:A 文章编号:2096-4706(2021)02-0001-05

Abstract:In order to ensure the safety of the campus and improve the management efficiency of vehicle access,outside visitors need to fill in their personal information in university visit registration interface. When vehicle arrive,the university license plate registration and identification system captures the license plate information through the camera,the system automatic identification and release. The system includes two parts of the license plate online registration subsystem and the license plate identification subsystem. License plate online registration subsystem uses JSP technology in its frontend page and make page layout through DIV+CSS,the backend is developed based on Java language,SSM frame,and uses Maven for items management. License plate identification subsystem is based on Python language,uses OpenCV for images processing,extracts license plate characters,and combines TensorFlow to classify and recognize the acquired license plate characters.

Keywords:university;license plate registration;license plate identification;Java language;Python language

0  引  言

隨着科学技术的飞速发展,人工智能与5G网络逐渐普及,智慧交通系统[1]在这种情境下应时而生。车牌识别技术是智能交通系统的核心所在,已广泛应用于交通流量检测、小区车辆管理、街道违停监控、高速公路收费等领域,它改变了传统的交通管理体系,大大降低了人力成本,提高了工作效率,更加科学高效地完善了交通管理系统[2-4]。车辆牌照识别系统分为硬件输入和软件处理两部分。硬件输入是指通过拍摄工具对车牌进行拍摄,软件处理是对收集到的车牌图像进行车牌定位、图像处理、字符分割与识别等,最终将存储识别结果[5]。近年来,随着高校办学规模的逐年扩大,进入校园的外来车辆不断增加,为了保障校园安全,本文设计并实现了高校车牌登记识别系统。访客进校前须在车辆管理页面进行登记,填写车牌号码、访问时间、访客姓名、访客单位、访问对象、手机号码等信息,当车辆驶近校门时,系统通过对车牌的快速识别比对实现车辆的自动放行。

1  系统结构设计

高校车牌登记识别管理系统结构如图1所示。

该系统包含车牌在线登记子系统和车牌识别子系统两个部分。车牌在线登记子系统使用B/S架构通过Web访问,运用J2EE架构搭建Web服务,使用MVC设计模式,通过JDBC技术访问数据库,使用Spring[6]、Spring MVC和MyBatis框架实现。车牌识别子系统与车牌在线登记子系统通过对同一数据库的访问完成信息交互。

1.1  在线登记管理功能设计

访客通过浏览器进入信息登记页面,输入访问时间、车牌号码、访客姓名、性别、年龄、手机号等信息,为了校验用户信息,另外设有非必填字段,如单位、事由、携带物品、被访人姓名,访客可以有选择性地填写非必填字段,不影响其正常访问。为防止恶意登记,在处理信息之前首先需要对信息进行验证。在线登记流程如图2所示。

1.2  车牌识别功能设计

在本系统中,通过互联网技术实现外来车辆的信息登记,使外来车辆在门禁闸机处可以被识别并放行。车辆通过门禁流程如图3所示。

1.3  系统框架环境搭建

在线登记管理系统使用Maven进行项目依赖管理,因此,需要首先在IDEA中配置Maven环境,新建Maven项目。完成项目创建后,在pom文件中添加并导入Spring、Spring MVC和MyBatis等框架依赖。

在项目中添加src级目录Java,resource目录resources。在Java目录下完成项目编码,在resources目录下添加并配置Spring配置信息applicationContext.xml,Spring MVC配置文件springmvc.xml和MyBatis配置文件mybatis-config.xml,以及用于数据库连接的db.properties和日志记录log4j.properties。最后在web.xml中配置Spring。系统开发环境以及主要依赖版本如表1所示。

2  系统实现

2.1  在线登记注册实现

在线登记注册页面为工程中jsp目录下的register.jsp文件,此页面在系统中被设置为默认首页,主要为访客做信息登记之用。后台由VisitRegisterController接收并处理注册请求,由CaptchaController接口完成验证码的生成、返回以及对验证码的校验。对输入信息的合法验证由前台页面中的JS脚本完成。最终页面效果如图4所示。

2.2  在线登记后台管理实现

在线登记后台管理页面为系统工程中jsp目录下的manage.jsp文件,由后台VisitManger接收处理,所有访问接口均被放在manage二级请求中,同时配置拦截器拦截manage下的请求,只有已经登录的会话才可以访问,否则将跳转到登录页面。登录页面为系统工程文件中jsp目录下的login.jsp文件,由后台AdminController接收处理,完成管理员登录。登录页面如图5所示,后台管理页面如图6所示。

2.3  车牌识别系统实现

2.3.1  图像处理实现

图像处理功能使用Python语言实现,通过调用OpenCV图像处理库完成大部分图像处理功能。车牌识别系统的基本流程如图7所示。

车牌识别系统开发环境如表2所示。

图像处理过程主要包括图像尺寸调整、图像降噪、图像灰度化、阈值分割、图像边缘检测等环节:

(1)图像尺寸调整。图像尺寸调整通过调用OpenCV中所提供的resize函数完成,对图像宽度设置阈值,当接收到的图像宽度大于该阈值时,则计算图像比例,重新调整图像尺寸。本系统对图像尺寸进行调整时将阈值常量MAX设置为1 000,读取图像文件后获取图像宽度,当图像宽度大于设置的阈值时,使用阈值MAX除以图像宽度得到图像缩放比率。将阈值宽度MAX作为新的图像宽度傳入,将缩放比率与图像的高度乘积作为新的图像高度。

(2)图像降噪。图像降噪由OpenCV库中的Gaussian-Blur函数实现,利用高斯模糊消除图像中的细小噪声颗粒。

(3)图像灰度化。图像灰度化通过OpenCV库中的cvtColor函数实现,指定其颜色转换方式为cv2.COLOR_BGR2GRAY。

(4)阈值分割。本系统中采用OTSU方法[7]进行阈值分割,可以使用OpenCV库中所提供的threshold函数以二值化方法完成阈值分割。

(5)图像边缘检测。图像边缘检测通过Canny边缘检测实现,设置Canny算法中低阈值和高阈值分别为100和200,得到的阈值分割效果如图8所示。

完成图像边缘检测后再通过一次闭运算和一次开运算,填充白色区域的内部细小黑色空洞,并平滑其边缘,使图像中的特征区域成为整体色块,得到图像中的连通域。不包含其他多余信息的连通域可以为车牌定位提供极大的便利,最终得到的连通域如图9所示。

图像处理过程核心算法如算法1所示:

算法1 图像处理过程

if 图像宽度 > 阈值宽度

then 缩放比 ← 阈值宽度 / 图像宽度

img ← 将图像进行等比缩放

img ← 对图像进行高斯模糊

img ← 将图像转换为灰度图

img_opening ← 使用20*20单位矩阵对img进行开运算并将结果与img重合

ret, img_thresh ← 对img_opening进行阈值二值化

img_edge ← 对img_thresh进行Canny边缘检测

img_edge1 ← 对img_edge进行闭运算

2.3.2  车牌定位与字符分割实现

使用OpenCV中所提供的findContours函数将图中所有色块的轮廓提取出来。通过findContours函数得到的轮廓首先进行面积计算,滤除其中面积过小的区域,之后针对剩余的轮廓求出它们的最小旋转矩形,并获得最小旋转矩形的宽和高。因为我国的车牌标准大小为宽440 mm,高140 mm,宽和高的比值约为3.14,所以对得到的旋转矩形同样计算其宽高比,设定宽高比在2.5到4.5之间的区域为车牌区域,否则就认为这个区域是背景将其舍弃,如图10(a)、10(b)所示。可以看到其中一块因为得到的旋转矩形与车牌区域得到的旋转矩形基本相同所以被错误地识别为车牌区域。我国民用车牌的颜色分为蓝色、黄色和绿色,而警用、军用医疗、消防、特勤等专用车牌不在本系统的应用范围所以不做考虑,而右侧的车灯和进气孔显然不存在这样的颜色特征,故而排除。

提取车牌后将车牌中的每一个字符单独切分取出,首先需要对车牌图像进行二值化处理,之后对二值图像进行垂直投影,通过遍历图像中的每一列,对每一列中的每一行累加,得到车牌的每一列中所包含的像素数,存储在数组中。

将车牌垂直投影的数组作为直方图输出,可以得到图11,可以发现在直方图中有明显的波峰和波谷,而波峰则对应着车牌中存在字符的地方,波谷则是在车牌中字符间隔的位置。通过直方图还可以再次验证得到的区域是否是车牌,当直方图中波峰少于个6时,它就不符合车牌规则。

为了排除车牌边框的干扰,将其中小于5的置0,得到图12中所示的直方图,此时每一个波峰已经独立。将波峰起点到终点间隔小于2的认为是边框而舍弃。

使用同样的方法,对车牌进行水平投影以去除车牌中的上下边框,最终切分出的字符如图13所示。

2.3.3  字符识别实现

本系統通过构建一个卷积神经网络对得到的车牌字符图像进行分类,数据集为CCPD中所提供的部分车辆图像信息。首先将所有字符分为两大类,一类是表示省份代码的中文字符,另一类是车牌中的字母和数字。两类数据分别用于两个神经网络的训练,在两类数据内部将数据再次按照字符内容分组放入不同文件夹内,之后将数据按7:2:1的方式分为训练集、测试集和验证集,形成最终用于训练的数据。

采用Keras中ImageDataGenerator方法加载图像形成数据集。将数据在神经网络中不断迭代,进行前向和反向传播对网络中的参数进行梯度更新,逐步使得目标函数趋于最小值。在Tensorflow2.0中通过Keras将构建好的模型编译为model对象,利用model对象的fit方法完成训练,经过15轮训练后模型的准确率达到0.95,如图14(a)、14(b)所示。

2.3.4  应用模型预测

接收到OpenCV传入的字符图像数组后将其转换为Tensor张量,并进行归一化处理,然后加载保存的模型,编译生成model对象,通过model对象的predict方法得到模型的预测结果,如图15(a)、15(b)所示。

因为中文和字母数字是由两个神经网络分别识别的,所以在识别第一个字符时使用中文识别的网络模型,对其他字符使用字母和数字识别的网络模型。

在得到车牌中的字符后,就可以针对车牌信息检索数据库,查看该车辆是否已经登记。这里使用PyMySQL进行数据库操作,当查询到数据库中有符合条件的记录时,则向门禁系统发送指令放行,同时记录该车辆信息,并保存车牌图像以方便后续检查。

应用模型进行字符识别主要过程见算法2:

算法2 应用模型进行识别

for i, image in enumerate(iamges)

img_tersor ← 将数组转换为张量

if i == 0

then prob ← 中文字符识别

charactor ← 获取prob对应字符

else prob ← 字母数字识别

charactor ← 获取prob对应字符

predict_result += charactor

返回识别结果 predict_result

3  结  论

本文通过设计并实现高校车牌登记识别管理系统,将门禁系统和网络相结合,利用Web在线登记信息,通过车牌识别结果检索登记信息,从而实现了车辆出入校园时进行远程登记、信息化、智能化的处理过程。本系统基于卷积神经网络数据集进行训练,对模型使用车牌字符数据集进行训练后模型的准确率达到0.95,能够准确识别车牌信息,轻松实现了校园车辆的高效管理。

参考文献:

[1] ZHU F H,LI Z J,CHEN S H,et al. Parallel Transportation Management and Control System and Its Applications in Building Smart Cities [J]. IEEE Transactions on Intelligent Transportation Systems,2016,17(6):1576-1585.

[2] 李兵,易嘉闻,黄锋,等.基于TensorFlow深度学习的车牌识别算法研究 [J].成都工业学院学报,2018,21(4):28-33.

[3] 张帆,王晓东,郝贤鹏.基于边缘特征的智能车辆字符识别 [J].自动化与仪器仪表,2020(6):11-14+20.

[4] 朱凤霞.基于神经网络和图像识别的车牌识别技术 [J].电子设计工程,2020,28(2):130-133+138.

[5] 梁大宽.复杂背景下多车牌识别算法的研究与软件系统实 [D].太原:太原理工大学,2016.

[6] 黑马程序员.Java EE企业级应用开发教程 [M].北京:人民邮电出版社,2017.

[7] 倪麟.基于Otsu理论的图像分割算法的研究 [D].重庆:重庆大学,2013.

作者简介:徐莉(1991.03—),女,汉族,河南信阳人,助教,硕士研究生,研究方向:数据挖掘,图像处理;孙龙飞(1997.05—),男,汉族,河南洛阳人,本科,研究方向:图像处理。

猜你喜欢

Python语言车牌识别Java语言
基于Python语言和支持向量机的字符验证码识别
论Python程序设计语言
基于Python语言的面向对象课程实践教学探讨
基于Android平台的健康医疗APP设计与开发
基于支持向量机的车牌字符识别方法
基于Android的Python语言英汉维电子词典设计与实现
车牌识别系统设计与实现
基于车牌识别的机器视觉课程研究
计算机软件开发中的JAVA编程语言分析
用户隐私保护之手机密码保险箱