35 #include "sinfo_badnorm_ini_by_cpl.h"
36 #include "sinfo_raw_types.h"
37 #include "sinfo_pro_types.h"
38 #include "sinfo_hidden.h"
39 #include "sinfo_globals.h"
40 #include "sinfo_functions.h"
41 #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);
72 sinfo_parse_cpl_input_badnorm(cpl_parameterlist * cpl_cfg,
82 cfg = sinfo_bad_cfg_create();
89 parse_section_badpix (cfg, cpl_cfg);
90 parse_section_thresh (cfg, cpl_cfg);
91 parse_section_frames (cfg, sof, procatg, raw,&status);
94 sinfo_bad_cfg_destroy(cfg);
116 parse_section_frames(bad_config * cfg,
118 const char * procatg,
127 cpl_frame* frame=NULL;
128 char spat_res[FILE_NAME_SZ];
129 char lamp_status[FILE_NAME_SZ];
130 char band[FILE_NAME_SZ];
132 if(strcmp(procatg,PRO_BP_MAP_DI) == 0 ) {
134 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
135 nraw=cpl_frameset_get_size(*raw);
137 }
else if(strcmp(procatg,PRO_BP_MAP_NO) == 0 ) {
139 sinfo_extract_raw_frames_type(sof,raw,PRO_MASTER_FLAT_LAMP);
140 nraw=cpl_frameset_get_size(*raw);
143 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
144 nraw=cpl_frameset_get_size(*raw);
147 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
148 nraw=cpl_frameset_get_size(*raw);
153 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_LAMP);
154 nraw=cpl_frameset_get_size(*raw);
158 sinfo_extract_raw_frames_type(sof,raw,RAW_FLAT_NS);
159 nraw=cpl_frameset_get_size(*raw);
165 "frameset!Aborting...",nraw,
166 PRO_MASTER_FLAT_LAMP,RAW_FLAT_LAMP,RAW_FLAT_NS);
173 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
176 for (i=0 ; i<nraw ; i++) {
177 frame = cpl_frameset_get_frame(*raw,i);
179 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1)
182 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
188 sinfo_msg_error(
"Error: no good raw frame in input, something wrong!");
194 cfg->nframes = nraw_good ;
197 if (strcmp(procatg,PRO_BP_MAP_NO) == 0) {
198 strcpy(cfg -> outName, BP_NORM_OUT_FILENAME);
199 }
else if (strcmp(procatg,PRO_BP_MAP_DI) == 0) {
200 strcpy(cfg -> outName, BP_DIST_OUT_FILENAME);
201 }
else if (strcmp(procatg,PRO_DEFAULT) == 0) {
202 strcpy(cfg -> outName, BP_NORM_OUT_FILENAME);
211 frame = cpl_frameset_get_frame(*raw,0);
212 sinfo_get_spatial_res(frame,spat_res);
215 switch(sinfo_frame_is_on(frame))
218 strcpy(lamp_status,
"on");
221 strcpy(lamp_status,
"off");
224 strcpy(lamp_status,
"undefined");
227 strcpy(lamp_status,
"undefined");
231 sinfo_get_band(frame,band);
232 sinfo_msg(
"Spatial resolution: %s lamp status: %s band: %s \n",
233 spat_res, lamp_status, band);
236 sinfo_get_ins_set(band,&ins_set);
252 parse_section_badpix(bad_config * cfg, cpl_parameterlist * cpl_cfg)
256 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.sigma_factor");
257 cfg -> sigmaFactor = cpl_parameter_get_double(p);
259 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.method_index");
260 cfg -> methodInd = cpl_parameter_get_int(p);
262 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.factor");
263 cfg -> factor = cpl_parameter_get_double(p);
265 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.iterations");
266 cfg -> iterations = cpl_parameter_get_int(p);
268 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.low_rejection");
269 cfg -> loReject = cpl_parameter_get_double(p);
271 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.high_rejection");
272 cfg -> hiReject = cpl_parameter_get_double(p);
274 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.llx");
275 cfg -> llx = cpl_parameter_get_int(p);
277 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.lly");
278 cfg -> lly = cpl_parameter_get_int(p);
280 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.urx");
281 cfg -> urx = cpl_parameter_get_int(p);
283 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.ury");
284 cfg -> ury = cpl_parameter_get_int(p);
298 parse_section_thresh(bad_config * cfg, cpl_parameterlist * cpl_cfg)
302 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.threshold_index");
303 cfg -> threshInd = cpl_parameter_get_bool(p);
305 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.mean_factor");
306 cfg -> meanfactor = cpl_parameter_get_double(p);
309 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.min_cut");
310 cfg -> mincut = cpl_parameter_get_double(p);
312 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_norm.max_cut");
313 cfg -> maxcut = cpl_parameter_get_double(p);
324 sinfo_badnorm_free(bad_config ** cfg)
327 if((*cfg)->framelist != NULL) {
328 cpl_free((*cfg)->framelist);
329 (*cfg)->framelist=NULL;
331 sinfo_bad_cfg_destroy((*cfg));