/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   B A S E   A   T R O I S   I M A G E S  :                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Ce fichier contient toutes les fonctions                                                                       */
/*                  de base de gestion et de manipulation de                                                                         */
/*                  trois images raster, quelle que soit la definition.                                                              */
/*                  Ainsi, on pourra avec elles combiner deux                                                                        */
/*                  images entre elles,...                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/tri_image$DEF' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 19890000000000).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A D D I T I O N   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIaddition(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)           \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,COND(EST_VRAI(les_images_standards_sont_a_renormaliser)                                                       \
                              ,Iaddition_avec_renormalisation(imaR,imaA1,imaA2)                                                         \
                              ,Iaddition(imaR,imaA1,imaA2)                                                                              \
                               )                                                                                                        \
                         ,IFaddition(FimaR,FimaA1,FimaA2)                                                                               \
                          )                                                                                                             \
                                        /* Addition de deux images quelconques ("standards" ou "flottantes").                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I F F E R E N C E   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIsoustraction(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)       \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,COND(EST_VRAI(les_images_standards_sont_a_renormaliser)                                                       \
                              ,Isoustraction_avec_renormalisation(imaR,imaA1,imaA2)                                                     \
                              ,Isoustraction(imaR,imaA1,imaA2)                                                                          \
                               )                                                                                                        \
                         ,IFsoustraction(FimaR,FimaA1,FimaA2)                                                                           \
                          )                                                                                                             \
                                        /* Soustraction de deux images quelconques ("standards" ou "flottantes").                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R P O L A T I O N   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIinterpolation(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,a,imaA1,FimaA1,b,imaA2,FimaA2)  \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,COND(EST_VRAI(les_images_standards_sont_a_renormaliser)                                                       \
                              ,Iinterpolation_avec_renormalisation(imaR,a,imaA1,b,imaA2)                                                \
                              ,Iinterpolation(imaR,a,imaA1,b,imaA2)                                                                     \
                               )                                                                                                        \
                         ,IFinterpolation(FimaR,a,FimaA1,b,FimaA2)                                                                      \
                          )                                                                                                             \
                                        /* Interpolation entre deux images quelconques ("standards" ou "flottantes").                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M U L T I P L I C A T I O N   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gImultiplication(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)     \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,COND(EST_VRAI(les_images_standards_sont_a_renormaliser)                                                       \
                              ,Imultiplication_avec_renormalisation(imaR,imaA1,imaA2)                                                   \
                              ,Imultiplication(imaR,imaA1,imaA2)                                                                        \
                               )                                                                                                        \
                         ,IFmultiplication(FimaR,FimaA1,FimaA2)                                                                         \
                          )                                                                                                             \
                                        /* Multiplication de deux images quelconques ("standards" ou "flottantes").                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   U N I V E R S E L L E   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIcombinaison_universelle(les_images_sont_standards,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)                                     \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Icombinaison_universelle(imaR,imaA1,imaA2)                                                                    \
                         ,IFcombinaison_universelle(FimaR,FimaA1,FimaA2)                                                                \
                          )                                                                                                             \
                                        /* Combinaison universelle de deux images quelconques ("standards" ou "flottantes"). Cette   */ \
                                        /* procedure a ete introduite le 20181009154311...                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   M A T R I C I E L   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIproduit_matriciel(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)  \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Iproduit_matriciel(imaR,imaA1,imaA2,les_images_standards_sont_a_renormaliser)                                 \
                         ,IFproduit_matriciel(FimaR,FimaA1,FimaA2)                                                                      \
                          )                                                                                                             \
                                        /* Produit matriciel de deux images quelconques ("standards" ou "flottantes") introduit      */ \
                                        /* le 20110920155105...                                                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I V I S I O N   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIdivision(les_images_sont_standards,les_images_standards_sont_a_renormaliser,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2,avertir)   \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,COND(EST_VRAI(les_images_standards_sont_a_renormaliser)                                                       \
                              ,Idivision_avec_renormalisation(imaR,imaA1,imaA2,avertir)                                                 \
                              ,Idivision(imaR,imaA1,imaA2,avertir)                                                                      \
                               )                                                                                                        \
                         ,IFdivision(FimaR,FimaA1,FimaA2,avertir)                                                                       \
                          )                                                                                                             \
                                        /* Division de deux images quelconques ("standards" ou "flottantes") introduite              */
                                        /* le 20190927174855...                                                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A X I M U M   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gImaximum(les_images_sont_standards,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)                                                     \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Imaximum(imaR,imaA1,imaA2)                                                                                    \
                         ,IFmaximum(FimaR,FimaA1,FimaA2)                                                                                \
                          )                                                                                                             \
                                        /* Maximum de deux images quelconques ("standards" ou "flottantes").                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M I N I M U M   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIminimum(les_images_sont_standards,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)                                                     \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Iminimum(imaR,imaA1,imaA2)                                                                                    \
                         ,IFminimum(FimaR,FimaA1,FimaA2)                                                                                \
                          )                                                                                                             \
                                        /* Minimum de deux images quelconques ("standards" ou "flottantes").                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        " O U "   E X C L U S I F   F L O U   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIminmax(les_images_sont_standards,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2)                                                      \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Iminmax(imaR,imaA1,imaA2)                                                                                     \
                         ,IFminmax(FimaR,FimaA1,FimaA2)                                                                                 \
                          )                                                                                                             \
                                        /* "OU" exclusif flou de deux images quelconques ("standards" ou "flottantes").              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   G E N E R A L I S E   D E   D E U X   I M A G E S   Q U E L C O N Q U E S  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gIproduit_generalise(les_images_sont_standards,imaR,FimaR,imaA1,FimaA1,imaA2,FimaA2,imaTM,FimaTM)                             \
                    gCALC(EST_VRAI(les_images_sont_standards)                                                                           \
                         ,Iproduit_generalise(imaR,imaA1,imaA2,imaTM)                                                                   \
                         ,IFproduit_generalise(FimaR,FimaA1,FimaA2,FimaTM)                                                              \
                          )                                                                                                             \
                                        /* Produit generalise de deux images quelconques ("standards" ou "flottantes"). Ceci a       */ \
                                        /* ete introduit le 20040127142136...                                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C U M U L   D E   D E U X   I M A G E S   P O U R   L E   C A L C U L   I T E R A T I F   D E   T R A I N E E S  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#ifdef    SYSTEME_DPX5000_SPIX_CC

#    ifdef     LACT11
#         TestADef  BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2                                                                   \
                                        /* Sur 'SYSTEME_DPX5000_SPIX_CC', le compilateur 'cc' a besoin d'une zone de swap enorme     */ \
                                        /* pour compiler le calcul des trainees ; etant superieure a celle qui est disponible on     */ \
                                        /* ne peut plus compiler. Ceci est vrai pour la machine 'LACT11'...                          */
