基于睡意检测的安全驾驶保障系统PCAK近邻_第1页
基于睡意检测的安全驾驶保障系统PCAK近邻_第2页
基于睡意检测的安全驾驶保障系统PCAK近邻_第3页
基于睡意检测的安全驾驶保障系统PCAK近邻_第4页
基于睡意检测的安全驾驶保障系统PCAK近邻_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于睡意检测的安全驾驶保障系统研究与设计摘要随着社会的不断发展,汽车成为了我们日常生活中不可或缺的一部分,但也带来了每年数以百万计的交通事故,造成了无数伤亡,在给人们带来了巨大伤痛的同时也使许多美好的家庭毁于一旦。调查显示,疲劳驾驶是交通事故高发的原因之一。此前,已有诸多专家参与疲劳驾驶监控的研究,但迄今为止,市场上并没有一个成型的可靠的产品。因此,开发一套车载的、实时的、适用的、非接触式的安全驾驶保障系统已成为目前解决疲劳驾驶迫在眉睫的问题。基于睡意检测的安全驾驶保障系统是将程序与硬件相结合,对驾驶员进行非接触的面部图像分析,从中提取有效的特征信息,以辨别驾驶员是否处于疲劳状态的一件产品。本

2、系统主要实现了将人脸人眼检测技术应用于驾驶员疲劳监测的方法,并根据监测结果,及时给出疲劳状态预警,降低由此引发的诸多交通事故的概率。关键字:Myeclipse、PCA、距离哈希K近邻、Java与MATLAB混合编程、Haar分类器、表情识别1 前言近年来,随着人们生活水平的提高、城市化的加速以及经济的快速发展,汽车进入了我们的日常生活并成为我们出行最便利的交通工具之一,给我们提供了极大的方便。但是与此同时也带了很多的问题,其中之一便是交通事故发生量居高不下。据世界卫生组织统计,全世界每年有120多万人死于交通事故,数百万人受伤或致残。全球每年交通事故造成的经济损失高达5180亿美元,其中发展中

3、国家占1000亿美元。同时有资料表明,高速公路发生的交通事故中,有50%以上是由于长时间疲劳驾驶或所见目标单调使司机注意力不集中、甚至打瞌睡等原因造成的。要降低交通意外的发生,最重要的一个途径就是防止驾驶员疲劳驾驶。而要防止疲劳驾驶,最重要的一点是要时刻监测着驾驶员的精神状况。从人体疲劳特征的研究结果看,疲劳驾驶的典型反应包括:眼帘的频繁眨动;瞳孔逐渐变小,甚至闭合;哈欠增多;头部前倾或后仰;方向盘微调,驾车左右摇摆;反应能力下降等。 目前,已有一些简单实用的疲劳测评方法,如脑电图EEG、肌电图EMG、眼动图EOG、瞳孔测量计等,但这些方法都是接触式的疲劳检测方法,势必会给驾驶员造成

4、一定的影响。为了尽量减少对驾驶员的影响,采取的疲劳检测方法最好是非接触式的。通过摄像头捕捉驾驶员的动作特征来检测驾驶员的精神状况,则是最好的非接触式检测方法,因为在车厢内安装监控摄像头对驾驶员几乎是没有影响的。 从以上各种疲劳驾驶典型反应来看,每个人的疲劳反应多种多样,所以仅仅监测一种疲劳反应是远远不够的。再者,每个人做出的同一种疲劳反应又是不同的,因此为了提高系统的精确度,应该将所有因素考虑在内。而本系统就是基于这种想法来设计的,它不仅仅是监测眼睛等单个脸部器官的变化,而是监测了整个脸部的表情,并且排除了个体差异的影响因素,最重要的一点是它是通过严格的算法来分析判断驾驶员的精神状况

5、,这在一定程度上大大提高了系统的准确性和稳定性。2 系统方案2.1图像处理器方案方案一:使用arm和嵌入式操作系统来实现.虽然arm的速度比较快,达到将近500Mhz,但是由于用于图像处理的算法比较复杂,浮点运算比较多,而大部分arm处理器没有硬件浮点运算器,浮点运算靠的是软件,这样会对系统的实时性造成很大的影响。方案二:使用DSP。DSP由于具备硬件浮点运算器,速度能大大提高,DSP在图像处理方面相当强大,但DSP的开发难度相对比较大,成本较高。而且有些在计算机平台上的关于视觉识别的函数库要移植到DSP上的话,工作量相对来说会比较大。方案三:使用PC机。PC机的运算能力足够快,内存空间也足够

