/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M I N M A X   E N T R E   D E U X   I M A G E S   ( ' E O R '   F L O U )  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande genere une image                                                                                */
/*                  dont le nom est le premier argument                                                                              */
/*                  d'appel ; elle est le resultat de                                                                                */
/*                  la recherche du minmax ('eor' flou) entre les                                                                    */
/*                  deux images Arguments.                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/minmax$K' :                                                                                                */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1988??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   REMPLACER_MINMAX_par_MAXMIN                                                                                                   \
                    FAUX                                                                                                                \
                                        /* Faut-il remplacer 'MINMAX(...)' par 'MAXMIN(...)' ('VRAI') ou pas ('FAUX') ? Ceci fut     */ \
                                        /* introduit le 20061023093907, la valeur par defaut assurant la compatibilite anterieure... */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M I N M A X   E N T R E   D E U X   I M A G E S   ( ' E O R '   F L O U )  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA1),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA2),NOM_PIPE));

     DEFV(Logical,INIT(remplacer_MINMAX_par_MAXMIN,REMPLACER_MINMAX_par_MAXMIN));
                                        /* Faut-il remplacer 'MINMAX(...)' par 'MAXMIN(...)' ('VRAI') ou pas ('FAUX') ? Ceci fut     */
                                        /* introduit le 20061023093907, la valeur par defaut assurant la compatibilite anterieure... */
     /*..............................................................................................................................*/
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA1=""A1=",nom_imageA1);
                         GET_ARGUMENT_C("imageA2=""A2=",nom_imageA2);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);

                         GET_ARGUMENT_L("remplacer=""mM=""Mm=",remplacer_MINMAX_par_MAXMIN);
                                        /* Introduits le 20061023093907...                                                           */
                         )
                    );

     CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     Test(IL_FAUT(remplacer_MINMAX_par_MAXMIN))
          Bblock
          EGAL(Iminmax_____remplacer_MINMAX_par_MAXMIN,VRAI);
          EGAL(IFminmax_____remplacer_MINMAX_par_MAXMIN,VRAI);
                                        /* Introduit le 20061023093907...                                                            */
          Eblock
     ATes
          Bblock
          EGAL(Iminmax_____remplacer_MINMAX_par_MAXMIN,FAUX);
          EGAL(IFminmax_____remplacer_MINMAX_par_MAXMIN,FAUX);
                                        /* A priori  ne sert a rien puisqu'il s'agit des valeurs par defaut, mais on ne sait jamais. */
          Eblock
     ETes

     Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA1,IFmageA1,nom_imageA1))))
          Bblock
                                        /* Chargement de la premiere image Argument.                                                 */
          Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA2,IFmageA2,nom_imageA2))))
               Bblock
                                        /* Chargement de la deuxieme image Argument.                                                 */
               CALS(gIminmax(les_images_sont_standards,ImageR,IFmageR,ImageA1,IFmageA1,ImageA2,IFmageA2));
                                        /* Et recherche du minmax ('eor' flou) entre les deux images arguments 'ImageA1'             */
                                        /* et 'ImageA2'. ATTENTION, imaginons que l'on ait deux images "standard=FAUX" de nom        */
                                        /* 'IMAGE1ns' et 'IMAGE2ns' (ou le "ns" signifie donc "Non Standard"). Appelons 'IMAGE1s'    */
                                        /* et 'IMAGE2s' leurs versions "standard=VRAI" (ou le "s" signifie donc "Standard")          */
                                        /* obtenue par :                                                                             */
                                        /*                                                                                           */
                                        /*        $xci/acces$X        A=IMAGE?ns standard=FAUX zero=FAUX R=IMAGE?s      $formatI     */
                                        /*                                                                                           */
                                        /* soit maintenant :                                                                         */
                                        /*                                                                                           */
                                        /*        IMAGEns = minmax(IMAGE1ns,IMAGE2ns)                                                */
                                        /*        IMAGEs  = minmax(IMAGE1s,IMAGE2s)                                                  */
                                        /*                                                                                           */
                                        /* On notera qu'alors la conversion en "standard=FAUX zero=FAUX" de l'image 'IMAGEns' est    */
                                        /* malheureusement differente de 'IMAGEs'. Ceci a ete vu lors du calcul des sequences :      */
                                        /*                                                                                           */
                                        /*                  xivPdf 7 2 / 023374_023389                                               */
                                        /*                  xivPdf 7 2 / 023390_023405                                               */
                                        /*                  xivPdf 7 2 / 023406_023421                                               */
                                        /*                  xivPdf 7 2 / 023422_023437                                               */
                                        /*                  xivPdf 7 2 / 023438_023453                                               */
                                        /*                  xivPdf 7 2 / 023454_023469                                               */
                                        /*                                                                                           */
                                        /* Moralite, 'minmax' et 'acces' ne commute pas :                                            */
                                        /*                                                                                           */
                                        /*        acces(minmax(IMAGE1ns,IMAGE2ns)) # minmax(acces(IMAGE1ns),acces(IMAGE2ns))         */
                                        /*                                                                                           */
                                        /* ou 'acces(...)' signifie le mode "standard=FAUX zero=FAUX"...                             */

               CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR));
               Eblock
          ATes
               Bblock
               Test__CODE_ERREUR__ERREUR07;
               Eblock
          ETes
          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.