32 #include <fors_image.h>
33 #include <fors_pfits.h>
34 #include <fors_saturation.h>
35 #include <test_simulate.h>
49 fors_setting_delete(&setting); \
61 const char *
const filename =
"fors_image.fits";
63 cpl_frame *frame = cpl_frame_new();
64 cpl_propertylist *header = cpl_propertylist_new();
66 cpl_image *data = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
67 cpl_image *variance = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
71 cpl_image_add_scalar(variance, 1.0);
72 cpl_image_set(data, 1, 1, 1);
83 cpl_frame_set_filename(frame, filename);
89 saturated = fors_saturation_img_satper(image);
92 test_rel( saturated, 100 * (1 - 1.0 / (nx*ny)), 0.01 );
96 cpl_frame_delete(frame);
97 cpl_propertylist_delete(header);
102 data = cpl_image_new(3, 2, FORS_IMAGE_TYPE);
103 variance = cpl_image_new(3, 2, FORS_IMAGE_TYPE);
107 for (y = 1; y <= 2; y++) {
108 for (x = 1; x <= 3; x++) {
109 cpl_image_set(data, x, y, x*y);
118 cpl_image_add_scalar(variance, 1.0);
158 const int xradius = 1;
159 const int yradius = 1;
160 const int xstart = 1;
161 const int ystart = 1;
167 cpl_image *data = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
168 cpl_image *variance = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
173 cpl_image_add_scalar(variance, 1.0);
176 bool use_data =
true;
184 cpl_image_delete(smooth);
193 fors_image_delete(&left); \
194 fors_image_delete(&right); \
206 const double values = 17;
207 const double variance = 5;
208 cpl_image *left_data = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
209 cpl_image *left_variance = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
210 cpl_image *right_data;
211 cpl_image *right_variance;
213 double error_before, error_after;
215 cpl_image_add_scalar(left_data, values);
216 cpl_image_add_scalar(left_variance, variance);
218 right_data = cpl_image_multiply_scalar_create(left_data, 0.6);
219 right_variance = cpl_image_duplicate(left_variance);
232 test_rel( error_after, error_before*sqrt(2.0), 0.001);
241 fors_image_delete(&image); \
253 const double values = 17;
254 const double var_val = 5;
255 cpl_image *data = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
256 cpl_image *variance = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
261 cpl_image_add_scalar(data, values);
262 cpl_image_add_scalar(variance, var_val);
280 fors_image_delete(&image); \
291 const double values = 17;
292 const double variance_value = 5;
293 cpl_image *data = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
294 cpl_image *variance = cpl_image_new(nx, ny, FORS_IMAGE_TYPE);
296 double error_before, error_after;
298 cpl_image_add_scalar(data , values);
299 cpl_image_add_scalar(variance, variance_value);
317 test_rel( error_after, error_before*sqrt(2.0), 0.001 );
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.
static void test_subtract(void)
Test image subtraction.
fors_image * fors_image_new(cpl_image *data, cpl_image *variance)
Create image.
fors_setting * fors_setting_new(const cpl_frame *raw)
Create setting from FITS header.
static void test_exponential(void)
Test image exponentiation.
double fors_image_get_max(const fors_image *image)
Get max data value.
int main(void)
Test of image module.
void fors_image_subtract(fors_image *left, const fors_image *right)
Subtract images.
static void test_divide(void)
Test image division.
void fors_image_crop(fors_image *image, int xlo, int ylo, int xhi, int yhi)
Crop image.
double fors_image_get_stdev(const fors_image *image, double *dstdev)
Get empirical stdev of data.
void fors_image_delete(fors_image **image)
Deallocate image and set pointer to NULL.
cpl_size fors_image_get_size_y(const fors_image *image)
Get image height.
void create_standard_keys(cpl_propertylist *header, double exptime)
Write FORS standard keywords to simulated header.
double fors_image_get_min(const fors_image *image)
Get min data value.
fors_image * fors_image_load(const cpl_frame *frame)
Load image.
double fors_image_get_mean(const fors_image *image, double *dmean)
Get mean data value.
static void test_image(void)
Test functions.
static void test_median_filter(void)
Median filtering benchmark.
cpl_size fors_image_get_size_x(const fors_image *image)
Get image width.
void fors_image_divide(fors_image *left, const fors_image *right)
Divide images.
void fors_image_exponential(fors_image *image, double b, double db)
Exponential.
double fors_image_get_error_mean(const fors_image *image, double *dmean)
Get mean of error bars.
void fors_image_save(const fors_image *image, const cpl_propertylist *header, const cpl_propertylist *err_header, const char *filename)
Save image.