




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文)基于OpenCV的疲劳驾驶预警系统学 院: 计算机学院专 业: 姓 名: 指导老师: 计算机科学与技术 学 号: 职 称: 二一一年五月Xx学院毕业设计诚信承诺书本人郑重承诺:我所呈交的毕业设计基于OpenCV的疲劳驾驶预警系统是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。 承诺人签名: 日期: 年 月 日Xx学院2011届本科生毕业设计基于OpenCV的疲劳驾驶预警系统摘 要目前,随着我国人民生活水平的不断提高,汽车已经走进了千家万户,成为人们日常出行的一种重要的交通工具,交通事故也随之增多。造成
2、交通事故频频发生的重要原因是由于司机的疲劳驾驶。因此,针对疲劳驾驶方面的研究具有极大的科研价值与设计意义。系统设计思路是采用OpenCV开源的视频图像处理库,使用摄像头采集视频图像,对输入图像做预处理(图像灰度化、中值滤波等);通过学习训练的方法构造基于类Haar特征的层叠式分类器,利用基于类Haar特征的层叠式分类器从输入图像中直接定位人眼;把人眼部分的图像截取出来,二值化人眼图像;然后计算二值化图像中垂直方向上瞳孔的宽度大小,从而判断眼睛的状态;最后通过多次的捕捉,计算眼睛闭合的频率来得出其疲劳状态。关键词:疲劳驾驶 OpenCV 类Haar层叠式分类器 图像处理 眼睛定位 Xx学院201
3、1届本科生毕业设计Driver Fatigue Early Warning System Based On OpenCVABSTRACTNow, with our continuous improvement of living standards of people, cars have entered the household, become an important daily travel transport, traffic accidents also increase. Important cause frequent traffic accidents due to
4、 driver fatigue driving.Therefore, for fatigue driving has been a significant scientific value and design significance.Design of system is the use of open source video OpenCV image processing library, the use of video cameras capture images of the input image preprocessing (image graying, median fil
5、ter, etc.); constructed by learning the training class based on Haar features cascade classifier, using features of class-based Haar classifier cascade of images directly from the input locate the eye; to the human eye out of part of the image capture, binary eye images; and then calculate the
6、binary image in the vertical directionThe width of the size of the pupil, in order to determine the state of eyes;Finally, many of the capture, calculation of the frequency of close to draw the eye fatigue state.Key words:Fatigue driving OpenCV Haar classifier cascade class Image Processing Eye loca
7、tion目 录摘 要IABSTRACTII1前言11.1选题背景11.2驾驶人疲劳状态监测方法分析11.2.1基于驾驶人生理信号的检测方法11.2.2基于驾驶人生理反应特征的检测方法21.2.3基于驾驶人操作行为的检测方法21.2.4基于车辆状态信息的检测方法21.3选题目标31.4需求分析31.4.1用户需求分析31.4.2功能需求分析31.5本章小结42OpenCV介绍52.1 OpenCV背景介绍52.2 OpenCV应用领域及特点52.3 OpenCV在Visual Studio 2005下安装与配置52.3.1 OpenCV的安装52.3.2 Visual Studio 2005的安
8、装82.4 本章小结113系统方案123.1系统总体方案123.2系统主要功能133.3系统实现原理143.4本章小结144算法分析154.1 AdaBoost算法描述154.2 眼睛定位算法164.3 基于Haar特征分类器训练生成XML步骤174.3.1 采集样本174.3.2创立样本VEC文件184.3.3训练生成XML194.4 本章小结205详细设计215.1程序流程图215.2 软件设计225.2.1 获取图像225.2.2 眼睛定位225.2.3 计算眼睛的高度235.2.4报警模块245.2.5 GUI设计245.3 本章小结256系统测试266.1人脸定位及眼睛定位测试266
9、.2系统测试结果276.3本章小结297论文总结30参考文献31附 录32谢 辞34V1 前言1.1选题背景随着交通运输业的发展,交通事故已成为当前各国所面临的严重问题。据不完全统计,全世界每年死于交通事故的人数约为60万,因车祸受伤的人更多,每年平均约有l000万人。在美国的重型汽车事故中,57%的灾难性事故是与驾驶员疲劳有关,它已成为事故发生的主要原因。英国交通研究实验室(Transport Research Laboratory)认为:驾驶疲劳导致的道路交通事故占全部交通事故的10%。法国国家事故报告表明,因疲劳驾驶而发生车祸的占人身伤亡事故14.9%,占死亡事故的20.6%。澳大利亚每
10、年由于交通事故的花费约为75 亿美元。其中,将近15亿是直接由于驾驶员疲劳而导致的。我国交通事故呈现逐年上升的趋势,1999年我国发生道路交通事故412860起,致伤286080人,死亡83529人,造成直接经济损失21.24亿元。因此,各国研究人员都在努力开发出一个能实时监视驾驶员警觉水平,并在任何不安全状态下能对驾驶员进行预警的系统。本系统的设计思想是以OpenCV视频图像处理技术为核心,通过摄像头实时地获取驾驶员的脸部图像,利用脸部识别技术定位眼睛,再根据眼睛的闭合的状态判断驾驶员是否处于疲劳状态。1.2驾驶人疲劳状态监测方法分析关于驾驶人疲劳及注意分散等安全状态的监测预警技术,由于它在
11、交通事故预防方面的发展前景而受到各国高度的重视,研究人员根据驾驶人疲劳时在生理和操作上的特征进行了多方面的研究,一些研究成果已形成产品并开始进入市场。驾驶人疲劳状态的检测方法可大致分为基于驾驶人生理信号、基于驾驶人生理反应特征、基于驾驶人操作行为和基于车辆状态信息的检测方法。1.2.1基于驾驶人生理信号的检测方法针对疲劳的研究最早始于生理学。相关研究表明,驾驶人在疲劳状态下的生理指标会偏离正常状态的指标。因此可以通过驾驶员的生理指标来判断驾驶人是否进入疲劳状态。目前较为成熟的检测方法包括对驾驶人的脑电信号EEG、心电信号ECG等的测量。ECG主要被用于驾驶负担的生理测量中。研究表明在驾驶人疲劳
12、时ECG会明显的有规律的下降,并且HRV (心率变化)和驾驶中的疲劳程度的变化有潜在的关系。基于驾驶人生理信号的检测方法对疲劳判断的准确性较高,但生理信号需要采用接触式测量,且对个人依赖程度较大,在实际用于驾驶人疲劳监测时有很多的局限性,因此主要应用在实验阶段,作为实验的对照参数。1.2.2基于驾驶人生理反应特征的检测方法基于驾驶人的生理反应特征的检测方法是指利用驾驶人的眼动特性、头部运动特性等推断驾驶人的疲劳状态。驾驶人眼球的运动和眨眼信息被认为是反映疲劳的重要特征,眨眼幅度、眨眼频率和平均闭合时间都可直接用于检测疲劳。目前基于眼动机理研究驾驶疲劳的算法有很多种,广泛采用的算法包括PERCL
13、OS,即将眼睛闭合时间占一段时间的百分比作为生理疲劳的测量指标。利用面部识别技术定位眼睛、鼻尖和嘴角位置,将眼睛、鼻尖和嘴角位置结合起来,再根据对眼球的追踪可以获得驾驶人注意力方向,并判断驾驶人的注意力是否分散。基于驾驶人生理反应特征的检测方法一般采用非接触式测量,对疲劳状态的识别精度和实用性上都较好。1.2.3基于驾驶人操作行为的检测方法基于驾驶人操作行为的驾驶人疲劳状态识别技术,是指通过驾驶人的操作行为如方向盘操作等操作推断驾驶人疲劳状态。Yoshihiro Takei 利用FFT对监测到的驾驶人的方向盘操作数据进行处理,研究结果在一定程度上揭示了驾驶人的方向盘操作与疲劳之间的关系。研究指
14、出方向盘的操作是一种有效的驾驶疲劳的判断手段。Yabuta开发的驾驶人防疲劳装置中也使用了方向盘操作信息。总体来说,目前利用驾驶人操作行为进行疲劳识别的深入研究成果较少。驾驶人的操作除了与疲劳状态有关外,还受到个人习惯、行驶速度、道路环境、操作技能的影响,车辆的行驶状态也与车辆特性、道路等很多环境因素有关,因此如何提高驾驶人状态的推测精度是此类间接测量技术的关键问题。1.2.4基于车辆状态信息的检测方法利用车辆行驶轨迹变化和车道线偏离等车辆行驶信息也可推测驾驶人的疲劳状态。这种方法和基于驾驶人操作行为的疲劳状态识别技术一样,都以车辆现有的装置为基础,不需添加过多的硬件设备,而且不会对驾驶人的正
15、常驾驶造成干扰,因此具有很高的实用价值。日本三菱汽车公司开发了利用车辆横向位移量、驾驶人操作量等复合参数来识别驾驶人疲劳状态的方法,实验证明该方法的识别结果与利用驾驶人眨眼次数的识别结果基本一致。日本庆应大学(2005)中岛研究室利用EEG评价驾驶人的睡意,研究发现车辆的横向位移量、方向盘操作量可以用来作为驾驶人疲劳状态的评价指标,而且可以实现疲劳早期预警。1.3选题目标基于上述背景,开发一个疲劳驾驶预警系统,采用OpenCV视频图像处理技术,Windows XP作为操作系统,以C#作为编程开发语言,根据系统的需求,分析系统各个模块,如驾驶员脸部图像获取,眼睛定位,图像二值化处理,眼睛高度计算
16、算法,以及疲劳状态的判断算法,实现并完善系统的功能。1.4需求分析1.4.1用户需求分析目前,已经有一些公司专门开发和生产疲劳驾驶装置,如南京远驱科技有限公司开发的疲劳驾驶预警系统gogo850平安行,采用国际上最先进的非接触式方式,利用汽车级图像传感器采集人脸红外图像,性能超过奔腾二代的高速数字信号处理器进行数字图像处理与分析,先进的疲劳算法确保驾驶员在疲劳驾驶的时候及时发出报警信号,保障您的生命与财产安全。其功能特点:全天候工作特点、优秀的眼镜识别水平、领先的人脸识别技术、丝网膜瞳孔检测技术、智能高速识别功能、体积小巧,安装方便、自动灵敏度控制、人性化的指示灯、智能化的报警灵敏度调节。由此
17、,本系统也尽量适应用户需求,完善系统功能,使得更为人性化。设计开发多种功能模块:二值化滑动条调节:适应不同的光线强度及提高判断精度;采用红外线摄像头可以识别戴各种眼镜驾驶的司机;系统可以动态显示二值化眼睛状态:便于测试和观察结果;更为人性化的语音提示:当判断处于疲劳状态时,系统会发出警报声。1.4.2功能需求分析根据用户的需求和项目的定位,从提升产品价值的角度出发,划分项目的各个功能模块,具体如下:1、实时的获得驾驶员的脸部图像,实时显示从摄像头获取的图像;该功能使系统更为直观的显示摄像头工作状态,实时获取驾驶员的状态图像。2、动态的显示二值化后的眼睛状态图像;该功能是为了统计与判断驾驶员的眼
18、睛闭合状态连续的帧数,对疲劳状态进行判断提供依据。3、具有可调节二值化强度的滑动条;该功能是为了适应不同的光照强度,可以提供用户自行设置二值化的强度,这样,对疲劳状态的判断更为精确有效。4、具有语音提示功能及报警提示窗口;该功能通过语音提示可以提醒用户注意休息,更为人性化的设计,有利于产品化设想。5、系统界面的美化;系统界面美化是使用Photoshop进行图片的美化处理设计,按钮也是使用图片作为按钮,使得系统更为美观,有利于产品化设想。1.5本章小结本章主要介绍了项目的选题背景、四种驾驶人疲劳状态的检测方法的分析与比较和需求分析。本系统采用的疲劳状态检测方法是基于人眼的生理反应特征的方法实现,
19、选择该方法的原因是相对其他方法而言,人眼的生理反应特征是最直接,最直观的反应驾驶员是否处于疲劳状态的一种表现。根据本人技术水平情况,按需求划分软件功能模块,系统采用基于人眼的设计思路进行详细设计。 2 OpenCV介绍2.1 OpenCV背景介绍OpenCV(Open Source Computer Vision Library)于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效由一系列 C 函数和少量 C+ 类构成,同时提
20、供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。2.2 OpenCV应用领域及特点OpenCV有其显著的不可比拟的优点,主要体现在如下几个方面:(1)OpenCV是一个包含了超过300个C函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库。(2)高性能:OpenCV中所有的算法都是基于封装于IPL的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel公司针对其所生产的处理器优化。(3)跨平台:OpenCV除了可以在Windows下运行,也可以在Linux、Mac OS等系统上使用。(4
21、)开源性:不管对于商业的还是非商业的用途,OpenCV都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用。OpenCV主要运用于人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪以及机器人等图像处理方面。2.3 OpenCV在Visual Studio 2005下安装与配置2.3.1 OpenCV的安装安装OpenCV 1.0 ,安装路径为默认路径C:Program FilesOpenCV 。安装步骤如下图所示:图2-1 OpenCV安装步骤一图2-2 OpenCV安装步骤二图2-3 OpenCV安
22、装步骤三图2-4 OpenCV安装步骤四安装完成后设置环境变量,操作如下:右键“我的电脑”>“属性”>点“高级”标签>“环境变量”选项>在"PATH"中添加路径C:Program FilesOpenCVbin,如下图所示:图2-5 添加系统环境变量2.3.2 Visual Studio 2005的安装配置环境路径操作如下:1、打开Visual Studio 2005,依次选择:工具-选项-项目和解决方案-VC+目录。在“显示以下内容的目录”中选择“可执行文件”,在下面添加如下的路径:C:Program FilesOpenCVbin 。如下图所示:图2
23、-6 添加可执行文件路径2、在“显示一下内容的目录”中选择“包含文件”,在下面添加如下的路径:C:Program FilesOpenCVotherlibshighgui ;C:Program FilesOpenCVotherlibscvcaminclude ;C:Program FilesOpenCVotherlibs_graphicsinclude ;C:Program FilesOpenCVmlinclude ;C:Program FilesOpenCVcxcoreinclude ;C:Program FilesOpenCVcvauxinclude ;C:Program FilesOpen
24、CVcvinclude。如下图所示:图2-7 添加包含文件路径3、在“显示以下内容的目录”下选择“库文件”,在下面添加如下的路径:C:Program FilesOpenCVlib;C:Program FilesOpenCVotherlibs_graphicslib。如下图所示:图2-8 添加库文件路径4、在“显示以下内容的目录”下选择“源文件”,在下面添加如下目录:C:Program FilesOpenCVotherlibscvcamsrcwindows;C:Program FilesOpenCVotherlibs_graphicssrc;C:Program FilesOpenCVmlsrc;
25、C:Program FilesOpenCVcxcoresrc;C:Program FilesOpenCVcvauxsrcvs;C:Program FilesOpenCVcvsrc;C:Program FilesOpenCVcvauxsrc;如下图所示:图2-9 添加源文件路径5、项目-添加引用-浏览。找到EmguCV下的四个Dll文件:Emgu.CV.dll,Emgu.Util.dll,ZedGraph.dll,.dll。全部添加到当前工程的引用。然后在窗体的源程序中添加:using Emgu.CV;using Emgu.Util;2.4 本章小结OpenCV是一个开源的强大的图像视觉处理库,
26、在图像处理方面有着显著的优势。本章主要介绍了OpenCV技术及其应用领域、OpenCV的安装与配置。为软件开发作准备。3 系统方案3.1系统总体方案根据疲劳驾驶预警系统的功能与技术要求情况,系统采用OpenCV图像处理视觉库,设计基于OpenCV的疲劳驾驶预警系统。各部分简要介绍如下:操作系统选用基于普通PC机Windows XP,硬件设备选用高清USB摄像头。简单的硬件设备,相对而言,系统的稳定性与精准性相对差一些。但是,便于开发本系统。应用程序框架:采用.NET Framework 2.0 并结合OpenCV技术,具有丰富强大的图像处理动态链接库,使用的编程开发语言是C#。系统的开发环境如
27、下:硬件环境:一台普通PC机、一个摄像头;软件环境:Windows XP、.NET Framework 2.0、Visual Studio 2005、OpenCV、Emgu.CV库。本系统具有实时性,实用性,非触摸性,简单操作性等特点,并不局限于车载中,也适用于其他需要通过眼睛状态判断人的状态的的设备中。系统总体方案框图如下:获取图像判断疲劳状态摄像头Windows XP操作系统USB.NET FrameworkOpenCVEmgu.CV眼睛定位二值化处理计算眼睛高度图3-1系统框图3.2系统主要功能获取图像:通过摄像头实时地获取驾驶员的图像并在程序显示,得到驾驶员状态图像。眼睛定位:为了提取
28、出眼睛区域的图像,使用眼睛识别定位算法。二值化:将提取出来的眼睛区域图像进行二值化处理,方便后续的操作。计算眼睛高度:通过扫描二值化图像的黑像素点,得到眼睛最高点与最低点两个点的坐标,从而计算出眼睛的高度值。判断疲劳状态:通过对连续五帧的眼睛高度值的比较,从而得知是否处于疲劳状态。语音提示:当驾驶员处于疲劳状态时,系统会发出语音提示,提醒驾驶员注意休息3.3系统实现原理1、通过摄像头调用OpenCV视觉库的函数连续获取图片;2、使用通过OpenCV自带的haar特征训练器生成的XML文件,定位眼睛并将其截取下来;3、将截取下来的眼睛图像进行二值化处理;4、通过扫描二值化图像的黑像素点,得到眼睛
29、最高点与最低点的坐标,通过坐标差值计算出眼睛上下的高度值;5、当检测到眼睛的高度值小于或等于设定的眼睛高度阈值,则记录下来,若连续五帧眼睛的高度值都小于或等于阈值,则系统判认为驾驶员是处于疲劳状态;6、最后系统就会发出警报声,提醒驾驶员应当注意休息。获取图像眼睛定位 计算眼睛高度二值化图3-2系统原理图3.4本章小结本章主要介绍系统的总体方案、基于该方案进行了主要功能的设计以及分析本系统的实现原理。 4 算法分析4.1 AdaBoost算法描述AdaBoost算法的基本思想就是利用大量的分类能力一般的弱分类器(weak classifier)通过一定的方法叠加起来构成一个具有很强分类能力的强分
30、类器( strong classifier)。最初的方法是限定每一层强分类器的个数,改进的方位为检测率和误检率的要求。一个弱分类器hj (x)包括以下三部分:矩形特征j , 一个分类阈值j 以及一个分类符号Pj。并且满足以下关系: (4-1)矩形特征是AdaBoost算法中规定的几种标准的矩形模式,一般为二到三个矩形组成;分类阈值如式(1)所示是一个对所有矩形进行分类的特定值;分类符号则是和分类阈值配合对所有矩形分类的一个方向符号。强分类器的生成方式是以弱分类器的投票决定的,不停地向强分类器中加入弱分类器,这些弱分类器是经过选择的最优分类器,直到特定的需求得到满足为止,这个特定需求在原始的Ad
31、aBoost算法中是大于1/2,也就是说比猜测强就可以了,而在改进的AdaBoost算法中则是必须达到训练时指定的检测率和误检率为止。一个强分类器就可以对待检测区域进行判决,通过的则进入下一级强分类器或者给出检测结果,否则就直接可以被排除。具体操作过程如图所示:图4-1强分类器判决过程4.2 眼睛定位算法为了得到眼睛图像的信息,必须进行眼睛定位。现有的眼睛定位方法有很多,基于肤色模型的方法、灰度投影法、基于模板的方法、基于神经网络的方法、基于特征提取等。本系统利用AdaBoost算法构造一个基于类Haar特征的层叠式分类器来进行人眼的定位。类Haar特征通常由24个矩形组成,如图所示:ADCB
32、图4-2类Haar特征矩形矩形特征A、B表示两个形状大小相同的矩形区域内所有像素和的差值;矩形特征C表示外面的两个矩形的像素和减去中间矩形的像素和;矩形特征D表示对角矩形内像素和之差。为了方便计算,在这里引进积分图像概念: (4-2)这样,这些矩形特征就能用积分图像中的几个点表示。然而,一幅图像的矩形特征远远比它的像素的个数要多,必须有一个高效的分类器才能有效地筛选出有用的特征。Freund等人在Boosting算法的基础上提出了AdaBoost算法,其主要思想是给定一弱学习算法和一训练集,通过训练后将弱学习算法提升为强学习算法。这样只要找到一个比随机猜测好一点的弱学习算法提升为强学习算法,就
33、不必直接去找通常情况下很难获得的强学习算法。利用AdaBoos算法,从所有的矩形特征中选择一个,训练出一组比随机猜测略好一点的分类器,加权组合成一个层叠式分类器。层叠式分类器是一个退化的决策树结构,如图所示:图4-3层叠式分类器结构假设每个分类器可识别50%的非目标模式,且目标模式的错分概率为012%,则h=01998,f=015。如果N=12那么最终识别正确率约为9716%,误检测率约为01024%。在算法的训练过程中,最好的分类器不断地被加进来,直到达到所需的误检测率为止。4.3 基于Haar特征分类器训练生成XML步骤在训练分类器时,需要很大数量的目标图像集合和非目标图像集合来构造正、负
34、样本库。一般步骤如下:1、 采集正、负样本;2、 训练分类器;3、 将每一层训练好的强分类器串联起来组成层叠分类器, 用于目标检测。4.3.1 采集样本1、将正负样本分别放在两个不同的文件夹,分别取名pos和neg,其中pos用来存放正样本图像,neg用来存放负样本图4-4正负样本文件夹2、建立正负样本的说明文件假定根目录在D:boost下面 。在cmd下面进入pos目录,输入dir /b > pos.txt图4-5建立正样本说明文件3、 打开pos.txt将BMP全部替换成BMP 1 0 0 24 24,最后删除文本中最后一行的“pos.txt”4、 同理,负样本执行同样的操作。4.3
35、.2创立样本VEC文件1、将opencv_createsamples.exe和opencv_haartraining.exe拷到根目录下2、在CMD下输入如下命令:opencv_createsamples.exe -vec pos.vec -info pospos.txt -bg negneg.txt -w 40 -h 40 -num 142以上参数的含义如下:vec <vec_file_name>训练好的正样本的输出文件名。img<image_file_name>源目标图片(例如:一个公司图标)bg<background_file_name>背景描述文件。
36、num<number_of_samples>要产生的正样本的数量,和正样本图片数目相同。bgcolor<background_color>背景色(假定当前图片为灰度图)。背景色制定了透明色。对于压缩图片,颜色方差量由bgthresh参数来指定。则在bgcolorbgthresh 和bgcolorbgthresh 中间的像素被认为是透明的。bgthresh<background_color_threshold>inv如果指定,颜色会反色randinv如果指定,颜色会任意反色maxidev<max_intensity_deviation>背景色最大的
37、偏离度。maxangel<max_x_rotation_angle>maxangle<max_y_rotation_angle>,maxzangle<max_x_rotation_angle>最大旋转角度,以弧度为单位。show如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程继续。这是个有用的debug 选项。w<sample_width>输出样本的宽度(以像素为单位)hsample_height输出样本的高度,以像素为单位。图4-6执行opencv_createsamples.exe
38、按下回车后我们的正样本图4-7生成样本VEC文件4.3.3训练生成XML1、在CMD下输入如下命令:opencv_haartraining.exe -data xml -vec pos.vec -bg negneg.txt -w 40 -h 40 -mem 800参数说明如下:Haartraining 的命令行参数如下:data<dir_name>存放训练好的分类器的路径名。vec<vec_file_name>正样本文件名(由trainingssamples 程序或者由其他的方法创建的)bg<background_file_name>背景描述文件。npos&
39、lt;number_of_positive_samples>,nneg<number_of_negative_samples>用来训练每一个分类器阶段的正/负样本。合理的值是:-nPos = 7000;nNeg = 3000nstages<number_of_stages>训练的阶段数。nsplits<number_of_splits>决定用于阶段分类器的弱分类器。如果1,则一个简单的stump classifier 被使用。如果是2 或者更多,则带有number_of_splits 个内部节点的CART 分类器被使用。mem<memory_in
40、_MB>预先计算的以MB 为单位的可用内存。内存越大则训练的速度越快。sym(default)nonsym指定训练的目标对象是否垂直对称。垂直对称提高目标的训练速度。例如,正面部是垂直对称的。minhitratemin_hit_rate每个阶段分类器需要的最小的命中率。总的命中率为min_hit_rate 的number_of_stages 次方。maxfalsealarm<max_false_alarm_rate>没有阶段分类器的最大错误报警率。总的错误警告率为max_false_alarm_rate 的number_of_stages 次方。weighttrimming&
41、lt;weight_trimming>指定是否使用权修正和使用多大的权修正。一个基本的选择是0.9eqwmode<basic(default)|core|all>选择用来训练的haar 特征集的种类。basic 仅仅使用垂直特征。all 使用垂直和45 度角旋转特征。wsample_widthhsample_height训练样本的尺寸,(以像素为单位)。必须和训练样本创建的尺寸相同图4-8执行opencv_haartraining.exe2、然后按回车开始训练,生成人眼特征的XML4.4 本章小结本章介绍眼睛定位算法的实现原理以及眼睛特征分类器的详细训练步骤,为软件调用眼睛特
42、征的XML文件提供准备。XML文件的训练是本系统的重要环节,缺少此环节,系统将无法定位眼睛。5 详细设计关闭继续监控YNYNYNNY开始摄像头获取图像是否人脸图像?是否定位到眼睛?截取眼睛图像眼睛图像二值化是否小于/等于阈值?计算眼睛高度是否连续五帧?发出提示音结束5.1程序流程图图5-1程序流程图5.2 软件设计整个系统的设计目标主要是判断驾驶员眼睛的闭合状态,采用模块化逐步推进来完善系统的功能,主要包括以下几大模块:5、 获取图像;6、 眼睛定位;7、 计算眼睛的高度;8、 报警模块;9、 GUI设计。5.2.1 获取图像1、调用OpenCV的函数,通过cap=new Capture()摄
43、像头获取图片此时获得的图片是水平翻转的,将图片取反:cap.FlipVertical=!cap.FlipVertical;2、图片灰度化:grayImg = imgSave.Convert<Gray, Byte>();获取视频图像图像取反图像灰度化图5-2获取图像5.2.2 眼睛定位1、眼睛定位并将图片二值化:HaarCascade eyes = new HaarCascade("XML文件路径");Rectangle<double>eyesDetected=grayImg.DetectHaarCascade(eyes);foreach (Recta
44、ngle<double> eye in eyesDetected0)grayImg.Draw();/表示代码省略 grayImg.ROI = eye; /表示代码省略 CvInvoke.cvThreshold();/表示代码省略将眼睛区域二值化NY读取XML文件是否定位到眼睛?定义眼睛模型区域截取眼睛区域图5-3眼睛定位5.2.3 计算眼睛的高度1、将二值化的图像暂存在临时文件夹中:CvInvoke.cvSaveImage(); /表示代码省略2、调用暂存图片,for循环遍历图片像素点比较黑色像素点坐标并得到上下最大落差值: for () /表示代码省略 for () /表示代码省
45、略 Color c = bmp.GetPixel(x, y); if (c.G.ToString() = "0") /表示代码省略 if (max < y) max = y; if (y < min) min = y;图片暂存遍历图片黑像素点比较黑像素点坐标获得眼睛高度max-min图5-4计算眼睛的高度5.2.4报警模块1、累积疲劳状态次数,达到次数则报警,否则返回:if () frmAlarm a = new frmAlarm(); a.Show(); 2、报警声,frmAlarm内函数:SoundPlayer sp = new SoundPlayer();
46、Y累积判断是否连续五帧?报警返回N图5-5报警模块5.2.5 GUI设计在人和计算机的互动过程中,有一层面,既我们所说的界面(interface).GUI(Graphical User Interface)即图形用户界面,作为一种可视化的用户界面,使用图形界面代替正文界面,简单来说就是将所有出现在屏幕上信息都使用窗口、菜单、按钮等来表示,它的作用是实现用户和计算机之间的良好的通信。这是一门结合计算机科学、美学、心理学行为学及商业领域需求分析的人机系统工程,强调人-机-环境作为一个系统进行总体设计。系统整体界面使用全屏显示效果,采用无边框显示,直接使用图片作为一个按钮。系统使用一个图片控件显示实
47、时摄像头捕获的图像,在界面显示获取的二值化眼睛图像,以便测试观察。为了提高系统判断精度,另加了一个设置二值化的滑动条。具体界面截图在下面系统测试部分显示。5.3 本章小结本章详述了整个系统的设计流程和各部分功能的详细设计,包括获取图像、眼睛定位、计算眼睛高度值、判断疲劳状态、报警模块以及GUI界面设计。通过本章的介绍,更清楚的理解系统的整体架构和具体实现。6 系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统及应用程序与用户需求不符或矛盾的地方,从而提出更加完善的方案.。系统测试
48、是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方,尽可能彻底地检查出程序中的错误,提高软件系统的可靠性。整一个系统的测试是一个系统的流程,系统测试需要有较完整的测试方案,测试设备和测试的步骤,测试每个模块的程序是否有错误;测试模块之间的接口是否正确;测试整个软件系统是否满足用户功能和性能的要求。对测试的结果可以进行对比分析,是否符合预期结果;确认实现各个功能及系统是否具有可靠的稳定性。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又被称为单元测试。在这个
49、测试步骤中所发现的往往是编码和详细设计的错误。6.1人脸定位及眼睛定位测试中期阶段测试界面:1、图中显示的红线框是定位到脸部和眼睛区域后系统将获取该区域图6-1人脸定位及眼睛定位 (眼睛正常睁开)2、同理,当眼睛闭合时,系统同样会定位到眼睛区域,这是根据自己训练的XML文件采用的正负样本有关,如果采用的正样本中没有闭眼状态的图片,则系统调用XML文件时,系统无法匹配成功。图6-2人脸定位及眼睛定位 (眼睛闭合状态)6.2系统测试结果A、系统启动界面:系统运行后,先启动一个启动界面,之后渐渐消失,进入系统主界面。启动界面使用了一个简单的flash效果:文字左、右进入。同时加入了语音提示,更加人性
50、化。图6-3系统启动界面B、系统主界面:系统进入主界面后,先进行二值化的设置,将二值化的眼睛图像设置成最佳效果,可以通过界面最下端的显示区域观察。图6-4系统主界面(眼睛睁开状态)C、报警界面:当驾驶员闭眼时,系统最下端则会获取到闭眼状态的图像,当连续五帧图像都是闭眼眼,系统则会发出提示音并弹出报警窗口,如图显示:图6-5眼睛闭合状态与报警6.3本章小结本章主要讲述了系统的测试目标、中期测试结果以及系统运行结果。还对系统的主界面和各个模块的测试运行结果进行截图。通过系统测试,发现系统存在一些不足之处,如眼睛二值化的程度与光照的强度有一定的影响,眼睛闭合状态的判断算法仍需改进。此外,为了实现产品化设想,硬件设备方面也需要提升,改用相对光照强
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030养殖行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国餐饮服务餐厅行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国皮箱盖行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国人力资源业务分析行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国鸡翅行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国食品礼品市场供需平衡分析与营销战略规划研究报告
- 2025-2030中国面类市场竞争战略规划与投资价值评估研究报告
- 2025届山东省潍坊市高密市高考冲刺押题(最后一卷)英语试卷含答案
- 2025届辽宁省沈阳九中高考英语二模试卷含答案
- 2025届江苏省南京市玄武区溧水高中高三适应性调研考试英语试题含解析
- 内蒙古鄂尔多斯市2020年中考英语试题(解析版)
- Vue.js前端开发实战(第2版) 课件 第2章 Vue.js开发基础
- 异面直线 高一下学期数学湘教版(2019)必修第二册
- 笔墨时空-解读中国书法文化基因智慧树知到期末考试答案2024年
- 计算机网络故障的诊断与解决方法
- GLB-2防孤岛保护装置试验报告
- 的沟通技巧评估表
- 职场人健康状况调查报告
- 卵巢囊肿诊治中国专家共识解读
- 两癌筛查的知识讲座
- 仪器共享平台方案
评论
0/150
提交评论