基于手机APP 的车牌识别系统设计

2024-04-16 03:25孟令权熊威喻亚云程宇昊胡安正陈传亮
电子制作 2024年6期
关键词:车牌字符运算

孟令权,熊威,喻亚云,程宇昊,胡安正,陈传亮

(湖北文理学院 物理与电子工程学院,湖北襄阳,441053)

0 引言

随着经济的飞速发展,汽车的数量在不断增加,它的增加会造成乱停车的现象,而在日常的智能交通管理系统中,大多数采用固定式的智能监控设备,就是在停车场入口或高速公路入口处设立长期的车牌识别装置,如高速公路入口处的ETC 通道,优点在于无需人工值守,并且可针对任意网络覆盖路段实行全天监控。但仍然有许多缺点,其制造成本较高,且灵活性不足,不能对路边违停车辆及商场周边的临时停车车辆进行及时有效地管理,所以针对这些固定式识别设备的缺点,移动便携式车辆牌照识别装置将有很大的发展空间。

1 基于手机APP 的车牌识别系统总体设计思路

该车牌识别系统核心主要分为两大部分,前台手机APP 的设计和后台装置的车辆监管系统。前端手机app 实现车牌照片的拍摄、与后台装置的数据交换以及人机交互等功能;后台装置实现车牌号识别、数据管理和数据收发操作。前台手机APP 的设计是采用Qt 开发平台设计,采用C++和QML 混合编程制作Android 和IOS 多平台通用的移动客户端。通过客户端拍摄并上传目标车辆的车牌照片至网络服务器端,然后后台装置对传输来的图片进行预处理,利用边缘特征和颜色特征算法结合定位车牌,使用优化后卷积神经网络中的LeNet-5 模型,应用于字符识别,具有很高的正确率。接着输出车牌数据给警务平台,警务平台查询该车牌号,获取车主信息和车辆数据,将其发送到前端手机APP,进而可以判断目标车辆是否是为正常车辆。系统总体流程图如图1 所示。此外,针对车辆管理系统,建立了基于MySQL 的车辆数据库,在接收到信息之后会将数据上传到MySQL 数据库中,封装查询、修改、添加等操作API,方便车辆管理系统调用。基于MySQL 的车辆数据库在时代趋势下具有可靠性、可扩展性、性能优化、开源性和兼容性等优点,能够满足车辆数据管理的需求,并适应不断变化的时代趋势。

图1 系统总体框图

2 后台装置的车辆监管系统的设计介绍

■2.1 基于边缘检测与颜色特征识别的车牌区域检测

2.1.1 基于边缘检测的车牌区域检测算法介绍

首先对图像进行预处理,通过高斯滤波去除图像中的噪声,获取目标特征,然后对图像进行灰度化处理,然灰度图只有一个颜色等级,但是灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。然后通过搜索图像中灰度值变化波动较大的点,从而检测出图像中事物的边界。由于Canny 算子具有图像降噪、增强、检测等多环节作用,并且其图像结构清晰,因此选用Canny 算子进行边缘检测。

然后,对图像进行开闭运算。开运算是先腐蚀再膨胀,闭运算则与开运算相反。通过应用开闭运算,可以使图像的轮廓更加光滑,并去除小的孔洞。在这里,可以20×20 的全1 结构对图像进行开运算,再选用4×19 的全1 结构对图像进行一次闭运算和开运算。

完成开闭运算后,图像上会形成一些连通区域。可以通过轮廓检测获取所有边界连续的像素序列,并生成最小外接矩形。计算矩形的面积,并排除面积最小的矩形。根据车牌的形状特征,可以计算矩形的宽高比,进一步排除非车牌区域的矩形。通过这些步骤,可以粗略地定位车牌区域,如图2 所示。

图2 粗略定位车牌

2.1.2 基于颜色特征的车牌区域检测算法介绍

