/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.