刚开始接触视线估计时,搜索资料时搜的是visual axis。。。实际上它有个更专业的名字Gaze。
具体到使用计算机视觉方法来解决Gaze问题就是,如何通过一张眼睛的图片以及相关数据,来估计出人眼的视线方向,注意这个视线方向(3d vector)可以基于相机坐标系,也可以基于头部坐标系。
有了这个vector能干啥呢?有了它就能更精确的知道人在看什么。浏览网页时,广告公司知道你的目光停留在哪里,对什么内容更感兴趣,从而更精确地定向投放广告。VR技术中如果知道视线,那么可以将人眼所看区域精细化绘制,对于人眼未注视的地方,仅渲染低分辨率图像,那么在性能更低的芯片上能够实现更好的体验效果。
汽车上的DMS系统(驾驶员监控系统)能够利用gaze判断驾驶员是否在驾驶过程中低头玩手机,是否在看非行驶区域,从而给予及时报警,降低事故的发生。
根据实现的方法不同,大致可以分为基于模型的方法(model based)和基于外观的方法(apperance-based)。
- Model based 方法
通过建立眼球和瞳孔模型,在获取到瞳孔2d坐标后可以fit出眼球瞳孔的3d模型参数,从而计算出gaze vector
- Apperance based 方法
这种方法的本质是找到从图片到gaze vector的映射函数,输入直接就是图片,输出就是vector,模型可以使用随机森林和卷积神经网络,相比Model based的方法,这种end to end的方法真是强大,不要跟我谈什么眼睛模型,不要跟我讲算什么瞳孔位置在哪里,操起键盘一把梭,结果就出来了。。。
对于使用网络的方法,一个经典结构如下:
MPII Gaze 论文使用的模型结构
输入是一张眼睛的图片+头部headpose,输出则是眼睛相对相机坐标系的pitch和yaw, 这个极坐标系下的pitch和yaw可以转换为卡迪尔坐标系下的三维坐标。
这篇文章先介绍些Gaze的基本背景知识,后面会主要介绍feature based的论文和代码。
欢迎关注公众号:OpenCV图像处理
里面会分享很多官员OpenCV和视觉相关知识.