FORS Pipeline Reference Manual 4.9.20
Data Structures | Defines | Functions | Variables
Image with error bars

Data Structures

struct  _fors_image

Defines

#define FORS_IMAGE_TYPE_MAX   FLT_MAX
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define cleanup
#define LIST_DEFINE
#define LIST_ELEM   fors_image

Functions

static int max_filter (const float *ibuffer, float *obuffer, int length, int size)
fors_imagefors_image_new (cpl_image *data, cpl_image *variance)
 Create image.
fors_imagefors_image_duplicate (const fors_image *image)
 Copy constructor.
void fors_image_delete (fors_image **image)
 Deallocate image and set pointer to NULL.
void fors_image_delete_const (const fors_image **image)
 Deallocate image and set pointer to NULL.
fors_image_list * fors_image_load_list (const cpl_frameset *frames, const fors_image *bias, const fors_setting *setting, double *saturated)
 Load imagelist.
const fors_image_list * fors_image_load_list_const (const cpl_frameset *frames, const fors_image *bias, const fors_setting *setting, double *saturated)
 Load imagelist.
fors_imagefors_image_load (const cpl_frame *frame, const fors_image *bias, const fors_setting *setting, double *saturated)
 Load image.
void fors_image_save (const fors_image *image, const cpl_propertylist *header, const char *filename)
 Save image.
void fors_image_save_sex (const fors_image *image, const cpl_propertylist *header, const char *filename_dat, const char *filename_var, int radius)
 Save image in format useable by SExtractor.
int fors_image_get_size_x (const fors_image *image)
 Get image width.
int fors_image_get_size_y (const fors_image *image)
 Get image height.
const float * fors_image_get_data_const (const fors_image *image)
 Get pointer to data buffer.
void fors_image_abs (fors_image *image)
 Absolute value.
void fors_image_square (fors_image *image)
 Squared.
void fors_image_subtract (fors_image *left, const fors_image *right)
 Subtract images.
void fors_image_multiply_noerr (fors_image *left, const cpl_image *right)
 Multiply images.
void fors_image_divide_noerr (fors_image *left, cpl_image *right)
 Divide images.
void fors_image_divide (fors_image *left, const fors_image *right)
 Divide images.
void fors_image_multiply (fors_image *left, const fors_image *right)
 Multiply images.
void fors_image_subtract_scalar (fors_image *image, double s, double ds)
 Subtract scalar.
void fors_image_divide_scalar (fors_image *image, double s, double ds)
 Divide by scalar.
void fors_image_multiply_scalar (fors_image *image, double s, double ds)
 Multiply by scalar.
void fors_image_exponential (fors_image *image, double b, double db)
 Exponential.
double fors_image_get_min (const fors_image *image)
 Get min data value.
double fors_image_get_max (const fors_image *image)
 Get max data value.
double fors_image_get_mean (const fors_image *image, double *dmean)
 Get mean data value.
double fors_image_get_median (const fors_image *image, double *dmedian)
 Get median data value.
void fors_image_crop (fors_image *image, int xlo, int ylo, int xhi, int yhi)
 Crop image.
cpl_image * fors_image_filter_median_create (const fors_image *image, int xradius, int yradius, int xstart, int ystart, int xend, int yend, int xstep, int ystep, bool use_data)
 Smooth image.
cpl_image * fors_image_flat_fit_create (fors_image *image, int step, int degree, float level)
cpl_image * fors_image_filter_max_create (const fors_image *image, int xradius, int yradius, bool use_data)
 Max filter image.
double fors_image_get_stdev (const fors_image *image, double *dstdev)
 Get empirical stdev of data.
double fors_image_get_stdev_robust (const fors_image *image, double cut, double *dstdev)
 Get robust empirical stdev of data.
double fors_image_get_error_mean (const fors_image *image, double *dmean)
 Get mean of error bars.
fors_imagefors_image_collapse_create (const fors_image_list *images)
 Average collapse.
