欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    毕业设计(论文)-基于视频识别的驾驶员疲劳监控系统.docx

    • 资源ID:3950337       资源大小:4.75MB        全文页数:28页
    • 资源格式: DOCX        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)-基于视频识别的驾驶员疲劳监控系统.docx

    博创杯全国大学生嵌入式设计大赛2011第七届“博创杯”全国大学生嵌入式设计大赛作品设计报告基于视频识别的驾驶员疲劳监控系统英文题目设计报告参赛编号:BJ-5-4参赛学校:北京理工大学作 者:李响 王子实 徐立群指导教师:王崇文摘 要1背景删减 人眼 人脸 识别 合并到特征提取部分 特征提取 特征匹配 测试运行情况 减少主观评价 增加信息融合部分 采用不同权值(这是摘要部分 我来弄)2图片用自己做的(这个我们来弄) 图片下标(这个学长你规范一下 你的部分图片有的下标不对 比如第四章 却是5.26之类的 还有图片没有名字) 公式下标(比如式31)3GPS模块 重新描述 可以用谷歌开源地图 或者NOKIA的地图(这个我们来弄 但是GPS模块我不知道和硬件有没有关系 如果有关系 你可以自己加上点儿东西)4硬件部分格式 内容 5可以增加测试部分 和总结部分(这个我俩来弄) 6参考文献 至少有40%的英文 时间要离现在近的 比如09年 10年 随着社会的不断发展,汽车成为了我们日常生活不可或缺的一部分,但也带来了每年数以百万计的交通事故,造成了无数伤亡,给人们带了了巨大伤痛的同时使许多美好的家庭毁于一旦。调查显示,疲劳驾驶是交通事故高发的原因之一,此前,已有诸多专家参与疲劳驾驶监控的研究,但迄今为止,市场上并没有一个成型的可靠地产品,所以一套能够对驾驶员疲劳程度进行监控并给予报警的系统成为了许多人的迫切需求。基于视频识别的驾驶员疲劳监测系统是将程序与硬件相结合,对驾驶员进行非接触地面部图像分析,从中提取有效的特征信息,以辨别驾驶员是否处于疲劳状态的一件产品。本系统主要研究实现了将人脸人眼检测技术应用于驾驶员疲劳监测的方法,并根据监测结果,及时给出疲劳状态预警,降低由此引发的诸多交通事故的概率。本系统利用开源OpenCV图像处理函数库进行快速开发,总体设计方案包括图像预处理、人脸区域的检测、人眼的粗略定位和精确再定位、人眼睁闭状态判断以及疲劳状态分析等主要步骤模块。其中:在图像预处理方面,系统将通过视频流获得的图像帧进行直方图均衡化,去除实际图像中存在的噪声,放大图像细节,为后续的图像处理环节保证源图像质量。在人脸检测方面,系统采用成功的Adaboost算法,利用OpenCV提供的样本训练集和检测方法,取得了很高的检测成功率和较低的错误接收率,极大了缩减了系统开发时间。根据三庭五眼等先验知识,系统粗略标定人眼存在的可能区域,然后利用灰度投影函数方法,排除眉毛等边界因素的干扰,精确定位了人眼。在人眼睁闭状态判断方面,系统利用自适应阈值化获取能够展示人眼完整形状的二值化图像,通过人眼区域内黑色像素点面积变化的比较来判断睁眼闭眼。 最后,系统选取目前公认有效的PERCOLS疲劳程度评价指标结合驾驶员嘴部及头部的情况,对当前驾驶员的疲劳状态进行分析,并给出不同程度的警告。测试结果表明,该系统基本实现了在稳定环境下、不同光照条件下的人脸识别、状态识别和疲劳判定,具有较高的识别率和不错的判断率。从近年的发展趋势来看,实用性与人文关怀是嵌入式开发的主流,作为能够实际应用到日常生活中的产品,我们的系统在同类产品几乎没有进入市场同时市场有较大的此类需求的情况下具有比较强的竞争力。此外,我们的系统具有满足市场需求的特点。首先,系统体积较小,便于车载;采用摄像头捕捉画面并由内部程序进行相关分析判断,满足了实时、非接触的要求;同时我们设置了GPS导航系统,能够在判定驾驶员疲劳后给驾驶员找到最近的休息区间,增强了人文关怀的同时提高了系统的适用性。综上所述,这套系统的市场前景比较广阔。关键词: OpenCV,人脸检测,人眼定位,阈值化,PERCLOSAbstractThe driver fatigue monitoring system is a technology which analyzes the face image by the computer, withdraws the effective characteristic information, and then distinguishes the specific condition of driver. This system may reduce the probability of accidents caused by driver fatigue, using the face detection technology to monitor the drivers condition and warn the dirver while he is under fatigue.In this system, OpenCV function library is used to achieve the rapid development.The system mainly includes five modules following: image preprocessing, face region detecting, eye region positioning, eyelid closure judging and fatigue analyzing.In the part of image preprocessing, the image frame captured from the camera device is histogram equalized to ensure the quality of source image by eliminating the noises and enhancing the details.The system detects faces using the training sample set and detecting method supplied by OpenCV which have implemented the Adaboost algorithm. In this way, we get higher detect success rate and lower false accept rate.According to the priori knowledge of human face organs scale, this system positions a region roughly where may include eyes, and then we position eye region precisely by the method of gray projection function.In the module of eyelid closure judgment, the system gets binary image which contains the whole eye information using self-adapting thresholding method. We will compare the counts of black pixels in the eye region to judge the eyelid closure.In the end, PERCLOS standand is used to evaluate the fatigue level of the driver and the system gives different warning.The results show that the system achieves the face detecting, the eyelid closure judging and the fatigue evaluating under a stable environment and different light conditions.Keywords: OpenCV, face detection, eye position, thresholding, PERCLOS目录第1章 绪论.11.1 背景分析11.2 疲劳测量方法简介.11.2 市场分析2第 2 章 系统方案22.1软件部分32.1.1 图像预处理32.1.2 人脸检测42.1.3 人眼定位52.1.4 眼睛状态判断52.1.5 疲劳分析52.2硬件部分5第 3 章 功能与指标23.1实现功能33.2指标部分3第 4 章 实现原理24.1软件部分34.1.1人脸识别34.1.2人眼识别34.1.3眼睛状态判断34.1.4疲劳程度分析34.2硬件部分 4.2.1简述34.2.2基于LINUX系统的S3C6410X介绍.34.2.3算法实现3第 5 章 硬件框图25.1摄像头部分35.2外围电路部分3第 6 章 特色2参考文献第1章 绪论1.1 背景分析 近年来,随着人们生活水平的提高、城市化的加速以及经济的快速发展,汽车进入了我们的日常生活并成为我们出行最便利的交通工具之一,给我们提供了极大的方便。但是与此同时也带了很多的问题,其中之一便是交通事故发生量居高不下。据公安部交管局统计2010年,全国交通事故发生情况如表1.1所示:表1.1 10年全国交通事故发生情况其中,发生一次死亡3人以上道路交通事故1244起;发生一次死亡5人以上道路交通事故269起;发生一次死亡10人以上特大道路交通事故34起。在这份统计报告中,还有这样一句醒目的话:机动车驾驶人酒后驾驶肇事明显减少,逆向行驶、疲劳驾驶等肇事致人死亡明显增多。可见当前疲劳驾驶已经是道路交通事故产生的一个主要原因。驾驶员疲劳监控系统可以通过对驾驶员进行非接触地面部图像分析,从中提取有效的特征信息,以辨别驾驶员是否处于疲劳状态,并给出相应的提醒,从而降低由此引发交通事故的概率,保护驾驶员与乘客的生命财产安全。1.2 疲劳测量方法简介1999年4月,美国联邦公路管理局(Federal Highway Administration)的技术论坛上首先提出了把PERCLOS作为预测机动车驾驶员驾驶疲劳的可行方法。经过多年的发展,目前,PERCLOS 方法已被公认为最有效的、车载的、实时的驾驶疲劳测评方法。PERCLOS是Percentage of Eyelid Closure Over the Pupil Time的缩写,意为单位时间里眼睛闭合时间所占的百分比。PERCLOS的原理即为统计在一定时间内眼睛闭合时所占的时间比例。我们的系统所采用的评判标准为PERCLOS80,指眼睑遮住瞳孔的面积超过80%就认为眼睛闭合。.图2.1可以说明PERCLOS的测量原理:图1.1 PERCLOS测量原理通过测量出t1-t4就能计算出PERCLOS的值:F=*100%其中F代表眼睛闭合时间的百分比,即PERCLOS的值。1.3市场分析随着汽车数量的增加和公路建设规模的扩大,交通事故等问题日益明显。中国是人口最多的国家,道路交通事故死亡人数也是最高的国家,连续数年一直居世界第一位。而近年来逐渐突出的驾驶疲劳成为人们关注的重要问题。目前该问题的研究分为主观和客观两种方法,主观的研究方法有主观调查表、驾驶员自我记录、睡眠习惯调查表、斯坦福睡眠尺度表四种。客观的方法有脑电图、眼电图、肌电图、呼吸气流、呼吸效果、动脉血液氧饱和时的温度和心电图等测量方法。尽管这些方法是比较准确的,但是由于这些方法一般是在驾驶前或驾驶后测量,是超前或滞后的,而非实时的,况且在驾驶室有限的空间内安置复杂的检测仪器也是十分困难的;而且驾驶员脱离驾驶室或未进入驾驶室的精神状态是不同的,再精确的仪器其测量结果也会大受影响。因此,开发一套车载的、实时的、适用的、非接触式的驾驶员疲劳检测系统已成为目前解决疲劳驾驶迫在眉睫的问题。我们的系统基本满足目前市场上对该类产品的需求。首先,系统体积较小,便于车载;采用摄像头捕捉画面并由内部程序进行相关分析判断,满足了实时、非接触;同时我们设置了语音提示系统与GPS导航系统,增强了人文关怀的同时提高了系统的适用性,市场前景比较广阔。第2章 系统方案驾驶员疲劳监测系统通过视频采集设备获得驾驶员实时图像,自动分析驾驶员的头部姿态、眼睛运动规律以及面部特征等信息来确定驾驶员精神状态,并给出相应的预警提示。研究表明,相比脸部或头部运动规律而言,眼睛的活动规律,如眨眼频率、眨眼快慢、眼睛张开幅度以及眼睛的注视方向等能更好地反映出当前时刻实验对象的精神状态好坏。因此,如果能够获得每一帧图像中的双眼大小、位置信息以及运动变化,就可以将一段时间内驾驶员的眼部活动规律统计出来,结合疲劳状态分析指标,就能够对驾驶员疲劳状态进行评价。综上所述,我们系统的总体设计包含了以下几个方面的内容,如图2.1所示:图2.1系统流程图2.1软件部分2.1.1 图像预处理在驾驶环境下通过视频流采集的图像会受到诸多因素的影响而包含噪声信息,如分辨率、系统噪声、突变背景等,给接下来的图像运算带来干扰。因此,我们对源图像通过直方图均衡化的手段进行预先处理,去除噪声,增强图像对比度,凸显图像细节,提高图像质量。图2.1均衡化前图2.2均衡化后图2.3均衡化前的直方图图2.4均衡化后的直方图2.1.2 人脸检测图2.5人脸检测模块结构人脸检测环节是人眼定位前的重要步骤。系统采用Adaboost算法,利用OpenCV提供的样本训练和检测方法。首先采集样本,使用haartraining应用程序,从已采集的样本集中训练出分类器,该分类器可以很好地区别出人脸和非人脸;在检测环节,加载待检图像帧至分类器中,通过对图像像素点的扫描,找到图像中包含的人脸,标定该区域。后续操作会在已标定的人脸区域中进行,缩小计算区域,排除非人脸因素的干扰,极大地提高了系统的运行速率。2.1.3 人眼定位该环节包括人眼粗略定位和人眼精确定位两个阶段。首先,根据中国传统的三庭五眼的先验知识,粗略定位肯定存在人眼的大致区域,该区域可能同时包含眉毛,发角等干扰,但却进一步地缩小了计算区域;接着,将人眼粗略区域通过一定阈值转换为二值化图像,再进行垂直方向上的灰度投影,求得直方图,因为人眼和周围皮肤的灰度存在较大差异,所以可从直方图中的波峰波谷判断出人眼上下边缘的Y坐标,继而可对眼睛进行精确定位。图 2.6人眼定位模块结构2.1.4眼睛状态判断通过最大类间方差法(Otsu)在不同的光线下对人眼精确区域进行不同阈值的二值化,分别获取最佳的人眼睁闭状态时的眼部形状。通过对连续N帧的对比可以判断,黑色像素值面积最小时可认为驾驶员当前处于闭眼状态,其他情况下处于睁眼或者半睁眼状态。2.1.5疲劳分析系统选取目前公认有效的PERCOLS疲劳程度评价指标,即通过闭眼帧在连续N帧内所占的时间比例来分析疲劳状态,睁眼帧记录为“1”值,闭眼帧记录为“0”值,这样,连续N帧后便可获取关于“1”“0”交错出现的序列,疲劳状态的分析即可用“0”值在该序列中所占的比例来描述,当百分比高于一定的实验比例后即可认为司机可能出现疲劳。通过以上五个步骤的操作处理,系统可由采集设备获取的视频流中分析出当前驾驶员是否处于疲劳状态及疲劳程度,给出不同程度的提醒警报,从而达到系统设计的目标。第3章 功能与指标3.1 实现功能本系统功能为驾驶员疲劳监控。功能实现包括以下几个步骤。(1)系统将通过视频流获得的图像帧进行直方图均衡化,去除实际图像中存在的噪声,放大图像细节,为后续的图像处理环节保证源图像质量。(2)系统采用成功的Adaboost算法,利用OpenCV提供的样本训练集和检测方法,取得了很高的检测成功率和较低的错误接收率,极大了缩减了系统开发时间。(3)系统粗略标定人眼存在的可能区域,然后利用灰度投影函数方法,排除眉毛等边界因素的干扰,精确定位了人眼。(4)系统利用自适应阈值化获取能够展示人眼完整形状的二值化图像,通过人眼区域内黑色像素点面积变化的比较来判断睁眼闭眼。(5)系统选取目前公认有效的PERCOLS疲劳程度评价指标,对当前驾驶员的疲劳状态进行分析,并给出不同程度的警告。图 3.7主程序流程图3.2指标部分本系统不断选取连续20帧进行一次疲劳程度判断。我们约定,1、当PERCLOS的值小于0.4时,系统判断驾驶员处于正常驾驶状态,不做任何处理;2、当PERCLOS的值大于0.4时,系统判断驾驶员处于轻度疲劳状态,给出提示音,若驾驶员经提示后清醒,PERCLOS会在下一阶段的判断中降至0.4以下,提示音消失;3、当驾驶员被轻度提示后仍无法保持清醒,PERCLOS的值会继续增加,当其大于0.7时,说明驾驶员已经进入疲劳状态,系统会给出急促的干扰噪音,强烈警告驾驶员停车休息。图3.2图中,第一行的数据表示当前条件下睁眼与闭眼状态判断的临界值,下方的“0”“1”序列表示随着帧数的增加,系统对睁闭眼情况的评定和疲劳程度的分析。第4章 实现原理4.1软件部分4.1.1 人脸识别在实现人脸识别模块的过程中,其中,对于训练模块,OpenCV包含一系列的预先训练好的物体识别文件,也允许你训练并存储新的物体模型。使用OpenCV的haartraining应用程序,便可从给定的训练集中训练出分类器。主要操作步骤如下:(1)收集打算学习的人脸的数据集,把它们储存在一个或多个目录下面。这些文件通过一个文本文件以下面的形式建立索引。图 4.1检测流程图 4.2训练流程<path>/img_name_1 count_1 x11 y11 w11 h11 x12 y12···<path>/img_name_2 count_2 x21 y21 w21 h21 x22 y22···文本文档的每一行包含路径和文件名紧接着是物体的个数和物体的矩形列表,矩形的格式是(左上角的X和Y坐标,宽度,高度)。(2)使用辅助工具createsamples来建立正样本的向量输出文件。通过这个文件,便可以重复训练过程,使用同一个向量输出文件尝试各种参数。例如:Createsamples vec face.vec info face.idx w 30 h 40读入face.idx文件,输出一个格式化的训练文件face.vec。然后createsamples提取图像中的正样本,再归一化并调整到指定的大小。(3)收集和处理反样本。任何没有我们感兴趣的物体的图像都可以作为反样本。最好从我们需要测试的数据中选取反样本图像。我们把反样本图像放到一个或者几个路径下面,并由图像文件名组成索引文件,一个文件名占一行。比如一个叫background.idx的图像索引文件可以包含下面的路径和文件名:Data/vacations/beach.jpgData/nofaces/img_043.jpgDate/nofaces/345.jpg(4)训练。下例从命令行输入或者使用批处理文件创建的训练。Haartraining /-data face_classifier_take_3 /-vec face.vec w 30 h 40 /-bg background.idx /-nstages 20 /-nsplits 1 /-nonsym /-minhitrate .998 /-maxfalsealarm 0.5执行之后,获得的分类器将存储在文件face_classifier_take_3.xml中。这里face.vec是正样本,反样本是从background.idx随机抽取的图像。级联被设置为有20层,每一层最低正确检测率是99.8%,错误接受率是50%。采用以下方法在实际系统中应用人脸检测:(1)函数LoadHaarClassifierCascade装载训练好的级联分类器,其格式为CvHaarClassifierCascade* cvLoadHaarClassifierCascade(const char* directory,CvSize origwindowsize),其中directory为包含训练好的级联分类器文件的路径.。Origwindowsize为级联分类器在训练中采用的检测目标的尺寸。(2)将分类器转化为OpenCV的内部格式,这一步骤是必不可少的。这是因为OpenCV只能处理内部优化格式的分类器。(3)检测要用到函数HaarDetectObjects。该函数使用针对某目标物体训练的级联分类器在图像中找到包含目标物体的矩形区域,并将这些区域作为一系列的矩形框返回。其格式为CvSeq* cvHaarDetectObjects(const CvArr* image,CvHaarClassifierCascade * cascade CvMemStorage* storage,double scalefactor=1·1, int minneighbors=3,int flags=0,CvSize minsize=cvSize(0, 0)。其中image是被检图像;cascadehaar是级联分类器内部标志形式;storage用来存储检测到的一系列候选目标矩形框的内存区域;scalefactor是在前后两次相继的扫描中搜索窗口的比例系数;minneighbors是构成检测目标的相邻矩形的最小个数(默认为-1); flags是操作方式;min-size是检测窗口的最小尺寸.默认情况下被设为分类器训练时采用的样本尺寸。4.1.2 人眼识别这里,我们将人脸的垂直方向均分为四部分,将人脸的水平方向均分为七部分,人脸粗略区域的高度选取人脸上半部分的下1/2区域,宽度选取人脸的中心5/7区域。在人脸检测模块,我们已经得到了定位人脸的矩形框的坐标,根据先验知识的约定,我们可以做到对人眼粗略区域坐标的定位。这样可以保证,不管实际检测的人脸比例怎样,我们的矩形框都可以肯定将人眼包含在尽可能小的矩形框内,并且能够粗略地排除头发,鼻子等因素的影响。这样,我们就根据先验知识在人脸区域内设置了我们的感兴趣区域,为接下来的算法排除干扰,提高了运行速率。确定人眼区域后,就需要使用自适应阈值化操作对人眼的图像进行处理,进一步获得人眼的细节信息作为人眼定位的判断依据。自适应阈值化操作在人眼精确定位和眼睛状态判断中起着关键性作用。我们需要获取整个人眼的完整信息,特别是人眼的完整形状,作为定位人眼中心的前提。下图展示了相同光线不同阈值下的人眼形状以及不同光线相同阈值下的人眼形状。阈值25 阈值40 阈值55 阈值65阈值25阈值40阈值55阈值65因此,固定的阈值势必无法适用于所有的光线,我们需要做的是实现阈值的自适应,根据光线的不同,整个图像的灰度不同,阈值会自动设置调整,得到最佳人眼二值化图像。阅读相关文献,该系统采用最大类间方差法进行阈值化自适应。最大类间方差法(Otsu)是一种全局阈值选取法,它根据最小二乘原理推导出来,基于直方图即图像的灰度信息来选取阈值,该算法被认为阈值自动选取方法的最优方法之一,该方法具有算法简单、分割速度快等优点,特别是对于信噪比较高的图像具有很好的分割效果。其基本思路是将直方图在某一阈值处分割成两组,当被分成的两组的方差为最大时,得到阈值。因为方差是灰度分布均匀性的一种量度,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。由于该算法计算过程在诸多文献中均有涉及,本文不再一一赘述。对图像g,其灰度级为lm,设灰度值为i的像素数目为,则像素总数及各灰度值出现的概率分别为:N=(i=1,2,···,m) Pi=(i=1,2,···,m) 以灰度t为门限将图像分为目标和背景两个区域,目标灰度为A(1t)的像素数目为,背景灰度为B(t+1-m)的像素数目为,则目标区域A占图像比例和背景区域B占图像比例分别为:=/N i(1,t) =/Nj(t+1,m) 设其平均灰度值分别为,,则图像g的平均灰度值为:=*+*根据方差的定义即得两组间方差:(k)=*+*k(1,m)k遍历灰度值lm,当k使得上式取得最大值时,k即为分割的最佳阈值。图5.3实验了不同光线下人眼的Ostu自适应阈值化。可以看到,人眼效果较好。图 5.3在解决自适应阈值问题之后,我们看到,眼睛区域的灰度较周围皮肤灰度而言,灰度值低,灰度变化较大,所以,我们可以采用垂直灰度投影法来精确定位人眼区域。我们这里以人的右眼(左边的眼)作为人脸精确定位的目标。如图所示,将不戴眼镜和戴眼镜粗略人眼区域图像进行自适应阈值化处理,得到二值化图像,对图像进行垂直方向和水平方向的灰度投影。本系统利用两个大小相当于图像高度和宽度的数组vwidth和HHeight实现了灰度投影的计算。对于垂直方向的灰度投影,利用双层循环分别计算每个像素高度上的水平方向黑色像素点总和,计入Hi;水平方向上的计算类似。接下来,再次遍历两个数组,经过绘图得到了如图5.4和5.5所示的直方图。图 5.4不戴眼镜图 5.5戴眼镜(1)从垂直方向直方图中可以看到有两个最高值,上面的最高值代表眉毛垂直中心,而下面的最高值代表眼睛的垂直中心,从大量的试验中,我们发现,在这样的人眼粗略区域中,只要二值化的阈值选取(前文已陈述)恰当,眼镜不会成为最高两个值的干扰,眉毛中心和眼睛中心总会成为最高的两个波峰,而眉毛的波峰始终在上方,眼睛的波峰始终在下方。这样我们就可以通过对数组Hi的值进行排序筛选,找出最大的两个值,标定两个波峰的Y坐标,从而经排除后确定了人眼精确区域的中心Y坐标;我们再搜索上下两波峰坐标之间的波谷(代表眼睛眉毛的中间区域)的Y坐标,这样也得到了上边框的Y坐标,自然也便极易得到下边框的Y坐标。(2)人脸精确区域左边框和右边框的X坐标不可从波峰判断出人眼的水平中心,因为眉毛的灰度变化是不规律的、不确定的,特别是戴眼镜的驾驶员的水平灰度变化。从图中所示的水平方向投影直方图中我们看到,从左至右出现了三个甚至更多的波谷,各自代表着眼睛左侧的皮肤、眼睛右侧的皮肤以及两眼之间的区域。我们可以这样,遍历Vi数组进行排序,确定数值最低的五组数据,在这五组数据中找出X坐标处于最左侧的两组数据。这样,便确定了人眼精确区域的左边框和右边框的X坐标。(3)通过上述算法操作,人眼精确区域矩形框的四点坐标都可以轻松获得,从而简单实现了右眼的矩形区域的精确定位。对于戴眼镜的驾驶员来说,可能会包含眼镜框的部分,但这个结果对我们后续的处理不会产生干扰。如图5.6所示。图5.6人眼精确区域4.1.3 眼睛状态判断眼镜状态判断的正确与否直接影响到疲劳程度的分析与系统结果的输出。在该系统中,我们通过判断二值化图像中眼睛区域的像素点的变化来判断眼睛的睁闭状态。眼睛的面积定义为图像中人眼精确区域中的像素的数目,即定位区域的黑色像素的个数。当眼睛为完全睁开状态时,黑色像素最多,即面积最大,设为Pmax;当眼睛完全闭合时,面积最小,设为Pmin。图 5.7在定位人眼精确区域之后,系统会选取驾驶员静止不动后的连续10帧的睁眼图像数据和10帧的闭眼图像数据,分别计算每一帧的黑色像素点的个数,求得平均值。此时:Pmax=Pmin=在此后的视频图像帧的处理中,系统计算每一帧的眼睛区域的面积Px,根据下式进行判断。Si=式中,“1”代表睁眼,“0”代表闭眼,代表允许的波动值4.1.4 疲劳程度分析人脸检测,人眼定位和眼睛状态的判断就是为了确定驾驶员的疲劳状态。系统需要建立一个能够预测驾驶疲劳进程的数学模型,以便有效的监控驾驶疲劳的情况。该系统将使用PERCLOS的变形做为检测依据。我们并没有使用P80、P70等标准做为闭眼的判断依据。疲劳与否的判断公式为:F=公式中F表示单位时间内眼睛处于闭合状态的总帧数占所获取的视频流的总帧数的比例,N表示单位时间内获取的视频流的总帧数,p(t)表示当前帧图像中人眼的睁闭状态。根据前面的分析,每一帧图像驾驶员眼睛状态分为开、闭两种,我们不能只根据当前一帧驾驶员眼睛的状态来判断疲劳,这就需要根据驾驶员眼睛状态的连续时间系列数据统计驾驶员疲劳状态。用“0”、“1”表示闭眼和睁眼,则驾驶员眼睛状态就是由“0”、“1”组成的一个时间状态系列。此时,PERCLOS为一分钟内“0”所占的比例。本系统不断选取连续20帧进行一次疲劳程度判断。我们约定:1、当PERCLOS的值小于0.4时,系统判断驾驶员处于正常驾驶状态,不做任何处理;2、当PERCLOS的值大于0.4时,系统判断驾驶员处于轻度疲劳状态,给出提示音,若驾驶员经提示后清醒,PERCLOS会在下一阶段的判断中降至0.4以下,提示音消失;3、当驾驶员被轻度提示后仍无法保持清醒,PERCLOS的值会继续增加,当其大于0.7时,说明驾驶员已经进入疲劳状态,系统会给出急促的干扰噪音,强烈警告驾驶员停车休息。4.2硬件部分4.2.1 简述硬件部分我们主要利用UP-MAGIC魔法师实训平台上的视频采集模块以及USB接口,摄像头模块我们采用UP-MAGIC魔法师实训平台自带的内置芯片为ZC301的USB摄像头。4.2.2 基于LINUX的S3C6410X的CPU介绍UP-MAGIC魔法师实训平台采用的是S3C6410X的CPU芯片,其硬件模块如下图:其中摄像头直接利用USB接口连接到ARM板上,并安装驱动,下面是驱动安装步骤:重新编译内核,将对应的摄像头支持模块选上.但是LINUX内核中系统中没有ZC301P摄像头驱动,要下载对应的内核补丁,其补丁和驱动在http:mxhaard.free.fr中有对应的驱动下载,此处用到的是:usb-2.4.31LE06.patch.tar.gz,此patch是为令重编内核时,有spcaxx系列摄像头的支持。把它复制到/armlinux/kernel/driver/usb下,解压,打补丁.tar -xvzf usb-2.4.31LE06.patch.tar.gz patch -p1 < usb-2.4.31LE06.patch两个文件。此时就会在此目录下看到spca5xx文件夹了.不知是何原因,估计是KERNEL版本的原因,在/armlinux/kernel/driver/usb 的目录中的Makefile 和config.in中找不到对应的关键字,此时会有一些错误,并将错误放在Makefile.rej 和config.in.rej 两文件中,打开两个文件,分别将其中前面有“+”的文字加到 Makefile和config.in中对应的分类中即可。4.2.3 算法实现 编译内核,进入/armlinux/kernel,make menuconfig.在arm linux的kernel目录下make menuconfig,首先选择Multimedia device->下的Video for linux,然后 USB support -> USB Multimedia devices 选项下应该有<M> USB SPCA5XX Sunplus Vimicro Sonix Cameras,要把它配置成module。make dep;make zImage;make modules.就会在/armlinux/kernel/arch/arm/boot下生成zImage,这就是我们生成最新的内核,将此内核通过终端下载到开发板中,/armlinux/kernel/driver/usb/spca5xx中生成spca5xx.o,spcadecoder.o, spca_core.o.这就是我们要的驱动。 用新内核启动这三个.o文件(可

    注意事项

    本文(毕业设计(论文)-基于视频识别的驾驶员疲劳监控系统.docx)为本站会员(爱问知识人)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开