Eye tracking has been used for over a century to study human behaviour and build insight into cognitive processes . Early 20th century eye trackers led to great insight but were large and invasive, and constrained studies to the confines of the laboratory [13, 35, 34]. In the second half of 20th century, the first generation of video-based head-mounted eye trackers paved the way for studying visual behaviour during everyday activities outside of the laboratory [31, 21].
Recent advances in head-mounted eye tracking and automated eye movement analysis point the way toward unobtrusive eye-based human-computer interfaces that are pervasively usable in everyday life. We call this new paradigm pervasive eye tracking –- continuous eye monitoring and analysis 24/7 . The ability to track and analyse eye movements anywhere and anytime will enable new research to develop and understand visual behaviour and eye-based interaction in daily life settings.
Commercially available head-mounted eye tracking systems are robust and provide useful features to customers in industry and research, such as for marketing studies, website analytics, or research studies [8, 9, 4, 2, 3]. However, commercial systems are expensive, therefore typically used by specialized user groups, and rely on closed source hardware and software. This limits the potential scale and application areas of eye tracking to expert users and inhibits user-driven development, customisation, and extension.
Do-it-yourself (DIY) open source software (OSS) eye trackers have emerged as low cost alternatives to commercial eye tracking systems using consumer digital camera sensors and open source computer vision software libraries[10, 22, 27, 23, 24, 25, 15, 32]. The DIY/OSS route enables users to rapidly develop and modify hardware and software based on experimental findings .
We argue that affordability does not necessarily align with accessibility. In this paper we define accessible eye tracking platforms to have the following qualities: open source components, modular hardware and software design, comprehensive documentation, user support, affordable price, and flexibility for future changes.
We have developed Pupil, a mobile eye tracking headset and an open source software framework, as an accessible, affordable, and extensible tool for pervasive eye tracking research. In this paper we will explain the design motivation of the system, provide an in depth technical description of both hardware and software, and provide an analysis of accuracy and performance of the system.
2 System Overview
Pupil is a wearable mobile eye tracking headset with one scene camera and one infrared (IR) spectrum eye camera for dark pupil detection. Both cameras connect to a laptop, desktop, or mobile computer platform via high speed USB 2.0. The camera video streams are read using Pupil Capture software for real-time pupil detection, gaze mapping, recording, and other functions.
3 System Design Objectives
In order to design accessible, affordable, and extensible head mounted eye tracking hardware, we made a series of strategic design decisions while satisfying a number of factors to balance ergonomic constraints with performance.
Pupil leverages the rapid development cycle and scaling effects of consumer electronics - USB cameras and consumer computing hardware - instead of using custom cameras and computing solutions.
Pupil headsets are fabricated using Selective Laser Sintering (SLS) instead of established fabrication methods like injection molding. This rapid fabrication process accommodates frequent design changes, comparable to the continuous development of Pupil software.
Modular design principles are employed in both hardware and software enabling modifications by users. Pupil software is open source and strives to build and support a community of eye tracking researchers and developers.
4 Pupil Headset Design and Hardware
Factors that critically influence the headset design are: mobility, modularity and customization, minimizing visual obstruction, accommodation of various facial geometries, minimization of headset movement due to slippage and deformation, minimizing weight, durability, and wear comfort.
The Pupil headset is made up of three modules: frame, scene camera mount, and eye camera mount.
The frame was designed on top of a 3D scan of a human head and was iteratively refined to accommodate physiological variations between users. We developed a novel design process where we apply specific forces to deform the headset using Finite Element Analysis (FEA) and then print the deformed geometry. This ensures that cameras align as designed when the headset is worn and results in a well fitting and lightweight (9g) frame.
The frame has two mount points, one for the eye camera mount and one for the scene camera mount. Cables from each camera are routed through the hollow arm of the frame. Variations of the frame for binocular eye tracking with four mount points have been made and are currently being tested by the Pupil user community. Variations of the frame without nose bridge support are available to accommodate users who wear prescription eyeglasses.
4.1.2 Camera Mounts
The scene camera mount and eye camera mount interface geometries are open source. By releasing the mount geometry we automatically document the interface, allowing users to develop their own mounts for cameras of their choice. All open source mounts are hosted in a Git repository (see links section).
The scene camera mount connects to the frame with a snap fit toothed ratcheting system system that allows for radial adjustment within the users vertical field of vision (FOV) along a transverse axis within a 90 degree range, allowing the scene camera to be adjusted for specific tasks and users.
The eye camera mount is an articulated adjustable arm accommodating variations in users eyes and face geometries. The camera mount attaches to the frame along a snap fit sliding joint. The eye camera orbits on a ball joint that can be fixed by tightening a single screw.
Pupil uses USB interface digital cameras that comply with the UVC standard. Other UVC compliant cameras can be used with the system as desired by the user. The Pupil headset can be used with other software that supports the UVC interface. Pupil can be easily extended to use two eye cameras for binocular setups and more scene cameras as desired.
4.2.1 Eye Camera
We use a small and lightweight eye camera to reduce the amount of visual obstruction for the user and keep the headset lightweight. The current eye camera package size for Pupil Pro is 10x45x7 mm. The eye camera can capture at a maximum resolution of 800x600 pixels at 30Hz. Using an IR mirror (“hot mirror”) was considered as a strategy to further reduce visual obstruction and conceal cameras but was ultimately dismissed as it would introduce more degrees of freedom in the setup that could negatively affect performance, ergonomics, and modularity. Furthermore, hot mirror setups are susceptible to failure in environments with high amounts of IR light (like sunlight).
Pupil uses the “dark pupil” detection method (see Pupil Detection Algorithm Overview). This requires the eye camera to capture video within a specific range of the IR spectrum. The eye camera uses an IR bandpass filter and a surface mounted IR LED at 860nm wavelength to illuminate the user’s eye.
4.2.2 Scene Camera
The scene camera is mounted above the user’s eye aligning the scene camera optics with the user’s eye along a sagittal plane. The scene camera faces outwards to capture a video stream of a portion of the user’s FOV at 30Hz. The scene camera lens has a 90 degree diagonal FOV. The scene camera is not only high resolution (max resolution 1920x1080 pixels), but also uses a high quality image sensor. This is very advantageous for further computer vision and related tasks performed in software.
4.3 Computing Device
The Pupil eye tracking system works in conjunction with standard multipurpose computers: laptop, desktop, or tablet. Designing for user supplied recording and processing hardware introduces a source for compatibility issues and requires more setup effort for both users and developers. However, enabling the user to pair the headset with their own computing platform makes Pupil a multipurpose eye tracking and analysis tool. Pupil is deployable for lightweight mobile use as well as more specialized applications like: streaming over networks, geotagging, multi-user synchronization; and computationally intensive applications like real time 3D reconstruction and localization.
5 Pupil Software
Pupil software is open source code (CC-BY-NC-SA License) written to be readable, extendable, robust and efficient. Pupil software is divided into two main parts, Pupil Capture and Pupil Player. Pupil Capture runs in real-time to capture and process images from the two (or more) camera video streams. Pupil Player is used to playback and visualize video and gaze data recorded with Pupil Capture. Source code is written mostly in Python  and modules are written in C where speed is a concern. Pupil software and can be run from source on Linux, MacOS (10.8 or higher), and Windows or executed as a bundled double click application on Linux and MacOS.
5.1 Key Functional Components Overview
This section provides an overview of key functions of Pupil Capture Software.
5.1.1 Pupil Detection Algorithm
The pupil detection algorithm locates the dark pupil in the IR illuminated eye camera image. The algorithm does not depend on the corneal reflection, and works with users who wear contact lenses and eyeglasses. The pupil detection algorithm is under constant improvement based on feedback collected through user submitted eye camera videos. Here we provide a description of our default pupil detection algorithm.
The eye camera image is converted to grayscale. The initial region estimation of the pupil is found via the strongest response for a center-surround feature as proposed by Swirski et al.  within the image (See Figure: 4.)
Detect edges using Canny  to find contours in eye image. Filter edges based on neighboring pixel intensity. Look for darker areas (blue region). Dark is specified using a user set offset of the lowest spike in the histogram of pixel intensities in the eye image. Filter remaining edges to exclude those stemming from spectral reflections (yellow region). Remaining edges are extracted into into contours using connected components . Contours are filtered and split into sub-contours based on criteria of curvature continuity. Candidate pupil ellipses are formed using ellipse fitting  onto a subset of the contours looking for good fits in a least square sense, major radii within a user defined range, and a few additional criteria. An augmented combinatorial search looks for contours that can be added as support to the candidate ellipses. The results are evaluated based on the ellipse fit of the supporting edges and the ratio of supporting edge length and ellipse circumference (using Ramanujan’s second approximation ). We call this ratio “confidence”. If the best result’s confidence is above a threshold the algorithm reports this candidate ellipse as the ellipse defining the contour of the pupil. Otherwise the algorithm reports that no pupil was found.
Figure 6 shows a performance comparison between Pupil’s pupil detection algorithm, the stock algorithm proposed by Swirski et al., the ITU gaze tracker and Starburst on the benchmark dataset by Swirski et al. . As error measure we used the Hausdorff distance between the detected and hand-labeled pupil ellipses . We additionally conducted a test excluding the dataset p1-right, that contains eye images recorded at the most extreme angles, as those do not occur using Pupil hardware. As can be seen from the Figure, Pupil without p1-right compares favourably to all other approaches. With an error threshold of 2 pixels Pupil achieves a detection rate of 80%; at 5 pixels error detection rate increases to 90%.
5.1.2 Gaze Mapping
Mapping pupil positions from eye to scene space is implemented with a transfer function consisting of two bivariate polynomials of adjustable degree. The user specific polynomial parameters are obtained by running one of the calibration routines:
Screen Marker Calibration - 9 Point animated calibration method.
Manual Marker Calibration - Uses a concentric circle marker that can be moved freely within a user’s FOV. One marker pattern is used to collect samples for calibration, another marker pattern is used to stop the calibration process.
Natural Features Calibration - Uses natural features within the scene. Features are defined by clicking on a salient point within the world window. Features are tracked using optical flow.
Camera Intrinsic Calibration - Used to calculate camera intrinsics with an 11x7 asymmetric circle grid pattern.
Calibration and mapping functions are abstracted and the underlying models can easily be modified and replaced if needed.
5.1.3 Surface Detection
Pupil Capture can detect planar reference surfaces in the scene using a set of 64 markers. Gaze positions are then mapped into the reference surface coordinate system using homographic transformations between the scene camera plane and reference surface plane. See a video demonstration of planar reference in links.
Pupil Capture can record the scene and eye videos, associated frame timestamps, detected pupil and gaze position data, and additional user activated plugin data.
|gaze x||gaze y||pupil x||pupil y||timestamp||confidence|
Pupil Capture can send real-time gaze and pupil information as well as plugin generated data via ZMQ to other applications and network enabled devices.
5.2 Pupil Capture Implementation
Each process has the ability to launch plugins. Even a standard feature, like recording a video, is abstracted as a plugin. This level of abstraction and modularity allows for users to develop their own tools even for low level functionality. Plugins are loaded automatically and are accessible through the graphical user interface (GUI).
5.2.1 World Window
The world window can be considered the main control window in the Pupil Capture environment. The world window displays the video stream from the scene camera, camera controls for the scene camera, and launches plugins like calibration or recording (see plugins section for more detail).
5.2.2 Eye Window
The eye window displays the video stream from the eye camera, camera controls for the eye camera, and launches plugins for pupil detection and visualization of pupil detection algorithms.
5.2.3 Plugin Structure
In Pupil Capture plugins can be launched in either world or eye processes. The number of plugins that can be created is limitless and much of the functionality of the eye and world processes has been abstracted as plugins. The modular structure makes it easy to for users to test out different methods at runtime and for developers to extend software without breaking existing functionality. Plugins have the ability to create their own GUI within the process window, access to shared memory like gaze data, and even the capacity spawn their own windows.
6 Performance Evaluation
6.1 Spatial Accuracy and Precision
As performance metrics for spatial accuracy and precision of the system we employ the metrics defined in COGAIN Eye tracker accuracy terms and definitions 
“Accuracy is calculated as the average angular offset (distance) (in degrees of visual angle) between fixations locations and the corresponding locations of the fixation targets.”
“Precision is calculated as the Root Mean Square (RMS) of the angular distance (in degrees of visual angle) between successive samples to
xi, yi to xi+1,yi+1.”
It is important to note that the test is done in an indoor environment with no direct sunlight exposure. Pupil detection performance in an IR intense environment is more challenging and needs to be evaluated separately. The authors believe that perfect detection in IR intense environments remains an unsolved problem of IR-based pupil-detection.
Our accuracy and precision test data was obtained by the following procedure:
A subject wearing the Pupil Pro eye tracker sits approximately 0.5m away from a 27 inch computer monitor. The eye tracker is calibrated using the standard 9 point screen marker based calibration routine running in full screen mode. After calibration the subject is asked to fixate on a marker on the monitor. The marker samples 10 random sites for 1.5 seconds and then revisits each of the 9 calibration sites. While the marker is displayed gaze samples and the position of the marker detected in the scene camera via software are collected. The data is then correlated into gaze point and marker point pairs based on minimal temporal distance.
Gaze point marker point pairs with a spatial distance of more than 5 degrees angular distance are discarded as outliers as they do not correlate to system error but human error (no fixation, blink).
Accuracy and precision are then calculated in scene camera pixel space and converted into degrees of visual angle based on camera intrinsics. For this particular test we used a scene camera with 90 degrees (diagonal) field of view and 1280x720 pixel resolution. This results in a ratio of 16.32 pixels per degree of visual angle.
This procedure was repeated with eight different subjects to reflect a more diverse pool of physiologies. The test was conducted with a Pupil Pro eye tracker revision 021. The test used Pupil Capture software, version 0.3.8 running on Mac OS. The test routine is part of Pupil Capture releases, starting with version 0.3.8 and available to all users.
6.1.1 Error Sources
The accuracy and precision test expose the gaze estimation error. It is composed of a set of individual error sources. Individual attribution is not in the scope of this test. (authors estimates in italic)
Oculomotor noise (tremor, microsaccades, drift) 
Subject human error during test (not looking at the marker, blinks) most filtered out by 5 deg rule
Limitations of human fixation accuracy (0.5deg)  in light of the achived accuracy this should be regarded as a major factor
Movement and deformation of the headset resulting in changes of camera positions relative to the eye post calibration. can be disregarded in this test
Image noise in the sensor, interpolation and compression artifacts.disregarded if assumed to be Gaussian this would show in precision being worse
Pupil detection error by the algorithm. See algorithm evaluation
Gaze Mapping error based on shortcomings of the mapping model we believe this to be a factor
Gaze Mapping error based on suboptimal fitting parameters from flawed calibration procedure design. a factor
Gaze Mapping error based on suboptimal fitting parameters obtained from flawed calibration procedure execution. small
Parallax error due to change of distance between subject of gaze target. Can be a big factor in real world applications but can be disregarded in the test scenario
Error in test reference data from suboptimal center detection of the marker. can be disregarded - detection is based on many redundant pixels and very robust and accurate
Error in the test reference data from temporal discrepancy of the sample pair. Since we have little movement in head and marker during collection of sample we can disregard this.
Conversion error based on flawed camera intrinsics data. can be disregarded
Under ideal conditions we get 0.6 deg of accuracy.
Precision is at 0.08 deg.
6.2 Temporal Accuracy, Latency and Precision
A second critical aspect are the temporal characteristics of the pupil eye tracking system.
6.2.1 Stream Synchronization
Timestamping is crucial for stream stream synchronization because data is obtained from two independent free running video sources. Additionally timestamps are used for correlation with additional external experiment or sensor data. Thus we strive to obtain a timestamp that is closest to the timepoint of data collection (in our case camera sensor exposure).
Pupil capture has two image timestamp implementations:
When the imaging camera is known to produce valid hardware timestamps, Pupil Capture uses these hardware image timestamps. These timestamps have high precision and accuracy as they are taken at the beginning of sensor exposure by the camera and transmitted along with the image data. The hardware timestamp accuracy exceeds our measurement capabilities.
The variation of exposure times (jitter) reported by the hardware timestamps we measure by calculating the standard deviation of 1400 successively take frame times. It is 0.0004s for the world camera and 0.0001s for the eye camera.
Currently hardware timestamping is implemented in the Linux version of Pupil Capture and supported by both cameras of the Pupil Pro headset revision 020 and up.
When Pupil Capture runs on an OS without timestamp video driver support or does not recognize the attached cameras as verified hardware timestamp sources, Pupil Capture uses software timestamps as a fallback. The image frame timestamp is then taken when the driver makes the image frame available to the software.
Software timestamps are by nature of worse accuracy and precision, as they is taken after exposure, readout, image transfer, and decompression of the image on the host side. These steps take an indeterministic amount of time, which makes it impossible to accurately estimate time of exposure. Accuracy and precision depend on the camera and video capture driver.
Taking hardware timestamps as ground truth we measured a software timestamp offset of +0.119s (world) and +0.038s (eye) with a standard deviation of 0.003 (world) and 0.002s (eye) on a Linux OS test machine. These results clearly underline that hardware timestamps should always be used when temporal accuracy and precision are required.
6.2.2 System Latency
For real-time applications the full latency of Pupil hardware and software is of great concern. We obtain processing times of functional groups in the Pupil hardware and software pipeline by calculating the time between sensor exposure and key points in the workflow. These temporal factors in signal delay are presented in Figure 9. All measurement were taken using Pupil Pro headset rev022 connected to a Lenovo X201 laptop running Ubuntu 12.04.
It should be noted that in real-time applications synchronicity of data is sacrificed for recency of data. The eye process pipeline is about 1/3 the latency of the world process pipeline. Therefore, we choose to broadcast the eye information as soon as it becomes available instead of waiting for the temporally closest scene image to become available.
Using the most recent data only makes sense for real-time applications. No sacrifices are made for any after-the-fact correlation of data employed by calibration, testing, or playback of recorded data. Furthermore, this approach does not prevent the user from obtaining accurate temporal correlation in real-time or after-the-fact applications.
With this approach we can characterize the system latency for the eye pipeline, world pipeline separately:
Total latency of the eye processing pipeline from start of sensor exposure to availability of pupil position: 0.045s (measured across 1400 samples with a standard deviation of 0.003sec)
Total latency of the world pipeline including the eye measurement from start of sensor exposure to broadcast of pupil, gaze, and reference surface data via network: 0.124 sec (measured across 1200 samples with a standard deviation of 0.005 sec)
6.3 Minimum Hardware Requirements
The Pupil eye tracking system works with a traditional multipurpose computer - laptop, desktop, or tablet. It is therefore important to determine the minimum hardware specifications required to run Pupil Capture software in real-time. We tested the performance using a 11 inch Macbook Air (2010 model) with 2gb or RAM and an Intel Core2Duo SU9400 dual core CPU. The software version used was Pupil Capture v0.3.8. The OS used on the machine specified above was Ubuntu 13.10.
Our performance test demonstrates that the system’s dual CPU load never went above 90 percent, using the above hardware running Pupil Capture in recording mode, pupil detection at 30 fps and the world camera capture at 24 fps.
The hardware setup was selected because it represents a portable computing platform with limited computing power compared to most contemporary consumer multipurpose computers. Any computer with a Intel “i” series processor or equivalent will have sufficient CPU resources, when comparing CPU benchmarks.
Pupil Capture relies on several libraries to do video decompression/compression, image analysis, and display with platform specific implementations and efficiencies. Therefore, our test using a Linux distribution can not be generalized to Windows or MacOS. We found that requirements were similar for MacOS 10.8 and above. We did not establish Windows hardware requirements at the time of writing.
In order to further advance in eye tracking and to support the pervasive eye tracking paradigm, we will require accessible, affordable, and extensible eye tracking tools. We have developed Pupil as a contribution to the eye tracking research community. Pupil is already used in a wide range of disciplines and has developed a community of researchers and developers. Current limitations to the system are parallax error and tracking robustness in IR rich environments. Both Pupil software and hardware are under active development. Future developments will focus on hardware and software in parallel. The next big steps planned for Pupil are to improve mobility, implement real-time pose tracking and scene mapping, simplify user experience, and improve pupil tracking.
Pupil mobile eye tracking headset: http://pupil-labs.com/pupil
Pupil open source code repository: http://github.com/pupil-labs/pupil
Pupil Capture and Pupil Player software application bundles: https://github.com/pupil-labs/pupil/releases
Pupil User Guide: https://github.com/pupil-labs/pupil/wiki/User-Guide
Pupil Developer Guide: https://github.com/pupil-labs/pupil/wiki/Developer-Guide
Pupil user group forum: http://groups.google.com/forum/#!forum/pupil-discuss
Pupil Labs blog: http://pupil-labs.com/blog
Pupil open source headset mount repository https://code.google.com/p/pupil/source/browse/?repo=hardware
Video demonstration - Planar reference surface tracking: http://youtu.be/bmqDGE6a9kc
-  Anttweakbar. Available at: anttweakbar.sourceforge.net/doc/tools:anttweakbar.
-  Arrington Research Head Mounted Eye Trackers. Available at: http://www.arringtonresearch.com/scenetechinfo.html.
-  ASL Mobile Eye XG System. Available at: http://www.asleyetracking.com/site/Portals/0/Subpages/documents/Mobile%20Eye-XG%20Brochure.pdf.
-  Ergoneers Dikablis. Available at: http://www.ergoneers.com/hardware/eye-tracking-2/#HW-Eye-Tracking-HM.
-  FFmpeg. Available at: http://ffmpeg.org.
-  Glfw. Available at http://glfw.org.
-  Python software foundation, python language reference, v2.7. Availbale at: https://www.python.org/.
-  SMI Eye Tracking Glasses 2.0. http://www.eyetracking-glasses.com/fileadmin/user_upload/documents/smi_etg20_flyer.pdf.
-  Tobii Glasses. Available at: http://www.tobii.com/Global/Analysis/Downloads/Product_Descriptions/Tobii_Glasses_Product_Description.pdf.
-  Babcock, J. S., and Pelz, J. B. Building a lightweight eyetracking headgear. In Proceedings of the 2004 symposium on Eye tracking research & applications, ACM (2004), 109–114.
-  Bradski, G. Dr. Dobb’s Journal of Software Tools.
-  Bulling, A., and Gellersen, H. Toward Mobile Eye-Based Human-Computer Interaction. IEEE Pervasive Computing 9, 4 (2010), 8–12.
-  Buswell, G. T. How people look at pictures. University of Chicago Press Chicago, 1935.
-  Canny, J. A computational approach to edge detection. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 6 (1986), 679–698.
-  Ferhat, O., Vilariño, F., and Sánchez, F. J. A cheap portable eye-tracker solution for common setups. Journal of Eye Movement Research 7, 3 (2014), 2:1–10.
-  Fitzgibbon, A. W., Fisher, R. B., et al. A buyer’s guide to conic fitting. DAI Research paper (1996).
-  Global, T. Accuracy and precision test method for remote eye trackers, 2011.
-  Hardy, G., Seshu Aiyar, P., and Wilson, B. Collected papers of srinivasa ramanujan. Cambridge, London (1927).
-  Hintjens, P. ZeroMQ: Messaging for Many Applications. O’Reilly Media, Inc., 2013.
-  Jones, E., Oliphant, T., Peterson, P., et al. SciPy: Open source scientific tools for Python, 2001–. Available at: http://www.scipy.org/.
-  Land, M., Mennie, N., Rusted, J., et al. The roles of vision and eye movements in the control of activities of daily living. PERCEPTION-LONDON- 28, 11 (1999), 1311–1328.
-  Li, D., Babcock, J., and Parkhurst, D. J. openeyes: a low-cost head-mounted eye-tracking solution. In Proceedings of the 2006 symposium on Eye tracking research & applications, ACM (2006), 95–100.
-  Lukander, K., Jagadeesan, S., Chi, H., and Müller, K. Omg!: A new robust, wearable and affordable open source mobile gaze tracker. In Proceedings of the 15th international conference on Human-computer interaction with mobile devices and services, ACM (2013), 408–411.
-  Mantiuk, R., Kowalik, M., Nowosielski, A., and Bazyluk, B. Do-it-yourself eye tracker: Low-cost pupil-based eye tracker for computer graphics applications. In Advances in Multimedia Modeling. Springer, 2012, 115–125.
-  Mardanbegi, D. Haytham gaze tracker: Diy hardware and open source software, March 2013.
-  Mulvey, F. Woking copy of definitions and terminology for eye tracker accuracy and precision, 2010.
-  Ryan, W. J., Duchowski, A. T., and Birchfield, S. T. Limbus/pupil switching for wearable eye tracking under variable lighting conditions. In Proceedings of the 2008 symposium on Eye tracking research & applications, ACM (2008), 61–64.
-  Solso, R. L. Cognition and the visual arts. MIT press, 1996.
-  Suzuki, S., et al. Topological structural analysis of digitized binary images by border following. Computer Vision, Graphics, and Image Processing 30, 1 (1985), 32–46.
-  Świrski, L., Bulling, A., and Dodgson, N. Robust real-time pupil tracking in highly off-axis images. In Proceedings of the Symposium on Eye Tracking Research and Applications, ACM (2012), 173–176.
-  Thomas, E. L. Movements of the Eye. Scientific American 219, 2 (1968), 88–95.
-  Topal, C., Gerek, O. N., and Doǧan, A. A head-mounted sensor-based eye tracking device: Eye touch system. In Proceedings of the 2008 Symposium on Eye Tracking Research & Applications, ETRA ’08, ACM (New York, NY, USA, 2008), 87–90.
-  Wade, N., and Tatler, B. W. The moving tablet of the eye: The origins of modern eye movement research. Oxford University Press, 2005.
-  Wade, N. J., et al. Pioneers of eye movement research. i-Perception 1, 2 (2009), 33–68.
-  Yarbus, A. L. Eye movements during perception of complex objects. Springer, 1967.