/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O R M A L I S A T I O N   D ' U N E   S E Q U E N C E   D ' I M A G E S   F L O T T A N T E S  :                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/normalise.02$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1994??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"

#define   NORMALISATION_INDEPENDANTE                                                                                                    \
                    FAUX                                                                                                                \
                                        /* Faut-il faire independemment la normalisation des differentes pages constituant           */ \
                                        /* l'album ? La valeur par defaut garantit la compatibilite anterieure (ceci fut introduit   */ \
                                        /* le 20100831212927).                                                                       */

#define   EXTRAIRE_LES_EXTREMA                                                                                                          \
                    VRAI                                                                                                                \
                                        /* Faut-il extraire les extrema ('VRAI') ou bien prendre les arguments d'appel ('FAUX') ?    */

#define   VALEUR_MINIMALE                                                                                                               \
                    COORDONNEE_BARYCENTRIQUE_MINIMALE
#define   VALEUR_MAXIMALE                                                                                                               \
                    COORDONNEE_BARYCENTRIQUE_MAXIMALE
                                        /* Extrema a priori...                                                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O R M A L I S A T I O N   D ' U N E   S E Q U E N C E   D ' I M A G E S   F L O T T A N T E S  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_postfixe),NOM_UNDEF_VIDE));
                                        /* Nom d'un eventuel postfixe a placer derriere <nom_imageA><numero> (par exemple '$ROUGE'). */
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
                                        /* Numero de la derniere image.                                                              */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */
     DEFV(Int,INIT(numero_d_image,UNDEF));
                                        /* Numero de l'image courante.                                                               */
     DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF));
                                        /* Nom courant des images.                                                                   */

     DEFV(Logical,INIT(normalisation_independante,NORMALISATION_INDEPENDANTE));
                                        /* Faut-il faire independemment la normalisation des differentes pages constituant           */
                                        /* l'album ? La valeur par defaut garantit la compatibilite anterieure (ceci fut introduit   */
                                        /* le 20100831212927).                                                                       */

     DEFV(Logical,INIT(extraire_les_extrema,EXTRAIRE_LES_EXTREMA));
                                        /* Faut-il extraire les extrema ('VRAI') ou bien prendre les arguments d'appel ('FAUX') ?    */
     DEFV(genere_Float,INIT(nivo_minimum,VALEUR_MINIMALE));
     DEFV(genere_Float,INIT(nivo_maximum,VALEUR_MAXIMALE));
                                        /* Niveau de NOIR de l'image Resultat.                                                       */
     /*..............................................................................................................................*/
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("IFnormalisation_____compatibilite_20120705=""compatibilite_20120705="
                                       ,IFnormalisation_____compatibilite_20120705
                                        );
                                        /* Parametre introduit le 20120705170030...                                                  */

                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                         GET_ARGUMENT_C("postfixe=",nom_postfixe);
                         GET_ARGUMENT_I("premiere=",premiere_image);
                         GET_ARGUMENT_I("derniere=",derniere_image);
                         GET_ARGUMENT_I("pas=",pas_des_images);
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);

                         GET_ARGUMENT_L("independante=""automatique=",normalisation_independante);
                                        /* Parametre introduit le 20100831212927...                                                  */

                         GET_ARGUMENT_L("extrema=",extraire_les_extrema);
                         GET_ARGUMENT_F("minimum=""min=",nivo_minimum);
                         GET_ARGUMENT_F("maximum=""max=",nivo_maximum);
                         GET_ARGUMENT_F("origine=""o=",IFnormalisation_____niveau_origine___de_normalisation);
                         GET_ARGUMENT_F("extremite=""e=",IFnormalisation_____niveau_extremite_de_normalisation);
                         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);
                                        /* Parametres introduits le 20130626083117...                                                */
                         )
                    );

     begin_nouveau_block
          Bblock

