基于机器视觉的疲劳驾驶检测

本文介绍了一种基于PERCLOS方法的疲劳驾驶检测技术,通过分析眼睛闭合的频率和持续时间来判断驾驶员是否处于疲劳状态。系统采用P80准则,当眼睛闭合比例超过80%,且平均闭眼时长超过设定阈值时,判定为疲劳驾驶。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、疲劳驾驶特征提取
眼睛闭合的频率和持续时间在某种程度上可以反映疲劳的状态。卡内基梅隆研究所经过反复试验和论证,提出了度量疲劳的物理PERCLOS。PERCLOS定义为一定时间内眼睛的闭合程度,它已经成为度量疲劳状态的一种科学有效的方法。当一定时间间隔内眼睛闭合所占的时间比例超过15%时即认为是疲劳状态。PERCLOS方法通过眼睛闭合所占的时间比例进行疲劳驾驶的判定。但是,眼睛的大小因人而异,眼睛的面积因受所在场景和头部运动的影响也是动态变化的,眼睛的睁开程度是相对于自身的最大睁开状态而言的。当然,时间可以转换为视频帧数,在判断眼睛的状态特征时我们使用的是类PERCLOS的方法。
目前,PERCLO方法有三种判断疲劳的不同准则,分别E准则、P70准则、P80准则。其具体含义如下:
EM准则:瞳孔被眼睑覆盖超50%的面积,则认为眼睛是闭合的;
P70准则:瞳孔被眼睑覆盖超70%的面积,则认为眼睛是闭合的;
P80准则:瞳孔被眼睑覆盖超过80%的面积,则认为眼睛是闭合的。
本文考虑到,当人注意力特别集中或处在沉思状态时可能也会有眼睑覆盖瞳孔超过50%甚至70%的可能,所以系统采用的是P80准则。
统计表明,人在一分钟之内要眨十次左右的眼睛,每次需要0.30.4秒左右,两次眨眼之间的间隔约为2.84.0秒。然而,由于管制员工作性质的不同,需要其在工作中注意力高度集中,所以眨眼次数略少,约5~10次。眼睛闭合的频率以及闭合时间的长短与疲劳有密切联系,如果连续监测到管制员的PERCLOS>30%且平均闭眼时长>0.25s,就判定管制员处于疲劳状态,并发出报警。图1为PERCLOS的原理曲线图:
图1 PERCLOS 的原理曲线
如图1所示,t0—t5为一个闭眼周期,t0-t1为完全睁眼到睁眼80%的时间t1-t2为睁眼80%到睁眼20%的时间,t3-t4为睁眼20%到睁眼80%所需时间,t4~t5为睁眼80%到完全睁眼所需时间。那么,这一周期内的
在这里插入图片描述
闭眼时长
在这里插入图片描述
类似的,我们可以推导在实验时长为1~2min内的PERCLOS值及平均闭眼时长,设在实验时长 T内有n个闭眼周期,且第k个闭眼周期内眼睑覆盖瞳孔的比例超过80%的,k时间为Tk ,(k<n )那么我们可以得出:
在这里插入图片描述
平均闭眼时长
在这里插入图片描述
当平均闭眼时长t超过了选定的阈值,则判定为疲劳驾驶.

二、疲劳驾驶检测算法对眼睛状态的检测流程如下:
(1)实时抓帧获得 YUV 格式监控图像;
(2)用人脸模型在图像中匹配人脸区域;
(3)通过模型中眼睛的相对位置,确定监控图像中眼睛的位置;
(4)对眼睛区域二值化处理,并利用显示器 Gamma 和直方图均衡化增强图像对比度;
(5)建立睁眼和闭眼状态时的眼部灰度一维直方图标准H(open)、H(close),H=[h{x1,f(x1)},……,h{xn,f(xn)}],其中,h为直方图中的矩阵,x1~xn为n个级别灰度,f(xi)为该灰度级别所出现的频率;
(6)算出当前图像的一维直方图分别与睁眼状态标准直方图的差值和S1;算出当前图像的一维直方图与闭眼状态标准直方图的差值和S2。其中S=∑[fnow(xi)-fstandard(xi)];
(7)比较S1和S2,S1<S2即为睁眼,S2<S1即为闭眼。
(8)计算1.1中所述的PERCLOS 值和平均闭眼时长t;
(9)通过获得的PERCLOS 值和平均闭眼时长判定疲劳程度。图2为疲劳驾驶识别流程:
图2 疲劳驾驶识别流程

为了构建一个能够实时检测疲劳和分心行为的驾驶监控系统,你可以参考这份资源:《毕业设计项目:YoloV5和Dlib实现的疲劳分心行为检测系统》。这个项目详细介绍了如何使用YoloV5和Dlib结合Perclos模型来开发一个实时的驾驶疲劳和分心行为检测系统。 参考资源链接:[毕业设计项目:YoloV5和Dlib实现的疲劳分心行为检测系统](https://wenku.csdn.net/doc/7qjtzevxsu) 首先,了解Perclos模型是关键,它通过计算眼睛在一段时间内闭合的程度来评估疲劳。在使用Dlib进行人脸关键点检测后,可以通过检测到的关键点来计算眼睛和嘴巴的开合程度,进一步使用Perclos模型评估疲劳程度。 在分心行为检测方面,YoloV5可以识别驾驶员是否进行玩手机、抽烟、喝水等分心行为。YoloV5以其出色的实时目标检测能力,能够快速准确地识别出这些行为,从而触发警报或记录事件。 为了实现这样的系统,你需要熟悉Python编程语言,以及熟练运用YoloV5、Dlib和OpenCV这三个库。OpenCV提供了必要的图像处理功能,用于辅助YoloV5和Dlib完成检测任务。 具体的实现步骤包括: 1. 安装和配置YoloV5、Dlib和OpenCV库。 2. 使用Dlib进行人脸检测,并提取关键点。 3. 应用Perclos模型来分析眼睛关键点,实时评估疲劳程度。 4. 利用YoloV5进行目标检测,识别分心行为。 5. 结合检测到的数据,开发出一个用户界面来展示实时检测结果。 6. 测试和优化系统性能,确保高准确率和低延迟。 项目完成后,你将获得一个可用于实际道路安全监控的驾驶疲劳和分心行为检测系统。欲深入学习这些技术细节,以及如何将它们融合到一个完整的系统中,请参考《毕业设计项目:YoloV5和Dlib实现的疲劳分心行为检测系统》,它将为你提供必要的理论知识和实践操作,帮助你解决当前问题,并鼓励你在项目完成后继续探索和学习。 参考资源链接:[毕业设计项目:YoloV5和Dlib实现的疲劳分心行为检测系统](https://wenku.csdn.net/doc/7qjtzevxsu)
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值