# Adaptive optics data for the human point spread function

s_wvfThibosModel

Using adaptive optics, a group led by Thibos collected many different wavefronts in the human eye for a range of pupil sizes. The data are summarized using a simple statistical model of the Zernicke polynomial coefficients. The data were published in

"Retinal Image Quality for Virtual Eyes Generated by a Statistical Model of Ocular Wavefront Aberrations" published in Ophthalmological and Physiological Optics (2009). Thibos, Ophthalmic & Physiological Optics. http://onlinelibrary.wiley.com/doi/10.1111/j.1475-1313.2009.00662.x/full

The data and a sample program are onlineat the bottom of the online article in Supporting Information.

We retrieved the data and implemented a version of the calculations in the Wavefront toolbox. This script calculates the PSF for example subjects.

See also: VirtualEyesDemo and wvfLoadHuman

Copyright Wavefront Toolbox Team, 2012

## Contents

## Initialize ISET

Set the largest size in microns for plotting Set the pupil diameter in millimeters

s_initISET maxUM = 40; pupilMM = 4.5;

ISET 4, Matlab 7.13 ------------------ Copyright ImagEval Consulting, LLC, 2003-2012 Session iset-20120520T232050 -------------- No Scenes. No optical images. No Sensors. No Processed images. White point for Scene/OI rendering set to ep

## Load the statistical wavefront properties

The Zernike coefficients describing the wavefront aberrations are each distributed as a Gaussian. There is some covariance between these coefficients. The covariance is summarized in the variable S. The mean values across a large sample of eyes measured by Thibos and gang are in the variable sample_mean.

[sample_mean S] = wvfLoadHuman(pupilMM);

## Plot the means and covariance (not)

vcNewGraphWin([],'tall'); subplot(3,1,1) plot(sample_mean,'--o'); grid on xlabel('Zernike polynomial number') ylabel('Coefficient value') title('Mean coefficient'); subplot(3,1,2) imagesc(S); axis image, colormap(hot); colorbar title('Coefficient covariance') % Calculate sample eyes using the multivariate normal distribution Each % column of Zcoeffs is an example person. Each row of R is a vector of % Zernike coeffs N = 10; Zcoeffs = ieMvnrnd(sample_mean,S,N)'; % Plot the random examples of coefficients subplot(3,1,3) plot(Zcoeffs); grid on xlabel('Zernike polynomial number') ylabel('Coefficient value') title('Example coefficients')

## Examine a single PSF for the subject at the sample mean

% Allocate space and fill in the lower order Zernicke coefficients z = zeros(65,1); z(1:13) = sample_mean(1:13); % Create the example subject thisGuy = wvfCreate; % Initialize thisGuy = wvfSet(thisGuy,'zcoeffs',z); % Zernike thisGuy = wvfSet(thisGuy,'measured pupil',pupilMM); % Data thisGuy = wvfSet(thisGuy,'calculated pupil',pupilMM); % What we calculate thisGuy = wvfSet(thisGuy,'measured wl',550); thisGuy = wvfSet(thisGuy,'wavelength',[450 100 3]); % SToWls format thisGuy = wvfComputePSF(thisGuy);

## Plot the PSFs of the sample mean subject for several wavelengths

These illustrate the strong axial chromatic aberration.

wave = wvfGet(thisGuy,'wave'); nWave = wvfGet(thisGuy,'nwave'); vcNewGraphWin([],'tall'); for ii=1:nWave subplot(nWave,1,ii) wvfPlot(thisGuy,'image psf space','um',ii,maxUM); title(sprintf('%d nm',wave(ii))); end

## Calculate the PSFs from the coeffcients

Here we illustrate the variance between different subjects.

% Choose example subjects whichSubjects = 1:3:N; nSubjects = length(whichSubjects); z = zeros(65,1); % Allocate space for the Zernicke coefficients % Create the example subject thisGuy = wvfCreate; % Initialize thisGuy = wvfSet(thisGuy,'measuredpupil',pupilMM); % Data thisGuy = wvfSet(thisGuy,'calculatedpupil',pupilMM);% What we calculate vcNewGraphWin([],'tall'); for ii = 1:nSubjects % Choose different coefficients and compute for each subject z(1:13) = Zcoeffs(1:13,whichSubjects(ii)); thisGuy = wvfSet(thisGuy,'zcoeffs',z); % Zernike thisGuy = wvfComputePSF(thisGuy); subplot(nSubjects,1,ii) wvfPlot(thisGuy,'image psf space','um',1,maxUM); title(sprintf('Subject %d\n',ii)) end