34 #include "sinfo_baddist_ini_by_cpl.h"
35 #include "sinfo_hidden.h"
36 #include "sinfo_pro_types.h"
37 #include "sinfo_raw_types.h"
38 #include "sinfo_globals.h"
39 #include "sinfo_functions.h"
40 #include "sinfo_file_handling.h"
46 static void parse_section_frames(bad_config * cfg,
47 cpl_frameset* sof,
const char* procatg, cpl_frameset** raw,
int* status);
48 static void parse_section_badpix(bad_config * cfg, cpl_parameterlist* cpl_cfg);
49 static void parse_section_thresh(bad_config * cfg, cpl_parameterlist* cpl_cfg);
73 sinfo_parse_cpl_input_baddist(cpl_parameterlist * cpl_cfg,
83 cfg = sinfo_bad_cfg_create();
90 parse_section_badpix (cfg, cpl_cfg);
91 parse_section_thresh (cfg, cpl_cfg);
92 parse_section_frames (cfg, sof, procatg, raw,&status);
95 sinfo_bad_cfg_destroy(cfg);
115 parse_section_frames(bad_config * cfg,
117 const char * procatg,
126 cpl_frame* frame=NULL;
127 char spat_res[FILE_NAME_SZ];
128 char lamp_status[FILE_NAME_SZ];
129 char band[FILE_NAME_SZ];
133 if(strcmp(procatg,PRO_BP_MAP_DI) == 0 ) {
135 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
136 nraw=cpl_frameset_get_size(*raw);
138 }
else if(strcmp(procatg,PRO_BP_MAP_NO) == 0 ) {
140 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
141 nraw=cpl_frameset_get_size(*raw);
144 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
145 nraw=cpl_frameset_get_size(*raw);
148 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
149 nraw=cpl_frameset_get_size(*raw);
154 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
155 nraw=cpl_frameset_get_size(*raw);
159 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
160 nraw=cpl_frameset_get_size(*raw);
165 nraw=cpl_frameset_get_size(*raw);
168 "frameset!Aborting...",nraw,
169 RAW_FLAT_LAMP,RAW_FLAT_NS);
176 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
179 for (i=0 ; i<nraw ; i++) {
180 frame = cpl_frameset_get_frame(*raw,i);
182 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1)
185 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
190 sinfo_msg_error(
"Error: no good raw frame in input, something wrong!");
196 cfg->nframes = nraw_good ;
199 strcpy(cfg -> outName, BP_DIST_OUT_FILENAME);
204 frame = cpl_frameset_get_frame(*raw,0);
205 sinfo_get_spatial_res(frame,spat_res);
207 switch(sinfo_frame_is_on(frame))
210 strcpy(lamp_status,
"on");
213 strcpy(lamp_status,
"off");
216 strcpy(lamp_status,
"undefined");
219 strcpy(lamp_status,
"undefined");
223 sinfo_get_band(frame,band);
224 sinfo_msg(
"Spatial resolution: %s lamp_status: %s band: %s \n",
225 spat_res, lamp_status, band);
226 sinfo_get_ins_set(band,&ins_set);
240 parse_section_badpix(bad_config * cfg, cpl_parameterlist * cpl_cfg)
244 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.sigma_factor");
245 cfg -> sigmaFactor = cpl_parameter_get_double(p);
247 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.method_index");
248 cfg -> methodInd = cpl_parameter_get_int(p);
250 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.factor");
251 cfg -> factor = cpl_parameter_get_double(p);
253 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.iterations");
254 cfg -> iterations = cpl_parameter_get_int(p);
256 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.low_rejection");
257 cfg -> loReject = cpl_parameter_get_double(p);
259 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.high_rejection");
260 cfg -> hiReject = cpl_parameter_get_double(p);
262 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.llx");
263 cfg -> llx = cpl_parameter_get_int(p);
265 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.lly");
266 cfg -> lly = cpl_parameter_get_int(p);
268 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.urx");
269 cfg -> urx = cpl_parameter_get_int(p);
271 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.ury");
272 cfg -> ury = cpl_parameter_get_int(p);
284 parse_section_thresh(bad_config * cfg, cpl_parameterlist * cpl_cfg)
288 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.threshold_index");
289 cfg -> threshInd = cpl_parameter_get_bool(p);
291 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.mean_factor");
292 cfg -> meanfactor = cpl_parameter_get_double(p);
295 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.min_cut");
296 cfg -> mincut = cpl_parameter_get_double(p);
298 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.max_cut");
299 cfg -> maxcut = cpl_parameter_get_double(p);