33 #include <irplib_utils.h>
43 #include <sinfo_key_names.h>
44 #include <sinfo_globals.h>
45 #include <sinfo_pro_types.h>
46 #include <sinfo_product_config.h>
47 #include <sinfo_prepare_stacked_frames_config.h>
48 #include <sinfo_north_south_test_config.h>
50 #include <sinfo_new_prepare_stacked_frames.h>
51 #include <sinfo_distortion_config.h>
52 #include <sinfo_new_find_distortions.h>
53 #include <sinfo_new_nst.h>
54 #include <sinfo_hidden.h>
55 #include <sinfo_tpl_dfs.h>
56 #include <sinfo_globals.h>
57 #include <sinfo_functions.h>
58 #include <sinfo_tpl_utils.h>
59 #include <sinfo_error.h>
60 #include <sinfo_utils_wrappers.h>
62 #include <sinfo_dfs.h>
64 int sinfo_step_distortion_create(cpl_plugin *plugin);
65 int sinfo_step_distortion_exec(cpl_plugin *plugin);
66 int sinfo_step_distortion_destroy(cpl_plugin *plugin);
67 static int sinfo_step_distortion(cpl_parameterlist *config, cpl_frameset *
set);
77 void sinfo_find_distortion_config_add(cpl_parameterlist *);
88 sinfo_step_distortion_create(cpl_plugin *plugin)
96 cpl_recipe *recipe = (cpl_recipe *)plugin;
97 recipe->parameters = cpl_parameterlist_new();
98 if(recipe->parameters == NULL) {
107 sinfo_product_config_add(recipe->parameters);
108 sinfo_prepare_stacked_frames_config_add(recipe->parameters);
109 sinfo_distortion_config_add(recipe->parameters);
110 sinfo_north_south_test_config_add(recipe->parameters);
117 sinfo_step_distortion_exec(cpl_plugin *plugin)
120 cpl_recipe *recipe = (cpl_recipe *) plugin;
121 if(recipe->parameters == NULL) {
124 if(recipe->frames == NULL) {
129 return sinfo_step_distortion(recipe->parameters, recipe->frames);
134 sinfo_step_distortion_destroy(cpl_plugin *plugin)
137 cpl_recipe *recipe = (cpl_recipe *) plugin;
144 cpl_parameterlist_delete(recipe->parameters);
154 cpl_recipe *recipe = cpl_calloc(1,
sizeof *recipe);
155 cpl_plugin *plugin = &recipe->interface;
158 cpl_plugin_init(plugin,
160 SINFONI_BINARY_VERSION,
161 CPL_PLUGIN_TYPE_RECIPE,
162 "sinfo_step_distortion",
163 "Find Distortions in frames",
168 sinfo_step_distortion_create,
169 sinfo_step_distortion_exec,
170 sinfo_step_distortion_destroy);
172 cpl_pluginlist_append(list, plugin);
184 sinfo_step_distortion(cpl_parameterlist *config, cpl_frameset *
set)
188 cpl_frame* frame=NULL;
189 char file_name[FILE_NAME_SZ];
190 cpl_propertylist* plist=NULL;
195 ck0(sinfo_dfs_set_groups(
set),
"Cannot indentify RAW and CALIB frames") ;
204 sinfo_msg(
"COMPUTE DISTORTIONS") ;
205 ck0(sinfo_new_find_distortions(cpl_func,config,
set),
206 "COMPUTE DISTORTION FAILED");
208 if(NULL != cpl_frameset_find(
set,PRO_FIBRE_NS_STACKED)) {
209 frame = cpl_frameset_find(
set,PRO_FIBRE_NS_STACKED);
210 strcpy(file_name,cpl_frame_get_filename(frame));
215 ima=cpl_image_load(file_name,CPL_TYPE_FLOAT,0,0);
217 cknull(plist = cpl_propertylist_load(file_name, 0),
218 "getting header from reference ima frame %s",file_name);
221 if (sinfo_propertylist_has(plist, KEY_NAME_LAMP_HALO)) {
222 cpl_propertylist_set_bool(plist, KEY_NAME_LAMP_HALO, LAMP_ON);
224 cpl_propertylist_append_bool(plist, KEY_NAME_LAMP_HALO,LAMP_ON) ;
227 sinfo_free_image(&ima);
228 sinfo_free_propertylist(&plist);
229 sinfo_msg(
"SUCCESS: COMPUTED DISTORTIONS") ;
237 sinfo_msg(
"DISTORT FAKE FRAME");
240 strcpy(fk->pro_class,PRO_FIBRE_NS_STACKED);
248 ck0(sinfo_new_prepare_stacked_frames(cpl_func,config,
set,
249 PRO_FIBRE_NS_STACKED_DIST, 0,fk),
250 "FAILED STACKING FRAME") ;
252 sinfo_msg(
"SUCCESS: DISTORTED FAKE FRAME\n") ;
253 sinfo_fake_delete(&fk);
256 if(NULL != cpl_frameset_find(
set,PRO_FIBRE_NS_STACKED_DIST)) {
257 frame = cpl_frameset_find(
set,PRO_FIBRE_NS_STACKED_DIST);
258 strcpy(file_name,cpl_frame_get_filename(frame));
263 ima=cpl_image_load(file_name,CPL_TYPE_FLOAT,0,0);
265 cknull(plist = cpl_propertylist_load(file_name, 0),
266 "getting header from reference ima frame %s",file_name);
269 if (sinfo_propertylist_has(plist, KEY_NAME_LAMP_HALO)) {
270 cpl_propertylist_set_bool(plist, KEY_NAME_LAMP_HALO, LAMP_ON);
272 cpl_propertylist_append_bool(plist, KEY_NAME_LAMP_HALO,LAMP_ON) ;
274 sinfo_free_propertylist(&plist);
275 sinfo_free_image(&ima);
276 sinfo_msg(
"SUCCESS: COMPUTED DISTORTIONS\n") ;
287 sinfo_msg(
"RUN NORD SUD TEST") ;
288 ck0(sinfo_new_nst(cpl_func,config,
set ),
"NORTH SOUTH TEST FAILED") ;
289 sinfo_msg(
"SUCCESS: RUNNED NORD SUD TEST") ;
290 sinfo_msg(
"SUCCESS: RECIPE\n") ;
295 sinfo_fake_delete(&fk);
296 sinfo_free_propertylist(&plist) ;
297 sinfo_free_image(&ima);
299 if (cpl_error_get_code() != CPL_ERROR_NONE) {