fors_imagefors_image_collapse_minmax_create (const fors_image_list *images, int low, int high)
 Minmax collapse.
fors_imagefors_image_collapse_ksigma_create (const fors_image_list *images, int low, int high, int iter)
 Ksigma collapse.
fors_imagefors_image_collapse_median_create (const fors_image_list *images)
 Median collapse.
void fors_image_draw (fors_image *image, int type, double x, double y, int radius, double color)
 Draw on image.

Variables

const cpl_type FORS_IMAGE_TYPE = CPL_TYPE_FLOAT
 Image data type.

Detailed Description

This object contains

For efficiency+convenience the error bars are internally represented as sigma^2 to avoid the repeated conversion between sigma <-> variance


Define Documentation

#define cleanup
Value:
do { \
    double_list_delete(&sat_percent, double_delete); \
} while (0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_propertylist_delete(header); \
    cpl_table_delete(overscans); \
    cpl_image_delete(temp); \
    cpl_mask_delete(non_saturated); \
    fors_setting_delete(&frame_setting); \
} while (0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(sigma); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(var_bkg); \
    cpl_image_delete(sigma_bkg); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(temp); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    fors_image_delete(&dupl); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(s22d12); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(temp); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_image_delete(input); \
} while(0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_mask_delete(rejected); \
    cpl_image_delete(im); \
} while (0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_imagelist_delete(datlist); \
    cpl_imagelist_delete(varlist); \
} while (0)

Definition at line 1890 of file fors_image.c.

#define cleanup
Value:
do { \
    cpl_imagelist_delete(datlist); \
    cpl_imagelist_delete(varlist); \
} while (0)

Definition at line 1890 of file fors_image.c.


Function Documentation

fors_image* fors_image_new ( cpl_image *  data,
cpl_image *  variance 
)

Create image.

Parameters:
dataimage data
varianceimage data error bars on the form sigma^2
Returns:
newly allocated image

Note: The ownership of the provided images is transferred to the new image object. The input images must therefore not be deallocated

Definition at line 128 of file fors_image.c.

References assure, FORS_IMAGE_TYPE, and fors_type_get_string().

Referenced by create_bias(), create_dark(), create_screen_flat(), create_sky_flat(), extract_sex(), fors_image_collapse_create(), fors_image_collapse_ksigma_create(), fors_image_collapse_median_create(), fors_image_collapse_minmax_create(), fors_image_duplicate(), fors_image_load(), fors_photometry(), test_divide(), test_exponential(), test_image(), test_median_filter(), and test_subtract().

fors_image* fors_image_duplicate ( const fors_image image)

Copy constructor.

Parameters:
imageto duplicate
Returns:
newly allocated copy of input

Definition at line 172 of file fors_image.c.

References assure, and fors_image_new().

Referenced by extract_sex(), fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), fors_image_divide(), fors_img_screen_flat(), and write_qc().

void fors_image_delete ( fors_image **  image)

Deallocate image and set pointer to NULL.

Parameters:
imageto delete

Definition at line 185 of file fors_image.c.

Referenced by extract_sex(), fors_image_delete_const(), fors_img_science(), fors_zeropoint(), test_image(), test_median_filter(), test_stack(), and write_qc().

void fors_image_delete_const ( const fors_image **  image)

Deallocate image and set pointer to NULL.

Parameters:
imageto delete

Definition at line 200 of file fors_image.c.

References fors_image_delete().

Referenced by fors_img_science(), and fors_zeropoint().

fors_image_list* fors_image_load_list ( const cpl_frameset *  frames,
const fors_image bias,
const fors_setting setting,
double *  saturated 
)

Load imagelist.

Parameters:
framesall provided frames are loaded
biasmaster bias image, or NULL
settingexpected instrument setting
saturated(output) if non-NULL, overall saturation percentage. Defined as > 65534.4 or < 0.5
Returns:
Newly allocated list of images

The frameset must contain a uniform set of frames.

See also fors_image_load().