#    Aifdef    LACT11
#    Eifdef    LACT11

#Aifdef   SYSTEME_DPX5000_SPIX_CC
#Eifdef   SYSTEME_DPX5000_SPIX_CC

#ifdef    BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2
                                        /* Sur 'SYSTEME_DPX5000_SPIX_CC', le calcul des trainees n'est pas compile afin d'eviter un  */
                                        /* "debordement" de la zone de swap lors de la compilation...                                */
#Aifdef   BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2
DenumeT07(CALCUL_STANDARD_DES_TRAINEES
         ,CALCUL_SIMPLIFIE_DES_TRAINEES
         ,CALCUL_PAR__TRANSPARENCE__01_DES_TRAINEES
         ,CALCUL_PAR__TRANSPARENCE__02_DES_TRAINEES
         ,CALCUL_PAR__TRANSPARENCE__03_DES_TRAINEES
         ,CALCUL_PAR__TRANSPARENCE__04_DES_TRAINEES
         ,CALCUL_PAR__TRANSPARENCE__05_DES_TRAINEES
         ,types_de_calcul_de_trainees
          )
                                        /* Les deux modes principaux sont donc :                                                     */
                                        /*                                                                                           */
                                        /*                  0       : CALCUL_STANDARD_DES_TRAINEES  'ADD2(...)',                     */
                                        /*                  1       : CALCUL_SIMPLIFIE_DES_TRAINEES 'MAX2(...)',                     */
                                        /*                                                                                           */
#Eifdef   BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2

#define   RENORMALISER_LES_TRAINEES_CALCULEES_ITERATIVEMENT                                                                             \
                    VRAI                                                                                                                \
                                        /* Afin de renormaliser les trainees automatiquement,                                        */
#define   NE_PAS_RENORMALISER_LES_TRAINEES_CALCULEES_ITERATIVEMENT                                                                      \
                    NOTL(RENORMALISER_LES_TRAINEES_CALCULEES_ITERATIVEMENT)                                                             \
                                        /* Afin de ne pas les renormaliser...                                                        */

#define   PONDERATION_MAXIMALE_DES_TRAINEES                                                                                             \
                    FU                                                                                                                  \
                                        /* A priori, la ponderation maximale est de 1.0...                                           */

#ifndef   BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2
#    define    ATTENUATION_DE_TRAINEES(ponderation,niveau)                                                                              \
                         GENP(NIVA(MUL2(ponderation,FLOT(NIVR(niveau)))))                                                               \
                                        /* Fonction d'attenuation d'un niveau.                                                       */
#Aifndef  BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2
#    define    ATTENUATION_DE_TRAINEES(ponderation,niveau)                                                                              \
                         NEUT(niveau)                                                                                                   \
                                        /* Fonction d'attenuation d'un niveau.                                                       */
#Eifndef  BUG_SYSTEME_DPX5000_SPIX_CC_LACT11_ZONE_DE_SWAP_2

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A S S O C I A T I O N   D E   V O I S I N A G E   D E   D E U X   I M A G E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Iassociation_de_voisinage_____X_association__ET__Y_association__SONT_INITIALISEES                                             \
                    Bblock                                                                                                              \
                    EGAL(Iassociation_de_voisinage_____X_association__et__Y_association__sont_initialisees,VRAI);                       \
                    Eblock                                                                                                              \
                                        /* Ainsi, on sait que {Iassociation_de_voisinage_____X,Iassociation_de_voisinage_____Y}      */ \
                                        /* sont initialisees...                                                                      */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.