FORS Pipeline Reference Manual  4.12.5
fors_image.h
1 /* $Id: fors_image.h,v 1.31 2013-07-24 12:59:35 cgarcia Exp $
2  *
3  * This file is part of the FORS Library
4  * Copyright (C) 2002-2010 European Southern Observatory
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 /*
22  * $Author: cgarcia $
23  * $Date: 2013-07-24 12:59:35 $
24  * $Revision: 1.31 $
25  * $Name: not supported by cvs2svn $
26  */
27 
28 #ifndef FORS_IMAGE_H
29 #define FORS_IMAGE_H
30 
31 #include <fors_setting.h>
32 #include <cpl.h>
33 #include <hdrl.h>
34 
35 typedef struct _fors_image fors_image;
36 
37 extern const cpl_type FORS_IMAGE_TYPE;
38 
39 /* Container */
40 #undef LIST_ELEM
41 #define LIST_ELEM fors_image
42 #include <list.h>
43 
44 CPL_BEGIN_DECLS
45 
62 {
63  cpl_image *data;
64  cpl_image *variance;
65 
66  /* Invariants:
67  The CPL images are non-NULL.
68  The variance image is everywhere non-negative.
69  The CPL image types are FORS_IMAGE_TYPE.
70  The CPL image bad pixel masks are unused
71  */
72 };
73 
74 /* Constructors */
75 fors_image *fors_image_new(cpl_image *data, cpl_image *weights);
76 
78 
79 /* Desctructors */
80 void fors_image_delete(fors_image **image);
81 void fors_image_delete_const(const fors_image **image);
82 
83 
84 /* I/O */
85 fors_image *fors_image_load(const cpl_frame *frame);
86 
87 
88 fors_image_list *fors_image_load_list(const cpl_frameset *frames);
89 
90 const fors_image_list *
91 fors_image_load_list_const(const cpl_frameset *frames);
92 
93 void
94 fors_image_save(const fors_image *image, const cpl_propertylist *header,
95  const char *filename);
96 
97 void
98 fors_image_save_sex(const fors_image *image, const cpl_propertylist *header,
99  const char *filename_dat,
100  const char *filename_var,
101  int radius);
102 
103 /* Other */
104 cpl_size fors_image_get_size_x(const fors_image *image);
105 cpl_size fors_image_get_size_y(const fors_image *image);
106 const float *fors_image_get_data_const(const fors_image *image);
107 
108 void fors_image_draw(fors_image *image, int type,
109  double x, double y,
110  int radius, double color);
111 
112 void fors_image_crop(fors_image *image,
113  int xlo, int ylo,
114  int xhi, int yhi);
115 
116 /* Arithmetic */
117 void fors_image_subtract(fors_image *left, const fors_image *right);
118 void fors_image_multiply(fors_image *left, const fors_image *right);
119 void fors_image_multiply_noerr(fors_image *left, const cpl_image *right);
120 void fors_image_divide(fors_image *left, const fors_image *right);
121 void fors_image_divide_noerr(fors_image *left, cpl_image *right);
122 void fors_image_abs(fors_image *image);
123 void fors_image_square(fors_image *image);
124 
125 void fors_image_exponential(fors_image *image, double b, double db);
126 void fors_image_multiply_scalar(fors_image *image, double s, double ds);
127 void fors_image_divide_scalar(fors_image *image, double s, double ds);
128 void fors_image_subtract_scalar(fors_image *image, double s, double ds);
129 
130 fors_image *fors_image_collapse_create(const fors_image_list *images);
131 fors_image *fors_image_collapse_median_create(const fors_image_list *images);
132 fors_image *fors_image_collapse_minmax_create(const fors_image_list *images,
133  int low, int high);
134 fors_image *fors_image_collapse_ksigma_create(const fors_image_list *images,
135  int low, int high, int iter);
136 
137 cpl_image *
139  int xradius,
140  int yradius,
141  int xstart,
142  int ystart,
143  int xend,
144  int yend,
145  int xstep,
146  int ystep,
147  bool use_data);
148 
149 cpl_image *
150 fors_image_flat_fit_create(fors_image *image,
151  int step,
152  int degree,
153  float level);
154 cpl_image *
156  int xradius,
157  int yradius,
158  bool use_data);
159 
160 /* Statistics */
161 double fors_image_get_mean(const fors_image *image, double *dmean);
162 double fors_image_get_median(const fors_image *image, double *dmedian);
163 
164 double fors_image_get_stdev(const fors_image *image, double *dstdev);
165 double fors_image_get_stdev_robust(const fors_image *image,
166  double cut,
167  double *dstdev);
168 double fors_image_get_error_mean(const fors_image *image, double *dmean);
169 
170 double fors_image_get_min(const fors_image *image);
171 double fors_image_get_max(const fors_image *image);
172 
173 hdrl_imagelist * fors_image_list_to_hdrl(const fors_image_list * imalist);
174 
175 fors_image * fors_image_from_hdrl(const hdrl_image * image);
176 
177 CPL_END_DECLS
178 
179 #endif
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.
Definition: fors_image.c:1069
void fors_image_multiply_scalar(fors_image *image, double s, double ds)
Multiply by scalar.
Definition: fors_image.c:882
void fors_image_abs(fors_image *image)
Absolute value.
Definition: fors_image.c:551
double fors_image_get_stdev_robust(const fors_image *image, double cut, double *dstdev)
Get robust empirical stdev of data.
Definition: fors_image.c:1398
void fors_image_square(fors_image *image)
Squared.
Definition: fors_image.c:570
const fors_image_list * fors_image_load_list_const(const cpl_frameset *frames)
Load imagelist.
Definition: fors_image.c:271
fors_image * fors_image_new(cpl_image *data, cpl_image *weights)
Create image.
Definition: fors_image.c:102
double fors_image_get_max(const fors_image *image)
Get max data value.
Definition: fors_image.c:954
const float * fors_image_get_data_const(const fors_image *image)
Get pointer to data buffer.
Definition: fors_image.c:530
void fors_image_subtract(fors_image *left, const fors_image *right)
Subtract images.
Definition: fors_image.c:599
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.
Definition: fors_image.c:432
fors_image * fors_image_collapse_create(const fors_image_list *images)
Average collapse.
Definition: fors_image.c:1473
void fors_image_divide_noerr(fors_image *left, cpl_image *right)
Divide images.
Definition: fors_image.c:668
void fors_image_crop(fors_image *image, int xlo, int ylo, int xhi, int yhi)
Crop image.
Definition: fors_image.c:1012
double fors_image_get_stdev(const fors_image *image, double *dstdev)
Get empirical stdev of data.
Definition: fors_image.c:1377
void fors_image_multiply_noerr(fors_image *left, const cpl_image *right)
Multiply images.
Definition: fors_image.c:627
void fors_image_delete(fors_image **image)
Deallocate image and set pointer to NULL.
Definition: fors_image.c:162
cpl_size fors_image_get_size_y(const fors_image *image)
Get image height.
Definition: fors_image.c:518
void fors_image_divide_scalar(fors_image *image, double s, double ds)
Divide by scalar.
Definition: fors_image.c:856
fors_image * fors_image_collapse_ksigma_create(const fors_image_list *images, int low, int high, int iter)
Ksigma collapse.
Definition: fors_image.c:1595
double fors_image_get_min(const fors_image *image)
Get min data value.
Definition: fors_image.c:939
fors_image * fors_image_load(const cpl_frame *frame)
Load image.
Definition: fors_image.c:298
cpl_image * fors_image_filter_max_create(const fors_image *image, int xradius, int yradius, bool use_data)
Max filter image.
Definition: fors_image.c:1302
void fors_image_multiply(fors_image *left, const fors_image *right)
Multiply images.
Definition: fors_image.c:795
double fors_image_get_mean(const fors_image *image, double *dmean)
Get mean data value.
Definition: fors_image.c:970
void fors_image_draw(fors_image *image, int type, double x, double y, int radius, double color)
Draw on image.
Definition: fors_image.c:1716
fors_image * fors_image_collapse_median_create(const fors_image_list *images)
Median collapse.
Definition: fors_image.c:1647
fors_image_list * fors_image_load_list(const cpl_frameset *frames)
Load imagelist.
Definition: fors_image.c:234
cpl_size fors_image_get_size_x(const fors_image *image)
Get image width.
Definition: fors_image.c:505
void fors_image_delete_const(const fors_image **image)
Deallocate image and set pointer to NULL.
Definition: fors_image.c:177
void fors_image_divide(fors_image *left, const fors_image *right)
Divide images.
Definition: fors_image.c:733
void fors_image_save(const fors_image *image, const cpl_propertylist *header, const char *filename)
Save image.
Definition: fors_image.c:383
double fors_image_get_median(const fors_image *image, double *dmedian)
Get median data value.
Definition: fors_image.c:987
void fors_image_exponential(fors_image *image, double b, double db)
Exponential.
Definition: fors_image.c:911
double fors_image_get_error_mean(const fors_image *image, double *dmean)
Get mean of error bars.
Definition: fors_image.c:1441
fors_image * fors_image_duplicate(const fors_image *image)
Copy constructor.
Definition: fors_image.c:149
fors_image * fors_image_collapse_minmax_create(const fors_image_list *images, int low, int high)
Minmax collapse.
Definition: fors_image.c:1539
void fors_image_subtract_scalar(fors_image *image, double s, double ds)
Subtract scalar.
Definition: fors_image.c:831