MATLAB的疲劳检测系统

article/2025/9/23 20:15:12

一、课题介绍
本设计针对现有逐帧眼睛定位方法计算量大,速度慢的缺点,提出一种用于疲劳驾驶实时监测的眼睛定位方法,该方法能够在保证眼睛定位准确性的同时,减少人脸定位的计算量,从而提高图像处理速度,实现对眼睛开闭状态的实时监测,保证驾驶疲劳监测系统的可靠性。
该方法基于 YCbCr 色彩空间相邻两帧的差值来检测等采样间隔中眼睛位置的移动,并参照前一帧图像定位出的眼睛准确区域,就可以确定当前帧眼睛的候选区域,再对候选区域进行提取,即可得到眼睛的准确区域。
二、算法步骤
本色痕迹所述的一种用于疲劳驾驶实时监测的眼睛定位方法,利用 Matlab2012 软件实现,包括以下步骤 :
步骤一,对人脸及眼睛初始定位,获得眼睛精确图像 :先利用摄像头拍摄清晰的人脸彩色图像,再分割人脸彩色图像,获得人脸宽度 Fw 和人脸高度 Fh,然后,利用现有眼睛定位方法对第一帧图像进行眼睛定位,得出第一帧眼睛所在的矩形区域和精确位置,即眼睛精确图像,并记录下眼睛位置的参数 {(x,y),w,h} ;
步骤二,基于 YCbCr 色彩空间肤色模型的相邻帧差法,求相邻帧差值的绝对值 :先将相邻两帧彩色图像均转换到 YCbCr 色彩空间,得到前后两帧 YCbCr 色彩空间的图像,用img1 表示前一帧 YCbCr 色彩空间的图像,用 img2 表示后一帧 YCbCr 色彩空间的图像 ;然后利用“肤色模型”对 img1 和 img2 进行二值化处理,得到两帧二值图像,用 BW1 表示前一帧二值图像,用 BW2 表示后一帧二值图像 ;最后将两帧二值图像 BW1 和BW2 相减并取绝对值,得到相邻帧差值的二值图像 BW。
步骤三,根据相邻帧差值的二值图像,判断前后两帧头部图像是否重叠 :相邻两帧头部图像若是重叠,则执行下一步 ;相邻两帧头部图像若没有重叠,返回步骤一 ;
相邻两帧头部图像重叠判断的方法是,假设前一帧二值图像 BW1 的像素值为 1 的区域面积为 A1,假设后一帧二值图像 BW2 的像素值为 1 的区域面积为 A2,假设相邻帧差值的二值图像BW 的像素值为1 的区域面积为A3,若0 ≤ A3 < A1+A2,则相邻两帧图像有重叠,否则不重叠 ;
步骤四,头部位移检测 :分别检测头部横向位移 dx 及纵向位移 dy ;
步骤五,眼睛候选区域预测 :
依据头部位移,利用“眼睛位移预测模型”对眼睛横向位移 Dx 及纵向位移 Dy 进行预测 ;令前一帧图像的眼睛实际所在的矩形区域表示为 {(x,y),w,h},(x,y) 为矩形区域左上角点的坐标,w 为矩形的宽度,h 为矩形的高度 ;根据位移量 Dx、Dy 和前一帧眼睛所在的矩 形区域,即可确定当前帧眼睛候选区域

v2-d2940acd255af49ec5c4dd6de7432267_b.png

步骤六,眼睛候选区域修正 :
1) 利用 Matlab2012 软件中的 rgb2gray(rgb2gray 是享誉全球的科学计算软件Matlab 图像处理工具箱中的函数,其功能是将彩色图像 RGB 转换成灰度图像I,其使用方法为 :I = rgb2gray(RGB)) 函数将眼睛候选区域图转换为灰度图像 ;

2) 利用“最大类间方差法”(NOBUYUKI OTSU.A threshold selection method from gray level histograms.IEEE TRANSACTIONS ON SYSTREMS,MAN,AND CYBERNETICS,VOL.

SMC-9,NO.1,JANUARY 1979,p62-66.) 找出图像进行灰度阈值分割所需要的阈值 T ;

3) 利用阈值 T 对图像进行阈值分割,得到一幅二值图像 ;

4) 利用 Matlab2012 软件中的 bwlabel【Matlab 图像处理工具箱的函数,其功能是标记二值图像中的连通区域,使用方法L = bwlabel(BW,n),该函数返回一个与BW 同样大小的矩阵 L,L 含有 BW 中连通对象的标记,n 一般选取 4 或者 8,意即四向连通或八向连通,默认为 8】函数对阈值分割后得到的二值图像进行连通区域标记 ;