本算法使用了两种空间模型进行了对车牌进行粗定位,一种是RGB 颜色空间模型,该颜色空间属于基色颜色空间,其颜色显示原理同彩色显示器显示色彩相同,由R、G、B相加混色而成。在RGB 颜色空间中,任意颜色都可以通过R、G、B 三个不同的分量表示。另一种是HSV 颜色空间模型,它是一种基于感知的颜色模型,该颜色空间可用图3 来描述。

图3 HSV 颜色空间模型

RGB 颜色空间根据物理原理表示,采用R、G、B 三色混合,适合彩色显像管工作。然而这种表示不利于人的视觉感知特点,与RGB 颜色空间相比,HSV 颜色空间更类似人类感觉颜色的方式,便于颜色的对比。因此将RGB 转化为适合进行颜色对比的HSV 空间,其转换公式为:

针对不同颜色的车牌设定不同的阈值,根据阈值设定掩膜的参数,利用掩膜与图像进行操作,保留需要的像素,剔除非需要像素。经过HSV 阈值处理后的车牌图像还包含许多细小的孔洞,为了填充这些细小的孔洞、联通车牌区域、使车牌区域更加平滑,本文采用图像开闭运算来解决上述问题,采用20×20的全1结构对图像进行一次闭运算和开运算。

最后通过轮廓检测获取所有边界连续的像素序列,将获取的所有边界轮廓生成最小外接矩形,计算矩形面积并排出最小面积的矩形;根据车牌的形状特征,计算矩形的宽高比,进一步排除非车牌区域的矩形。最终粗略定位结果如图4 所示。

图4 粗略定位结果

■2.1.3 精确定位车牌区域

基于边缘检测的车牌区域检测算法具有噪声抑制、适应暗环境和快速处理的优势,能检测多个候选区域。但边缘检测定位的车牌区域通常不止一个,需要进一步筛选。基于颜色特征的车牌区域检测算法在光线好的情况下准确,但在光线暗、车牌褪色等情况下不准确。可通过结合边缘和颜色特征实现初步定位。

拍摄不同车辆时,由于条件不同,距离和角度差异,导致车牌图片倾斜、不利于定位和字符分割。采用仿射变换解决车牌图像的垂直倾斜问题。通过粗定位获取车牌区域的四个角点,确定车牌的倾斜极性。根据倾斜方向选择矫正后车牌的参考点,并计算其他角点的坐标。通过仿射变换将原始车牌图像的角点映射到矫正后的角点,实现车牌图像的矫正。

本文将经过矫正的车牌区域图像转换为HSV颜色空间,并设定黄牌、蓝牌、绿牌的颜色阈值。通过统计符合各颜色阈值的像素数量来确定车牌的颜色。然后,根据识别的车牌颜色设定分割阈值,逐行和逐列扫描车牌区域图像,统计符合阈值的像素数量,保留达标的行列,剔除不达标的区域。最终得到精确定位的结果如图5 所示。

图5 精确定位结果

■2.2 基于投影法的车牌字符分割

本文提出了基于投影法的动态阈值字符切割方法。首先将车牌区域的做水平投影,根据像素分布自动设定阈值,去除车牌上下边框;然后进行垂直投影,自动设定阈值并分割边框及字符。该方法解决了字符过分分割的问题。字符归一化部分通过计算宽高比,并采用图像边界扩展和双线性插值法,将字符归一化为32×40 像素大小的图片。最终实现字符分割和归一化。

■2.3 基于改进LENET-5 网络的车牌号码识别

本文字符的识别采用了LeNet-5,这是一个经典的卷积神经网络模型。经过激活函数和损失函数的选择和优化后,对字符的大小进行了调整,将输入层的尺寸修改为40×32 像素的灰度图像。为适应字符检测的图片,进行左右填充和缩放等操作,从而优化了输入层。此外,还添加了dropout 层,以有效防止过拟合问题,尤其是在训练样本较少的情况下。最后,在自行创建的字符数据集上,经过改进的LeNet-5 算法进行实验。

第一步归一化数据集的颜色深度及大小,第二步建立模型结构,第三步创建Session,第四步输入数据集训练和测试模型,第五步保存模型参数,具体模型训练流程图如图6 所示。

