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