22#include "../hdrl_cat_apio.h"
23#include "../hdrl_cat_areals.h"
24#include "../hdrl_cat_conf.h"
25#include "../hdrl_cat_moments.h"
26#include "../hdrl_cat_overlp.h"
32#define CENTER_IMAGE 256
35void standard_test(
void)
38 double xpos[] = { 100., 200., 300., 400., 500., 600., 700., 800., 900., 1000.};
39 double ypos[] = { 100., 200., 300., 400., 500., 600., 700., 800., 900., 1000.};
40 double norm[] = {1000., 100., 200., 500., 550., 600., 650., 700., 750., 800.};
43 cpl_image *im = cpl_image_new(1024, 1024, CPL_TYPE_DOUBLE);
44 cpl_image *bkg = cpl_image_new(1024, 1024, CPL_TYPE_DOUBLE);
45 cpl_image *cnf = cpl_image_new(1024, 1024, CPL_TYPE_DOUBLE);
47 cpl_image_fill_noise_uniform(bkg, -10., 10. );
48 cpl_image_fill_noise_uniform(cnf, 99.9, 100.1);
55 double norm2 = 2. * CPL_MATH_PI * sigma * sigma;
58 cpl_image_add_scalar(bkg, sky);
60 for (cpl_size i = 0; i < NTEST; i++) {
61 cpl_image_fill_gaussian(im, xpos[i], ypos[i], norm[i] * norm2, sigma, sigma);
62 cpl_image_add(bkg, im);
66 hdrl_casu_result *res = cpl_calloc(1,
sizeof(hdrl_casu_result));
73 cpl_test_eq(
hdrl_catalogue_conf(infErr, NULL, ipix, 2.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
74 cpl_test_nonnull( res->catalogue);
76 cpl_image_delete( res->segmentation_map);
77 cpl_image_delete( res->background);
82 cpl_test_eq(
hdrl_catalogue_conf(infErr, inconf, ipix, 2.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
83 cpl_test_nonnull( res->catalogue);
85 cpl_image_delete( res->segmentation_map);
86 cpl_image_delete( res->background);
91 cpl_test_eq(
hdrl_catalogue_conf(infErr, NULL, ipix, 2.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
92 cpl_test_nonnull( res->catalogue);
94 cpl_image_delete( res->segmentation_map);
95 cpl_image_delete( res->background);
100 cpl_test_eq(
hdrl_catalogue_conf(infErr, inconf, ipix, 2.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
101 cpl_test_nonnull( res->catalogue);
103 cpl_image_delete( res->segmentation_map);
104 cpl_image_delete( res->background);
109 cpl_test_eq(
hdrl_catalogue_conf(inf, NULL, ipix, 1.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
110 cpl_test_nonnull( res->catalogue);
112 cpl_image_delete( res->segmentation_map);
113 cpl_image_delete( res->background);
118 cpl_test_eq(
hdrl_catalogue_conf(inf, inconf, ipix, 1.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
119 cpl_test_nonnull( res->catalogue);
121 cpl_image_delete( res->segmentation_map);
122 cpl_image_delete( res->background);
127 cpl_test_eq(
hdrl_catalogue_conf(inf, NULL, ipix, 1.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
128 cpl_test_nonnull( res->catalogue);
130 cpl_image_delete( res->segmentation_map);
131 cpl_image_delete( res->background);
136 cpl_test_eq(
hdrl_catalogue_conf(inf, inconf, ipix, 1.5, icrowd, 5., 1, 64, 6, 3., 1., INFINITY, res), CPL_ERROR_NONE);
137 cpl_test_nonnull( res->catalogue);
139 cpl_image_delete( res->segmentation_map);
140 cpl_image_delete( res->background);
149void advanced_test(
void)
151 cpl_size x[] = {398,399,400,397,398,399,400,401,402,403,396,397,398,399,400,
152 401,402,403,404,395,396,397,398,399,400,401,402,403,404,405,
153 395,396,397,398,399,400,401,402,403,404,405,395,396,397,398,
154 399,400,401,402,403,404,405,395,396,397,398,399,400,401,402,
155 403,404,405,406,395,396,397,398,399,400,401,402,403,404,405,
156 395,396,397,398,399,400,401,402,403,404,405,395,396,397,398,
157 399,400,401,402,403,404,405,396,397,398,399,400,401,402,403,
158 404,397,398,399,400,401,402,403,398,399,400,401};
160 cpl_size y[] = {394,394,394,395,395,395,395,395,395,395,396,396,396,396,396,
161 396,396,396,396,397,397,397,397,397,397,397,397,397,397,397,
162 398,398,398,398,398,398,398,398,398,398,398,399,399,399,399,
163 399,399,399,399,399,399,399,400,400,400,400,400,400,400,400,
164 400,400,400,400,401,401,401,401,401,401,401,401,401,401,401,
165 402,402,402,402,402,402,402,402,402,402,402,403,403,403,403,
166 403,403,403,403,403,403,403,404,404,404,404,404,404,404,404,
167 404,405,405,405,405,405,405,405,406,406,406,406};
169 double z[] = {8.87152,12.515,7.69699,10.8527,22.2509,21.7368,13.0388,
170 12.1853,17.1976,7.43948,15.2245,29.1964,37.9117,57.9371,
171 71.5542,57.1288,34.7726,15.5934,11.5374,15.995,21.3606,
172 60.4006,103.46,147.55,168.274,147.476,98.9157,51.7186,20.188,
173 3.04248,5.77832,49.3103,98.2057,187.557,268.353,310.638,
174 274.295,183.969,94.6933,47.9889,20.245,26.3758,59.1781,
175 152.389,275.916,395.107,450.251,397.53,272.322,147.053,54.767,
176 11.8971,13.3888,73.3689,165.899,298.455,449.707,493.25,441.585,
177 299.31,157.474,70.1224,15.5313,8.76074,20.7188,54.5798,141.249,
178 264.87,382.736,435.452,393.871,268.175,138.485,65.9307,28.7812,
179 19.379,36.6449,93.5458,186.823,270.95,305.093,260.879,183.683,
180 100.676,32.6281,16.6497,5.94965,17.8105,57.256,106.32,145.264,
181 164.271,137.093,88.9384,60.7841,31.8582,10.0435,4.69162,
182 15.2187,32.5385,61.0381,74.5399,67.3727,43.3964,25.0956,
183 16.7595,-0.37323,21.3832,19.2497,18.5883,9.37448,19.6048,
184 11.5006,13.0159,14.5852,13.66,-1.04889};
189 ap.lsiz = SIZE_IMAGE;
190 ap.csiz = SIZE_IMAGE;
192 ap.inframe = cpl_image_new(SIZE_IMAGE, SIZE_IMAGE, CPL_TYPE_DOUBLE);
193 ap.conframe = cpl_image_new(SIZE_IMAGE, SIZE_IMAGE, CPL_TYPE_DOUBLE);
200 ap.plarray = cpl_realloc(ap.plarray, NT *
sizeof(*ap.plarray));
201 for (cpl_size i = 0; i < NT; i++) {
202 ap.plarray[i].x = x[i];
203 ap.plarray[i].y = y[i];
204 ap.plarray[i].z = z[i];
205 ap.plarray[i].zsm = z[i];
209 ap.areal_offset = 3.47165;
214 cpl_size iareal[NAREAL];
217 ap.indata = cpl_image_get_data_double(ap.inframe);
218 ap.confdata = cpl_image_get_data_double(ap.conframe);
219 ap.mflag = cpl_calloc(2048 * 2048,
sizeof(*ap.mflag));
223 cpl_image_fill_gaussian(ap.inframe, CENTER_IMAGE, CENTER_IMAGE, tmax, 10., 10.);
224 cpl_image_fill_gaussian(ap.conframe, CENTER_IMAGE, CENTER_IMAGE, tmax, 100., 100.);
227 double momresults[8];
230 double parmall[IMNUM][NPAR];
231 for (cpl_size i = 0; i < IMNUM; i++) {
232 for (cpl_size j = 0; j < NPAR; j++) {
248 momresults[1], momresults[2], momresults[3],
249 iareal[0], momresults[7]);
250 cpl_test_eq(e, CPL_ERROR_NONE);
257 CENTER_IMAGE, CENTER_IMAGE, momresults[3],
258 SIZE_IMAGE * SIZE_IMAGE, tmax);
259 cpl_test_eq(e, CPL_ERROR_NONE);
264 ap.areal_offset = 1.5;
268 for (cpl_size i = 0; i < IMNUM; i++) {
269 for (cpl_size j = 0; j < NPAR; j++) {
270 parmall[i][j] = tmax;
276 CENTER_IMAGE, CENTER_IMAGE, momresults[3],
277 SIZE_IMAGE * SIZE_IMAGE, tmax);
278 cpl_test_eq(e, CPL_ERROR_NONE);
282 CENTER_IMAGE, CENTER_IMAGE, momresults[3],
283 SIZE_IMAGE * SIZE_IMAGE, 1, 1, 1);
284 cpl_test_eq(e, CPL_ERROR_NONE);
290 cpl_image_delete(ap.inframe);
291 cpl_image_delete(ap.conframe);
297 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
302 return cpl_test_end(0);
cpl_error_code hdrl_catalogue_conf(hdrl_casu_fits *infile, hdrl_casu_fits *conf, cpl_size ipix, double threshold, cpl_size icrowd, double rcore, cpl_size bkg_subtr, cpl_size nbsize, cpl_size cattype, double filtfwhm, double gain, double saturation, hdrl_casu_result *res)
Do source extraction.
void hdrl_apinit(ap_t *ap)
Initialize the ap structure.
void hdrl_apclose(ap_t *ap)
Close ap structure.
void hdrl_areals(ap_t *ap, cpl_size iareal[NAREAL])
Work out the areal profiles for an object.
hdrl_casu_fits * hdrl_casu_fits_wrap(cpl_image *im)
Wrap an image in a hdrl_casu_fits wrapper.
void hdrl_casu_tfits_delete(hdrl_casu_tfits *p)
Free all the workspace associated with a hdrl_casu_fits object.
void hdrl_casu_fits_delete(hdrl_casu_fits *p)
Free all the workspace associated with a hdrl_casu_fits object.
void hdrl_moments(ap_t *ap, double results[])
Do moments analysis on an object in a Plessey array.
cpl_error_code hdrl_overlp(ap_t *ap, double parm[IMNUM][NPAR], cpl_size *nbit, double xbar, double ybar, double total, cpl_size npix, double tmax)
Deblend overlapping images.
cpl_error_code hdrl_overlp_2orMore(ap_t *ap, double parm[IMNUM][NPAR], cpl_size *nbit, double xbar, double ybar, double total, cpl_size npix, double curthr_prev, double nexthr_prev, double lasthr_prev)
Deblend overlapping images 2 or more. If you know that exist more than 1 (come to the previous versio...