41 #include "hawki_variance.h"
81 (
const cpl_image * image,
89 const float * image_p;
92 double poisson_contrib;
93 double poisson_factor;
98 if (image == NULL)
return NULL;
101 variance = cpl_image_duplicate(image);
104 variance_p = cpl_image_get_data(variance);
105 image_p = cpl_image_get_data_const(image);
106 npix = cpl_image_get_size_x(image) * cpl_image_get_size_y(image);
109 ron_contrib = 12 * ron * ron / (gain * gain * ndsamples * ndit) *
110 (ndsamples - 1) / (ndsamples + 1);
111 poisson_factor = 6. / (5. * gain * ndsamples * ndit) *
112 (ndsamples * ndsamples + 1) / (ndsamples + 1);
113 for(pix = 0; pix < npix; ++pix)
116 poisson_contrib = poisson_factor * fabs(image_p[pix]);
117 variance_p[pix] = poisson_contrib + ron_contrib;
159 (cpl_imagelist * imagelist_raw,
165 cpl_imagelist * variances;
167 variances = cpl_imagelist_new();
169 while(cpl_imagelist_get_size(imagelist_raw) > 0)
171 cpl_image * variance;
174 (cpl_imagelist_get(imagelist_raw, 0), gain, ron, ndit, ndsamples);
175 cpl_imagelist_set(variances, variance,
176 cpl_imagelist_get_size(variances));
177 cpl_image_delete(cpl_imagelist_unset(imagelist_raw, 0));