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.
The project's main webpage can be found here.
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 their 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. - Build and run the solution.
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.
NOTE: The VideoInput library only works when targeting 32-bit, but the rest of the system works fine with 64-bit.
