图像相关小成果:停车自动计费装置

停车自动计费装置(大四的一些小成果)

1.引言

1.1 项目背景:
近年来,随着经济建设的快速发展,人民物质生活水平不断丰富,汽车拥有量不断增加,给人民出行带来便利的同时,也使得城市交通问题日益严重,停车场车位不足的问题日益凸显。目前,有偿使用停车场可使得车位这一公共资源得到较为充分的利用,而智能高效的停车场管理系统也显得越来越重要。
目前的大部分停车场管理系统都是采取人工判别车型、人工收费、人工放行以及人工引导车辆入库等比较传统的管理模式,这种管理模式存在诸多问题,比如车主进入停车场排队时间长;人工收费漏洞大,导致资金流失严重;收费透明度低,导致车主怀疑计费标准而引起争执;人力成本高,停车场出入口需要大量管理人员,这在很大程度上制约着城市的发展和停车场的利益。
为此,我们小组打算做一个停车自动计费装置,基于数字图像与处理实现车辆的自动识别与计时收费。
1.2 项目业务:
我们主要提供的停车自动计费系统主要满足以下业务功能:
(1)车辆识别功能
(2)自动计费、收费功能
(3)用户随时上网查询、缴纳费用功能
车辆识别的业务逐渐经历了纸质磁卡、条形码、接触式IC卡、射频卡等方案,目前射频卡是主流方案,其工作流程是:读卡器通过发射天线发送一定频率的射频信号,当射频卡进入发射天线工作区域时产生感应电流,射频卡获得能量被激活;射频卡将自身编码等信息通过卡内置发送天线发送出去;系统接收天线接收到从射频卡发送来的载波信号,经天线调节器传送到读卡器,读卡器对接收的信号进行解调和解码然后送到后台主系统进行相关处理,从而完成车辆的识别。
射频卡的应用极大改善了停车场业务,尤其是对于固定用户来说,但是对于临时用户来说,他们没有必要为了一次停车就去办一张射频卡,这样当他们有需求进入停车场的时候就会相对比较麻烦,或者无法进入,或者仍需要借助人工的帮助才能进入。而且对于停车场管理人员来说也要时刻注意临时车辆的信息,进行报备,这样的系统仍然是不完善的。
1.3 项目角色:
针对临时用户和停车场管理人员的需求,仍需对停车场管理系统进行改进,为此我们需要寻找其他可以代表车辆唯一身份的管理介质,以便进行车辆的识别与计费。而车牌恰巧可以满足这一需要,一牌对应一车。同时为了缴费的方便,我们借助共享单车的运行方式,使得用户可以随时上网查询自己的停车费用,并自助完成缴费。
在此方案中,最重要的是正确识别车辆信息,为此,我们决定用基于图像识别的方法去识别车辆,当车辆进入停车场时,系统自动摄取车辆图像,经计算机处理图像识别后得到车辆牌照、型号等,并将这些信息与用户唯一的对应起来一同存入用户数据库中。当车辆驶离停车场时,满足车牌号码或车辆图像等相关指标才能放行。
从车辆进入停车场一直到车辆驶离停车场,与这辆车相关的所有数据均与卡的车牌号唯一相关,我们可以将诸如用户信息、车辆型号信息、车辆颜色信息、车辆图像、车辆进出场时间、停车时长、应缴费用等信息在数据库中统一起来,便于查询和存储。车主在车位停车后,摄像头识别到车牌输入到本地pc或服务器,程序开始计费并定时更新网页显示计费。车主将车开出车位后,摄像头检测到车牌离开,结束计费并更新网页,用户可以查看网页计费情况,这样便可以不加区分的服务于固定用户和临时用户,同时减轻停车场管理人员的负担,满足往上随时查询、缴费的业务需求。
1.4 系统接口:
使用USB接口将摄像头摄取的视频信息传到PC端,之后再python中调用OpenCV来调用摄像头,读取视频信息,并逐帧完成识别。
将识别结果传给计费模块,完成计费;计费完成后利用HTML传到云服务器端。
用户借助网页端完成实时查询、缴费。

2.需求分析

