基于ZigBee 的立体停车场车位管理系统设计*
2022-08-26李晓宇孟令军王佳军薛志凌
李晓宇 孟令军 王佳军 薛志凌
(中北大学仪器与电子学院 太原 030051)
1 引言
智慧城市的建设、出行方式的改变、生活质量的提高等因素使我国机动车保有量逐年递增,伴生出交通拥堵、车位短缺、停车困难、停车位置遗忘等社会问题。目前,基于各类物联网技术的智能停车场车位管理系统是民生建设领域的研究热点。大连交通大学史添添等[1]设计了利用GPRS无线网络将地磁感应装置的检测数据实时传至信息管理平台的智能停车场车位信息检测及管理系统;安徽理工大学程瑶[2]设计了利用NB-IOT-ZigBee 物联网技术完成车位信息的采集、传输、管理、发布完整流程的人机交互性停车场管理系统;蔡雪香等[3]设计了利用RFID 射频技术和嵌入式控制的实现停取车、收费、管理统筹的智能立体停车场出入口管理机;Karim Hammoudi等[4]设计出基于网络摄像头的低成本、非接触式的自适应停车场车位管理监控系统。上述车位管理系统设备成本和后期维护费高昂,需要人员实时管理。因此,本文设计的基于ZigBee 的立体停车场车位管理系统不仅成本低和无需人员管理,还很好地缓解了空车位混乱、停车难、寻车难的问题,同时对停车场的运行效率起积极推动作用。
2 系统方案设计
立体停车场车位管理系统由车牌识别和车位状态检测组成,其中车牌识别包括车辆图像采集、车牌定位、字符分割识别等过程,车位状态检测包括距离检测、数据传输、阈值判断、信息显示等过程。车牌识别硬件使用Raspberry Pi 3B+和IMX477R图像传感器对车辆前身感应拍照并显示[5];软件编程经高斯模糊、灰度二值化、Sobel 边缘检测、形态学操作、Canny 算子、统一尺寸操作后分割成单字符进行识别组合[6]。车位状态检测硬件使用单片机、超声传感器、红外传感器、ZigBee 模块和Wi-Fi模块;软件编程经A/D 采集转换的距离数据通过ZigBee 技术传输给计算机并通过Wi-Fi 发送给上位机,车主根据信息引导停到指定车位。系统硬件总体框图如图1所示。
图1 系统硬件总体框图
2.1 车牌特征识别
车牌由汉字、字母、数字编码组成七字序列,用于车辆编号和信息登记。第一个字符为中文,代表省份简称;第二个字符为字母,代表城市代码;第三到第七个字符为字母数字编码,代表区域车辆编号。车牌颜色根据用途不同分为多种,蓝牌外形尺寸为440mm×140mm,铝质材质,蓝底白字白框线,字符宽高为45mm×90mm,间隔符直径为10mm,字符间间隔距为12mm,除了第二个和第三个字符间隔为34mm,四个固封螺丝将其固定在车辆上,位于车身前后,垂直固定,因此不存在较大的旋转或变形。识别是对编码序列进行分割提取比对获得车牌信息。通过计算图像中垂直边缘较多的矩形框和面积比例获取疑似车牌区域图像,对其进行支持向量机(SVM),通过一系列条件判断后得到真实车牌区域,分割后利用ANN 神经网络识别出字符以组成车牌号。车牌识别流程如图2所示。
图2 车牌识别流程图
2.2 车位状态检测
便捷停车必须遵守停放规则、共享车位信息和增强车位管理,但现实中很多车主随意停放且时间一长便忘记停放位置,给自己和他人造成不便。立体停车场车位长5.3m、宽2.5m、层高2.5m,车位状态检测系统硬件主要有红外传感器、超声传感器HC-SR04、单片机系统CH32F103C8T6、ZigBee 模块HZB001[7]、Wi-Fi 模块ESP8266,组成原理图如图3 所示。红外传感器位于车位底部和超声传感器位于车位顶部,设置距离阈值分别为0.25m、1.5m,综合判断可以准确检测车位状态以防止误触发。红外传感器模块检测距离2cm~30cm,检测角度35°,通过主动式红外线反射探测到上方车辆障碍物后,输出端口持续输出低电平信号,反之高电平信号,同时唤醒超声测距。超声传感器感测距离2cm~400cm,探测角度60°,通过单片机给TRIG 引脚一个至少10us 以上的高电平信号启动并发出八个40KHz 的方波,ECHO 引脚检测到回波信号并持续输出一个高电平信号,根据高电平信号时间计算出距离[8]。单片机为国产南京沁恒公司生产,ADC精度12 位,与STM 芯片兼容,并且价格便宜。Zig-Bee 以CC2530 为主控,多节点通信,全双工透传,120 米通信距离,超低功耗,波特率设置为115200,从模块网络ID 为0×0001、0×0002、…,主模块目的地址为0×0000。Wi-Fi 模块采用ESP8266 为主控,将数据发送到上位机。
图3 车位状态检测原理图
3 程序算法设计
3.1 车牌定位
立体停车场出入口采集的车辆图像往往含有与车牌面积特征相近的干扰因素,如车灯轮廓、后视镜轮廓、车标、进气栅格等。不排除干扰会增加硬件资源,延长计算时间,降低准确率,因此采用高斯模糊、灰度二值化、Sobel 边缘检测、形态学图像处理、Canny 算子等操作去除干扰。车辆图像以图4为例,尺寸为640×480像素,以时间命名方式存入SD卡中。
图4 采集的车辆初始图像
首先对车辆初始图像进行高斯模糊操作以减少图像噪声、降低细节层次,使边缘变得平滑。具体步骤为:1)获得原像素点的RGB 三通道值;2)边缘像素进行镜像扩充,以防模板核在边缘处卷积出错;3)设模糊半径为3,模板为7*7,根据模板像素坐标和二维高斯函数式(1)计算出权重矩阵;4)图像内像素点通道值与对应权重相乘和得到新像素点通道值,得到高斯模糊效果图像如图5 所示,明显看出细节处模糊,颜色边缘层次过渡自然,亮度变暗。
图5 高斯模糊效果图像
式中,(i,j)为模板内像素点坐标,(i0,j0)为中心点坐标,σ为1.5。
其次进行灰度化[9]以减轻计算复杂度,提高识别效率,即R、G、B 三分量以不同的权重进行加权平均,见式(2)。得到灰度化图像如图6 所示。车牌颜色损失的后果不影响本系统后续处理步骤同时也可以处理不同车牌。
图6 灰度化图像
式中,ωr=0.299,ωg=0.587,ωb=0.114,且三者之和为1。
然后对灰度化图像进行Sobel边缘检测以检测出不同像素点边缘值,即求水平和垂直方向上的灰度矢量以得到图形边缘[10]。采用周边值加权和卷积法,见式(3)。本系统中水平和垂直方向梯度权重占比为0.5。
式中,G(i,j)为新灰度值,和为水平和垂直方向的卷积因子,A(i,j)为像素点初始灰度值。如果G(i,j)在上下、左右邻点达到极值即该像素点为边缘点。Sobel边缘检测效果如图7 所示。结果表现出有些边缘线不连续和颜色梯度分差小。因此采用自适应阈值二值法优化,使边缘线连续明显以利于准确选取车牌区域。将小于阈值的值变为0(黑色),大于阈值的值变为1(白色)。二值化结果如图8所示。
图7 Sobel边缘检测结果图
图8 自适应阈值二值化结果图
再用形态学操作中的开闭操作对图像进行膨胀腐蚀,使白色边缘线形成连通域。闭操作用来填充目标内部的细小孔洞,将断开的邻近目标连接,在不明显改变物体面积和形状的情况下平滑其边界,模板大小为18×4;开操作用来消除图像中细小对象,在纤细点处分离物体和平滑较大物体的边界而有不明显改变其面积和形状,模板大小为10×3。通过形态学操作后细小边缘线演变成块状区域,将所有可能区域全部包含进去。形态学操作结果如图9 所示。看出有些原本块状区域变成连通域,减少了判断轮廓时间。
图9 形态学操作结果图
最后进行取轮廓,通过Canny 算法将连通域的边界描绘出来。操作步骤:1)高斯滤波器平滑图像;2)计算梯度幅度和梯度角度;3)对梯度幅度图像应用非极大值抑制;4)使用双阈值来检测和连通性连接边缘,设定阈值为100、150。形成外接矩形,对其进行尺寸判断,排除不是车牌的矩形以提高准确率和效率。由于车牌尺寸为440mm×140mm,宽高比为3.14,设定一个偏差率和面积率,偏差率为宽高比的最小和最大值,面积率为矩形轮廓面积最小和最大值,满足所有条件保留下来的轮廓统称疑似区域。再对疑似区域进行角度判断,正常情况下车牌不会有很大的倾斜变形,设置角度阈值30°,小于阈值的为疑似车牌区域。通过一系列条件筛选后,包含车牌区域的结果已选出,结果如图10 所示。最后对符合条件的矩形区位置映射到原始图像中取出,统一尺寸为136 ×34 像素,如图11所示。
图10 疑似车牌区域框选结果
图11 车牌区域
在车牌定位部分,车型不同最后可能会产生不止一个疑似车牌区域,因此需要支持向量机(SVM)[11~12]来准确获得车牌区域。本文使用的是OpenCV 中的CVSVM,分为训练和预测两个过程,训练过程首先设置训练样本数据,准备1000 张图像,其中700张为车牌作为正样本,300张为车辆其他部位作为负样本;SVM 参数调优和利用CVSVMPararms 类实现类内的成员变量表示;调用CvS-VM::train 函数建立SVM 模型,第一个参数是图像全部像素,第二个参数是分类结果;调用CvSVM::predict 实现分类。预测过程是将测试样本输入到SVM模型中通过结果验证模型准确性,通过不断调参和优化以得到正确车牌。
3.2 车牌分割与识别
对车牌进行字符分割,输入归一化车牌进行颜色判断,然后进行灰度化,再利用颜色判断结果确定阈值参数而进行二值化,利用findContours 函数获取字符轮廓,最后通过最小外接矩形分割出每个字符并对矩形的宽高比和面积进行验证以归一化保存,每个字符尺寸为15*24 像素,字符分割结果如图12所示。
图12 字符分割结果
对车牌进行字符识别,使用ANN 人工神经网络对字符进行训练识别[13~14],ANN 的特征设为字符的水平方向与垂直方向的累计直方图和低分辨率图像,设置12 个隐藏层,通过ANN.train 函数并设置相应参数对字符训练,使用ANN.predict 函数对各个车牌特征进行预测。每层传播过程如式(4)所示。
式中,Wi为系数矩阵的第i行,由in在该层的位置决定,b为偏置项,activation()为激活函数,x为每层的输出。
3.3 车位状态信息
至此车牌信息已经获取,引导车辆停在指定空车位便是传感器所做工作。系统使用两类传感器,分别为红外传感器和超声传感器。通过CH32单片机控制低功耗稳定工作,由红外传感器先粗略检测再触发超声传感器精确检测,红外传感器每隔1s检测一次,检测到车位上有车辆后,指示灯亮起,超声传感器发出超声波,单片机计算回波信号高电平时间,环境温度由DS18b20 采集,室温下超声波在空气中传播速度为334m/s,但其传播速度受温度、湿度影响较大,因此距离计算采用温度补偿式[15],如式(5)。
式中,S 为距离,单位m/s,T 为温度,单位℃,t 为高电平时间,单位ms。通过从ZigBee 模块将距离数据传输给主ZigBee模块,判定阈值后将车位信息更新至上位机。反之,红外传感器没有检测到车辆,指示灯灭,超声传感器不工作,因此上位机显示该车位为空。
4 实验结果与分析
车牌识别中的测试数据选自开源的EasyPR 中的车牌数据集[16]和本系统采集处理的20 张车辆图像,从中选出1000 张图像(700 张是车牌,300 张不是车牌)作为样本集用于SVM 模型调优和ANN 神经网络训练以达到高定位准确率。其中300 张不是车牌图像作为干扰因素以提高模型判断鲁棒性。由于车牌具有丰富的垂直边缘的原因使干扰图像在SVM 中排除。ANN 神经网络中对省份简称、数字、大写字母进行了特征标识,但偶尔会在0与D、1 与I,8 与B 等字符上混淆识别错误,本系统对特殊字符进行了加强优化和阈值缩小,使车牌识别准确率达93%。超声测距部分具有双重判断和温度补偿及ZigBee 技术稳定传输使车位状态检测准确率达98%。
软 件 环 境 使 用 python3.6、OpenCV4.1、2019-09-26-raspbian-buster、numpy、image、CVSVM、matplotlib 等,使用python 和C 语言编程。经过器件选型,系统搭建,程序编写,参数优化等设计出一种基于ZigBee的立体停车场管理系统,系统实物如图13所示。
图13 系统实物图
上位机使用成熟的机智云App,车主可以在上位机上查阅到当前停车场信息(空车位名称、总车位数量、车位引导、空车位数量),方便快捷。上位机界面效果如图14所示。
图14 上位机效果图
5 结语
立体停车场是智慧城市建设的需求,相比较普通停车场具有占地小、车位多、管理便捷等优势。本文设计了一种基于ZigBee 的立体停车场车位管理系统,既降低硬件成本又提高运算速率,具有应用价值。通过对车牌图像多重处理和车位实时监测数据融合,实现车辆停放管理。未来希望在新能源车牌识别和环境自适应上进一步研究设计。