Offline calibration adjustment for Tobii eye-trackers

This page describes ongoing efforts to identify and correct calibration errors for Tobii eye trackers. This is a particular problem for infants and young children, who cannot be instructed to look at particular calibration locations. We noticed that some infant participants in our studies had large, systematic calibration errors. The Tobii tracker would record their point-of-gaze as being several degress of visual angle away from where they actually were looking, but because this error was consistent, it would not be revealed by the Tobii's calibration display. We developed a method for correcting these errors by including a calibration check stimulus in our experiment, calculating the correction necessary to align infants' point of gaze to this calibration stimulus, and then applying this correction to the entire gaze recording.

High-level description

[pdf] A few slides that briefly illustrate the problem. They were delivered at the breakfast symposium on Tobii Methods organized by Chuck Nelson and Helen Tager-Flusberg at ICIS 2010 in Baltimore.

A movie showing a single infant participant with a large and systematic error, without that participant marked (try and spot which baby it is) and with the participant marked by a large X.

[pdf] Frank, M. C., Vul, E., and Saxe, R. (2012). Measuring the development of social attention using free-viewing. Infancy. (This is a paper that uses our offline calibration method and also describes some other aspects of our eye-tracking analyses.)



We include both .MOV and .AVI formats because the Tobii tracker only accepts .AVI. The .MOVs are very small and easy to view, while the .AVIs are quite large, so only download them if you need to use them with the Tobii.


Here is basic Matlab code for a self-contained implementation of calibration-checking and adjustment (note, updated 5-18-11 to fix a minor bug in the regression code). The code includes two scripts, calculateCalibAdjustment.m and applyCalibAdjustment.m. It also includes a small (real) dataset with some calibrations that are generally pretty good but can be improved by adjustment (in calib_data.mat) and some raw data that can be adjusted (in raw_data.mat). Adjustments are stored in calib_adjustments.mat. This code depends on robustfit.m, a function that is included in the statistics toolbox.

Our method is extremely simple. It takes as input gaze data from one of the two movies above, in both of which a target moves on a black background. Our code uses two independent robust regressions (a method for doing regression that down-weights outliers), one in the X plane and one in the Y plane. These regressions calculate the slope and intercept needed to best predict the location of the target on the basis of the participants' point of gaze. We regress only on the times when the target is stable, allowing a period of time for the participant to saccade to the target location.

[zip] Code corresponding to the Matlab scripts that we use to plot and correct calibrations.

We hope that if you use this code in your own work, you will cite the paper above (Frank, Vul, and Saxe, submitted). Please email mcfrank at stanford dot edu with questions or issues.