6、大,符合图像处理对要求。而且在PC平台上,有不少关于图像处理和视觉识别方面的函数库可以去调用,这样可以大大地减轻了开发难度,同时也可以减少开发成本。因此用PC机就可以满足要求了。综合以上方案,使用电脑处理是最好的选择。2.2软件方案方案一:采用模式识别的方式在图像中寻找眼睛的位置,然后使用Gabor滤波器的特征提取算法,即将Gabor滤波器与眼睛图像进行卷积,提取特征矢量:Gabor特征。然后,对高维空间中的Gabor特征通过特征选择和压缩的方法投影到低维空间中。再与训练好的人眼数据进行比较,采用k均值距离分类器进行分类,从而判断出眼睛的开合度。方案二:采用模式识别的方式在图像中先找出人脸的位

7、置,并对人脸进行追踪,在归一化后的人脸图中根据眼睛和嘴巴在脸部的相对位置,基本能找出眼睛和嘴巴的位置。再对人脸图像进行PCA特征提取,得到一系列可用于分析的参数,再对这些数据进行主成分分析并提取,最后与样本库中的数据进行匹配并运用距离哈希K近邻分类算法来判定驾驶员的状态。由于人脸在整个图像中所占的比例比较大,追踪起来比较容易,检测的准确率相对比较高。而通常驾驶员在驾驶的过程中头部摆动的角度都比较小的,因此人脸定位可以做到很精准。而如果用模式识别找眼睛的话,对眼睛的样本要求比较严格,而且在测试过程中发现,对于不同测试者的眼睛,分类所得的结果起伏比较大,稳定性没有二值化处理的好。再次,Gabor特

8、征提取的速度比较慢,而眨眼的时间却很短,容易漏判,而PCA特征提取能解决此问题。综上所述,我们采用第二种方案。2.3 整体方案系统通过摄像头来获取像素为256*256,帧速率为每秒15帧的影像后,传送给计算机。计算机在图像中用Haar分类器自动追踪到人脸,之后把截得到的人脸图像进行大小归一化处理,再对每张图像进行PCA特征提取,并将提取到的特征与事先已存好的特征样本进行逐一对比和匹配,再通过K近邻算法判别出当前图像是否出现了疲劳状态。这样就可以比较科学地判断出人的精神状态,提前对驾驶员将要出现的困倦进行预警。2.4 特色1、 对整个脸部表情进行监测,考虑了疲劳典型反应的多方面,提高了准确度。2

9、、 利用Haar特征分类器自动跟踪人脸,使人脸定位更精确。3、 考虑了个体差异因素,每个驾驶员都可将自己的疲劳状态存到库中并在实际应用中用于匹配,降低了误判率。3 实现原理本系统的实现原理如下:首先通过摄像头拍摄多张驾驶员疲劳状态和非疲劳状态的照片,然后通过Myeclipse结合MATLAB对图像进行归一化处理。处理完后将驾驶员的疲劳和非疲劳的两种状态的特征经过PCA算法分别提取出来,并存到相应的库中作为样本。当系统进入工作状态对驾驶员进行疲劳监测时,摄像头可以将驾驶员驾车时的状态录制下来并将采集的视频分成一帧帧的图像进行保存,然后系统会对所有的图像进行特征提取并将这些特征存到另外的库中与样本

10、库中的特征进行对比,将对比之后的结果通过K近邻算法提取出有用的数据,再对这些数据进行分析,最后判别出驾驶员是否处于疲劳状态。当驾驶员处于疲劳状态时,系统会自动地作出相应的警告。3.1 JMF视频捕捉技术JMF是一个标准的扩展框架,允许用户制作纯音频流和视频流。JMF技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支持,如M-JPEG、H.263、MP3、RTP/RTSP (实时传送协议和实时流转协议)、Macromedias Flash、IBM的HotMedia和Beatniks的Rich Media Form

11、at (RMF)等。JMF捕获媒体数据需要做以下工作:1.定位所需要用的捕获设备,可以通过查询CaptureDeviceManager来定位。2.获取这个捕获设备的信息CaptureDeviceInfo对象。3.从CaptureDeviceInfo对象中获取捕获设备的位置Medialocator。4.利用MediaLocator创建DataSource。5.使用DataSource创建Player或是Processor。6.然后启动Player就开始了媒体的捕获。3.2 MATLAB简介Matlab是美国MathWorks公司推出的一款可视化的数值计算软件,有强大的数值计算、矩阵计算和图形图像