2.1任务概述
2.1.1目标

基于图像检测识别车辆牌号并进行计费,将其传至云服务器以便用户进行网页查询。该系统目前只实现车牌识别和计费功能,其实之后学有余力的话可以完善成一个完整的停车场智能管理系统的一部分。具体流程如下

2.1.2系统特点
此系统利用摄像头获取图像信息,上传至pc端或服务器进行信息提取,自动获取相关信息,使用方便快捷,灵敏可靠,能准确记录停泊车辆的车牌号,停车时间及离开时间等相关信息,以便用户通过手机登录网址实时查看并进行停车缴费。由于尽可能的减少了人工的参与,从而最大限度的减少了管理人员的费用支出,提高了工作效率和经济效益;相比应用射频卡的停车系统,可以更便于临时用户的进出,应用此系统可提升管理的有效性、安全性、可靠性及停车场的自动化程度。
2.1.3假定和约束
首先假定用户较少,我们以正确识别出车牌为主,如果进展顺利的话可以尝试去加入数据库来完善系统,并且加入服务器实现网页查询。
约束开发期限:4-6周:进行调研、开题报告撰写
7-10周:完善报告、完成车牌识别
11-14周:争取上传服务器实现网页查询
15-16周:完成结题报告
2.2 需求规定
2.2.1 软件功能说明

(1)车辆识别功能
此功能的输入是摄像头所摄取的视频信息,将其按照帧的方案传入python,将图像灰度化,通过OpenCV的图像识别功能识别车牌信息;输出是车辆的车牌号等信息和识别的时间。
(2)自动计费功能
此功能的输入是车辆的车牌号和进入停车场的时间,按照模块中计费的标准自动计算停车费用,并输出费用。
(3)用户随时上网查询、缴纳费用功能
此功能的输入是用户的车牌号等信息和停车所需要交纳的费用,将这些信息上传到网页端的服务器,以供用户进行查询,更近一步可以与微信或支付宝银行卡等绑定,完成缴费或自动缴费功能。
(4)*向用户发送缴费通知的短信
如果能获取12315或当地车管所数据库访问权限,则可通过之前车辆识别功能中获取的车牌信息查询到车主的手机号码,向车主发送缴费信息,让车主无需再进行网上查询。

2.2.2 对功能的一般性规定
所有的功能均需要满足识别的准确性和安全性,尤其对于准确性来说,由于涉及到车辆信息和费用问题,车牌识别的准确与否、费用计算的准确与否至关重要。同时各个功能模块均要有容错的功能,并给予用户和系统关系源反馈。
2.2.3 用户界面
用户界面主要在用户查询网页端,初步设想网页以简洁为主,输入为用户的车牌号,输出为所需缴纳的停车费用。
2.2.4 对性能的一般性规定
2.2.4.1 精度

数据 精度要求
车牌号 准确识别车牌号
车辆进入停车场时间 时间精确到秒
车辆离开停车场时间 时间精确到秒
实际停车费用 以小时为单位

2.2.4.2 时间特性要求
根据车辆的运动速度特性,我们以秒为单位计录车辆进入和离开停车场的时间;对于费用的计算,则以最常见的每小时段计费方式,不足一小时按一小时计算,费用则精确到元或角。
2.2.4.3 灵活性
若图像信息未成功传递到服务器或PC端未成功,应及时提醒用户重新在摄像头前停留,以重新录入图像信息。当系统出现故障并且无外界因素干扰的情况下,系统应有自动恢复的能力,如图像的重传或图像信息的再处理。倘若系统无法及时自动恢复,则应向开发者提供故障处理信息。
2.5 数据管理能力要求
对于车辆信息的管理可根据停车场的规模及日常流量建立相应的数据库,便于进行登记和查询车辆信息,比如停车场位于车流量较大的地方,而且临时用户较多,则需要有较大容量的数据库且增删功能相对强大一些;对于流量较小且主要面向固定用户的停车场,数据块规模可相对较小,并更注重查询功能。

