EyeTab
EyeTab is a 3D model-based gaze tracker that runs entirely on unmodified commodity tablet computers, taking their limited computational resources and low quality cameras into account.
The code is available in two forms:
EyeTab– A demonstration version which runs on a supplied example video file.EyeTab_SP2– An interactive version developed for a Microsoft Surface Pro 2. This should also work on other devices with small tweaks.
System overview
We track gaze by modelling the iris as a 2D ellipse in an image, and back-projecting this to a 3D circle, getting the real-world position and orientation of the iris. We take the normal vector of this to be the gaze direction.
The system has three main components:
- We first precisely find regions-of-interest for the eyes in an image.
- Then we robustly fit a 2D ellipse to each limbus – the boundary between iris and sclera.
- We finally back-project these to 3D circles, and intersect the circle normals with the screen for a point-of-gaze.
Deployment instructions
A rough guide for setting this code up from scratch:
- Open the solution file
EyeTab.slnin Visual Studio. I used VS2012. - Add dependencies to Visual Studio' Additional include directories field, Additional library directories field, and as Additional input in the linker.
- Ensure the required
.dlls can be found on yourPATHor in Visual Studio's debugging environment.
Dependencies
The system has several dependencies:
- OpenCV – a multi-purpose computer vision library
- TBB – for parellization
- Eigen – provides vector maths
In addition, the SP2 version of the system depends on [VideoInput](// see: http://www.codeproject.com/Articles/559437/Capturing-video-from-web-camera-on-Windows-and) for providing high-resolution access to the front-facing camera. OpenCV's camera API is broken and does not support this. This library videoInput.lib is supplied.