Definition at line 257 of file fors_image.c.

References assure, and fors_image_load().

Referenced by fors_image_load_list_const(), fors_img_sky_flat(), and test_stack().

const fors_image_list* fors_image_load_list_const ( const cpl_frameset *  frames,
const fors_image bias,
const fors_setting setting,
double *  saturated 
)

Load imagelist.

Parameters:
framessee fors_image_load_list()
biassee fors_image_load_list()
settingsee fors_image_load_list()
saturatedsee fors_image_load_list()
Returns:
see fors_image_load_list()

This function is the same as fors_image_load_list(), but returns an array of const images.

Definition at line 313 of file fors_image.c.

References fors_image_load_list().

Referenced by fors_bias(), fors_dark(), and fors_img_screen_flat().

fors_image* fors_image_load ( const cpl_frame *  frame,
const fors_image bias,
const fors_setting setting,
double *  saturated 
)

Load image.

Parameters:
frameto load
biasmaster bias image, or NULL
settingexpected instrument setting
saturated(output) If non-NULL, percentage of saturated pixels in the raw frame (before bias subtraction), defined as > 65534.4 or < 0.5
Returns:
Newly allocated bias image, or bias-subtracted image

The provided bias image is subtracted and used to define the raw frame error bars. If NULL, the input frame is assumed to be a raw bias and the error bars are given by the read-out-noise as defined in the FITS header. If non-NULL, this bias image is subtracted and the residual flux is used to estimate the photonic noise.

This function currently does not do overscan area correction.

Definition at line 349 of file fors_image.c.

References assure, fors_frame_get_group_string(), fors_image_new(), fors_image_subtract(), fors_image_subtract_scalar(), FORS_IMAGE_TYPE, and fors_setting_verify().

Referenced by fors_dark(), fors_image_load_list(), fors_img_science(), fors_img_screen_flat(), fors_img_sky_flat(), fors_photometry(), fors_zeropoint(), test_bias(), test_dark(), test_image(), test_img_screen_flat(), and test_img_sky_flat().

void fors_image_save ( const fors_image image,
const cpl_propertylist *  header,
const char *  filename 
)

Save image.

Parameters:
imageto save
headerprimary FITS header, or NULL
filenamefilename

The image is saved to a FITS file in the format expected by fors_image_load()

Definition at line 584 of file fors_image.c.

References assure.

Referenced by create_bias(), create_dark(), create_screen_flat(), create_sky_flat(), dfs_save(), test_image(), and test_stack().

void fors_image_save_sex ( const fors_image image,
const cpl_propertylist *  header,
const char *  filename_dat,
const char *  filename_var,
int  radius 
)

Save image in format useable by SExtractor.

Parameters:
imageto save
headerprimary FITS header, or NULL
filename_datfilename of data values
filename_varfilename of variances
radiusmedian filter radius used to determine background error map

The image is saved to two separate FITS files

Definition at line 630 of file fors_image.c.

References assure, fors_image_filter_median_create(), fors_image_get_size_x(), and fors_image_get_size_y().

Referenced by extract_sex().

int fors_image_get_size_x ( const fors_image image)

Get image width.

Parameters:
imageimage
Returns:
width

Definition at line 703 of file fors_image.c.

References assure.

Referenced by extract_sex(), fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), fors_image_crop(), fors_image_save_sex(), fors_photometry(), remove_large_scale(), test_image(), and write_qc().

int fors_image_get_size_y ( const fors_image image)

Get image height.

Parameters:
imageimage
Returns:
width

Definition at line 716 of file fors_image.c.

References assure.

Referenced by extract_sex(), fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), fors_image_crop(), fors_image_save_sex(), fors_photometry(), remove_large_scale(), test_image(), and write_qc().

const float* fors_image_get_data_const ( const fors_image image)

Get pointer to data buffer.

Parameters:
imageimage

Definition at line 728 of file fors_image.c.

References assure, and FORS_IMAGE_TYPE.