实验目标: ①首先将本地PC当做服务器,实现车牌的识别与计时计费
②将实时停车信息上传到服务器,实现手机网页访问
③实现在服务器端完成车牌识别与计费
④将车辆数据用数据库保存
细化功能: 车牌图像获取:先用本地PC读取摄像头,获取车牌图像;
车牌识别:通过OpenCV准确识别车牌信息;
信息处理:计算停车时间,完成计费;
信息保存:首先将参数保存在本地,如果尚有余力上传到数据库;
生成网页:将数据用html展示,便于用户查询;
进阶:将所有功能在服务器端实现。模糊查询无感支付

停简单的整体运作包含了五大系统:停简单智能车牌识别计费系统、停简单停车场后台管理系统、停简单收费员版APP系统、LED电子车位显示系统以及停简单用户端APP系统。
这五个方面相辅相成,实现信息交流的效率最大化。停简单通过运用车牌识别技术、智能语音交互技术、大数据索引技术、电子支付等全新科技手段,同时搭配精准实时动态车位数据、优惠折扣信息,与停简单用户端APP、微信平台协同交互信息,提高有限资源“车位”利用率,最大化提升停车场管理水平与车辆安全。
其中车牌识别一体机是面向智能停车领域,基于嵌入式一体化高清智能车牌识别设备,集高清成像、图像采集、车牌识别神经网络算法、图像压缩、数据存储、传输于一体,集成于嵌入式高性能DSP智能相机平台。它的作用便是能够实时准确地自动识别车牌号码、颜色、车辆颜色等车辆信息,同时进行本地比对、云端双重算法自动传输对比,通过大数据分析给出识别结果,使系统成像识别率可达99.9%以上,并适用于各种恶劣环境。
整套系统解决的是出入口零等待、实时更新车位使用和空余的信息、实现员工工作和停车费用收入等财务信息的掌控、发布闲置车位优惠信息等问题。而以上的所有信息都可以传输到停简单用户端APP,同时还可以明晰停车费用、保障车辆安全等作用。

3.代码介绍

使用语句orig_img = cv2.imread(’./carIdentityData/images/1.jpg’) 读取原图片
使用语句gray_img = cv2.cvtColor(orig_img, cv2.COLOR_BGR2GRAY) 将彩色图片变为灰度图片
在这里插入图片描述

使用语句blur_img = cv2.blur(gray_img, (3, 3))通过均值滤波实现模糊化处理,进行去噪
使用语句sobel_img = cv2.Sobel(blur_img, cv2.CV_16S, 1, 0, ksize=3) sobel_img = cv2.convertScaleAbs(sobel_img)
获得垂直边缘,对车牌部分加强,非车牌部分削弱
在这里插入图片描述

使用语句hsv_img = cv2.cvtColor(orig_img, cv2.COLOR_BGR2HSV) 将RGB图转为HSV图
h, s, v = hsv_img[:, :, 0], hsv_img[:, :, 1], hsv_img[:, :, 2]
blue_img = (((h > 26) & (h < 34)) | ((h > 100) & (h < 124))) &((s > 43) & (s < 255)) &((v > 43) & (v< 255))
因为黄色色调区间[26,34],蓝色色调区间:[100,124],车牌通常以蓝色和黄色为主,通过这种筛选我们可以较准确地取出车牌的位置
在这里插入图片描述
在这里插入图片描述

使用语句mix_img = np.multiply(sobel_img, blue_img) 获取车牌蓝色区域的位置,其他区域置为黑色
使用语句mix_img = mix_img.astype(np.uint8) 将图片变成灰度格式,不然后边车牌定位的时候,findContours()函数会报错
在这里插入图片描述通过引入HSV域,我们现在可以对车牌的蓝色部分或者绿色部分进行识别了。并将识别区域与之前的垂直边缘的定位,现在可以大致选定车牌区域了。
在这里插入图片描述
图一:垂直边缘与HSV域联合识别后
进行灰度化处理的图片每个像素依然保存了256种灰度信息,不利于我们的下一步处理。此时我们将灰度信息大于0的像素置为1,即为白色;灰度为0的像素置为0,即为黑色。这样我们就完成了二值化处理。
在这里插入图片描述

