Ray trace optics model based on synthetic PSFs

Illustrate a ray trace calculation uses space-varying and wavelength dependent point spread functions. Sometimes these are generated by Zemax models, but they cal also be based on a synthetic ray trace data set.

The synthetic point spreads generated here are bivariate normals that increase from center to periphery.

See also: rtSynthetic

(c) Imageval Consulting LLC, 2012

Contents

ieInit

Create a test scene

scene = sceneCreate('point array',256);
% scene = sceneCreate('sweepfrequency',256); % An alternative

scene = sceneSet(scene,'h fov',4);
scene = sceneInterpolateW(scene,550:100:650);
ieAddObject(scene);
sceneWindow;

Build the optical image

oi = oiCreate;
rtOptics = []; spreadLimits = [1 5]; xyRatio = 1.6;
rtOptics = rtSynthetic(oi,rtOptics,spreadLimits,xyRatio);
oi = oiSet(oi,'optics',rtOptics);
oi = oiCompute(oi,scene);
oi = oiSet(oi,'name','Synthetic-RT-Increasing-Gaussian');
ieAddObject(oi); oiWindow;
Scene distance (1.20 m) does not match ray trace assumption (0.01 m)
Adjusting scene distance.
Geometric distortion ...
Pre-computing PSFs...Eccentricity bands: 0.000 (um)
Eccentricity bands: 50.000 (um)
Eccentricity bands: 100.000 (um)
Eccentricity bands: 150.000 (um)
PSF sample grid: 39 by 39
Done precomputing PSFs.
Applying PSFs.
4 eccentricity bands
Done applying PSFs.

Show the PSF

rtPlot(oi,'psf',550,0);
rtPlot(oi,'psf',550,1);