软件架构设计
1.逻辑架构设计
整个系统分别为管理层,控制层,以及用户层三个层级提供服务
服务 | 实现功能 |
---|---|
管理层服务 | 为总公司、分公司以及项目负责单位等管理层提供不同层级不同权限的管理服务 管理单位通过使用管理层服务的云平台等产品可以使得不同层级的单位 能时刻了解到下属层级的工作情况与信息 |
控制层服务 | 是整个系统的核心,一是要为管理层提供可靠的信息,二是要为用户层提供合理的反馈。车牌识别,清洗度评估,监控信息,超限检测,数据传输等等都包含在控制层服务内 |
用户层服务 | 主要就是向使用系统的车主对于清洗车辆的效果、运输过程是否合理提供有效的反馈,例如超限报警,清洗不达标报警等,对讲功能使管理人员能够及时地与车主进行沟通 |
2.开发架构设计
基本架构设计:
服务 | 基本架构 | 概括说明 |
---|---|---|
管理层服务 | B/S架构 | 使用如今主流的J2EE框架spring boot整合前端后台,将服务部署在云服务器上,同时对系统所需要的数据库进行详细设计,实现分级管理与信息存储 |
控制层服务 | C/S架构 | 将我们训练出来的良好车牌识别模型,清洗度评估模型,流媒体的传输与存储脚本等一系列功能使用python语言整合,适配,使其成为一个完整的client项目部署在工控机上 |
用户层服务 | 硬件设计 | 详见硬件架构设计 |
详细架构设计
1.B/S架构
html,css,javascript,java等语言为不同的管理单位编写登陆界面、管理界面(包括车辆清洗记录,清洗效果记录,监控视频,异常情况记录,较高等级还可以查看较低等级管理人员的管理情况)(表现层),然后使用java编写网络访问接口为不同的浏览器操作编写逻辑(业务处理层),最后编写数据库操作逻辑(DAO层),以达到一个完善的管理系统。
2.C/S架构
车牌识别模型的生成
车牌识别是一个图像识别问题
我们采用深度学习的方法。
训练过程:将若干张带有正确车牌号标签的车牌图片使用python语言进行预处理(二值化,去噪)后得到只含有车牌信息的图片,分组进行编号。
使用tensorflow的深度学习框架,利用卷积神经网络算法减少图片参数后开始训练过程,当图片识别率达到一定要求时停止训练,并保存模型文件(节点参数)。
使用模型文件进行车牌识别的测试,若准确率不满足实际要求,分析问题后调整训练参数重新巡礼最终得到实用模型
清洗度评估模型的生成
清洗度评估是一个计算机视觉问题
我们将清洗后的照片与正常干净的车身照片分别提取sift特征点
使用聚类的方法将两张图片的sift特征点匹配
最后计算匹配特征点128向量的某种合适的度量距离
最后得到一个相似度用来评估清洗程度
若不能大程度上满足实际要求,则需要建立数学模型,调整算法,调整提取特征和聚类过程中的参数以达到最好的模型
流媒体的传输
我们基于流媒体(语音,视频)在传输中的特性会在每个传输节点部署程序。
使用c++语言处理层传输过程中的流媒体,包括录制,转码,解码等。
并且将需要保存的流媒体信息以文件的形式保存在工控机中,并搭建类似于ftp服务的资源提供服务环境,方便管理人员提取。