图6 模型训练流程图

实验结果显示,汉字的平均识别率达到了97.8%,而字符和数字的平均识别率则为98.9%。这表明该方法在字符识别方面取得了良好的效果。

■2.4 基于MySQL 的车辆数据库

MySQL,这是一种关系型数据库管理系统。MySQL 支持多种开发语言,包括C、C++、Java、Python 等,而且可以在多种平台上运行。它具有许多优点,包括简单易用、对个人用户基本免费、体积小、支持查询语言、性能强、安全性高和速度快等。

车辆管理数据库是使用Python 语言随机生成的。该数据库包含了各种信息,如姓名、电话、性别、民族、准驾车型、出生日期、领证日期、驾驶证有效日期等等。这些信息将有助于车辆管理系统有效地跟踪和管理车辆和相关的驾驶人员信息。

3 前端手机APP 的设计

■3.1 软件设计总体方案

在手机APP 的前端设计方面,主要采用了Qt 开发平台,Qt 是一个强大的跨平台应用程序开发框架,支持多种操作系统,包括Windows、Mac OS X、Linux、Android、iOS以及WP 等。Qt Quick 则是一项新技术,特别适用于移动终端应用的设计,具备支持动态触摸式界面的能力。

UI 界面的设计采用了QML 语言,这种语言提供了高度的自由度,使得轻松进行布局和控件绘制成为可能。同时,它也支持与Qt 的无缝集成,让界面设计变得更加灵活。

为了实现与服务器的通信,采用了Qt 中的QTcpSocket类作为客户端,用于连接服务器并建立通信套接字。这确保了APP 能够有效地与后端进行数据传输,从而实现车牌图片的传输、识别以及车主和车辆信息的匹配功能。

在进行APP 测试时,采用了iOS 操作系统,并运行于iPhone 6S 设备上,连接了WiFi 网络以保证顺畅地通信。用户通过APP 可以轻松地拍摄车牌图片,系统将自动识别车牌并与相应的车主和车辆信息进行匹配。此外,APP 提供了多个功能界面,包括登录、主界面、拍摄和信息展示界面,以便用户可以方便地使用各项功能。

■3.2 手机APP

本文采用的是QML 设计的UI 界面,QML 可以使用代码轻松布局绘制控件,自由度极高,也可以直接使用Qt 进行布局,自动生成代码。通过C++实现的TCP/IP 通信,然后QML 与C++进行交互QML 与C++交互有多种方式,本文将C++中的类注册一个QML 类型,通过qmlRegisterType()注册一个非单例类型,下面是注册QML 类型的相应代码:

qmlRegisterType("an.qt.LPR", 1, 0,"LPR");

上面代码将C++中LPR 类注册为QML 类LPR,主版本为1,次版本为0,包名为an.qt.LPR。在QML 代码中引入包名,即可使用LPR 类。手机APP 的程序流程图如图7所示,APP 的信息界面如图8 所示。

图7 手机APP 的程序流程图

图8 信息界面图

4 结束语

本文设计了基于前端手机app 和后台装置的车辆监管系统。执法人员使用手机作为拍摄装置,将拍摄的车辆图片通过互联网发送至后台装置进行处理和识别,然后将识别结果与数据库对比,并将车辆信息发送给手机端。该系统具有制作成本低、灵活性高、识别率高和便于管理的特点,能够支持执法人员随时随地处理违规车辆,并记录相关信息,提高工作效率。

该系统具有广阔的应用前景,特别是在交警处理违停车辆方面。因此,设计、研究并制作基于前端手机APP 和后台装置的车辆监管系统实物模型对于实现这一目标非常必要。

猜你喜欢
车牌字符运算
寻找更强的字符映射管理器
重视运算与推理,解决数列求和题
有趣的运算
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
消失的殖民村庄和神秘字符
第一张车牌
“整式的乘法与因式分解”知识归纳
基于MATLAB 的车牌识别系统研究