36#include "hdrl_imagelist.h"
47#define ARRAY_LEN(a) sizeof((a))/sizeof((a)[0])
59void test_image_basic_operations(
void)
62 hdrl_value value = {100., 10.};
63 hdrl_value scalar = {1000., 100.};
64 hdrl_value exponent = {2., 1.};
76 cpl_test_error(CPL_ERROR_NONE);
82 cpl_test_error(CPL_ERROR_NONE);
88 cpl_test_error(CPL_ERROR_NONE);
93 cpl_test_error(CPL_ERROR_NONE);
100 cpl_test_error(CPL_ERROR_NONE);
105 cpl_test_error(CPL_ERROR_NONE);
108 cpl_test_error(CPL_ERROR_NONE);
113 cpl_test_error(CPL_ERROR_NONE);
131 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
133 test_image_basic_operations();
135 hdrl_imagelist * himlist ;
138 cpl_image * contrib ;
139 cpl_image * contrib2 ;
140 cpl_size nimages = IMAGENB ;
144 for (cpl_size i = 0 ; i < nimages ; i++) {
165 if (i == nimages / 2)
175 hdrl_test_image_abs(himg, himg2, 0);
176 cpl_test_image_abs(contrib, contrib2, 0);
177 cpl_image_delete(contrib) ;
179 cpl_image_delete(contrib2) ;
185 hdrl_test_image_abs(himg, himg2, 0);
186 cpl_test_image_abs(contrib, contrib2, 0);
187 cpl_image_delete(contrib) ;
189 cpl_image_delete(contrib2) ;
195 hdrl_test_image_abs(himg, himg2, 0);
196 cpl_test_image_abs(contrib, contrib2, 0);
197 cpl_image_delete(contrib) ;
199 cpl_image_delete(contrib2) ;
206 hdrl_test_image_abs(himg, himg2, 0);
207 cpl_test_image_abs(contrib, contrib2, 0);
208 cpl_image_delete(contrib);
210 cpl_image_delete(contrib2);
218 hdrl_test_image_abs(himg, himg2, 0);
219 cpl_image_delete(contrib) ;
221 cpl_image_delete(contrib2) ;
229 hdrl_test_image_abs(himg, himg2, 0);
230 cpl_test_image_abs(contrib, contrib2, 0);
231 cpl_image_delete(contrib) ;
233 cpl_image_delete(contrib2) ;
239 typedef hdrl_parameter_empty hdrl_collapse_unknown_parameter;
240 static hdrl_parameter_typeobj hdrl_collapse_unknown_parameter_type = {
242 (hdrl_alloc *)&cpl_malloc,
243 (hdrl_free *)&cpl_free,
245 sizeof(hdrl_collapse_unknown_parameter),
247 hdrl_collapse_unknown_parameter *unk = (hdrl_collapse_unknown_parameter *)
248 hdrl_parameter_new(&hdrl_collapse_unknown_parameter_type);
249 hdrl_parameter *punk = (hdrl_parameter *)unk;
260 cpl_test_error(CPL_ERROR_NULL_INPUT);
263 cpl_test_error(CPL_ERROR_NONE);
264 cpl_image_delete(contrib );
268 cpl_test_error(CPL_ERROR_NONE);
269 cpl_image_delete(contrib );
270 cpl_image_delete(rej_low );
274 cpl_test_error(CPL_ERROR_NONE);
275 cpl_image_delete(contrib );
276 cpl_image_delete(rej_high);
280 cpl_test_error(CPL_ERROR_NONE);
281 cpl_image_delete(contrib );
282 cpl_image_delete(rej_low );
283 cpl_image_delete(rej_high);
288 cpl_test_error(CPL_ERROR_NULL_INPUT);
291 cpl_test_error(CPL_ERROR_NONE);
292 cpl_image_delete(contrib );
296 cpl_test_error(CPL_ERROR_NONE);
297 cpl_image_delete(contrib );
298 cpl_image_delete(rej_low );
302 cpl_test_error(CPL_ERROR_NONE);
303 cpl_image_delete(contrib );
304 cpl_image_delete(rej_high);
308 cpl_test_error(CPL_ERROR_NONE);
309 cpl_image_delete(contrib );
310 cpl_image_delete(rej_low );
311 cpl_image_delete(rej_high);
321 cpl_test_error(CPL_ERROR_NULL_INPUT);
325 cpl_test_error(CPL_ERROR_NONE);
328 cpl_test_eq(cpl_image_get_sqflux(contrib), (IMAGENB * IMAGENB) * IMAGESZ * IMAGESZ);
329 cpl_image_delete(contrib );
334 cpl_test_error(CPL_ERROR_NONE);
337 cpl_test_eq(cpl_image_get_sqflux(contrib), (IMAGENB * IMAGENB) * IMAGESZ * IMAGESZ);
338 cpl_image_delete(contrib );
343 cpl_test_error(CPL_ERROR_NONE);
346 cpl_test_eq(cpl_image_get_sqflux(contrib), 0.);
347 cpl_image_delete(contrib );
353 return cpl_test_end(0);
hdrl_parameter * hdrl_collapse_sigclip_parameter_create(double kappa_low, double kappa_high, int niter)
create a parameter object for sigclipped mean
hdrl_parameter * hdrl_collapse_mode_parameter_create(double histo_min, double histo_max, double bin_size, hdrl_mode_type mode_method, cpl_size error_niter)
create a parameter object for the mode
hdrl_parameter * hdrl_collapse_minmax_parameter_create(double nlow, double nhigh)
create a parameter object for min-max rejected mean
cpl_error_code hdrl_image_add_scalar(hdrl_image *self, hdrl_value value)
Elementwise addition of a scalar to an image.
cpl_image * hdrl_image_get_error(hdrl_image *himg)
get error as cpl image
cpl_image * hdrl_image_get_image(hdrl_image *himg)
get data as cpl image
hdrl_image * hdrl_image_new(cpl_size nx, cpl_size ny)
create new zero filled hdrl image
void hdrl_image_delete(hdrl_image *himg)
delete hdrl_image
cpl_error_code hdrl_image_sub_scalar(hdrl_image *self, hdrl_value value)
Elementwise subtraction of a scalar from an image.
cpl_error_code hdrl_imagelist_collapse_sigclip(const hdrl_imagelist *himlist, double kappa_low, double kappa_high, int niter, hdrl_image **out, cpl_image **contrib, cpl_image **reject_low, cpl_image **reject_high)
Sigma-clipped collapsing of image list.
cpl_error_code hdrl_imagelist_div_imagelist(hdrl_imagelist *himlist1, const hdrl_imagelist *himlist2)
Divide two image lists, the first one is replaced by the result.
cpl_error_code hdrl_imagelist_collapse_mean(const hdrl_imagelist *himlist, hdrl_image **out, cpl_image **contrib)
Mean collapsing of image list.
cpl_error_code hdrl_imagelist_set(hdrl_imagelist *himlist, hdrl_image *himg, cpl_size pos)
Insert an image into an imagelist.
void hdrl_imagelist_delete(hdrl_imagelist *himlist)
Free all memory used by a hdrl_imagelist object including the images.
cpl_error_code hdrl_imagelist_add_image(hdrl_imagelist *himlist, const hdrl_image *himg)
Add an image to an image list.
cpl_error_code hdrl_imagelist_pow_scalar(hdrl_imagelist *himlist, hdrl_value exponent)
Compute the elementwise power of each image in the himlist.
cpl_error_code hdrl_imagelist_div_scalar(hdrl_imagelist *himlist, hdrl_value value)
Elementwise division by a scalar to each image in the himlist.
cpl_error_code hdrl_imagelist_sub_image(hdrl_imagelist *himlist, const hdrl_image *himg)
Subtract an image from an image list.
cpl_error_code hdrl_imagelist_collapse(const hdrl_imagelist *himlist, const hdrl_parameter *param, hdrl_image **out, cpl_image **contrib)
collapsing of image list
cpl_error_code hdrl_imagelist_mul_scalar(hdrl_imagelist *himlist, hdrl_value value)
Elementwise multiplication of a scalar to each image in the himlist.
hdrl_imagelist * hdrl_imagelist_new(void)
Create an empty imagelist.
cpl_error_code hdrl_imagelist_collapse_median(const hdrl_imagelist *himlist, hdrl_image **out, cpl_image **contrib)
Median collapsing of image list.
cpl_error_code hdrl_imagelist_mul_imagelist(hdrl_imagelist *himlist1, const hdrl_imagelist *himlist2)
Multiply two image lists, the first one is replaced by the result.
cpl_error_code hdrl_imagelist_add_imagelist(hdrl_imagelist *himlist1, const hdrl_imagelist *himlist2)
Add two image lists, the first one is replaced by the result.
cpl_error_code hdrl_imagelist_collapse_mode(const hdrl_imagelist *himlist, double histo_min, double histo_max, double bin_size, hdrl_mode_type mode_method, cpl_size error_niter, hdrl_image **out, cpl_image **contrib)
Mode collapsing of image list.
cpl_error_code hdrl_imagelist_sub_imagelist(hdrl_imagelist *himlist1, const hdrl_imagelist *himlist2)
Subtract two image lists, the first one is replaced by the result.
cpl_error_code hdrl_imagelist_collapse_minmax(const hdrl_imagelist *himlist, double nlow, double nhigh, hdrl_image **out, cpl_image **contrib, cpl_image **reject_low, cpl_image **reject_high)
Minmax-clipped collapsing of image list.
cpl_error_code hdrl_imagelist_collapse_weighted_mean(const hdrl_imagelist *himlist, hdrl_image **out, cpl_image **contrib)
Weighted Mean collapsing of image list.
cpl_error_code hdrl_imagelist_mul_image(hdrl_imagelist *himlist, const hdrl_image *himg)
Multiply an image by an image list.
cpl_error_code hdrl_imagelist_div_image(hdrl_imagelist *himlist, const hdrl_image *himg)
Divide an image from an image list.
void hdrl_parameter_delete(hdrl_parameter *obj)
shallow delete of a parameter