/*************************************************************************************************************************************/ /* */ /* L I S S A G E P A R A B O L I Q U E D ' U N E I M A G E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une image */ /* dont le nom est le premier argument */ /* d'appel ; elle est le resultat du */ /* lissage de la deuxieme suivant un */ /* reseau orthogonal. */ /* */ /* */ /* Author of '$xci/lissage$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1989??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE #include image_image_IMAGESF_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define PAS_HORIZONTAL \ HUIT #define PAS_VERTICAL \ HUIT /* Cas d'un lissage d'une image 'image'. */ #define NOMBRE_DE_PASSES \ UN #define LISSAGE_HORIZONTAL \ VRAI #define LISSAGE_VERTICAL \ VRAI #define PAS_PARABOLIQUE_HORIZONTAL \ UN #define PAS_PARABOLIQUE_VERTICAL \ UN /* Cas d'un lissage d'une image 'imageF'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* L I S S A G E P A R A B O L I Q U E D ' U N E I M A G E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(Positive,INIT(pas_horizontal,PAS_HORIZONTAL)); DEFV(Positive,INIT(pas_vertical,PAS_VERTICAL)); /* Definition du reseau orthogonal de lissage d'une image 'image'. */ DEFV(Positive,INIT(nombre_de_passes,NOMBRE_DE_PASSES)); /* Nombre de passes de lissage d'une image 'imageF'. */ DEFV(Logical,INIT(lissage_horizontal,LISSAGE_HORIZONTAL)); DEFV(Logical,INIT(lissage_vertical,LISSAGE_VERTICAL)); /* Controle des deux directions "horizontale" et "verticale" de lissage pour 'imageF'. */ DEFV(Positive,INIT(pas_parabolique_horizontal,PAS_PARABOLIQUE_HORIZONTAL)); DEFV(Positive,INIT(pas_parabolique_vertical,PAS_PARABOLIQUE_VERTICAL)); /* Pas de lissage d'une image 'imageF'. */ /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("IFlissage_parabolique_____compatibilite_20031025=""compatibilite_20031025=" ,IFlissage_parabolique_____compatibilite_20031025 ); GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("standard=",les_images_sont_standards); GET_ARGUMENTS2_L("normaliser_avant_apres=""normaliser=""normavap=""norm=""navap=""n=" ,IFlissage_parabolique_____renormaliser_avant_le_lissage ,IFlissage_parabolique_____renormaliser_apres_le_lissage ); /* Arguments introduits le 20150114174137 et completes le 20160602163635... */ GET_ARGUMENT_L("normaliser_avant=""normav=""nav=" ,IFlissage_parabolique_____renormaliser_avant_le_lissage ); GET_ARGUMENT_L("normaliser_apres_=""normap=""nap=" ,IFlissage_parabolique_____renormaliser_apres_le_lissage ); /* Arguments introduits le 20160602163131... */ GET_ARGUMENT_L("IFnormalisation_____compatibilite_20120705=""compatibilite_20120705=" ,IFnormalisation_____compatibilite_20120705 ); GET_ARGUMENT_F("amplitude_nullite=""nullite=" ,IFnormalisation_____amplitude_des_extrema_en_deca_de_laquelle_il_y_a_nullite ); GET_ARGUMENT_L("zero=",IFnormalisation_____conserver_le_zero); GET_ARGUMENT_L("utiliser_moyenne_uniforme=""umu=" ,IFnormalisation_____utiliser_la_moyenne_en_cas_d_uniformite ); GET_ARGUMENT_F("valeur_moyenne_forcee=""vmf=",IFnormalisation_____niveau_a_forcer_en_cas_d_uniformite); GET_ARGUMENT_F("origine=""o=",IFnormalisation_____niveau_origine___de_normalisation); GET_ARGUMENT_F("extremite=""e=",IFnormalisation_____niveau_extremite_de_normalisation); /* Arguments introduits le 20150114174902... */ GET_ARGUMENT_L("interpolation_cubique=""cubique=",Ilissage_____interpolation_cubique); GET_ARGUMENT_N("interpolation_lineaire=""lineaire=",Ilissage_____interpolation_cubique); /* Arguments introduits le 20131230125832... */ GET_ARGUMENT_I("horizontal=""h=",pas_horizontal); GET_ARGUMENT_I("vertical=""v=",pas_vertical); GET_ARGUMENT_I("passes=""iterations=",nombre_de_passes); /* L'argument "iterations=" a ete introduit le 20090516092954... */ GET_ARGUMENT_L("lhorizontal=",lissage_horizontal); GET_ARGUMENT_L("lvertical=",lissage_vertical); GET_ARGUMENT_I("phorizontal=""ph=",pas_parabolique_horizontal); GET_ARGUMENT_I("pvertical=""pv=",pas_parabolique_vertical); GET_ARGUMENT_F("coefficient_n_m2=""nm2=",LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_m2); GET_ARGUMENT_F("coefficient_n_m1=""nm1=",LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_m1); GET_ARGUMENT_F("coefficient_n_0=""n0=",LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_0); GET_ARGUMENT_F("coefficient_n_p1=""np1=",LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_p1); GET_ARGUMENT_F("coefficient_n_p2=""np2=",LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_p2); /* Arguments introduits le 20160603152548... */ ) ); CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_imageA)))) /* Chargement de l'image a transformer. */ Bblock Test(EST_VRAI(les_images_sont_standards)) Bblock /* Cas d'une image 'image' : */ Test(IFNE(nombre_de_passes,UN)) /* ATTENTION : c'est bien par rapport a 'UN' et non pas a 'NOMBRE_DE_PASSES' qu'il faut */ /* tester au cas ou ce parametre ('NOMBRE_DE_PASSES') ne vaudrait plus 'UN'... */ Bblock /* Test introduit le 20131231132536... */ PRINT_ATTENTION("Pour les images 'standard' il ne peut y avoir qu'une seule passe de lissage"); Eblock ATes Bblock Eblock ETes CALS(Ilissage(ImageR,ImageA,pas_horizontal,pas_vertical)); /* Et lissage de l'image Argument. */ Eblock ATes Bblock /* Cas d'une image 'imageF' : */ CALS(IFlissage_parabolique(IFmageR ,IFmageA ,nombre_de_passes ,lissage_horizontal,lissage_vertical ,pas_parabolique_horizontal,pas_parabolique_vertical ) ); /* Et lissage de l'image Argument. */ Eblock ETes CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande