38 #include <casu_utils.h>
39 #include <casu_mods.h>
40 #include <casu_mask.h>
41 #include <casu_stats.h>
42 #include <casu_wcsutils.h>
44 #include "vircam_sky.h"
45 #include "vircam_mods.h"
46 #include "vircam_pfits.h"
95 casu_fits **skyout,
int *status) {
96 int i,njit,nx,ny,ji,ns;
97 unsigned char *inbpm,*rejmask,*rejplus;
100 cpl_propertylist *drs;
102 casu_fits **xsky_fits;
103 const char *fctid =
"vircam_tilesky";
108 if (*status != CASU_OK)
114 cpl_msg_error(fctid,
"Sky correction impossible. No science frames");
124 cplmask = cpl_mask_wrap((cpl_size)nx,(cpl_size)ny,(cpl_binary *)inbpm);
125 for (i = 0; i < nfiles; i++)
127 cpl_mask_unwrap(cplmask);
135 xskys = cpl_malloc(njit*
sizeof(xsky_struct));
136 for (i = 0; i < njit; i++) {
138 xskys[i].in = cpl_malloc(8*
sizeof(casu_fits *));
140 xskys[i].xsky = NULL;
141 xskys[i].status = CASU_OK;
143 xsky_fits = cpl_malloc(njit*
sizeof(casu_fits *));
151 for (i = 0; i < nfiles; i++) {
154 if (xskys[ji].n == xskys[ji].nalloc) {
155 xskys[ji].in = cpl_realloc(xskys[ji].in,
156 (xskys[ji].nalloc+8)*
sizeof(casu_fits *));
157 xskys[ji].nalloc += 8;
159 xskys[ji].in[xskys[ji].n] = inlist[i];
167 for (i = 0; i < njit; i++) {
169 if (xskys[i].n == 0) {
170 xskys[i].xsky = NULL;
172 }
else if (xskys[i].n == 1) {
173 xskys[i].xsky = NULL;
174 xsky_fits[ns++] = xskys[i].in[0];
179 "EXPTIME",&outim,NULL,&rejmask,
180 &rejplus,&drs,status);
183 freepropertylist(drs);
184 if (*status == CASU_OK) {
186 xsky_fits[ns++] = xskys[i].xsky;
196 (void)
casu_imcombine(xsky_fits,NULL,ns,1,1,0,1.0,
"EXPTIME",&outim,
197 NULL,&rejmask,&rejplus,&drs,status);
200 freepropertylist(drs);
201 if (*status == CASU_OK) {
214 freespace(xsky_fits);
215 for (i = 0; i < njit; i++) {
216 freespace(xskys[i].in);
217 freefits(xskys[i].xsky);
cpl_image * casu_fits_get_image(casu_fits *p)
casu_fits * casu_fits_wrap(cpl_image *im, casu_fits *model, cpl_propertylist *phu, cpl_propertylist *ehu)
cpl_propertylist * casu_fits_get_phu(casu_fits *p)
unsigned char * casu_mask_get_data(casu_mask *m)
int casu_mask_get_size_y(casu_mask *m)
int casu_mask_get_size_x(casu_mask *m)
int casu_imcombine(casu_fits **fset, casu_fits **fsetv, int nfits, int combtype, int scaletype, int xrej, float thresh, const char *expkey, cpl_image **outimage, cpl_image **outvimage, unsigned char **rejmask, unsigned char **rejplus, cpl_propertylist **drs, int *status)
Stack images into a mean or median image with rejection.
int casu_inpaint(casu_fits *in, int nbsize, int *status)
Inpaint pixels or patches in a map.
int vircam_tilesky(casu_fits **inlist, int nfiles, casu_mask *mask, casu_fits **skyout, int *status)
Work sky estimate from an input tile series.
int vircam_pfits_get_jitteri(const cpl_propertylist *plist, int *jitteri)
Get the position number of an observations in a jitter sequence.
int vircam_pfits_get_njsteps(const cpl_propertylist *plist, int *njsteps)
Get the value of the number of observations in a jitter sequence.