基于Kinect的驾驶员状态检测系统设计与实现第4章.docx
- 文档编号:398659
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:18
- 大小:293.82KB
基于Kinect的驾驶员状态检测系统设计与实现第4章.docx
《基于Kinect的驾驶员状态检测系统设计与实现第4章.docx》由会员分享,可在线阅读,更多相关《基于Kinect的驾驶员状态检测系统设计与实现第4章.docx(18页珍藏版)》请在冰豆网上搜索。
基于Kinect的驾驶员状态检测系统设计与实现第4章
系统详细设计与实现
第二章在需求分析的基础上,设计了本系统的总体方案,本章将在第二章和算法研究的基础上,从系统的数据业务流程入手,对系统的各个功能模块进行详细的设计与实现。
4.1系统的总体流程
基于系统的功能需求分析、系统的总体方案设计以及相关技术和算法的研究,本课题设计的系统数据业务总体流程如图4.1所示。
图4.1系统数据业务流程图
整个系统涉及的业务对象分为:
Kinect采集设备、驾驶员状态检测系统、驾驶员和系统管理员四个组成部分。
具体说明如下:
(1)驾驶员:
驾驶员通过状态检测系统获取行车过程中的精神状态。
(2)Kinect采集设备:
Kinect采集设备负责给系统输入图像数据。
包括彩色图像和红外图像。
(3)状态检测系统:
整个系统分为前端状态检测终端和后台管理端。
状态检测终端负责对Kinect输入的图像数据进行处理,实现状态的检测,将检测结果实时显示在界面上,供驾驶员看,同时将检测数据通过无线网络上传给后台,供管理员对数据进行管理。
后台管理端负责接收前端上传的数据并进行实时显示和保存。
(4)管理员:
管理员主要面向的是系统的后台,主要是对驾驶员信息的管理以及实时监测。
4.2系统功能模块总体设计
驾驶员状态检测系统分为状态检测终端和后台管理端两个部分。
本课题采用层次化和结构化的设计思想,将软件分为多个功能模块。
系统功能结构图如图4.2所示。
图4.2系统的功能结构图
1.状态检测终端
状态检测终端分为5模块,具体如下:
(1)图像采集模块:
利用Kinect设备对驾驶员的彩色图像和红外图像信息进行采集,为系统提供数据来源。
其中获取的图像信息包括彩色图像和红外图像。
(2)人脸识别模型:
本模块是系统的核心,包括人脸检测和人脸面部特征点定位两个部分。
系统通过人脸检测算法检测出人脸所在区域,在通过人脸定位算法实现驾驶员面部特征的提取。
为后续的状态分析做准备。
(3)状态分析模块:
制定驾驶员状态评判的标准,根据标准对提取到的驾驶员面部特征信息进行分析,对驾驶员的状态做出判断。
(4)报警模块:
检测到驾驶员精神状态不好时,进行报警。
报警模块分为界面报警和语音报警两个部分。
结合系统实时性的要求,报警直接在系统的前端进行。
一发现驾驶员状态不佳,直接进行报警。
2.后台管理端
后台管理端分为3个模块,具体如下:
(1)用户管理模块:
实现系统管理的登录、登录密码修改和个人信息的管理,同时对驾驶员的基本信息进行管理,包括增加、删除驾驶员信息。
(2)实时显示模块:
对状态检测终端上传的检测图片和状态参数信息进行实时显示。
(3)图片管理模块:
对状态检测终端上传的检测图片进行查询和删除等工作。
4.3通信协议设计与实现
4.3.1协议消息时序设计
驾驶员状态检测系统中客户端和后台管理端之间数据交互需要制定通信协议来实现通信。
客户端负责图像数据的采集和分析处理工作,并将驾驶员精神状态不好的图片发送给后台服务器。
后台服务器需要对客户端上传的数据进行处理。
系统通信需要遵守统一的协议才能进行有效的交互。
系统的通信时序图如图4.3所示。
状态检测终端与后台管理端交互过程如下:
1打开前端软件,向后台服务器发送登录请求消息;
②后台服务器收到登录请求消息,提取登录消息与数据库服务器中数据对比,生成对比结果反馈消息;
③后台服务器向客户端回复登录请求结果;
④客户端生成驾驶员状态参数和图片消息;
⑤客户端向后台服务器发送状态参数和图片消息;
⑥后台服务器收到客户端发过来的消息,将其存入到系统数据库中;
⑦后台管理系统收到消息后,对消息进行处理,并生成反馈消息;
⑧后台将生成的反馈消息,反馈给客户端。
图4.3系统通信时序图
4.3.2信息传输方式实现
本系统给后台服务器上传数据时,需要无线网络,考虑到系统的车载系统并不是全天候的工作,而是在驾驶员在行车过程中才会使用,结合系统的实际需求,本系统采用4G无线通信将眼部参数、嘴部参数、报警信息和状态检测图片数据实时发送到联网的后台服务器上。
TDD-LTE(中国移动)、TDD-LTE(中国电信)、FDD-LTE(中国联通)是中国目前主要的三种网络制式,其中,中国移动在网络传输速度和稳定性上面都要高于另外两种。
因此,本系统采用中国移动的4G网络进行开发。
给客户端处理器插上上网卡实现与后台服务器的无线通信。
TCP和UDP是目前比较常见的通信协议。
TCP是面向连接的,通过三次握手来建立连接,有重传和拥塞控制机制具有很高的可靠性。
UDP是面向无连接的,虽然实时性强,但是不可靠不稳定[28]。
结合系统的特点,本课题采用基于TCP的Socket套接字来进行开发。
将Socket套接字封装成一个CDeTCPSocket类,通过调用CDeTCPSocket中的函数来实现数据收发。
后台服务器接收数据流程如图4.4所示。
图4.4后台服务器接收网络数据流程图
后台服务器采用多线程编程技术进行开发,当有客户端进行连接时,开辟一个线程为其服务。
首先创建一个SOCKET类对象listened,并对服务器的地址结构进行初始化,接着调用bind()函数绑定服务的IP和端口。
然后调用listen()函数开启监听,开始监听是否有客户端连接。
如果有,则创建一个与客户端连接的Socket,然后调用recv()函数接收客户端发过来的数据,并对数据进行处理和保存。
与之对应,调用SendData()函数可以将缓冲区中的数据发送给客户端。
4.4数据库设计与实现
为了实现对客户端上传的数据进行查询、记录和管理操作,系统需要建立一个高效和稳定的数据库对这些信息数据进行存储。
因此,需要对数据库进行设计。
前面章节已经对数据库进行了选型。
本节将详细对数据库进行设计和实现。
4.4.1数据库总体设计
系统需要存储的数据包括:
管理员基本信息表、驾驶员基本信息表、眼部信息表、嘴部信息表、头部信息表、图片信息表和报警信息表。
根据数据库本身的特性,确定各个表格字段的存储类型、名称、约束、缺省值和字段说明。
本文采用MySQL关系型数据库管理系统创建数据库sd_infomonitor,总共7张数据库表格,具体表格信息如表4.1所示。
表4.1驾驶员状态检测系统数据库表汇总
编号
数据库表名
数据库描述
1
sd_admin_info
存储管理员基本信息
2
sd_user_info
存储驾驶员基本信息
3
sd_eye_info
存储眼部参数基本信息
4
sd_mouth_info
存储嘴部参数基本信息
5
sd_image_info
存储图片基本信息
6
sd_warning_info
存储报警基本信息
7
sd_vehicle_info
存储车辆基本信息
由于本文设计的数据库较多,出于篇幅考虑,本文以驾驶员基本信息表和图片信息表为例,对设计数据库结构进行详细说明。
表4.2sd_user_info驾驶员基本信息表结构
字段
字段类型
为空
约束
缺省值
备注
user_id
int(8)
no
主键
—
用户编号
username
varchar(32)
no
—
—
用户名
password
varchar(32)
no
—
—
密码
name
varchar(32)
no
—
—
用户姓名
gender
char(4)
no
—
—
性别
age
int(4)
no
—
—
年龄
certificate_id
char(18)
no
—
—
证件号
telphone
char(11)
no
—
—
联系电话
creater
varchar(32)
no
—
—
创建者
sd_admin_info表存储驾驶员的基本信息,包括用户名、密码、用户姓名、性别、年龄、证件号、联系电话和创建者等字段。
其中,username为表格的主键,用来对用户身份进行标识。
表4.3sd_image_info图片基本信息结构
字段
字段类型
为空
约束
缺省值
备注
image_id
char(16)
no
主键
—
图片编号
username
varchar(32)
no
—
—
用户名
image_place
varchar(128)
no
—
—
图片存放位置
image_name
varchar(128)
no
—
—
图片名称
image_size
varchar(64)
no
—
—
图片大小
create_time
datetime
no
—
当前时间
获取图片时间
sd_image_info表存储的是客户端上传的获取的驾驶员精神状态不好时的图像信息,包括图片编号、用户名、图片存放位置、图片名称、图片大小和获取图片的时间。
其中image_id是主键,用来标识每张图片的唯一性,creat_time的缺省值为当前时间,用来表示获取图片的时间。
4.4.2数据库操作
根据数据库表的设计,结合系统的总体架构,可知状态检测终端和后台管理端都需要与数据库服务器进行数据交互。
本系统采用的是高效稳定的MySQL数据库。
系统数据交互是在VisualStudio2013平台下通过加载libmyaql.dll动态链接库来实现数据库的连接工作。
建立连接后,通过增、删、改、查等MySql语句实现数据库的具体操作。
具体实现流程如图4.5所示。
为了实现开发过程中,代码的复用性和执行效率,本文通过自定义一个MySqlManage类对数据库操作进行封装。
首先系统完成相关连接配置,加载数据库。
连接成功后调用mysql_init()函数实现数据库的初始化,并设置数据库的编码格式。
接着调用mysql_real_connect()函数实现数据库的连接,数据库连接之后,调用mysql_query()函数执行数据库的实现数据库的增、删、改、查等复杂操作。
最后,如果需要关闭服务,则调用mysql_free_result()函数实现数据库关闭连接。
图4.5数据库执行流程图
4.5状态检测终端设计与实现
状态检测终端的设计是整个系统的核心,需要对驾驶员的面部特征图像进行采集和分析,涉及图像算法的处理与设计,是整个系统性能的体现,状态检测子系统主要包括图像采集模块、人脸识别模块、状态分析模块以及报警模块。
本节将对状态检测终端进行详细的设计和实现。
4.5.1图像采集模块
Kinect采集的高清视频图像是整个系统数据的来源,是系统实现的基础。
微软为Kinect的开发提供了驱动程序(KinectforWindowsSDK),给广大开发者提供了一个便利的开发平台,使得开发者避开了繁琐的传感器和中间件的数据交换的麻烦[9]。
Kinect与系统交互如图4.6所示。
图4.6系统与KinectV2及驱动程序(SDK)之间的交互关系
KinectV2通过USB3.0直接与客户端处理器相连接,然后从微软官网下载SDK驱动程序进行安装,给VisualStudio2013平台进行开发环境的配置,加载Kinect20.lib组件,就可以实现应用程序的开发。
通过前面的分析可知,KinectV2可以同时采集6种数据源,根据系统的应用需求,本文将采用KinectforSDK与OpenCV开源函数库相结合来实现彩色图像和红外图像的采集工作。
图像采集实现流程如图4.7所示。
图4.7图像采集实现流程图
驾驶员登录状态检测系统成功后,进入系统主界面,点击“开始检测”按钮,触发检测程序开始执行。
IK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Kinect 驾驶员 状态 检测 系统 设计 实现