Wavefront optics toolbox: Difference between revisions

From Psych 221 Image Systems Engineering
Jump to navigation Jump to search
imported>Psych2012
imported>Psych2012
Line 31: Line 31:
where <math>\mathrm{circ}(r)</math> is 1 for <math>r\leq1</math> and 0 for <math>r>1</math> and <math>w</math> is the radius of the pupil.   
where <math>\mathrm{circ}(r)</math> is 1 for <math>r\leq1</math> and 0 for <math>r>1</math> and <math>w</math> is the radius of the pupil.   


[[File:Airy-3d.svg|thumb|[https://secure.wikimedia.org/wikipedia/en/wiki/Airy_disk Airy disk]]]
[[File:Airy-3d.png|thumb|[https://secure.wikimedia.org/wikipedia/en/wiki/Airy_disk Airy disk]]]


The Fourier transform of a circular pupil is the so-called Airy disk, given by <cite>[[Wavefront optics toolbox#References | [1]]]</cite>
The Fourier transform of a circular pupil is the so-called Airy disk, given by <cite>[[Wavefront optics toolbox#References | [1]]]</cite>

Revision as of 05:54, 19 March 2012

Back to Psych221-Projects-2012

We worked with the WavefrontOpticsToolbox, located in a SVN repository at https://platypus.psych.upenn.edu/repos/toolboxes/WavefrontOpticsToolbox/trunk. This toolbox models the optics of the human eye using scalar diffraction theory from Fourier optics. In particular, the aberrations of the human cornea, pupil, and lens, as well as the Stiles-Crawford effect from retinal cone cells, are modeled by the amplitude and phase of the eye's pupil function. This pupil function is then Fourier transformed to compute the eye's point spread function (PSF).

The project is split into two sections: 1) code clean-up and commenting and 2) the creation of a MATLAB tutorial to demonstrate some of the features of the toolbox.


Background

Ray optics, or geometric optics, is concerned with modeling how light rays travel through optical systems like that of our eyes. However, to fully consider the effects of small pupil size, as well as variations in the geometry and chromatic aberrations of the eye's lenses, wave optics and diffraction must be accounted for. Fourier optics, or scalar diffraction theory, cleanly handles effects such as wavefront aberrations, finite pupil size, and apodizing filtering, so we will first briefly give a background of Fourier optics. Next, we will discuss how wavefront aberrations are modeled, namely by the basis set of Zernike polynomials. Finally, we will describe the Stiles-Crawford effect, the physical cause of this effect, and how it is modeled.

Fourier optics

Huygens-Fresnel principle

Fourier optics is built upon the idea that the wave nature of light is modeled by the Huygens-Fresnel principle -- that every point on a wavefront of light is the source of new spherical waves. The summed interaction of these spherical waves at some observation plane determines what is observed at that plane. Here, it is assumed that the polarization of the electromagnetic field can be neglected, and instead, light can simply be modeled by a wavefunction that obeys the standard wave equation and represents electric or magnetic field. Hence, this is called scalar diffraction theory.

A direct result of this theory is that the diffraction effects of any imaging system can be modeled very cleanly by Fourier transforms. In fact the point spread function of an imaging system is given by [1]

h(u,v)=AλziP(x,y)exp{j2πλzi(ux+vy)}dxdy

where A is a constant amplitude, λ is the wavelength of monochromatic light, zi is the distance from the exit pupil to the imaging plane, P(x,y) is the pupil's complex transmittance function, (u,v) are image coordinates, and (x,y) are coordinates in the pupil plane. Thus, we can see that the PSF is just the Fraunhofer diffraction pattern, or Fourier transform, of the exit pupil. The intensity actually observed on the retina is |PSF|2.

The expression above has several consequences for modeling the PSF of the human eye. First, it handles monochromatic light, so in order to obtain the polychromatic PSF, the equation above must be computed for several (or many) wavelengths of light. Secondly, care must be taken to sample P(x,y) finely enough to avoid aliasing; the phase of this function must be slowly varying at the chosen sampling rate. In addition, care must be taken to pad P(x,y) with enough zero values to avoid "ringing" effects associated with the periodic boundary conditions of the discrete Fourier transform.

Diffraction-limited optical systems

The pupil function P(x,y) of a diffraction-limited optical system is simply given by [1]

P(x,y)=circ(x2+y2w)

where circ(r) is 1 for r1 and 0 for r>1 and w is the radius of the pupil.

Airy disk

The Fourier transform of a circular pupil is the so-called Airy disk, given by [1]

U(r)=exp(jkz)exp(jkr22z)Ajλz[2J1(kwr/z)kwr/z]

where k=2π/λ, z is the distance from the pupil to the retina, and J1 is a Bessel function of the first kind.

Wavefront aberrations and Zernike polynomials

text text text

Stiles-Crawford effect

text text text


Toolbox code clean-up

text text text

File:ExampleEmbedImg.jpg
Example embedded image

Subheading

text text text

Subsubheading

text text text

OIFk=n=13𝐱n𝐱¯n)|𝐱1T𝐱2|+|𝐱1T𝐱3|+|𝐱2T𝐱3|


Tutorial

text text text

Zernike polynomials

text text text

Stiles-Crawford effect

text text text

Human eye aberrations and correction using eyeglasses

text text text


Conclusions and future directions

text text text


References

  1. Goodman, J. W. (2005). Introduction to Fourier optics. 3rd ed. Englewood, Colo.: Roberts & Co.


Appendix I - Code and Data

Code

File:T Zernike.m

Data

Wavefront measurements of human eyes are part of the SVN repository. Wavefront optics toolbox


Appendix II - Work partition

Matthew Lew - Heavily edited wvfComputePupilFunction.m to remove unnecessary nested loops; removed sizeOfFieldPixels field of the wvf struct so that all parameters are defined in terms of physical dimensions, not pixels; constructed sections of tutorial dealing with SCE and vision correction with eyeglasses

Kevin Phuong - Constructed core of t_Zernike.m to demonstrate Zernike polynomials and their effect on PSFs; updated various functions of the toolbox to use wvfGet() and wvfSet().