1 绪论
疲劳驾驶是一种十分危险的行为,不仅会对驾驶员本人造成危害,还会对其他行车人员和路面交通造成威胁。因此,如何及时地检测驾驶员的疲劳状态,提醒驾驶员采取必要的休息措施,成为了当前研究的热点之一。
本设计采用了灰度积分投影技术结合perclos技术对眼睛进行定位和疲劳检测。具体而言,首先对图像进行预处理,使其灰度分布较为均匀。然后利用水平和垂直灰度积分投影曲线结合人脸结构特征,精确定位眼睛的位置坐标。最后,通过perclos技术计算眨眼率,并根据先验值判断是否出现疲劳现象。
2 技术介绍
2.1 Harr-like特征提取
Haar-like特征由C.P. Papageorgiou等人提出,它分别从边缘信息、线性信息、中心信息、对角线信息的角度定义了四个基本特征模版。如图2.1所示,特征窗口内有不同颜色的两种矩形,该特征窗口的特征值为两个矩形的像素差,这些窗口将在整幅图像中做步长为1的滑动,直到取得整幅图像的特征值。Haar-like特征由相邻像素的像素差表征,因此其反映了图像局部区域的灰度变化,局部区域中的灰度差异越大,Haar-like特征的提取效果越好,比如在人的脸部区域中,眼球比周围颜色更深、嘴巴比脸部颜色更深、鼻梁两侧比中心颜色更深,因此鼻梁、眼球、嘴巴更容易进行特征提取。由于最初只有四个矩形特征模版,因此对边缘和线段较敏感。
图2.1 Harr特征
特征窗口在遍历完整个图像后将按比例放大,然后对整幅图像进行重复遍历,比例放大系数为:
其中ωi和hi是整个图像的宽和高,ωmin和hmin是Haar窗口的初始宽高,放大比例系数为Kw和Kh。
2.2 支持向量机算法
Vladimir等人在1963年提出支持向量机分类算法,又被称为SVM算法,常被用于二分类任务中。目前被广泛使用的基于边缘检测的支持向量机算法是Corinna Cortes等人在1995年提出的,不同于一般的分类器,其分类原理是找到一个使被分类的两个样本集之间的间隔最大化的超平面,使误判的机会更少、预测的精度更高。若一个分类任务中存在一组二分类数据分布,则能够将两类数据完全分离的直线即此分类任务中的超平面,通常把超平面两侧的数据分别标记为1或0,其算法原理如下:
1、对样本空间利用核函数的方法转换到线性可分的空间;
2、利用最大化间隔的方法获得间隔最大的超平面,进而得出支持向量;
3、根据超平面和支持向量对新的样本进行分类预测。
它的主要思想是在高维空间中找到一个最优的超平面,将数据划分成不同的类别。该算法在分类、回归和异常检测等领域都有广泛的应用。SVM算法的核心是通过一个最优化问题来求解最优的超平面。在这个问题中,我们要找到一个超平面,使得它能够将不同类别的数据点正确地分开,并且离超平面最近的数据点与超平面的距离最大。这个距离被称为“间隔”,因此SVM算法也被称为“最大间隔分类器”。SVM算法的核心思想是将原始数据点映射到高维空间中,使得原始空间中不可分的数据在高维空间中变得可分。这个映射函数被称为“核函数”,它可以将原始空间中的数据点映射到高维空间中的特征向量。常用的核函数有线性核函数、多项式核函数和径向基函数等。SVM算法的优点在于它能够处理高维数据,同时具有较好的泛化能力和分类性能。此外,SVM算法在解决小样本、非线性和高维数据分类问题时表现良好。在实际应用中,我们可以根据具体的问题选择合适的核函数和参数,来达到最佳的分类效果。
2.4 灰度积分投影技术
人脸识别算法是一种基于计算机视觉和模式识别技术的人脸识别技术,通过对图像或视频中的人脸进行特征提取、匹配和识别,实现人脸的自动识别和认证。人脸识别算法主要分为以下几类:
基于特征的人脸识别算法:该算法通过对人脸图像进行特征提取,如颜色、纹理、形状等,然后将这些特征与已知的人脸模板进行比对,以实现识别。
基于模板匹配的人脸识别算法:该算法先将人脸图像进行预处理,如去除噪声、对齐、归一化等,然后将处理后的图像与已知的人脸模板进行匹配,以实现识别。
基于神经网络的人脸识别算法:该算法采用深度学习技术,通过构建多层神经网络,将人脸图像作为输入,输出识别结果。该算法能够自动学习人脸的特征,具有较高的识别准确度。
基于三维人脸识别算法:该算法通过利用三维人脸模型进行识别,可以有效地解决光照、角度等因素对人脸识别造成的影响。
基于混合模型的人脸识别算法:该算法结合了多种识别技术,如特征提取、模板匹配、神经网络等,以提高识别准确度和鲁棒性。
总的来说,人脸识别算法在实际应用中具有广泛的应用前景,可以应用于人脸门禁、身份认证、安防监控等领域
灰度积分投影技术是是一种基于灰度积分的图像处理方法,用于生成二维图像的一维投影。该技术可以对图像进行快速而准确的处理,从而提高图像处理的效率和精度,常被用于物体表面形状的测量、图像的分割和物体的识别等领域。
在灰度积分投影技术中,图像被分成若干个小块,每个小块的像素值被求和,从而得到一个积分图像。通过对积分图像进行处理,可以得到各种形状的特征,比如矩形、圆形等等。灰度积分投影技术基于灰度积分定理,该定理指出一个像素点的灰度值可以看作是从图像原点到该像素点所覆盖的区域内所有灰度值的积分。因此,可以通过对每个像素点进行灰度积分,得到该像素点的投影值。
假设图像中某个像素点的坐标为(x,y),该像素点的灰度值为I(x,y),则该像素点的投影值可以表示为:
其中(u,v)为以原点为中心、以(x,y)为对角线顶点的矩形区域内的坐标点。
通过对每个像素点进行灰度积分,可以得到一维的投影值,即将二维图像转化为一维图像,然后可以对一维图像进行进一步的处理,如峰值检测、阈值分割等。
灰度积分投影技术的优点在于它能够在不需要对原始图像进行重新采样的情况下,快速地计算出各种形状的特征。此外,该技术还具有较高的准确性和鲁棒性,能够应对图像中的噪声和变形等问题。灰度积分投影技术可以用于目标检测、形状测量、图像分割等领域。例如,在目标检测中,可以通过计算目标的投影值来判断其位置和形状;在形状测量中,可以利用灰度积分投影技术计算物体的周长和面积;在图像分割中,可以将一维的投影值进行阈值分割,得到二值图像,进而实现物体的分割。
总的来说,灰度积分投影技术是一种非常有用的图像处理技术,在计算机视觉领域中具有广泛的应用前景。
3 设计分析
3.1 框架搭建
基于Matlab图像处理技术的疲劳监测方法,包括分帧、肤色提取、灰度积分投影定位眼部、判断眼睛睁闭程度、统计闭眼程度以及疲劳状态判断等步骤。如下图所示:该疲劳检测系统的输入为影像视频,在视频输入系统后经过预处理首先去除视频中的非人脸区域,然后对视频中的内容进行人脸定位,之后再通过灰度积分投影技术进行人眼定位,从而判断出眼睛张合度,采用perclos技术进行统计后输出结果。
图3.1 系统流程图
3.2 硬件组成
该系统的硬件组成主要包括摄像头、计算机、显示器、光源等。首先,摄像头是该系统的核心硬件之一,它可以实时采集驾驶员的面部图像,通过对图像进行处理和分析,识别出驾驶员的面部特征,如眼睛、嘴巴等,以及面部表情,如睡意、疲劳等,从而判断驾驶员的疲劳状态。在选择摄像头时,需要考虑其分辨率、帧率、感光度等因素,以确保图像采集的质量和稳定性。
其次,计算机作为系统的核心控制器,负责图像处理、特征提取、数据分析等任务。在该系统中,计算机需要安装Matlab软件,以实现人脸识别、特征提取、分类识别等功能。同时,计算机还需要配备高性能的CPU和内存,以确保系统的运行速度和稳定性。
除此之外,显示器和光源也是该系统的重要组成部分。显示器用于显示采集到的图像和疲劳状态分析结果,使驾驶员和监管人员能够及时掌握驾驶员的状态;光源则用于提高图像的亮度和清晰度,以便更准确地识别面部特征和表情。
总的来说,基于Matlab的人脸识别驾驶员疲劳检测系统的硬件组成包括摄像头、计算机、显示器、光源等,这些硬件相互配合,共同实现对驾驶员的疲劳状态进行监测和预警的功能。未来,随着技术的不断发展和应用的不断推广,该系统的硬件组成也将不断完善和升级,以更好地满足交通安全的需求。
4 系统设计
4.1 人眼区域图像获取
此部分程序可以对输入图像进行处理,提取出人眼区域,并返回该区域的图像。该部分程序的输入为一个图像和一个标志位。标志位用于控制是否显示图像。如果没有输入标志位,默认为1,表示需要显示图像。如果输入了标志位,且标志位为0,则不显示图像。该部分程序的处理过程分为以下几个步骤:
1、将输入图像进行灰度化处理,以便进行后续操作;
2、对灰度化后的图像进行中值滤波,以去除噪声;
3、利用灰度积分投影计算人眼位置。具体来说,通过计算每一行和每一列的像素值之和,可以得到一条行投影曲线和一条列投影曲线。通过分析这两条曲线,可以确定人眼的位置;
4、根据人眼位置定位人眼区域。具体来说,通过找到行投影曲线的最大值和列投影曲线的最大值,可以确定人眼所在的行和列。然后,通过一定的计算,可以确定人眼区域的位置和大小;
5、对人眼区域进行裁剪,得到人眼区域的图像。
4.2 人脸区域图像获取
该函数用于获取人脸区域图像,用于人脸定位。该函数的输入参数为一个RGB图像,输出参数包括人脸区域图像、二值化图像、人脸区域的矩形框、HSV空间图像、H通道中值滤波后的图像、S通道中值滤波后的图像、V通道中值滤波后的图像、肤色区域的掩膜、形态学处理后的掩膜。该函数的具体实现过程如下:
1、将RGB空间图像转换至HSV空间图像;
2、对H、S、V通道进行中值滤波去噪;
3、根据肤色定位人脸,生成掩膜;
4对掩膜进行形态学处理,包括开操作、闭操作和孔洞填充;
5、对处理后的掩膜进行连通域分析,提取人脸区域;
6、获取彩色的人脸区域图像,对图像进行裁剪,得到人脸区域图像;
7、返回人脸区域图像、二值化图像、人脸区域的矩形框、HSV空间图像、H通道中值滤波后的图像、S通道中值滤波后的图像、V通道中值滤波后的图像、肤色区域的掩膜、形态学处理后的掩膜。
4.3 疲劳检测
该程序用于疲劳驾驶的检测,主要流程为:首先,读取图像文件夹中的所有图像,共img_num张图像;对每一张图像进行检测,具体包括以下步骤:
1、利用肤色模型定位人脸部分;
2、利用灰度积分法定位人眼区域,
3、利用形态学处理和连通域分析,精确定位人眼;
4、统计人眼特征信息,包括眼睛闭合程度;
5、对特征信息进行归一化处理,得到bi值,用于后续的判断。
然后判断是否疲劳,具体包括以下步骤:
1、设定归一化判断标准gui,对每一张图像的bi值进行判断,得到frame数组,表示每一帧眼睛是否闭合;
2、利用perclos算法对检测时段内的眼睛闭合程度进行判断,得到sss数组,表示每5帧中是否有疲劳驾驶的情况。
最后将检测结果保存至sss.mat文件中,弹出检测完成的提示框。
4.4 GUI界面设计
该程序具体实现的功能为:读取指定文件夹中的图像文件,利用肤色模型和灰度积分定位人脸和人眼区域,利用形态学和连通域精确定位人眼区域,统计特征信息,判断是否疲劳驾驶。程序中还包含了一些控件,如按钮、文本框、列表框等,用于交互式操作。
5 系统实现
运行该系统设计程序,打开疲劳驾驶检测系统的UI界面,驾驶状态初始为正常,按下状态监测按钮,系统对驾驶员的实时面部状态进行数据采集,通过程序分析处理后显示出驾驶状态是否正常。
系统检测到驾驶员的实时面部状态,并显示出HSV空间图像、H空间滤波去噪图像、肤色模型结果图像、人眼区域、人眼精确定位以及人眼二值等一系列图像,最后显示出驾驶状态。
当系统检测到驾驶员眼睛闭合程度小于阈值时,系统驾驶状态变红,显示异常。
上述检测结果显示,该驾驶员疲劳检测系统能够正常稳定运行,实现了预期功能,达到了预期目的。
总结
针对驾驶员疲劳驾驶问题,提出了一种基于matlab的人脸识别驾驶员疲劳检测系统。该系统能够对驾驶员的疲劳程度进行实时监测,并及时预警,有效减少疲劳驾驶事故的发生。
更详细的内容欢迎共同交流学习。包含该系统的具体文字说明和程序。