38 #include "vircam_mods.h"
39 #include <casu_utils.h>
40 #include <casu_mask.h>
41 #include <casu_stats.h>
42 #include <casu_filt.h>
88 float *data,*d,medprofile,profilerms,*wptr,val,rms,lcut,hcut;
89 float skymed,skynoise,*copy;
90 unsigned char *bpm,*b,*rb,*ob;
92 cpl_propertylist *plist;
96 if (*status != CASU_OK)
114 casu_qmedsig(data,bpm,nx*ny,3.0,3,-65535.0,65535.0,&skymed,&skynoise);
118 wptr = cpl_malloc(ny*
sizeof(*wptr));
119 copy = cpl_malloc(ny*
sizeof(*copy));
120 rb = cpl_calloc(ny,
sizeof(*rb));
126 for (i = 0; i < ny; i++) {
133 for (j = 0; j < 3; j++) {
135 if (val == CX_MAXFLOAT) {
138 lcut = val - 3.0*skynoise;
139 hcut = val + 3.0*skynoise;
142 rb[i] = (val == CX_MAXFLOAT);
143 wptr[i] = (rb[i] ? 0.0 : val);
155 if (profilerms > 5.0) {
156 ob = cpl_calloc(ny,
sizeof(*ob));
157 casu_dostat(copy,rb,ob,ny,25,MEDIANCALC);
158 casu_dostat(copy,rb,ob,ny,5,MEANCALC);
159 for (i = 0; i < ny; i++) {
167 for (i = 0; i < ny; i++) {
171 wptr[i] -= medprofile;
181 for (i = 0; i < ny; i++) {
182 for (j = 0; j < nx; j++)
190 cpl_propertylist_update_bool(plist,
"ESO DRS STRIPECOR",TRUE);
191 cpl_propertylist_set_comment(plist,
"ESO DRS STRIPECOR",
192 "Stripe correction done");
193 cpl_propertylist_update_float(plist,
"ESO DRS STRIPERMS",profilerms);
194 cpl_propertylist_set_comment(plist,
"ESO DRS STRIPERMS",
195 "RMS of the removed stripe profile");
cpl_image * casu_fits_get_image(casu_fits *p)
cpl_propertylist * casu_fits_get_ehu(casu_fits *p)
unsigned char * casu_mask_get_data(casu_mask *m)
void casu_medmad(float *data, unsigned char *bpm, long np, float *med, float *mad)
void casu_qmedsig(float *data, unsigned char *bpm, long npts, float thresh, int niter, float lowv, float highv, float *median, float *sigma)
void casu_medmadcut(float *data, unsigned char *bpm, long np, float lcut, float hcut, float *med, float *mad)
int vircam_destripe(casu_fits *in, casu_mask *inbpm, int *status)
Remove stripes from the background of an image.