本发明涉及疲劳驾驶检测领域,特别涉及一种基于“人脸特征提取”的疲劳监测系统。
背景技术:
目前疲劳检测主要用于汽车驾驶过程中,存在以下缺点:
1.发倔疲劳特征过于单一,仅仅检测眼部疲劳;
2.几乎都用于驾驶过程的检测,没有将疲劳检测扩大到生活中的各个方面;
3.只是反应当前的状态,没有进行一个完整的疲劳历史记录反馈给用户改进。
技术实现要素:
本发明所要解决的技术问题是提供一种基于“人脸特征提取”的疲劳监测系统,过一个简单的app可以实时记录用户的疲劳状态,还可以反馈,报警提醒用户。可以将每日的疲劳状态变化生成曲线,方便用户对自己的工作时间进行安排。可以用于监测整个学习过程和或是工作过程用户的疲劳状态变化。
为实现上述目的,本发明提供以下的技术方案:该基于“人脸特征提取”的疲劳监测系统包括硬件平台和软件平台。硬件平台是cmos摄像头、pc端matlab作为数据处理平台;软件平台是pc端实时处理软件,可以显示实时处理结果,移动端app实时反馈当前结果,并生成每日疲劳状态变化曲线。该系统通过usb摄像头实时提取人脸面部特征,在pc端matlab平台处理图像,进行疲劳状态的判定,并将结果发送给app端,在移动端对疲劳状态进行实时反馈,并生成每日疲劳状态的变化曲线。
采用以上技术方案的有益效果是:
(1)充分挖掘了闭眼与打哈欠两种疲劳特征,疲劳判定标准更加多样,避免了单一标准造成的误判。
(2)用户可以下载app对自己的疲劳状态进行实时监控。app可以在用户过于疲劳时向用户报警,提醒用户休息。每个用户都可以在app端有一个自己的疲劳档案。用户可更加直观的对自己学习工作时间进行安排。
(3)整套系统使用方便,设备简单,价格低廉,对于普通学生和上班族有着重要意义。
(4)使得疲劳检测的应用范围不仅仅局限于驾驶,而是扩大到了生活中的各个方面,比如:学习时监测,工作上班时监测。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的描述。
图1是该基于“人脸特征提取”的疲劳监测系统的整体框图;
图2是该基于“人脸特征提取”的疲劳监测系统的疲劳辨别原理图。
具体实施方式
下面结合附图详细说明本发明一种基于“人脸特征提取”的疲劳监测系统的优选实施方式。
图1和图2出示本发明一种基于“人脸特征提取”的疲劳监测系统的具体实施方式:
结合图1和图2,该基于“人脸特征提取”的疲劳监测系统包括硬件平台和软件平台,硬件平台是cmos摄像头、pc端matlab作为数据处理平台,软件平台是pc端实时处理软件,可以显示实时处理结果,移动端app实时反馈当前结果,并生成每日疲劳状态变化曲线,该系统通过usb摄像头实时提取人脸面部特征,在pc端matlab平台处理图像,进行疲劳状态的判定,并将结果发送给app端,在移动端对疲劳状态进行实时反馈,并生成每日疲劳状态的变化曲线。
第一部分:用usb摄像头对人脸信息进行实时采集。
第二部分:matlab平台对实时采集的人脸信息进行面部特征的判断。
在进行人脸疲劳检测之前,我们需要对摄像头采集的图片中的人脸进行定位。将人脸信息提取出来的基础上,识别面部特征,主要包括眼睛与嘴部。采集眼球嘴部的各种特征,生成训练样本库。然后用户的疲劳/非疲劳特征通过监督学习的方式训练模型。
我们调用matlab计算机视觉工具箱对人脸进行定位。matlab人脸定位函数cascadeobjectdetector是基于violajones算法。该算法的特点是在保证高准确率的基础上,速度也非常快。很适合用来实时处理视频人脸定位。
在定位人脸之后,我们需要对人脸的特征进行采集,如:眼睛部位(左/右),嘴部。依旧利用matlab中的计算机视觉工具箱。直接调用cascadeobjectdetector函数即可。就可采集到眼部与嘴部的图片信息。
从图中可以看出:二值处理的眼部不同像素信息可以反映眼睛的不同状态,进而表示观测者的疲劳状态。比如:不疲劳时,眼睛往往是睁开的;而疲劳时,眼睛往往闭上。所以我们建立眼球不同状态的样本库,就可以通过实时采集到的用户图片样本进行比较,进而判断用户眼球状态。
经过二值处理的嘴部的不同像素状态可以反映嘴部的不同状态,进而可以表示观测者的疲劳状态。比如:疲劳时,嘴部往往是打开的;而非疲劳时,嘴部往往闭上。所以我们建立嘴部不同状态的样本库,就可以通过实时采集到的用户图片样本进行比较,进而判断用户嘴部状态。
通过监督学习的方式来训练用户疲劳特征的样本,使得计算机能够根据每次输入的图像自行判断疲劳状态。
人脸主要的疲劳特征有:闭眼和打哈欠。提取观测者一段时间内的疲劳状态,通过与样本库的匹配,得到观测者在一段时间内闭眼帧数,打哈欠帧数,求得其疲劳状态下,闭眼帧数和打哈欠帧数占所有帧数的比例。
第三部分app设计。
在wifi环境下,pc与android手机都介入当前无线网路,程序里的ip地址是实验环境无线的ip地址。pc端的matlab程序基于tcp/ip协议通过socket接口向app发送数据(字符串“fatigue”和“non-fatigue”),app接收后在历史记录中显示相关信息。
为了多方位表示,便于数据统计与直观理解,我们在app中设计了三个界面,分别为“历史纪录”,“当前疲劳度”和“折线图”。下面是app的主要功能:
历史记录:以列表形式每隔8s记录一次疲劳度,并且显示记录时间。
当前疲劳度:通过百分比精确实时显示当前的人体疲劳度,便于使用者观测。
相关算法:
当前疲劳度=fatigue数/接收数据数*100%
当疲劳度超过用户设定的上限时,app报警提醒用户休息
历史折线图:用户每日的疲劳变化情况都将记录在app中,形成变化的折线图。用户可以根据自己每日疲劳度的变化对时间做出合理的安排。
以上的仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。