计算机毕业设计论文基于OpenCV的疲劳驾驶预警系统.doc
- 文档编号:1978005
- 上传时间:2023-05-02
- 格式:DOC
- 页数:41
- 大小:2.29MB
计算机毕业设计论文基于OpenCV的疲劳驾驶预警系统.doc
《计算机毕业设计论文基于OpenCV的疲劳驾驶预警系统.doc》由会员分享,可在线阅读,更多相关《计算机毕业设计论文基于OpenCV的疲劳驾驶预警系统.doc(41页珍藏版)》请在冰点文库上搜索。
毕业设计(论文)
基于OpenCV的疲劳驾驶预警系统
学院:
计算机学院
专业:
姓名:
指导老师:
计算机科学与技术
学号:
职称:
二○一一年五月
Xx学院毕业设计
诚信承诺书
本人郑重承诺:
我所呈交的毕业设计《基于OpenCV的疲劳驾驶预警系统》是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。
承诺人签名:
日期:
年月日
Xx学院2011届本科生毕业设计
基于OpenCV的疲劳驾驶预警系统
摘要
目前,随着我国人民生活水平的不断提高,汽车已经走进了千家万户,成为人们日常出行的一种重要的交通工具,交通事故也随之增多。
造成交通事故频频发生的重要原因是由于司机的疲劳驾驶。
因此,针对疲劳驾驶方面的研究具有极大的科研价值与设计意义。
系统设计思路是采用OpenCV开源的视频图像处理库,使用摄像头采集视频图像,对输入图像做预处理(图像灰度化、中值滤波等);通过学习训练的方法构造基于类Haar特征的层叠式分类器,利用基于类Haar特征的层叠式分类器从输入图像中直接定位人眼;把人眼部分的图像截取出来,二值化人眼图像;然后计算二值化图像中垂直方向上瞳孔的宽度大小,从而判断眼睛的状态;最后通过多次的捕捉,计算眼睛闭合的频率来得出其疲劳状态。
关键词:
疲劳驾驶OpenCV类Haar层叠式分类器图像处理眼睛定位
Ⅰ
Xx学院2011届本科生毕业设计
DriverFatigueEarlyWarningSystemBasedOnOpenCV
ABSTRACT
Now,withourcontinuousimprovementoflivingstandardsofpeople,carshaveenteredthehousehold,becomeanimportantdailytraveltransport,trafficaccidentsalsoincrease. Importantcausefrequenttrafficaccidentsduetodriverfatiguedriving.Therefore,forfatiguedrivinghasbeenasignificantscientificvalueanddesignsignificance.
DesignofsystemistheuseofopensourcevideoOpenCVimageprocessinglibrary,theuseofvideocamerascaptureimagesoftheinputimagepreprocessing(imagegraying,medianfilter,etc.);constructedbylearningthetrainingclassbasedonHaarfeatures cascadeclassifier,usingfeaturesofclass-basedHaarclassifiercascadeofimagesdirectlyfromtheinputlocatetheeye;tothehumaneyeoutofpartoftheimagecapture,binaryeyeimages;andthencalculatethebinaryimageintheverticaldirectionThewidthofthesizeofthepupil,inordertodeterminethestateofeyes;Finally,manyofthecapture,calculationofthefrequencyofclosetodrawtheeyefatiguestate.
Keywords:
FatiguedrivingOpenCVHaarclassifiercascadeclassImageProcessingEyelocation
Ⅱ
目录
摘要 I
ABSTRACT II
1 前言 1
1.1选题背景 1
1.2驾驶人疲劳状态监测方法分析 1
1.2.1基于驾驶人生理信号的检测方法 1
1.2.2基于驾驶人生理反应特征的检测方法 2
1.2.3基于驾驶人操作行为的检测方法 2
1.2.4基于车辆状态信息的检测方法 2
1.3选题目标 3
1.4需求分析 3
1.4.1用户需求分析 3
1.4.2功能需求分析 3
1.5本章小结 4
2 OpenCV介绍 5
2.1OpenCV背景介绍 5
2.2OpenCV应用领域及特点 5
2.3OpenCV在VisualStudio2005下安装与配置 5
2.3.1OpenCV的安装 5
2.3.2VisualStudio2005的安装 8
2.4本章小结 11
3 系统方案 12
3.1系统总体方案 12
3.2系统主要功能 13
3.3系统实现原理 14
3.4本章小结 14
4 算法分析 15
4.1AdaBoost算法描述 15
4.2眼睛定位算法 16
4.3基于Haar特征分类器训练生成XML步骤 17
4.3.1采集样本 17
4.3.2创立样本VEC文件 18
4.3.3训练生成XML 19
4.4本章小结 20
5 详细设计 21
5.1程序流程图 21
5.2软件设计 22
5.2.1获取图像 22
5.2.2眼睛定位 22
5.2.3计算眼睛的高度 23
5.2.4报警模块 24
5.2.5GUI设计 24
5.3本章小结 25
6 系统测试 26
6.1人脸定位及眼睛定位测试 26
6.2系统测试结果 27
6.3本章小结 29
7 论文总结 30
参考文献 31
附录 32
谢辞 34
V
1前言
1.1选题背景
随着交通运输业的发展,交通事故已成为当前各国所面临的严重问题。
据不完全统计,全世界每年死于交通事故的人数约为60万,因车祸受伤的人更多,每年平均约有l000万人。
在美国的重型汽车事故中,57%的灾难性事故是与驾驶员疲劳有关,它已成为事故发生的主要原因。
英国交通研究实验室(TransportResearchLab oratory)认为:
驾驶疲劳导致的道路交通事故占全部交通事故的10%。
法国国家事故报告表明,因疲劳驾驶而发生车祸的占人身伤亡事故14.9%,占死亡事故的20.6%。
澳大利亚每年由于交通事故的花费约为75亿美元。
其中,将近15亿是直接由于驾驶员疲劳而导致的。
我国交通事故呈现逐年上升的趋势,1999年我国发生道路交通事故412860起,致伤286080人,死亡83529人,造成直接经济损失21.24亿元。
因此,各国研究人员都在努力开发出一个能实时监视驾驶员警觉水平,并在任何不安全状态下能对驾驶员进行预警的系统。
本系统的设计思想是以OpenCV视频图像处理技术为核心,通过摄像头实时地获取驾驶员的脸部图像,利用脸部识别技术定位眼睛,再根据眼睛的闭合的状态判断驾驶员是否处于疲劳状态。
1.2驾驶人疲劳状态监测方法分析
关于驾驶人疲劳及注意分散等安全状态的监测预警技术,由于它在交通事故预防方面的发展前景而受到各国高度的重视,研究人员根据驾驶人疲劳时在生理和操作上的特征进行了多方面的研究,一些研究成果已形成产品并开始进入市场。
驾驶人疲劳状态的检测方法可大致分为基于驾驶人生理信号、基于驾驶人生理反应特征、基于驾驶人操作行为和基于车辆状态信息的检测方法。
1.2.1基于驾驶人生理信号的检测方法
针对疲劳的研究最早始于生理学。
相关研究表明,驾驶人在疲劳状态下的生理指标会偏离正常状态的指标。
因此可以通过驾驶员的生理指标来判断驾驶人是否进入疲劳状态。
目前较为成熟的检测方法包括对驾驶人的脑电信号EEG、心电信号ECG等的测量。
ECG主要被用于驾驶负担的生理测量中。
研究表明在驾驶人疲劳时ECG会明显的有规律的下降,并且HRV(心率变化)和驾驶中的疲劳程度的变化有潜在的关系。
基于驾驶人生理信号的检测方法对疲劳判断的准确性较高,但生理信号需要采用接触式测量,且对个人依赖程度较大,在实际用于驾驶人疲劳监测时有很多的局限性,因此主要应用在实验阶段,作为实验的对照参数。
1.2.2基于驾驶人生理反应特征的检测方法
基于驾驶人的生理反应特征的检测方法是指利用驾驶人的眼动特性、头部运动特性等推断驾驶人的疲劳状态。
驾驶人眼球的运动和眨眼信息被认为是反映疲劳的重要特征,眨眼幅度、眨眼频率和平均闭合时间都可直接用于检测疲劳。
目前基于眼动机理研究驾驶疲劳的算法有很多种,广泛采用的算法包括PERCLOS,即将眼睛闭合时间占一段时间的百分比作为生理疲劳的测量指标。
利用面部识别技术定位眼睛、鼻尖和嘴角位置,将眼睛、鼻尖和嘴角位置结合起来,再根据对眼球的追踪可以获得驾驶人注意力方向,并判断驾驶人的注意力是否分散。
基于驾驶人生理反应特征的检测方法一般采用非接触式测量,对疲劳状态的识别精度和实用性上都较好。
1.2.3基于驾驶人操作行为的检测方法
基于驾驶人操作行为的驾驶人疲劳状态识别技术,是指通过驾驶人的操作行为如方向盘操作等操作推断驾驶人疲劳状态。
YoshihiroTakei利用FFT对监测到的驾驶人的方向盘操作数据进行处理,研究结果在一定程度上揭示了驾驶人的方向盘操作与疲劳之间的关系。
研究指出方向盘的操作是一种有效的驾驶疲劳的判断手段。
Yabuta开发的驾驶人防疲劳装置中也使用了方向盘操作信息。
总体来说,目前利用驾驶人操作行为进行疲劳识别的深入研究成果较少。
驾驶人的操作除了与疲劳状态有关外,还受到个人习惯、行驶速度、道路环境、操作技能的影响,车辆的行驶状态也与车辆特性、道路等很多环境因素有关,因此如何提高驾驶人状态的推测精度是此类间接测量技术的关键问题。
1.2.4基于车辆状态信息的检测方法
利用车辆行驶轨迹变化和车道线偏离等车辆行驶信息也可推测驾驶人的疲劳状态。
这种方法和基于驾驶人操作行为的疲劳状态识别技术一样,都以车辆现有的装置为基础,不需添加过多的硬件设备,而且不会对驾驶人的正常驾驶造成干扰,因此具有很高的实用价值。
日本三菱汽车公司开发了利用车辆横向位移量、驾驶人操作量等复合参数来识别驾驶人疲劳状态的方法,实验证明该方法的识别结果与利用驾驶人眨眼次数的识别结果基本一致。
日本庆应大学(2005)中岛研究室利用EEG评价驾驶人的睡意,研究发现车辆的横向位移量、方向盘操作量可以用来作为驾驶人疲劳状态的评价指标,而且可以实现疲劳早期预警。
1.3选题目标
基于上述背景,开发一个疲劳驾驶预警系统,采用OpenCV视频图像处理技术,WindowsXP作为操作系统,以C#作为编程开发语言,根据系统的需求,分析系统各个模块,如驾驶员脸部图像获取,眼睛定位,图像二值化处理,眼睛高度计算算法,以及疲劳状态的判断算法,实现并完善系统的功能。
1.4需求分析
1.4.1用户需求分析
目前,已经有一些公司专门开发和生产疲劳驾驶装置,如南京远驱科技有限公司开发的疲劳驾驶预警系统gogo850平安行,采用国际上最先进的非接触式方式,利用汽车级图像传感器采集人脸红外图像,性能超过奔腾二代的高速数字信号处理器进行数字图像处理与分析,先进的疲劳算法确保驾驶员在疲劳驾驶的时候及时发出报警信号,保障您的生命与财产安全。
其功能特点:
全天候工作特点、优秀的眼镜识别水平、领先的人脸识别技术、丝网膜瞳孔检测技术、智能高速识别功能、体积小巧,安装方便、自动灵敏度控制、人性化的指示灯、智能化的报警灵敏度调节。
由此,本系统也尽量适应用户需求,完善系统功能,使得更为人性化。
设计开发多种功能模块:
二值化滑动条调节:
适应不同的光线强度及提高判断精度;采用红外线摄像头可以识别戴各种眼镜驾驶的司机;系统可以动态显示二值化眼睛状态:
便于测试和观察结果;更为人性化的语音提示:
当判断处于疲劳状态时,系统会发出警报声。
1.4.2功能需求分析
根据用户的需求和项目的定位,从提升产品价值的角度出发,划分项目的各个功能模块,具体如下:
1、实时的获得驾驶员的脸部图像,实时显示从摄像头获取的图像;
该功能使系统更为直观的显示摄像头工作状态,实时获取驾驶员的状态图像。
2、动态的显示二值化后的眼睛状态图像;
该功能是为了统计与判断驾驶员的眼睛闭合状态连续的帧数,对疲劳状态进行判断提供依据。
3、具有可调节二值化强度的滑动条;
该功能是为了适应不同的光照强度,可以提供用户自行设置二值化的强度,这样,对疲劳状态的判断更为精确有效。
4、具有语音提示功能及报警提示窗口;
该功能通过语音提示可以提醒用户注意休息,更为人性化的设计,有利于产品化设想。
5、系统界面的美化;
系统界面美化是使用Photoshop进行图片的美化处理设计,按钮也是使用图片作为按钮,使得系统更为美观,有利于产品化设想。
1.5本章小结
本章主要介绍了项目的选题背景、四种驾驶人疲劳状态的检测方法的分析与比较和需求分析。
本系统采用的疲劳状态检测方法是基于人眼的生理反应特征的方法实现,选择该方法的原因是相对其他方法而言,人眼的生理反应特征是最直接,最直观的反应驾驶员是否处于疲劳状态的一种表现。
根据本人技术水平情况,按需求划分软件功能模块,系统采用基于人眼的设计思路进行详细设计。
2OpenCV介绍
2.1OpenCV背景介绍
OpenCV(OpenSourceComputerVisionLibrary)于1999年由Intel建立,现在由WillowGarage提供支持。
OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。
它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
2.2OpenCV应用领域及特点
OpenCV有其显著的不可比拟的优点,主要体现在如下几个方面:
(1)OpenCV是一个包含了超过300个C函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库。
(2)高性能:
OpenCV中所有的算法都是基于封装于IPL的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel公司针对其所生产的处理器优化。
(3)跨平台:
OpenCV除了可以在Windows下运行,也可以在Linux、MacOS等系统上使用。
(4)开源性:
不管对于商业的还是非商业的用途,OpenCV都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用。
OpenCV主要运用于人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪以及机器人等图像处理方面。
2.3OpenCV在VisualStudio2005下安装与配置
2.3.1OpenCV的安装
安装OpenCV1.0,安装路径为默认路径C:
\ProgramFiles\OpenCV。
安装步骤如下图所示:
图2-1OpenCV安装步骤一
图2-2OpenCV安装步骤二
图2-3OpenCV安装步骤三
图2-4OpenCV安装步骤四
安装完成后设置环境变量,操作如下:
右键“我的电脑”->“属性”->点“高级”标签->“环境变量”选项->在"PATH"中添加路径C:
\ProgramFiles\OpenCV\bin,如下图所示:
图2-5添加系统环境变量
2.3.2VisualStudio2005的安装
配置环境路径操作如下:
1、打开VisualStudio2005,依次选择:
工具-》选项-》项目和解决方案-》VC++目录。
在“显示以下内容的目录”中选择“可执行文件”,在下面添加如下的路径:
C:
\ProgramFiles\OpenCV\bin。
如下图所示:
图2-6添加可执行文件路径
2、在“显示一下内容的目录”中选择“包含文件”,在下面添加如下的路径:
C:
\ProgramFiles\OpenCV\otherlibs\highgui;
C:
\ProgramFiles\OpenCV\otherlibs\cvcam\include;
C:
\ProgramFiles\OpenCV\otherlibs\_graphics\include;
C:
\ProgramFiles\OpenCV\ml\include;
C:
\ProgramFiles\OpenCV\cxcore\include;
C:
\ProgramFiles\OpenCV\cvaux\include;
C:
\ProgramFiles\OpenCV\cv\include。
如下图所示:
图2-7添加包含文件路径
3、在“显示以下内容的目录”下选择“库文件”,在下面添加如下的路径:
C:
\ProgramFiles\OpenCV\lib;
C:
\ProgramFiles\OpenCV\otherlibs\_graphics\lib。
如下图所示:
图2-8添加库文件路径
4、在“显示以下内容的目录”下选择“源文件”,在下面添加如下目录:
C:
\ProgramFiles\OpenCV\otherlibs\cvcam\src\windows;
C:
\ProgramFiles\OpenCV\otherlibs\_graphics\src;
C:
\ProgramFiles\OpenCV\ml\src;
C:
\ProgramFiles\OpenCV\cxcore\src;
C:
\ProgramFiles\OpenCV\cvaux\src\vs;
C:
\ProgramFiles\OpenCV\cv\src;
C:
\ProgramFiles\OpenCV\cvaux\src;
如下图所示:
图2-9添加源文件路径
5、项目-》添加引用-》浏览。
找到EmguCV下的四个Dll文件:
Emgu.CV.dll,Emgu.Util.dll,ZedGraph.dll,.dll。
全部添加到当前工程的引用。
然后在窗体的源程序中添加:
usingEmgu.CV;
usingEmgu.Util;
2.4本章小结
OpenCV是一个开源的强大的图像视觉处理库,在图像处理方面有着显著的优势。
本章主要介绍了OpenCV技术及其应用领域、OpenCV的安装与配置。
为软件开发作准备。
3系统方案
3.1系统总体方案
根据疲劳驾驶预警系统的功能与技术要求情况,系统采用OpenCV图像处理视觉库,设计基于OpenCV的疲劳驾驶预警系统。
各部分简要介绍如下:
操作系统选用基于普通PC机WindowsXP,硬件设备选用高清USB摄像头。
简单的硬件设备,相对而言,系统的稳定性与精准性相对差一些。
但是,便于开发本系统。
应用程序框架:
采用.NETFramework2.0并结合OpenCV技术,具有丰富强大的图像处理动态链接库,使用的编程开发语言是C#。
系统的开发环境如下:
硬件环境:
一台普通PC机、一个摄像头;
软件环境:
WindowsXP、.NETFramework2.0、VisualStudio2005、OpenCV、Emgu.CV库。
本系统具有实时性,实用性,非触摸性,简单操作性等特点,并不局限于车载中,也适用于其他需要通过眼睛状态判断人的状态的的设备中。
系统总体方案框图如下:
获取图像
判断疲劳状态
摄像头
WindowsXP操作系统
USB
.NETFramework
OpenCV
Emgu.CV
眼睛定位
二值化处理
计算眼睛高度
图3-1系统框图
3.2系统主要功能
获取图像:
通过摄像头实时地获取驾驶员的图像并在程序显示,得到驾驶员状态图像。
眼睛定位:
为了提取出眼睛区域的图像,使用眼睛识别定位算法。
二值化:
将提取出来的眼睛区域图像进行二值化处理,方便后续的操作。
计算眼睛高度:
通过扫描二值化图像的黑像素点,得到眼睛最高点与最低点两个点的坐标,从而计算出眼睛的高度值。
判断疲劳状态:
通过对连续五帧的眼睛高度值的比较,从而得知是否处于疲劳状态。
语音提示:
当驾驶员处于疲劳状态时,系统会发出语音提示,提醒驾驶员注意休息
3.3系统实现原理
1、通过摄像头调用OpenCV视觉库的函数连续获取图片;
2、使用通过OpenCV自带的haar特征训练器生成的XML文件,定位眼睛并将其截取下来;
3、将截取下来的眼睛图像进行二值化处理;
4、通过扫描二值化图像的黑像素点,得到眼睛最高点与最低点的坐标,通过坐标差值计算出眼睛上下的高度值;
5、当检测到眼睛的高度值小于或等于设定的眼睛高度阈值,则记录下来,若连续五帧眼睛的高度值都小于或等于阈值,则系统判认为驾驶员是处于疲劳状态;
6、最后系统就会发出警报声,提醒驾驶员应当注意休息。
获取图像
眼睛定位
计算眼睛高度
二值化
图3-2系统原理图
3.4本章小结
本章主要介绍系统的总体方案、基于该方案进行了主要功能的设计以及分析本系统的实现原理。
4算法分析
4.1AdaBoost算法描述
AdaBoost算法的基本思想就是利用大量的分类能力一般的弱分类器(weakclassifier)通过一定的方法叠加起来构成一个具有很强分类能力的强分类器(strongclassifier)。
最初的方法是限定每一层强分类器的个数,改进的方位为检测率和误检率的要求。
一个弱分类器hj(x)包括以下三部分:
矩形特征ƒj,一个分类阈值θj以及一个分类符号Pj。
并且满足以下关系:
(4-1)
矩形特征是AdaBoost算法中规定的几种标准的矩形模式,一般为二到三个矩形组成;分类阈值如式
(1)所示是一个对所有矩形进行分类的特定值;分类符号则是和分类阈值配合对所有矩形分类的一个方向符号。
强分类器的生成方式是以弱分类器的投票决定的,不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 毕业设计 论文 基于 OpenCV 疲劳 驾驶 预警系统