Referenced by write_qc().

void fors_image_abs ( fors_image image)

Absolute value.

Parameters:
imageimage

Every pixel in the data image is set to its absolute value. The variance image is not touched

Definition at line 749 of file fors_image.c.

References assure.

void fors_image_square ( fors_image image)

Squared.

Parameters:
imageimage

Every pixel in the data image is set to p_i := p_i^2

Definition at line 768 of file fors_image.c.

References assure.

Referenced by write_qc().

void fors_image_subtract ( fors_image left,
const fors_image right 
)

Subtract images.

Parameters:
leftimage to be subtracted from
rightimage to subtract

New variance image is computed as sigma_left**2 + sigma_right**2

Definition at line 797 of file fors_image.c.

References assure.

Referenced by fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), fors_image_load(), test_subtract(), and write_qc().

void fors_image_multiply_noerr ( fors_image left,
const cpl_image *  right 
)

Multiply images.

Parameters:
leftimage to be change
rightfactor

Data values and error bars change according to

data_i := data_i * factor_i sigma_i := sigma_i * factor_i

Definition at line 825 of file fors_image.c.

References assure.

void fors_image_divide_noerr ( fors_image left,
cpl_image *  right 
)

Divide images.

Parameters:
leftimage to be divided
rightdivisor (modified! zero values are set to one)

This function does not propagate the divisor error bars

Data values and error bars change according to

data_i := data_i / divisor_i sigma_i := sigma_i / divisor_i for divisor_i != 0

data_i := 1 sigma_i := infinity for divisor_i == 0

Definition at line 863 of file fors_image.c.

References assure.

Referenced by remove_large_scale(), and remove_large_scale_fit().

void fors_image_divide ( fors_image left,
const fors_image right 
)

Divide images.

Parameters:
leftimage to be divided
rightdivisor

Data values and error bars change according to

data := data1 / data2 sigma^2 := sigma1^2 / data2^2 + sigma2^2 data1^2 / data2^4

left and right may point to the same image, note however that the error propagation formula assumes uncorrelated noise

Division by zero does is not an error but is handled by setting

data_i := 1 sigma_i := infinity

Definition at line 925 of file fors_image.c.

References assure, and fors_image_duplicate().

Referenced by fors_img_science(), fors_zeropoint(), test_divide(), and write_qc().

void fors_image_multiply ( fors_image left,
const fors_image right 
)

Multiply images.

Parameters:
left1st factor (changed)
right2nd factor

Data values and error bars change according to

data1 := data1 * data2 sigma1^2 := sigma1^2 data2^2 + sigma2^2 data1^2

Definition at line 987 of file fors_image.c.

References assure.

Referenced by fors_photometry().

void fors_image_subtract_scalar ( fors_image image,
double  s,
double  ds 
)

Subtract scalar.

Parameters:
imageto be divided
sscalar
dserror (one sigma) of s, a positive error bar is unsupported

If ds is negative, data values and error bars change according to

data_i := data_i - s sigma_i := sigma_i

Definition at line 1023 of file fors_image.c.

References assure.

Referenced by fors_image_load(), and write_qc().

void fors_image_divide_scalar ( fors_image image,
double  s,
double  ds 
)

Divide by scalar.

Parameters:
imageto be divided
sscalar
dserror (one sigma) of s, a positive error bar is unsupported for now

If ds is negative, data values and error bars change according to

data_i := data_i / s sigma_i := sigma_i / s

Definition at line 1048 of file fors_image.c.

References assure.

Referenced by fors_img_science(), fors_img_sky_flat(), fors_photometry(), fors_zeropoint(), and write_qc().

void fors_image_multiply_scalar ( fors_image image,
double  s,
double  ds 
)

Multiply by scalar.

Parameters:
imageto be multiplied
sscalar
dserror (one sigma) of s, a positive error bar is unsupported for now

If ds is negative, data values and error bars change according to

data_i := data_i * s sigma_i := sigma_i * s