“连通区域标记法”出自《数字图像处理》,作者 :( 美 ) 冈萨雷斯等著出版社 :电子工业出版社,出版时间 :2004-5-1 字数 :879000 版次 :1 版 1 次页数 :609 印刷时间 : 2004-5-1 I S B N :9787505398764。

二值图像的连通区域标记是从仅由“0”像素 ( 通常表示背景点 ) 和“1”像素 ( 通常表示模式图形点 ) 组成的一幅点阵图像中,将相互邻接 (4- 邻域或 8- 邻域 ) 的“1”值像素集合提取出来。

5) 找出连通标记结果中面积最大的两个区域,作为眼睛区域 ;

6) 截取眼睛候选区域原始图像中与 4) 中区域对应的图像,得到的图像即为眼睛的准确区域图像 ;

7) 参照图 2 记录下眼睛的位置参数 {(x,y),w,h},替代步骤一中的 {(x,y),w,h}。

步骤七,重复步骤二至步骤六,进行下一帧的眼睛定位。

进一步,所述的现有眼睛定位方法的包括肤色检测、人脸分割、灰度积

分投影和形态学处理四个步骤。进一步,所述肤色模型为 :

v2-957736780fa868b16f34eb87d4a503fd_b.png

其中 Cb 和 Cr 代表 YCbCr 色彩空间中的两个色度分量。利用上述肤色模型对 img1 和 img2 进行肤色检测,将符合肤色模型的点的像素值令为 1,不符合肤色模型的点的像素值令为 0,分别得到二值图像 BW1 和二值图像 BW2,最后将 BW1 和 BW2 相减并取绝对值,得到二值图像 BW,即 YCbCr 空间的相邻帧差图。

进一步,头部位移检测依据下列步骤进行 ;

(1) 首先通过从上至下扫描图像,找到第一次出现白色像素的横线,取该横线以下

Fh 的图像区域,记为 p1 ;

(2) 取 p1 中上 2/3 的区域,记为 p2 ;

(3) 根据 p2 中白色区域的左右边界,取出左右边界内的区域,记为 p3,即为头部的横向大致运动范围,且令 p3 的宽为 W,高为 H ;

(4) 以 p3 的水平中轴线 y = H/2 为界,上下分别取出占图像高度 30%的图像,记为 p4 ;计算 p4 每一行连续白色像素的最大宽度,记为 dxi,其中 i ∈ [1,0.6H] ;将 dxi 的平均值作为头部的横向位移态的判定的延时和漏判。

三、流程图

v2-9c45c9bf7828cc20c7a49a94863871e7_b.jpg

v2-891fc5ed11cf1f4ee29ffef68c0b2caf_b.png


http://chatgpt.dhexx.cn/article/dpfjRsvt.shtml

相关文章

毕业设计 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 这两年开始毕业设计和毕业…

利用opencv 做一个疲劳检测系统(2)

文章目录 杂谈实现步骤核心算法交互界面界面代码检测效果源代码 杂谈 最近发现视力下降严重, 可能跟我的过度用眼有关,于是想着能不能做一个检测用眼疲劳的,灵感来自特斯拉的疲劳检测系统。 效果如下: 实现步骤 实现核心算法制…

基于Matlab深度学习的驾驶员疲劳检测系统

随着城市化进程不断加快,中国汽车的需求 量和保有量也急剧上升。 截至 2020 年 9 月,中国 汽车保有量达到了 2.75 亿辆,随着车辆保有量的 增加,交通事故的发生率也在逐年上升。2017 年交通事故共计 20.3 万起,因车祸死亡人数 6.3 万 人,2018 年交通事故较 2017 年上升 20.6%,20…

基于MATLAB的疲劳检测系统

基于MATLAB的疲劳检测系统 一、课题介绍 随着汽车工业的不断发展,随之而来的社会问题也愈加严重。交通事故给人们造成巨大伤害的同时,也给社会带来沉重的负担和影响。由于疲劳驾驶是引起交通事故的一个主要原因。因此,研究一种合理有效、实时准确检测驾驶员疲劳驾驶的非接触式车…

基于图像分割的疲劳检测方法研究

问题: 随着社会的不断进步,汽车已经成为了当今世界拥有主宰地位的交通工具。然而汽车数量的上升同时也导致交通事故数量猛增,由司机疲劳驾驶引起的交通事故的发生频率更是不断攀升。疲劳的复杂性引起了各个学科的研究者广泛关注,传统的疲劳评估方法不仅需…

疲劳检测实验报告

疲劳检测实验报告 邢益玮 201930101151 2021/1/13 (重度拖延症了,内容又有点多,学长和老师不好意思了🙏🙏🙏) 文章目录 疲劳检测实验报告前言一、最初的尝试——dlib库1.1 信息收集1.2 为Anac…