12、处理等功能。Matlab可以十分方便的进行矩阵运算,且带有大量的图像处理函数,十分适合于图像编程,但他不适用于通用平台,限制了他的应用。Java是一种可靠稳定、跨平台、面向对象的语言。在图像处理方面,Java提供的类只能完成诸如图像加载、显示等简单的操作。如果能够在Java中调用Matlab函数就可以克服各自的缺点,快速、高效的开发图像处理应用程序。3.3 Java与Matlab混合编程在Java中调用Matlab有三种方式:利用CORBA(Common Object Request Broker Architecture)连接、利用JNI(Java&#

13、160;Native Interface)连接、利用Matlab的Com Builder连接。使用CORBA连接十分复杂,开发效率低;使用JNI连接,必须针对不同的操作系统编写应用程序,且必须运行在安装有Matlab的系统中;而使用Com Builder连接则十分简单,具有跨平台优势,只要系统安装有Matlab组件即可,因而成为首先的连接方式。在Matlab2000a以上的版本中又在Com Builder的基础上开发出MATLAB Builder for Java(又叫Java Builder),可以直接把MATLAB函数包装到一个或多个Java类,进一步方便了Java对Matlab

14、的调用。本系统则采用的第三种方式。3.4 基于PCA的表情识别3.4.1 表情特征的提取对于一幅32x32的图像来说,其完整的特征信息是一个1024维的向量,每维上的分量是其对应像素点的灰度值。显然,对于一幅图像,使用其灰度值作为特征在识别效率上是不可行的。对于一幅人脸图像来说,最能体现其表情特征的区域是嘴巴和眼睛。若能提取表情最显著的特征,识别效率将有很大的提升。而提取特征的一种简单有效的方法就是主成分分析(PCA)。主成分分析(PCA)被认为是线性代数最有价值的应用之一,这是一种从混乱数据集中提取相关信息的简单的非参数方法。只需较小的努力,PCA就能对复杂数据集进行降维并揭示数据集中某些潜

15、在的隐含信息。这些隐含的信息就是描述对象的最显著特征。3.4.2 基于PCA的特征提取令Dm×n,那么一幅m×n的人脸图像可表示成RD空间的一个向量,N幅人脸图像组成的训练集X可表示为x1,x2,xN,即一个D×N的矩阵,其中xixi1,xi2,xiDT。设X经线性变换P得到Y,其中Y是M×N矩阵,P是M×D矩阵,那么:YPX令P的第i行为pi,X,Y的第i列分别为xi,yi,则:Y的每一行可表示为:从式上可以看出,在确定了邀p1,p2,PM妖后,xi,yi就形成了一一对应的关系,可以用yi来表示xi,即yi是xi的重新表示。因为yi是M维向量

16、,xi是D维向量,在MD时,yi不仅是对xi的重新表示,更是达到了降维的效果,提取了xi的主要特征。进一步,只选取邀p1,p2,pM妖中的部分向量与xi做点积来计算yi,如选择其中对表情识别贡献最大的J个向量,1JM。文中将JM称为特征提取比率。3.4.3 主成分的选取P的行向量邀p1,p2,pM妖就是X的主成分6。能够提取训练集X的部分特征来重新表示,是因为X中存在冗余信息。这些冗余信息的存在是因为特征之间存在相关性,而对相关性的最好度量就是协方差矩阵。令训练集X的均值为x:那么,X的协方差矩阵CX为:CX是D×D的对称矩阵,计算出CX的D个特征值邀1,2,D妖,不妨设12D,那么

17、邀1,2,M妖对应的特征向量邀p1,p2,pM妖即为X的主成分。3.4.4 特征匹配经过主成分分析,一个原始向量xi可重新表示为一个维度更低的向量yi:这样每一个原始对象xi都可重新表示成RM空间的一个向量。对原始对象的识别问题转化为RM空间的最近邻匹配问题。可采取简单的Euclidean距离来进行相识度度量:E(yi,yj)为yi与yj的Euclidean距离,其值越小说明yi与yj越相似。或者采取Mahalanobis距离度量,可能会有更好的结果。3.5 距离哈希K近邻分类为了提高最近邻检索的效率,避免在整个特征空间进行最近邻匹配,许多基于哈希的近似最近邻检索算法被提出。此类方法的根本思想

18、是,通过哈希变换使相似的向量更可能有相同的哈希值。这样只需与具有相同哈希值的向量进行比较,就能以较高的概率检索到其最近邻。本文受VassilisAthitsos等提出的基于距离哈希(DistanceBasedHashing,简称DBH)近似最近邻检索算法的启发,并针对表情识别这一实际应用,提出基于距离哈希K近邻分类算法来提高表情识别的效率。3.5.1 DBH简介DBH的基本思想是创建l个长度为2k的哈希表,将每一个训练样本分别插入到这l个哈希表中,将此哈希表作为检索数据库。DBH的关键是为每一个哈希表寻找一个哈希函数,即找到一个哈希函数族H1(X),H2(X),Hn(X),其中X是向量空间X中