Definition at line 1074 of file fors_image.c.

References assure.

Referenced by fors_photometry(), and write_qc().

void fors_image_exponential ( fors_image image,
double  b,
double  db 
)

Exponential.

Parameters:
imageto be exponentiated
bbase
dberror (one sigma) of b, a positive error bar is unsupported

If ds is negative, data values and error bars change according to

data_i := b ^ data_i sigma_i := b ^ data_i ln(b) sigma_i

Definition at line 1103 of file fors_image.c.

References assure.

Referenced by fors_photometry(), and test_exponential().

double fors_image_get_min ( const fors_image image)

Get min data value.

Parameters:
imageimage
Returns:
min data value

Definition at line 1131 of file fors_image.c.

References assure.

Referenced by fors_zeropoint(), and test_image().

double fors_image_get_max ( const fors_image image)

Get max data value.

Parameters:
imageimage
Returns:
max data value

Definition at line 1146 of file fors_image.c.

References assure.

Referenced by test_image().

double fors_image_get_mean ( const fors_image image,
double *  dmean 
)

Get mean data value.

Parameters:
imageimage
dmean(output) error of estimate
Returns:
arithmetic average

Definition at line 1162 of file fors_image.c.

References assure.

Referenced by test_bias(), test_dark(), test_divide(), test_exponential(), test_image(), test_img_screen_flat(), test_img_sky_flat(), test_stack(), test_subtract(), and write_qc().

double fors_image_get_median ( const fors_image image,
double *  dmedian 
)

Get median data value.

Parameters:
imageimage
dmedian(output) error of estimate
Returns:
median of values

Definition at line 1179 of file fors_image.c.

References assure.

Referenced by fors_image_get_stdev_robust(), fors_img_science(), fors_img_sky_flat(), fors_photometry(), fors_zeropoint(), remove_large_scale_fit(), test_bias(), test_img_screen_flat(), and write_qc().

void fors_image_crop ( fors_image image,
int  xlo,
int  ylo,
int  xhi,
int  yhi 
)

Crop image.

Parameters:
imageimage
xlolower left x
ylolower left y
xhiupper right x
yhiupper right y

This function does a locale image extraction, that is the parts outside the rectangular region (xlo, ylo) - (xhi, yhi) are removed.

Coordinates are inclusive, counting from 1

Definition at line 1204 of file fors_image.c.

References assure, fors_image_get_size_x(), and fors_image_get_size_y().

Referenced by extract_sex(), fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), test_image(), and write_qc().

cpl_image* fors_image_filter_median_create ( const fors_image image,
int  xradius,
int  yradius,
int  xstart,
int  ystart,
int  xend,
int  yend,
int  xstep,
int  ystep,
bool  use_data 
)

Smooth image.

Parameters:
imageto filter
xradiushalf x window size
yradiushalf y window size
xstartx start
ystarty start
xendx end
yendy end
xstepx-distance between kernel sampling positions The value 1 gives a normal median filter. The center of the kernel is always sampled, therefore edge locations are conserved Note: periodic structure on the scale xstep is *not* smoothed out
ystepsee xstep
use_dataif true, the data values are filtered, otherwise the variance map is filtered
Returns:
Newly allocated image, no error bars are provided

Window size is (2 * xradius + 1) * (2 * yradius + 1)

At the image border, the median is computed using the available (fewer) pixels

Definition at line 1261 of file fors_image.c.

References assure, FORS_IMAGE_TYPE, and fors_tools_get_median_float().

Referenced by fors_image_save_sex(), remove_large_scale(), and test_median_filter().

cpl_image* fors_image_filter_max_create ( const fors_image image,
int  xradius,
int  yradius,
bool  use_data 
)

Max filter image.

Parameters:
imageto filter
xradiushalf x window size
yradiushalf y window size
use_dataif true, the data values are filtered, otherwise the variance map is filtered
Returns:
Newly allocated image, no error bars are provided