图二:在上一步的基础上,完成二值化处理后
完成二值化处理后,我们就已经拥有了车牌的大致轮廓,但是此时的车牌轮廓内部拥有大量噪点,不利于后续处理。这时我们需要进行闭运算,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变,闭运算是通过填充图像的凹角来滤波图像的。进行闭运算后,我们就得到了完整的车牌矩形。
在这里插入图片描述
在这里插入图片描述
图三:闭运算处理后
将闭运算的结果的轮廓勾勒出来,可以看到通过闭运算后,产生了许多非车牌矩形的噪声轮廓。下一步就是要将噪声轮廓滤除。
我们通过判断轮廓是否为矩形的方法来滤除噪声。通过函数cv2.minAreaRect来获取每一个轮廓的最小外接矩形的中心点,长度,宽度以及旋转角度信息,我们就得到了一个外接矩形的完整信息。车牌外形固定,所以长宽比例一定。下面通过依次判断外接矩形的长度宽度,长宽比例,面积是否符合我们的设定值要求,来排除大部分不符合要求的轮廓。接下来旋转外接矩形,将最先与x轴接触的边定义为宽度,由于实际中车牌不会太过倾斜(甚至垂直),故我们会排除旋转角过大的矩形,最终输出结果。
在这里插入图片描述图四:滤除闭运算噪声后
在充分调研的基础上,我们开始运用用到漫水填充算法来进行车牌识别,漫水算法类似PS的魔术棒工具,通过在矩形区域生成种子点,种子点的颜色必须是蓝色或黄色,在填充后的掩模上绘制外接矩形,再依次判断这个外接矩形的尺寸是否符合车牌要求,最后再把矩形做仿射变换校准位置。
做漫水填充的目的有两个,第一个是预处理的时候车牌轮廓可能有残缺,做完漫水填充后可以把剩余的部分补全,第二个目的是进一步排除非车牌区域。
在这里插入图片描述
上面的漫水填充算法对于种子点的选取比较关键,一般情况下我们通过摄像机所得到的车牌多少会存在倾斜的情况,如上图(1)所示。为了能比较好的覆盖整个车牌区域,我们将矩形4个顶点的x、y值做了排序,分别取x和y中间两个值作为水平、垂直的上下限来生成随机种子点;另一种情况是车牌倾斜太严重如图(2)所示,对于这种情况,我们可以直接在矩形的两条对角线上生成种子点,也能比较好的覆盖整个车牌区域。同时,在生成种子点的时候还可以加调节系数,不要让生成的种子点太靠近矩形边缘。
在引入了漫水算法后,我们对于车牌区域的识别效果显著提升,具体效果图如下所示:
在这里插入图片描述
漫水算法的主要模型代码如下所示:
在这里插入图片描述
在函数def floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)中,
参数image为原图像,mask为掩模,SeedPoint为随机初始种子,loDiff为低值,upDiff为高值, flags为填充方法,FLOODFILL_FIXED_RANGE指定填充的颜色 FLOODFILL_MASK_ONLY,mask的指定的位置为零时才填充,不为0不填充。
而在完成了漫水算法识别车牌区域之后,我们接下来要运用卷积神经网络(CNN)深化我们的识别算法,并在神经网络中完成字符识别的任务。卷积神经网络概念图如下所示:
在这里插入图片描述
CNN作为一种深度学习模型或类似于人工神经网络的多层感知器,具有很深的层级结构:数据输入层/ Input layer,卷积计算层/ CONV layer,ReLU激励层/ ReLU layer,池化层/ Pooling layer,全连接层/ FC layer。CNN常用来分析视觉图像,它与常规神经网络的最大区别就是CNN支持特征图像的输入,故我们认为它是CV中进行图像识别处理的首选方法。
对于我们车牌识别的三个任务:车牌区域识别,字符识别,以及整体调用与计费功能,我们分别搭建了两个CNN进行训练,首先是我们引入的车牌区域识别的CNN网络,具体