19、的一个量。在Athitsos等的论文中,Hi(X)为k个布尔子哈希函数的级联值:而任意一个布尔子哈希hij(X)是在函数族HDBH(X)中随机选取的一个函数:其中:D(Xi,Xj)为Euclidean距离,X1,X2是在X空间随机选取的两个向量且X1X2。3.5.2 DBH近似最近邻检索DBH近似最近邻检索由两部分组成。预处理部分把表情特征插入到哈希表中,完成哈希表的构建,如图1所示。查询部分计算待测表情的哈希值,并在相应桶中进行最近邻检索。详细算法如下:(1)预处理选l个哈希函数Hi(X)hi1(X)hi2(X)hik(X),i1,2,l。其中hij(X)从函数族HDBH(X)中随机选取。构

20、建l个哈希表。第i个哈希表使用函数Hi(X),将训练集中经PCA提取的所有表情特征插入到相应桶中。(2)对待测样本Q的查询对每一个i,从第i个哈希表的桶Hi(Q)中检索出表情特征,i1,2,l。对每一个检索出的表情特征,计算其与Q的距离,找出Q的最近邻。图1 DBH构建的哈希表3.5.3 DBHKNN分类最近邻算法在分类时仅考虑其最近邻对分类的影响,易受噪声点的影响。另外,在类别之间存在一定相似性时,只考虑最近邻的影响势必会造成错误的分类,如图2所示。 (a)最近邻分类的结果 (b)K近邻分类的结果图2 NN与KNN分类比较图2中(a)是最近邻分类的结果,点a被分为红点所在的类别;(b)是K近

21、邻分类的结果,点a被分为绿点所在的类别。显然(b)中的分类结果更为准确。因此本文对基于距离哈希最近邻检索做了改进,提出基于距离哈希K近邻分类算法(简称DBHKNN分类)。采用K近邻分类后,在分类相似类别时有较大的改进。在表情识别中,惊讶与恐惧的表情具有一定相似性,即人们常说的“惊恐”。在采用K近邻后,比最近邻有更好的鲁棒性,有效缓解了这两种表情的相互错分。DBHKNN分类算法同2.2中所述的DBH最近邻检索算法相似,用K近邻算法替换其中的最近邻算法即可。3.6 PCA特征提取和DBHKNN分类的混合人脸表情识别人脸表情识别由两部分组成,训练部分完成特征库的构建,识别部分完成表情的分类。详细算法

22、如下:(1)训练使用PCA特征提取,构建原始表情特征库。使用DBH创建l个哈希表,将原始表情特征库转化为一个新的结构化的表情特征库。(2)识别使用PCA提取待测表情图像的特征。使用DBH计算待测表情的哈希值,在每个哈希表中检索出与其具有相同哈希值的表情特征。针对中检索出的表情特征,使用KNN分类算法对待测表情进行分类。4 系统构建和界面介绍4.1 系统构建本系统是以Myecilpse为开发平台,所使用的编程语言为java。程序完成人脸图像的采集、检测、预处理、特征提取、特征分析、状态判断,并根据检测结果在界面上作出相应措施示意的全过程。由于Java代码具有平台无关、内存操作方便和功能强大的特点

23、,所以能够弥补图像处理中数据量大、操作复杂、耗时长等带来的不便。再加上利用已开发好的关于图像处理的库函数,程序的效率更高,开发周期更短,系统更稳定。本系统运行测试的建立环境为:1、图像采集:普通USB摄像头2、图像分别率:256*256(即摄像头监视区域大小)3、CPU:P4 3.0G以上4、内存:512MB以上5、软件开发平台:Myeclipse4.2 界面介绍本系统的界面是用java代码的gui知识制作界面的,以下为系统的界面介绍:1、 首先进入欢迎界面,欢迎界面将引导用户如何体验系统。截图:2、 当用户按下欢迎界面的开始体验按钮,则弹出提示框,提示用户开始拍摄多张自己的疲劳状态照片和非疲劳状态照片当作样本存入样本库中。按下确定按钮之后则进入拍照界面,当用户拍完照片之后则退出该界面,并返回欢迎界面。截图:3、 此时再按下欢迎界面的开始录制按钮,则会开始进行视频采集,如果表情识别结果判定为疲劳,系统则会作出相应的报警。截图:5 系统测试本实验分别以针对某一特定个体采集的JAFFE库和个性化库进行试验。JAFFE库则是样本库,此库中保存着驾驶员处于疲劳状态和非疲劳两种状态的特征图像,每张图片大小为256*256。为了提高算法的时间效率,所有图片均采用金字塔算法向下采样为128*128的图片。而个性化库中则保存着驾驶员驾车时的所有图像,这部分图像都是通过摄像头实时采

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论