机器学习实践系列之8 - 人眼定位
来源:互联网 发布:四维星装饰选材软件 编辑:程序博客网 时间:2024/04/30 14:13
一. 人眼检测
OpenCV自带的人眼检测,代码及教程都已比较普及,这里不再啰嗦,训练模板直接 load已经训练好的文件:
haarcascade_eye_tree_eyeglasses.xml,直接看代码:
/* linolzhang 2014.10 基于OpenCV的人眼检测 - Cascade*/#include "opencv2/highgui/highgui.hpp"#include "opencv2/objdetect/objdetect.hpp"#pragma comment(lib,"opencv_core2410.lib")#pragma comment(lib,"opencv_objdetect2410.lib")#pragma comment(lib,"opencv_highgui2410.lib")using namespace cv;int main(int argc, char** argv){Mat src;if(argc != 2) src = imread("1.png");else src = imread(argv[1]);CascadeClassifier eye_cascade; eye_cascade.load("haarcascade_eye_tree_eyeglasses.xml"); std::vector<Rect> eyes;eye_cascade.detectMultiScale( src, eyes, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); for(int i=0; i<eyes.size(); i++)rectangle( src,eyes[i],Scalar(0,255,0) );imshow("源图像",src); cvWaitKey(0);return 0;}
检测效果(基本能够满足需求):
二. 中心点定位
在确定人眼区域后,第二个目标就是眼球定位,眼球定位能够确定眼睛的中心位置,这在眼睛跟踪上非常有意义,一般来说,VR中基于眼动跟踪的控制,ADAS上用于疲劳检测都需要用到眼睛的中心点信息。
能够直观想到的方法就是 Hough变换,这里有一个假设,眼睛的正中心是多个同心圆的圆心。
正常情况下,该方案是work的,但实际上,由于眼球的部分遮挡(小眼睛)、光线反射、噪点 等问题会导致识别率下降。
作者提出的方法主要基于下面两个假设:
1. 梯度方向
眼睛正中心 为梯度方向的汇聚交点;
2. 对称性
当然,也可以采用局部二值特征等纹理描述方式,这在一定情况下有效,对于反射比较重的情况下差异其实不大,因此,灰度特征一般都能够衡量。
由于版权问题,算法细节及代码部分不便公开,大家可以就该问题的算法改进方向进行讨论!
三. 眨眼检测
通常的眨眼检测方法有以下几种:
1. 基于阈值判断
该阈值通常是时间,一段时间内无法检测到眼球,认为眼睛处于闭的状态;
也有算法基于眼睛特征点的 宽高比,当低于一个阈值时,认为眼睛为闭,当然也有人说这种方法不准确,有很多人“眯缝眼”。
2. 根据特征点运动
由于眼睛状态的闭合瞬间很难被捕捉到,因此大部分的眨眼过程都表现为特征点的瞬间运动,我们称为眼皮跳,这种情况下的运动通常是有规律的,根据研究人员观察,上眼皮下移、下眼皮上移,都是有规律可循。
3. 疲劳特征
疲劳在眨眼情况下的表现是,上眼皮的缓慢下移以及眼睛中心的下移(可能伴随低头),当然眨眼检测只是疲劳的一个方面的特征。
- 机器学习实践系列之8 - 人眼定位
- 机器学习实践系列之1 - dlib
- 机器学习实践系列之2 - GPUImage
- 机器学习实践系列之13
- 机器学习实践系列之14
- 机器学习实践系列之15
- 机器学习实践系列之16
- 机器学习实践系列之5
- 机器学习实践系列之12 - OpenCV之三维重建
- 机器学习实践系列之5 - 目标跟踪
- 机器学习实践系列之6 - OpenCV实战光流
- 机器学习实践系列之7 - 车辆检测
- 机器学习实践系列之9 - 视频结构化
- 机器学习实践系列之10 - OpenCV实战立体视觉
- 机器学习实践系列之3 - 人脸对齐(上)
- 机器学习实践系列之4 - 人脸对齐(下)
- 机器学习系列之决策树
- 机器学习系列之最小二乘法
- redis ERR invalid DB index
- Java基础-静态块、非静态块、构造函数的执行顺序
- 图结构练习——最短路径
- 70后游戏辅助开发程序猿的人生路(三)
- next_permutation原理剖析
- 机器学习实践系列之8 - 人眼定位
- 图解GeoHash算法--MongoDB 地理位置索引的实现原理
- win7 caffe使用笔记——特征图可视化(matlab,python两种方式)
- php第二天
- PDF阅读
- 【spoj】【COT - Count on a tree】【可持久化线段树】
- ajax的基本流程
- JAVA蓝桥杯(19)密码发生器
- 笔试题15