Source code for csxtools.fastccd.images
import numpy as np
from ..ext import fastccd
import time as ttime
import logging
logger = logging.getLogger(__name__)
[docs]def correct_images(images, dark=None, flat=None, gain=(1, 4, 8)):
"""Subtract backgrond and gain correct images
This routine subtrtacts the backgrond and corrects the images
for the multigain FastCCD ADC.
Parameters
----------
in : array_like
Input array of images to correct of shape (N, y, x) where N is the
number of images and x and y are the image size.
dark : array_like, optional
Input array of dark images. This should be of shape (3, y, x).
dark[0] is the gain 8 (most sensitive setting) dark image with
dark[2] being the gain 1 (least sensitive) dark image.
flat : array_like, optional
Input array for the flatfield correction. This should be of shape
(y, x)
gain : tuple, optional
These are the gain multiplication factors for the three different
gain settings
Returns
-------
array_like
Array of corrected images of shape (N, y, x)
"""
t = ttime.time()
logger.info("Correcting image stack of shape %s", images.shape)
if dark is None:
dark = np.zeros(images.shape[-2:], dtype=np.float32)
dark = np.array((dark, dark, dark))
logger.info("Not correcting for darkfield. No input.")
if flat is None:
flat = np.ones(images.shape[-2:], dtype=np.float32)
logger.info("Not correcting for flatfield. No input.")
else:
flat = np.asarray(flat, dtype=np.float32)
data = fastccd.correct_images(images, dark, flat, gain)
t = ttime.time() - t
logger.info("Corrected image stack in %.3f seconds", t)
return data