This software aims to provide an easy-to-compile C++ implementation of a 3D eye-tracking method.
Go to file
Jason 0407a8fbba
Fixed bug with reset key
Eyebox was not updating with reset key.
2019-01-30 12:12:02 +09:00
cmake added initial working code 2016-10-07 13:31:30 +09:00
docs filename change 2018-08-31 16:17:38 +09:00
external added a missing dll and updated CMakeLists.txt 2016-10-07 21:11:50 +09:00
main Fixed bug with reset key 2019-01-30 12:12:02 +09:00
singleeyefitter correction to documentation 2018-04-12 18:28:57 +09:00
.gitignore Initial commit 2016-10-06 23:07:00 +09:00
CMakeLists.txt added a missing dll and updated CMakeLists.txt 2016-10-07 21:11:50 +09:00
Eye Tracker Calibration Interface V1.0.1.unitypackage Minor fix: removed calib file save/load 2018-08-31 17:40:43 +09:00
LICENSE Initial commit 2016-10-06 23:07:00 +09:00
README.md image filename fix 2018-08-31 16:18:46 +09:00
UNITY_README.md edited formatting 2018-08-31 16:30:50 +09:00

3D Eye Tracker (Drift Correction Branch - BETA as of August 29th, 2018)

This software aims to provide an easy-to-compile C++ implementation of a 3D eye-tracking method. This branch includes code to correct for shifts or drifting of the eye tracker on the user's head over time by updating the model and is currently in a TEST PHASE. Beta and release versions to follow.

Our software is designed for a wearable eye-tracking scnenario where a user wears a headset with an eye camera(s) that is equipped with infrared (IR) illuminations. The camera can capture close-up shots of the user's eyes.

headset_and_image

With this software, you can obtain the following information:

  • 3D information:
    • Gaze (normal) vector
    • Eyeball center w.r.t to the camera
    • Pupil diameter [m]
  • 2D information:
    • Pupil ellipse size [pixel] and angle [deg.]
    • (Glint position(s) [pixel], to be merged soon...)

Sample video on youtube (this was taken from a preliminary version and will be updated with a newer version soon).

Prerequisite

This software has been tested with Visual Studio 2015 and 2017. These tests were performed on a 64bit Windows 10 machine only.

Most of external libraries (for vc14, x64) are bundled in ./external, yet you still need to install the following two libraries:

To setup your own Visual Studio project, you need to use CMake. You can find a windows installer here.

How to compile

  1. Clone the repository git@github.com:YutaItoh/3D-Eye-Tracker.git to your local folder (e.g., /your-local-path/3D-Eye-Tracker)
  2. Open ./CMakeLists.txt and edit the OpenCV path and the Boost path depending on your environment. For example, the default values are as follows:
    • set(BOOST_ROOT "C:/SDK/boost_1_62_0")
    • set(OpenCV_DIR "C:/SDK/opencv-3.1.0/build")
  3. Start CMake GUI and set a source code path (e.g., /your-local-path/3D-Eye-Tracker) and a project build path (e.g., /your-local-path/3D-Eye-Tracker/build_vc14_x64)
  4. Press Generate buttons, then choose a right build environment (Visual Studio 14 2015 Win64)
  5. Open 3d_eye_tracker.sln in the build folder, and compile main project (recommend to set it as a startup project)

How to run

The default setting uses a sinlge camera via the DirectShow filter. Check your camera name on a video capture program (e.g., Skype) and set the name in main.cpp:

		case InputMode::CAMERA_MONO:
			eyecams[0]=std::make_unique<eyecamera::EyeCameraDS>("Pupil Cam1 ID0");

In this case, the program tries to find a camera named "Pupil Cam1 ID0".

Once the program started, it initializes a 3D eye model from 2D pupil observatios:

In this initialization step, a user needs to smoothly rotate his/her eye to capture various 2D shapes of the eye.

After the step, we get 3D eye tracking as shown in the first image on the left. The current version updates the eye model over time (drift correction), represented by the white circle and red ray in the second image. When these outputs are fed into Unity and calibrated, you will see the output in the third image.

Tips:

Some debug keys are pre-assigned for a better control of the software:

  • p: Takes some more 2D pupil observations. Useful when estimated 3D eye model is incorrect due to not-well-distributed 2D observations
  • r: Resets the 3D eye model and 2D observations and restarts the initialization step
  • x: For stereo Pupil Labs eye trackers on a single USB cable - exits cleanly
  • ESC: Exit the program

Acknowledgements

This program integrated/modified several existing algorithms. Especially,