Registration and coaddition - EranOfek/AstroPack GitHub Wiki
Image registration and coaddition are essential for creating deep images, and reference images. The registration of images can be done using various methods. For example, by using the images WCS, cross-correlating images, or finding transformations between star catalogs in pixel units.
After the images are registered we can coadd the images in order to increase the S/N, compared with the individual images. In the most general case, image coaddition may contain the following steps.
- Subtracting the background from individual images.
- Estimating the background variance.
- Estimating the transmission (i.e., zero point of each image),
- Coadd the images with weights, and possible robust statistics (e.g., sigma-clipping).
A significant issue when coadding astronomical images is that many times, different images have different Point Spread Function (PSF). Therefore, some methods can take the variable PSF into account (i.e., Zackay and Ofek 2017a, Zackay and Ofek 2017b).
Here, we assume that we have a set of images stored in an AstroImage object, and these images have a WCS astrometric solution in their headers.
% populate the WCS - This step can be skipped if the WCS property is populated.
% This step take the WCS infornation in the header and copy it to an AstroWCS object in the WCS property:
AI.populateWCS;
% Register the images against a reference image in the first element of AI(1):
% Note that we are using CreateNewObj=true, in order not to destroy the content of AI:
RegisteredAI = imProc.transIm.imwarp(AI, AI(1), 'CreateNewObj',true);
In many cases, you may be interested in removing the background from the images prior to coaddition: If the Back property is empty in the AstroImage, start by populating it (see also imProc.background):
AI.subtractBackground;
Note that, if the Back property is not populated, then the last command will populate it using the imProc.background.background function.
Finally, we can coadd the images:
[Result] = imProc.stack.coadd(RegisteredAI);
The last function has many arguments that can be used to select a coaddition operator (e.g., sigmaclip, median, etc.), and various weights. However, proper image coaddition is performed using different functions (see below).