Ensemble of functions aimed to compensate for the mouse eye motions

interpolate_screen_pos[source]

interpolate_screen_pos(screen_pos, xnew, ynew, kind='linear')

Interpolate the position of the xnew and ynew pixels from the original screen_pos. interpolate_checker_pos should be used instead as it's more user friendly. params:

- screen_pos: Screen positions in shape (17, 10, 2) obtained from calibration (from 80x80 pixel checker corners on a 1280x720px screen)
- xnew: New pixels indexes in x, in interval [0, 17[
- ynew: New pixels indexes in y, in interval [0, 10[

return:

- Screen positions in shape (len(xnew),len(ynew), 2)

interpolate_checker_pos[source]

interpolate_checker_pos(screen_pos, width_box, height_box, kind='linear')

Interpolate the centre of the checkerboard pixels from the screen calibrated position. params:

- screen_pos: Screen positions in shape (17, 10, 2) obtained from calibration (from 80x80 pixel checker corners on a 1280x720px screen)
- width_box: Width in pixel of a box
- height_box: Height in pixel of a box
- kind: kind of interpolation in {'linear', 'cubic', 'quintic'}

split_eye_events[source]

split_eye_events(eye_tracking, eps=2)

Split the record where the eye moves. Detection done with clustering on X,Y and time of the eye position.

params:

- eye_tracking: Eye traking array of the ellipse fit, in shape (t, (x,y,width,height,angle))
- eps: Distance to detect eye movements. Adjust this parameter if results are not satisfying
- kind: kind of interpolation in {'linear', 'cubic', 'quintic'}

return:

- move_indexes, blink_indexes, noise_indexes

get_spherical_map[source]

get_spherical_map(screen_pos, input_res=(281, 500), output_res=(360, 640), k_side=2, filling_pol='nonzero')

Generate the mapping from normal image to an image projected on a spherical screen params:

- screen_pos: Screen positions in shape (17, 10, (elev, azim)) obtained from calibration (from 80x80 pixel checker corners on a 1280x720px screen)
- input_res: resolution of the input image
- output_res: resolution of the output image
- k_side: Kernel side's size to fill holes in the mapped image (2 -> 5*5 kernel)
- filling_pol: Filling policy for the empty values, to which `f_fill` of [`apply_spherical_map`](/theonerig/eyetrack.html#apply_spherical_map) will be applied
    nonzero: indexes of all nonzero elements
    closest: index of the closest nonzero element

returns:

- A mapping to be used in [`apply_spherical_map`](/theonerig/eyetrack.html#apply_spherical_map)

apply_spherical_map[source]

apply_spherical_map(img_src, mapping, output_res=(360, 640), f_fill=mean)

Apply a mapping to an input image params:

- img_src: Source image to transform
- mapping: Mapping obtained from [`get_spherical_map`](/theonerig/eyetrack.html#get_spherical_map)
- output_res: Output resolution. Must match the parameter given to [`get_spherical_map`](/theonerig/eyetrack.html#get_spherical_map)
- f_fill: Function to apply when filling the holes (e.g. np.median, np.mean)

return:

- The transformed image