Skip to content
Nicolas Cottaris edited this page May 14, 2018 · 21 revisions

Introduction

The ISETBIO fixational eye movement model was implemented by Nicolas Cottaris, based on the published work from Engbert, Mergenthaler, Rucci and others cited at the end of this page. The fixational eye movement model comprises several components that each contribute to how the eye position is updated from time-step to time-step. These are illustrated in the flow diagram.

Fixational eye movement methods

The basic steps to create the eye movements are to create the fixational eye movement object and a cone mosaic.

The script t_fixationalEyeMovementsToIsomerizations illustrates how to calculate eye movements and plot the path on the cone mosaic. This code snippet produces the image below

% Create an oi sequence (an impulse)
sparams.fov = .4;
stimWeights = zeros(1, 50); stimWeights(2:4) = 1;
impulse = oisCreate('impulse', 'add', stimWeights, ...
    'sceneParameters', sparams);

% Create a hex cone mosaic
fovDegs = sparams.fov * 0.8;      % A little smaller than the stimulus
cm = coneMosaicHex(9,'fovDegs', fovDegs);
cm.integrationTime = 1e-3;        % Secs

% Calculate how many eye movements are needed for this oi sequence
eyeMovementsPerTrial = ...
   impulse.maxEyeMovementsNumGivenIntegrationTime(cm.integrationTime);

% Plot the eye movements overlaid on the cone mosaic
fixEM = fixationalEM();
fixEM.computeForConeMosaic(cm, eyeMovementsPerTrial, ...
    'nTrials', 1, ...
    'rSeed', 1);
emPlot(fixEM,'emMosaic','cone mosaic',cm,'visualized trial',1);

Notice that the coneMosaicHex has the S-cones absent in the center, but present just outside. Also, notice that the packing density starts to shift from center to periphery, as well.

Eye movements in a cone mosaic

This code makes a movie of a harmonic with eye movements, in this case for a rectangular cone mosaic. When the cone mosaic window comes up, use the pulldown menu to view the move.

% Here is a harmonic
hparams(2) = harmonicP;
hparams(2).freq = 6; hparams(2).GaborFlag = .2; 
hparams(1) = hparams(2); hparams(1).contrast = 0;
stimWeights = ieScale(fspecial('gaussian', [1, 50], 15), 0, 1);  % Time series weights
sparams.fov = 1;   % Scene field of view
ois = oisCreate('harmonic', 'blend', stimWeights, ...
    'testParameters', hparams, 'sceneParameters', sparams);

eyeMovementsPerTrial = ...
    ois.maxEyeMovementsNumGivenIntegrationTime(cm.integrationTime);

% Build the mosaic and show
cm.fov = sparams.fov * 0.6;      % A little smaller than the stimulus
cm.integrationTime = 1e-3;   % Secs;
cm.compute(ois, ...
    'emPaths', fixEM.emPos, ...
    'seed', 1, ...
    'currentFlag', false);
cm.window;

Implementation

The fixational eye movement object is complex with many parameters. Please visit the fixational eye movement page for more explanations. A few highlights here:

References

  1. Modeling the control of fixational eye movements with neurophysiological delays (2007).K Mergenthaler, R Engbert. Physical Review Letters 98 (13), 138104

  2. An integrated model of fixational eye movements and microsaccades (2011). R Engbert, K Mergenthaler, P Sinn, A Pikovsky Proceedings of the National Academy of Sciences 108 (39), E765-E770

  3. Precision of sustained fixation in trained and untrained observers (2012). C Cherici, X Kuang, M Poletti, M Rucci Journal of Vision 12 (6)

Clone this wiki locally