基于MATLAB的疲劳检测

在疲劳检测算法中,个人感觉最好的算法是 Dlib 这个库可以实现人脸的关键点的检测,有了人眼睛的点位,便可以检测眨眼之类的频率来进行人眼识别; 但是在matlab中调用dlip需要比较复杂的操做,有兴趣的可以网上搜索做法&am…

MATLAB疲劳检测系统

目录 摘要 I Abstract II 1 绪论 1 1.1 研究背景及意义 1 1.2 国内外疲劳驾驶研究现状 2 1.3本文的主要研究内容及组织结构 3 2 人脸检测与定位技术 4 2.1人脸检测与定位技术概述 4 2.1.1基于图像的人脸检测方法 4 2.1.2基于特征的人脸检测方法 5 2.2 Adaboost算法介绍 6 2.2.1…

python疲劳检测

疲劳驾驶检测 结合眼睛的闭合状态和嘴巴闭合状态,综合判断驾驶人员的疲劳状况。python编写,tensorflow,opencv和dlib实现人脸的检测和特征点提取。 效果图: 效果视频: python opencv 疲劳驾驶检测 项目代码下载: pyt…

疲劳检测(一)Landmark + HeadPose

数据集 1)Drazy 数据集:红外,包含多种用于疲劳检测的数据,(有电极) 14*3*10min get http://www.drozy.ulg.ac.be/ 2)NTHU 驾驶员疲劳检测数据集 http://cv.cs.nthu.edu.tw/php/callforpaper/datasets/DDD/ 3&am…

26.疲劳检测

目录 1 项目介绍 2 代码实现 2.1 导入库 2.2 定义68个关键点 2.3 定义eye_aspect_ratio() 2.4 定义参数 2.5 定义阈值 2.6 定义次数 2.7 创建检测器 2.8 获取左眼与右眼的起始点与终止点 2.9 读取视频 2.10 定义shape_to_np() 2.11 遍历每一帧 2.11…

Dlib模型之驾驶员疲劳检测一(眨眼)

目录 序目的技术背景 正文(1)环境搭建(2)下载开源数据集(3)视觉疲劳检测原理(4)主要代码思路(5)运行效果 序 目的 经查阅相关文献,疲劳在人体面…

Python人脸检测实战之疲劳检测

本文主要介绍了实现疲劳检测:如果眼睛已经闭上了一段时间,我们会认为他们开始打瞌睡并发出警报来唤醒他们并引起他们的注意,感兴趣的朋友可以了解一下。 今天我们实现疲劳检测。 如果眼睛已经闭上了一段时间,我们会认为他们开始打…

计算机视觉项目实战-驾驶员疲劳检测

😊😊😊欢迎来到本博客😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉深度学…

【毕业设计】深度学习疲劳检测 驾驶行为检测 - python opencv cnn

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目…

Pandas和Numpy:常见函数参数inplace的作用

1.inplace参数的作用 pandas中,包括numpy中很多方法都设置了inplace参数。该参数的主要作用是指示是否在本地数据上做更改,其只能接受bool型参数,即 True和False. 具体示例如下: data为原始数据。接下来用dataframe.drop()删除Ti…

编译inplace_abn

出现以上问题 1、检查pytorch版本,一般1.5以上 2、检查cuda版本,一般10.1以上 3、检查环境变量设置 linux:export -p 重点检查 PATH 、LD_LIBRARY_PATH 不能重复设置变量,将重复的删掉 unset LANG 是将LANG删掉 declare -x LANG是…

build_ext --inplace 是什么意思

如果是做目标检测类的任务,经常需要用到cocoapi python setup.py build_ext --inplacebuild_ext是指明python生成C/C的扩展模块(build C/C extensions (compile/link to build directory))--inplace指示 将编译后的扩展模块直接放在与test.py同级的目录中。 流程如…

Bug集和之3:set_index 设定索引——inplace参数

知识点:set_index() 问题发现: 需要设定索引,以获取特定行的数据 ,但最后结果运行的不理想 初始数据 index000056.OF…01998-3-27NaN……………70302023-1-132.573… 过程代码 result.set_index(index) df result.loc[20…

python distutils打包C/C++模块,执行python setup.py build_ext --inplace时报错cl

一、问题发生环境 python可以把C/C代码编译并打包为pyd模块,从而可以使python脚本直接调用C/C模块功能。 我在执行python setup.py build_ext --inplace时遇到了缺失cl.exe的错误提示,然后用pip安装了cl。 再次编译,提示cl: error: no such o…