基于人眼的眨眼频率测算是否疲劳——Matlab实现
-
通过一段视频,在前1秒的时候,必须睁眼,以录入这个人眼睛的信息;
-
使用Matlab自带的vision类库,进行人脸和人眼的提取;
-
再分别拿出左眼和右眼,然后进行裁剪、灰度、数值化处理;
-
这样就可以得到,一个皮肤和眼睛清晰对比的图片,这时候根据,睁眼的时候,有黑色的眼珠,闭眼时,只有皮肤一种颜色,从而形成了数值的差。
-
基于这个理论,对于数值化后的灰度图片,进行梯度运算,然后再分别求方差和标准差,然后再求均值;
-
对于同一个人,这个值是不变的,前1秒的几十帧,记录下睁眼的数据,后面的再进行对比,如果比睁眼时的标准差,一个数值,就检测为闭眼。
-
等待录入帧全部过后,就是开始记录,看最近的100帧内,有多少帧是闭两只眼记为1,闭一只眼记0.5,没闭眼记为0;
-
然后过了,100帧和录入帧后,开始每一帧都进行疲劳判断,看前求和前100帧的值,再除以100,得到一个值,再跟疲劳系数进行对比,大于时,认为疲劳。(程序里为了方便,疲劳值设置的很低,可自行基于什么标准进行调整);
**效果图**