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 int sinfo_step_distortion_create(cpl_plugin *plugin);
63 int sinfo_step_distortion_exec(cpl_plugin *plugin);
64 int sinfo_step_distortion_destroy(cpl_plugin *plugin);
65 static int sinfo_step_distortion(cpl_parameterlist *config, cpl_frameset *set);
75 void sinfo_find_distortion_config_add(cpl_parameterlist *);
86 sinfo_step_distortion_create(cpl_plugin *plugin)
94 cpl_recipe *recipe = (cpl_recipe *)plugin;
95 recipe->parameters = cpl_parameterlist_new();
96 if(recipe->parameters == NULL) {
105 sinfo_product_config_add(recipe->parameters);
106 sinfo_prepare_stacked_frames_config_add(recipe->parameters);
107 sinfo_distortion_config_add(recipe->parameters);
108 sinfo_north_south_test_config_add(recipe->parameters);
115 sinfo_step_distortion_exec(cpl_plugin *plugin)
118 cpl_recipe *recipe = (cpl_recipe *) plugin;
119 if(recipe->parameters == NULL) {
122 if(recipe->frames == NULL) {
127 return sinfo_step_distortion(recipe->parameters, recipe->frames);
132 sinfo_step_distortion_destroy(cpl_plugin *plugin)
135 cpl_recipe *recipe = (cpl_recipe *) plugin;
142 cpl_parameterlist_delete(recipe->parameters);
152 cpl_recipe *recipe = cpl_calloc(1,
sizeof *recipe);
153 cpl_plugin *plugin = &recipe->interface;
156 cpl_plugin_init(plugin,
158 SINFONI_BINARY_VERSION,
159 CPL_PLUGIN_TYPE_RECIPE,
160 "sinfo_step_distortion",
161 "Find Distortions in frames",
166 sinfo_step_distortion_create,
167 sinfo_step_distortion_exec,
168 sinfo_step_distortion_destroy);
170 cpl_pluginlist_append(list, plugin);
182 sinfo_step_distortion(cpl_parameterlist *config, cpl_frameset *set)
186 cpl_frame* frame=NULL;
187 char file_name[FILE_NAME_SZ];
188 cpl_propertylist* plist=NULL;
193 ck0(sinfo_dfs_set_groups(set),
"Cannot indentify RAW and CALIB frames") ;
202 sinfo_msg(
"COMPUTE DISTORTIONS") ;
203 ck0(sinfo_new_find_distortions(cpl_func,config,set),
204 "COMPUTE DISTORTION FAILED");
206 if(NULL != cpl_frameset_find(set,PRO_FIBRE_NS_STACKED)) {
207 frame = cpl_frameset_find(set,PRO_FIBRE_NS_STACKED);
208 strcpy(file_name,cpl_frame_get_filename(frame));
213 ima=cpl_image_load(file_name,CPL_TYPE_FLOAT,0,0);
215 cknull(plist = cpl_propertylist_load(file_name, 0),
216 "getting header from reference ima frame %s",file_name);
219 if (cpl_propertylist_has(plist, KEY_NAME_LAMP_HALO)) {
220 cpl_propertylist_set_bool(plist, KEY_NAME_LAMP_HALO, LAMP_ON);
222 cpl_propertylist_append_bool(plist, KEY_NAME_LAMP_HALO,LAMP_ON) ;
225 sinfo_free_image(&ima);
226 sinfo_free_propertylist(&plist);
227 sinfo_msg(
"SUCCESS: COMPUTED DISTORTIONS") ;
235 sinfo_msg(
"DISTORT FAKE FRAME");
238 strcpy(fk->pro_class,PRO_FIBRE_NS_STACKED);
246 ck0(sinfo_new_prepare_stacked_frames(cpl_func,config, set,
247 PRO_FIBRE_NS_STACKED_DIST, 0,fk),
248 "FAILED STACKING FRAME") ;
250 sinfo_msg(
"SUCCESS: DISTORTED FAKE FRAME\n") ;
251 sinfo_fake_delete(&fk);
254 if(NULL != cpl_frameset_find(set,PRO_FIBRE_NS_STACKED_DIST)) {
255 frame = cpl_frameset_find(set,PRO_FIBRE_NS_STACKED_DIST);
256 strcpy(file_name,cpl_frame_get_filename(frame));
261 ima=cpl_image_load(file_name,CPL_TYPE_FLOAT,0,0);
263 cknull(plist = cpl_propertylist_load(file_name, 0),
264 "getting header from reference ima frame %s",file_name);
267 if (cpl_propertylist_has(plist, KEY_NAME_LAMP_HALO)) {
268 cpl_propertylist_set_bool(plist, KEY_NAME_LAMP_HALO, LAMP_ON);
270 cpl_propertylist_append_bool(plist, KEY_NAME_LAMP_HALO,LAMP_ON) ;
272 sinfo_free_propertylist(&plist);
273 sinfo_free_image(&ima);
274 sinfo_msg(
"SUCCESS: COMPUTED DISTORTIONS\n") ;
285 sinfo_msg(
"RUN NORD SUD TEST") ;
286 ck0(sinfo_new_nst(cpl_func,config, set ),
"NORTH SOUTH TEST FAILED") ;
287 sinfo_msg(
"SUCCESS: RUNNED NORD SUD TEST") ;
288 sinfo_msg(
"SUCCESS: RECIPE\n") ;
293 sinfo_fake_delete(&fk);
294 sinfo_free_propertylist(&plist) ;
295 sinfo_free_image(&ima);
297 if (cpl_error_get_code() != CPL_ERROR_NONE) {
void irplib_reset(void)
Reset IRPLIB state.
#define sinfo_msg_error(...)
Print an error message.
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.