使用OpenCV,Python和dlib进行眨眼检测及计数
前三篇博客学习了
这篇博客将进行进阶版的学习——眨眼检测。眨眼检测在现实中有非常重要的应用,可以用于睡意检测。 比如:每年有9万人因为疲劳驾驶死亡,睡意检测可以起到很好的提醒作用,挽救人的生命。让N多个家庭失去亲人,免于破碎。
传统的眨眼检测是:
- 首先眼睛定位;
- 阈值化找到白色的眼睛区域;
- 确定眼睛的“白色”区域是否消失了一段时间(表示眨眼)。
本文使用的眨眼检测是:
构建一个称为眼睛纵横比(EAR “eye aspect ratio”)的指标,EAR的原理是眼睛的纵横比,在睁着眼时是一个基本恒定的值,而在眨眼的瞬间,EAR会瞬间达到0,然后在回到恒定值。
这种眨眼检测方法快速,高效且易于实现。
1. EAR为什么可以成为判断眨眼的标准
如下图,通过应用人脸检测,面部标志检测可以得出眼睛的关键点:如下图所示6个点构成;
使用EAR进行判断的原理:睁开眼睛时眼睛的纵横比大约是恒定的,但眨眼时会迅速降至零。
2. 眨眼检测及原则
(1)面部检测
(2)面部标志检测
(3)根据索引找到左眼、右眼的位置,计算纵横比ear,求平均值
(4)判断是否眨眼:(有超过3帧的连续帧——ear低于阈值,则认为是进行了一次眨眼);
3. 优化
可采用第N维,第N-6,第N+6维均计算EAR指标,求平均值。