๐ก๐ญ๐คฟ Point Spread Functionsยถ
The point spread function (PSF) of a diffraction-limited telescope is (something like) the 2D Fourier Transform of its aperture. That's a big and complicated statement, but here we have a few tools to help play around with how differently shaped telescope apertures translate into different images they might produce.
from astr3510 import psfs
import astropy.units as u
Let's simulate the PSF of JWST, using a (very approximate) image of what its aperture looks like.
a = psfs.JWST(wavelength=5*u.micron)
a.imshow_aperture_and_psf()
The PSF looks very different in linear and logarithmic scalings, so it can be helpful to view it in both.
a.display_psf()
Let's make a custom telescope, and see what its point spread function looks like.
a = psfs.ObscuredCircleAperture(diameter=8*u.m, obscuration_diameter=4*u.m, spiders=5, spider_width=10*u.cm)
a.imshow_aperture_and_psf()
Let's see how the same telescope design gives different PSFs at different wavelengths. (Look carefully at the axis labels!)
a = psfs.CircleAperture(diameter=1*u.m, wavelength=0.5*u.micron)
a.imshow_aperture_and_psf(zoom=10)
a = psfs.CircleAperture(diameter=1*u.m, wavelength=50*u.micron)
a.imshow_aperture_and_psf(zoom=10)
Let's see what a PSF looks like with a Bahtinov mask in front of the telescope's aperture.
a = psfs.BahtinovAperture(diameter=0.5*u.m, wavelength=0.7*u.micron)
a.imshow_aperture_and_psf()
Let's make our own custom telescope image.
a = psfs.BitmapAperture()
a.make_aperture('hedgehog.jpg')
a.imshow_aperture_and_psf(zoom=10)