基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx

上传人:b****2 文档编号:13327138 上传时间:2022-10-09 格式:DOCX 页数:18 大小:293.82KB
下载 相关 举报
基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx_第1页
第1页 / 共18页
基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx_第2页
第2页 / 共18页
基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx_第3页
第3页 / 共18页
基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx_第4页
第4页 / 共18页
基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx

《基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

基于Kinect的驾驶员状态检测系统设计与实现第4章Word文件下载.docx

管理员主要面向的是系统的后台,主要是对驾驶员信息的管理以及实时监测。

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)

用户名

password

密码

name

用户姓名

gender

char(4)

性别

age

int(4)

年龄

certificate_id

char(18)

证件号

telphone

char(11)

联系电话

creater

创建者

sd_admin_info表存储驾驶员的基本信息,包括用户名、密码、用户姓名、性别、年龄、证件号、联系电话和创建者等字段。

其中,username为表格的主键,用来对用户身份进行标识。

表4.3sd_image_info图片基本信息结构

image_id

char(16)

图片编号

image_place

varchar(128)

图片存放位置

image_name

图片名称

image_size

varchar(64)

图片大小

create_time

datetime

当前时间

获取图片时间

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1