#include  xrq/synapse.11.I"
          DONNEES_DE_RECHERCHE_DES_EXTREMA_GLOBAUX_D_UNE_SEQUENCE_D_IMAGES;
                                        /* Extrema globaux de l'ensemble de la sequence...                                           */

          Test(IL_FAUT(extraire_les_extrema))
               Bblock
               Test(IL_NE_FAUT_PAS(normalisation_independante))
                                        /* Test introduit le 20100831212927...                                                       */
                    Bblock
                    DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
                         Bblock
                         DONNEES_DE_RECHERCHE_DES_EXTREMA_LOCAUX_D_UNE_SEQUENCE_D_IMAGES;
                                        /* Extrema locaux de la sequence...                                                          */

                         EGAL(nom_image
                             ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE)
                                  ,chain_Aconcaten2_sauf_nom_pipe(nom_imageA
                                                                 ,chain_numero_modulo(numero_d_image,nombre_de_chiffres)
                                                                  )
                                  ,chain_Aconcaten3_sauf_nom_pipe(nom_imageA
                                                                 ,chain_numero_modulo(numero_d_image,nombre_de_chiffres)
                                                                 ,nom_postfixe
                                                                  )
                                   )
                              );
                                        /* Le 20221212115254, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'...           */

                         Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA,nom_image))))
                              Bblock
                              RECHERCHE_DES_EXTREMA_D_UNE_SEQUENCE_D_IMAGES(IFmageA);
                                        /* Recherche des extrema locaux et globaux de l'ensemble de la sequence...                   */
                              Eblock
                         ATes
                              Bblock
                              Eblock
                         ETes
                         Eblock
                    EDoI
                    Eblock
               ATes
                    Bblock
                    PRINT_ATTENTION("en mode 'normalisation independante' la recherche des extrema n'a pas de sens");
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               EGAL(niveau_minimum_de_la_sequence,nivo_minimum);
               EGAL(niveau_maximum_de_la_sequence,nivo_maximum);
                                        /* Dans ce cas, ce sont les extrema arguments qui vont etre utilises...                      */
               Eblock
          ETes

          DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
               Bblock
               EGAL(nom_image
                   ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE)
                        ,chain_Aconcaten2_sauf_nom_pipe(nom_imageA
                                                       ,chain_numero_modulo(numero_d_image,nombre_de_chiffres)
                                                        )
                        ,chain_Aconcaten3_sauf_nom_pipe(nom_imageA
                                                       ,chain_numero_modulo(numero_d_image,nombre_de_chiffres)
                                                       ,nom_postfixe
                                                        )
                         )
                    );
                                        /* Le 20221212115254, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'...           */

               Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA,nom_image))))
                    Bblock
                    EGAL(nom_image
                        ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE)
                             ,chain_Aconcaten2_sauf_nom_pipe(nom_imageR
                                                            ,chain_numero(numero_d_image,nombre_de_chiffres)
                                                             )
                             ,chain_Aconcaten3_sauf_nom_pipe(nom_imageR
                                                            ,chain_numero(numero_d_image,nombre_de_chiffres)
                                                            ,nom_postfixe
                                                             )
                              )
                         );

                    Test(EST_VRAI(les_images_sont_standards))
                         Bblock
                                        /* Cas d'une image 'image' :                                                                 */
                         CALi(Inoir(ImageR));
                                        /* Initialisation de l'image Resultat.                                                       */
                         CALS(Ifloat_std(ImageR,IFmageA,niveau_minimum_de_la_sequence,niveau_maximum_de_la_sequence));
                                        /* Renormalisation avec forcage des extrema...                                               */
                         CALi(Iupdate_image(nom_image,ImageR));
                         Eblock
                    ATes
                         Bblock
                                        /* Cas d'une image 'imageF' :                                                                */
                         CALi(IFinitialisation(IFmageR,FZERO));
                                        /* Initialisation de l'image Resultat.                                                       */

                         Test(IL_NE_FAUT_PAS(normalisation_independante))
                                        /* Test introduit le 20100831212927...                                                       */
                              Bblock
                              CALS(IFnormalisation(IFmageR,IFmageA,niveau_minimum_de_la_sequence,niveau_maximum_de_la_sequence));
                                        /* Et renormalisation...                                                                     */
                              Eblock
                         ATes
                              Bblock
                              CALS(IFnormalisation_automatique(IFmageR,IFmageA));
                                        /* Et renormalisation...                                                                     */
                              Eblock
                         ETes

                         CALi(IupdateF_image(nom_image,IFmageR));
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    gTest__CODE_ERREUR__ERREUR07
                        (BLOC(Bblock
                              PRINT_ATTENTION("la fin de flot a ete rencontree lors du chargement d'une 'image'");
                              Eblock
                              )
                        ,BLOC(Bblock
                              Test(IL_FAUT(files_____editer_les_messages_d_erreur_de_lecture_des_fichiers))
                                   Bblock
                                   PRINT_ERREUR("le fichier demande n'existe pas ou n'est pas de type 'image'");
                                   Eblock
                              ATes
                                   Bblock
                                   Eblock
                              ETes
                              Eblock
                              )
                         );
                    Eblock
               ETes
               Eblock
          EDoI
          Eblock
     end_nouveau_block

     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.