38 #include "vircam_mods.h"
39 #include "vircam_utils.h"
40 #include "vircam_stats.h"
41 #include "vircam_mask.h"
42 #include "vircam_filt.h"
86 float *data,*d,medprofile,profilerms,*wptr,val,rms,lcut,hcut;
87 float skymed,skynoise,*copy;
88 unsigned char *bpm,*b,*rb,*ob;
90 cpl_propertylist *plist;
94 if (*status != VIR_OK)
112 vircam_qmedsig(data,bpm,nx*ny,3.0,3,-65535.0,65535.0,&skymed,&skynoise);
116 wptr = cpl_malloc(ny*
sizeof(*wptr));
117 copy = cpl_malloc(ny*
sizeof(*copy));
118 rb = cpl_calloc(ny,
sizeof(*rb));
124 for (i = 0; i < ny; i++) {
131 for (j = 0; j < 3; j++) {
133 if (val == CX_MAXFLOAT) {
136 lcut = val - 3.0*skynoise;
137 hcut = val + 3.0*skynoise;
140 rb[i] = (val == CX_MAXFLOAT);
141 wptr[i] = (rb[i] ? 0.0 : val);
153 if (profilerms > 5.0) {
154 ob = cpl_calloc(ny,
sizeof(*ob));
157 for (i = 0; i < ny; i++) {
165 for (i = 0; i < ny; i++) {
169 wptr[i] -= medprofile;
179 for (i = 0; i < ny; i++) {
180 for (j = 0; j < nx; j++)
188 cpl_propertylist_update_bool(plist,
"ESO DRS STRIPECOR",TRUE);
189 cpl_propertylist_set_comment(plist,
"ESO DRS STRIPECOR",
190 "Stripe correction done");
191 cpl_propertylist_update_float(plist,
"ESO DRS STRIPERMS",profilerms);
192 cpl_propertylist_set_comment(plist,
"ESO DRS STRIPERMS",
193 "RMS of the removed stripe profile");
void vircam_qmedsig(float *data, unsigned char *bpm, long npts, float thresh, int niter, float lowv, float highv, float *median, float *sigma)
void vircam_medmadcut(float *data, unsigned char *bpm, long np, float lcut, float hcut, float *med, float *mad)
int vircam_destripe(vir_fits *in, vir_mask *inbpm, int *status)
Remove stripes from the background of an image.
unsigned char * vircam_mask_get_data(vir_mask *m)
cpl_image * vircam_fits_get_image(vir_fits *p)
void vircam_medmad(float *data, unsigned char *bpm, long np, float *med, float *mad)
void vircam_dostat(float *data, unsigned char *bpm, unsigned char *goodval, int npts, int nfilt, int whichstat)
cpl_propertylist * vircam_fits_get_ehu(vir_fits *p)