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);
75 sinfo_parse_cpl_input_baddist(cpl_parameterlist * cpl_cfg,
85 cfg = sinfo_bad_cfg_create();
92 parse_section_badpix (cfg, cpl_cfg);
93 parse_section_thresh (cfg, cpl_cfg);
94 parse_section_frames (cfg, sof, procatg, raw,&status);
97 sinfo_bad_cfg_destroy(cfg);
117 parse_section_frames(bad_config * cfg,
119 const char * procatg,
128 cpl_frame* frame=NULL;
129 char spat_res[FILE_NAME_SZ];
130 char lamp_status[FILE_NAME_SZ];
131 char band[FILE_NAME_SZ];
135 if(strcmp(procatg,PRO_BP_MAP_DI) == 0 ) {
137 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
138 nraw=cpl_frameset_get_size(*raw);
140 }
else if(strcmp(procatg,PRO_BP_MAP_NO) == 0 ) {
142 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
143 nraw=cpl_frameset_get_size(*raw);
146 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
147 nraw=cpl_frameset_get_size(*raw);
150 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
151 nraw=cpl_frameset_get_size(*raw);
156 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
157 nraw=cpl_frameset_get_size(*raw);
161 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
162 nraw=cpl_frameset_get_size(*raw);
167 nraw=cpl_frameset_get_size(*raw);
170 "frameset!Aborting...",nraw,
171 RAW_FLAT_LAMP,RAW_FLAT_NS);
178 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
181 for (i=0 ; i<nraw ; i++) {
182 frame = cpl_frameset_get_frame(*raw,i);
184 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1)
187 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
192 sinfo_msg_error(
"Error: no good raw frame in input, something wrong!");
198 cfg->nframes = nraw_good ;
201 strcpy(cfg -> outName, BP_DIST_OUT_FILENAME);
206 frame = cpl_frameset_get_frame(*raw,0);
207 sinfo_get_spatial_res(frame,spat_res);
209 switch(sinfo_frame_is_on(frame))
212 strcpy(lamp_status,
"on");
215 strcpy(lamp_status,
"off");
218 strcpy(lamp_status,
"undefined");
221 strcpy(lamp_status,
"undefined");
225 sinfo_get_band(frame,band);
226 sinfo_msg(
"Spatial resolution: %s lamp_status: %s band: %s \n",
227 spat_res, lamp_status, band);
228 sinfo_get_ins_set(band,&ins_set);
242 parse_section_badpix(bad_config * cfg, cpl_parameterlist * cpl_cfg)
246 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.sigma_factor");
247 cfg -> sigmaFactor = cpl_parameter_get_double(p);
249 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.method_index");
250 cfg -> methodInd = cpl_parameter_get_int(p);
252 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.factor");
253 cfg -> factor = cpl_parameter_get_double(p);
255 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.iterations");
256 cfg -> iterations = cpl_parameter_get_int(p);
258 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.low_rejection");
259 cfg -> loReject = cpl_parameter_get_double(p);
261 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.high_rejection");
262 cfg -> hiReject = cpl_parameter_get_double(p);
264 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.llx");
265 cfg -> llx = cpl_parameter_get_int(p);
267 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.lly");
268 cfg -> lly = cpl_parameter_get_int(p);
270 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.urx");
271 cfg -> urx = cpl_parameter_get_int(p);
273 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.ury");
274 cfg -> ury = cpl_parameter_get_int(p);
286 parse_section_thresh(bad_config * cfg, cpl_parameterlist * cpl_cfg)
290 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.threshold_index");
291 cfg -> threshInd = cpl_parameter_get_bool(p);
293 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.mean_factor");
294 cfg -> meanfactor = cpl_parameter_get_double(p);
297 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.min_cut");
298 cfg -> mincut = cpl_parameter_get_double(p);
300 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_dist.max_cut");
301 cfg -> maxcut = cpl_parameter_get_double(p);
#define sinfo_msg_error(...)
Print an error message.