A toolbox for working with FITS images in the context of high contrast / direct imaging.
Built on top of FITSIO and the Images ecosystem, this package also bundles convenient tools for loading and manipulating astronomical images and datacubes.
The main data type is a fork of Tim Holy's ImageMetadata adapted to work with the FITS format common in astronomy.
This package is not in the General registery, but a personal registry for this and related packages. You can add it as follows:
] to enter Pkg mode)
pkg> registry add https://github.com/sefffal/DirectRegistry pkg> add DirectImages
- easily reading and writing FITS images/cubes/etc
- easily access and set FITS headers and comments
- keep track of physical coordinates using OffsetArrays behind the scenes
- contrast measurements
- send data to SAO DS9 for viewing and manipulation
- display data using Plots with reasonable scale limits based +/- standard deviations
- Plots.jl recipe
- contrast measurements for High Contrast Imaging
- image registration
- other image quality metrics, including estimating Strehl
# Load an image img = readfits("M32.fits.gz") # Get or set headers as properties of the image. img.DATE_OBS = "2020-01-01" # Or use indexing img[:DATE_OBS] = "2020-01-01" img[:DATE_OBS,/] = "The date the observations were taken" # Get list of headers for key in propertnames(img) println(img[key]) end # Use offset indices to keep track of image positions img[-10,10] == 1.2 writefits("out.fits", img)
Measure the one-sigma contrast:
cont = contrast(centered(img))
As a linear interpolation function
cont_itp = contrast_interp(centered(img))
using Plots plot(image) # Works if you have a DirectImage imshow(image) # Works with any abstract array title!("my image")
Or without using Plots:
imshow2(image) imshow2(image, cmap=:magma) imshow2(image, cmap=:magma, clims=(0,10))
This will display as a PNG which is less flexible than a Plots heatmap, but much quicker.
imshow applies τ=7 (you can override with
the full colorscale.
skyconvention=true to preserve the image, but flip the horizontal axis
so that the coordinates match RA offset. Useful when combining with DirectOrbits.jl.
Sending to SAO DS9
DS9 must be installed in the usual location on your system.
# Open a frame or cube ds9show(image) # Open multiple frames or cube ds9show(image1, image2, lock=true) # Lock locks most frame properties (true by default) # Same as above ds9show(images_vector, lock=true)
ds9show with multiple images opens them in the same window. Calling
ds9show separate times will launch new windows for each. Currently, on MacOS frames are always sent to the open window, whereas on Windows and Linux, a new window is created for each call to