Window size is (2 * xradius + 1) * (2 * yradius + 1)

At the image border, the max value is computed repeating the last found at half window size from the edge.

Definition at line 1494 of file fors_image.c.

References assure, and FORS_IMAGE_TYPE.

Referenced by extract_sex().

double fors_image_get_stdev ( const fors_image image,
double *  dstdev 
)

Get empirical stdev of data.

Parameters:
imageimage
dstdev(output) error of estimate
Returns:
empirical stdev (scatter around mean)

Definition at line 1569 of file fors_image.c.

References assure.

Referenced by fors_fixed_pattern_noise(), test_bias(), test_image(), test_stack(), and write_qc().

double fors_image_get_stdev_robust ( const fors_image image,
double  cut,
double *  dstdev 
)

Get robust empirical stdev of data.

Parameters:
imageimage
cutpixels outside median +- cut are ignored
dstdev(output) error of estimate
Returns:
empirical stdev (scatter around median, not mean)

Definition at line 1590 of file fors_image.c.

References assure, and fors_image_get_median().

Referenced by fors_fixed_pattern_noise_bias().

double fors_image_get_error_mean ( const fors_image image,
double *  dmean 
)

Get mean of error bars.

Parameters:
imageimage
dmean(output) error of estimate
Returns:
average of error bars

The average is computed as

(1/N * sum_i sigma_i^2)^(1/2)

Definition at line 1633 of file fors_image.c.

References assure.

Referenced by test_bias(), test_dark(), test_divide(), test_img_screen_flat(), test_img_sky_flat(), test_stack(), and test_subtract().

fors_image* fors_image_collapse_create ( const fors_image_list *  images)

Average collapse.

Parameters:
imageslist of images to collapse
Returns:
newly allocated stacked image

Variance is computed as (sum_i var_i) / N*N

Definition at line 1665 of file fors_image.c.

References assure, fors_image_new(), and fors_imagelist_collapse_create().

Referenced by fors_stack_const().

fors_image* fors_image_collapse_minmax_create ( const fors_image_list *  images,
int  low,
int  high 
)

Minmax collapse.

Parameters:
imageslist of images to collapse
lownumber of low rejected values
highnumber of high rejected values
Returns:
newly allocated stacked image

Variance is computed as (sum_i var_i) / N*N

Definition at line 1731 of file fors_image.c.

References assure, and fors_image_new().

Referenced by fors_stack_const().

fors_image* fors_image_collapse_ksigma_create ( const fors_image_list *  images,
int  low,
int  high,
int  iter 
)

Ksigma collapse.

Parameters:
imageslist of images to collapse
lowlower number of sigmas
highhigher number of sigmas
itermax number of iterations
Returns:
newly allocated stacked image

Variance is computed as (sum_i var_i) / N_i*N_i, where N_i is from the contribution map.

Definition at line 1787 of file fors_image.c.

References assure, fors_image_new(), and mos_ksigma_stack().

Referenced by fors_stack_const().

fors_image* fors_image_collapse_median_create ( const fors_image_list *  images)

Median collapse.

Parameters:
imageslist of images to collapse
Returns:
newly allocated stacked image

Variance is computed as f(N)^2 (sum_i var_i) / N*N

where f(N) is given by fors_utils_median_corr()

Definition at line 1839 of file fors_image.c.

References assure, fors_image_new(), fors_imagelist_collapse_create(), fors_imagelist_collapse_median_create(), and fors_utils_median_corr().

Referenced by fors_stack_const().

void fors_image_draw ( fors_image image,
int  type,
double  x,
double  y,
int  radius,
double  color 
)

Draw on image.

Parameters:
imageto draw on
typetype of thing to draw
xposition
yposition
radiussize of thing to draw
colorpixel value used for drawing

This function might be used for debugging purposes.

type 0: horizontal line type 1: vertical line type 2: circle

Definition at line 1908 of file fors_image.c.

References assure.

Referenced by fors_zeropoint().