车牌区域识别:神经网络
我们车牌识别功能分为三部分,分别搭建了两个CNN进行训练,他们是车牌区域识别,字符识别,以及整体调用与计费功能。
首先是车牌区域识别,因为中期验收时车牌区域识别存在一定问题,仍然会有部分噪音。在这里插入图片描述
首先是我们引入的车牌区域识别的CNN网络
第一部分–车牌区域识别的CNN网络
搭建定义的车牌区域CNN类里面搭建CNN网络,具体代码如下:

在这里插入图片描述
搭建车牌位置识别的CNN训练模型并引入训练集(左为模型代码,右为车牌定位的训练集图片)
在这里插入图片描述在这里插入图片描述
车牌识别CNN的主函数代码,作用是调用CNN网络训练模型,并引入测试集以及训练集:
在这里插入图片描述
最终调用完漫水算法以及车牌识别CNN后,我们可以精确地将车牌识别并提取出来。
在这里插入图片描述在这里插入图片描述
1.字符分割(左右分割
在精确匹配到原始车牌之后,我们要对字符进行分割以方便后续处理。
首先统计原始车牌(二值化后的图片)每一列像素中白色像素点的个数,根据个数确定字符位置,并分割。
2.字符分割(上下分割)
统计原始车牌(二值化后的图片)每一行像素中白色点的个数,根据个数确定字符位置,并分割。
在这里插入图片描述
字符分割的代码部分,我们定义了一个左右分割字符的函数horizontal cut_char(),用于将车牌字符做左右两侧的分割,用getColSum()函数获取车牌每列边缘像素点个数,对像素点超过60%均值的判定属于字符,对于字符宽度也做出了一定限制,以确保准确分割字符区域。
在这里插入图片描述
字符分割之后,接下来就是用卷积神经网络进行字符识别,该网络和此前识别车牌的网络类似,在此不做赘述。搭建好训练模型后,我们导入各种字符图片的训练集进行训练。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
下图是经过网络训练后的效果:在这里插入图片描述
这样一来,我们就有了车牌识别网络和字符识别网络两个支撑模型:
在这里插入图片描述
为了测试模型的效果,我们以不断导入图片的方式来模拟停车监控端口传过来的一帧帧图像。每当我们识别成功一次车牌,该车的停车时间增加10秒,如果未能识别出来,则会返回error_time,当多次识别仍然未识别出来会报错。
如果该车离开或者换成另一辆车,我们会多次比较最近几次车牌是否相同,以此来判断此次停车是否结束,并返回该车的parking_time。
在这里插入图片描述得到parking_time后,我们根据每辆车每小时5元钱,不满1小时的按1小时来计的计费规则计算该车的停车费用,并将其车牌、停车时间、停车费用一起写入本地文本文件“fare.txt”中。
在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
出租车自动计费器系统是指通过计算机技术和电子技术将出租车计费自动化和数字化的一种系统,主要由人机交互界面、车辆状态监测、计费计算等组成。Verilog和VHDL是数字电路设计领域的两种重要语言,其中Verilog更多应用于门级(Gate Level)描述,而VHDL更多应用于行为级(Behavioral Level)描述。 对于出租车自动计费器系统的Verilog或VHDL设计,需要考虑以下方面: 1. 系统结构设计:确定系统的功能模块、信号流向及模块之间的调用关系,避免出现死循环或死锁等问题。 2. 信号传输设计:选择合适的信号传输方式,如总线、寄存器、RAM、ROM等,同时保证信号的时序、同步和稳定性。 3. 逻辑控制设计:针对系统的各个模块和功能,设计合适的逻辑控制模块以实现自动计费、显示、储存等功能。 4. 状态转移设计:通过状态转移图或状态机设计,实现状态的控制和转移,比如计费开始、计费中、计费结束等状态。 5. 验证和测试:在设计完毕后,需要对系统进行仿真验证和测试,确保设计的正确性、性能及可靠性。 需要注意的是,Verilog和VHDL都是硬件描述语言,存在一定的技术门槛,需要有一定的电子技术和计算机技术基础,同时需要考虑实际的可行性和可操作性。因此,在进行设计之前,需仔细分析自动计费器系统的需求和技术要求,选择合适的设计工具和仿真平台,确保设计的准确性和可行性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值