/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N   C H A M P   F A I T   D E   T R O I S   G A U S S I E N N E S  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/triplet.30$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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
@define   PRAGMA_CPP_____MODULE_NON_DERIVABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_QUAD_IMAGE_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GAUSS_Z                                                                                                                       \
                    FZERO                                                                                                               \
                                        /* Coordonnee 'Z'. On notera que l'on ne definit rien d'autre en ce qui concerne 'Z' ; ce    */ \
                                        /* sont les valeurs implicites de 'Fgaussien(...)' ('v $xiii/mono_image$FON Fgaussien') qui  */ \
                                        /* vont etre utilisees ci-apres...                                                           */

#define   ECHELLE_DE_TRANSLATION                                                                                                        \
                    MOIT(0.72)                                                                                                          \
                                        /* Facteur general de'echelle...                                                             */

#define   AMPLIFICATEUR_DE_LA_FONCTION_R                                                                                                \
                    GRO3(FRA3(FU))                                                                                                      \
                                        /* Amplificateur de la fonction pour le champ 'ROUGE',                                       */
#define   TRANSLATEUR_DE_LA_FONCTION_R                                                                                                  \
                    FZERO                                                                                                               \
                                        /* Translateur de la fonction pour le champ 'ROUGE'.                                         */
#define   X_TRANSLATION_R                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,COSX(GRO1(FRA3(PI)))))                                                         \
                                        /* Translation horizontale du champ 'ROUGE',                                                 */
#define   Y_TRANSLATION_R                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,SINX(GRO1(FRA3(PI)))))                                                         \
                                        /* Translation verticale du champ 'ROUGE',                                                   */
#define   GAUSS_R                                                                                                                       \
                    PARE(32.0)                                                                                                          \
                                        /* Efficacite du gaussien du champ 'ROUGE',                                                  */
#define   GAUSS_X2_R                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de XxX du champ 'ROUGE',                                                      */
#define   GAUSS_Y2_R                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de YxY du champ 'ROUGE',                                                      */
#define   GAUSS_XY_R                                                                                                                    \
                    FZERO                                                                                                               \
                                        /* Ponderation de XxY du champ 'ROUGE'.                                                      */

#define   AMPLIFICATEUR_DE_LA_FONCTION_V                                                                                                \
                    GRO2(FRA3(FU))                                                                                                      \
                                        /* Amplificateur de la fonction pour le champ 'VERTE',                                       */
#define   TRANSLATEUR_DE_LA_FONCTION_V                                                                                                  \
                    FZERO                                                                                                               \
                                        /* Translateur de la fonction pour le champ 'VERTE'.                                         */
#define   X_TRANSLATION_V                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,COSX(GRO3(FRA3(PI)))))                                                         \
                                        /* Translation horizontale du champ 'VERTE',                                                 */
#define   Y_TRANSLATION_V                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,SINX(GRO3(FRA3(PI)))))                                                         \
                                        /* Translation verticale du champ 'VERTE',                                                   */
#define   GAUSS_V                                                                                                                       \
                    PARE(32.0)                                                                                                          \
                                        /* Efficacite du gaussien du champ 'VERTE',                                                  */
#define   GAUSS_X2_V                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de XxX du champ 'VERTE',                                                      */
#define   GAUSS_Y2_V                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de YxY du champ 'VERTE',                                                      */
#define   GAUSS_XY_V                                                                                                                    \
                    FZERO                                                                                                               \
                                        /* Ponderation de XxY du champ 'VERTE'.                                                      */

#define   AMPLIFICATEUR_DE_LA_FONCTION_B                                                                                                \
                    GRO1(FRA3(FU))                                                                                                      \
                                        /* Amplificateur de la fonction pour le champ 'BLEUE',                                       */
#define   TRANSLATEUR_DE_LA_FONCTION_B                                                                                                  \
                    FZERO                                                                                                               \
                                        /* Translateur de la fonction pour le champ 'BLEUE'.                                         */
#define   X_TRANSLATION_B                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,COSX(GRO5(FRA3(PI)))))                                                         \
                                        /* Translation horizontale du champ 'BLEUE',                                                 */
#define   Y_TRANSLATION_B                                                                                                               \
                    ADD2(FDU,MUL2(ECHELLE_DE_TRANSLATION,SINX(GRO5(FRA3(PI)))))                                                         \
                                        /* Translation verticale du champ 'BLEUE',                                                   */
#define   GAUSS_B                                                                                                                       \
                    PARE(32.0)                                                                                                          \
                                        /* Efficacite du gaussien du champ 'BLEUE',                                                  */
#define   GAUSS_X2_B                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de XxX du champ 'BLEUE',                                                      */
#define   GAUSS_Y2_B                                                                                                                    \
                    FU                                                                                                                  \
                                        /* Ponderation de YxY du champ 'BLEUE',                                                      */
#define   GAUSS_XY_B                                                                                                                    \
                    FZERO                                                                                                               \
                                        /* Ponderation de XxY du champ 'BLEUE'.                                                      */

#define   X_ECHELLE                                                                                                                     \
                    FU                                                                                                                  \
                                        /* Echelle horizontale du champ,                                                             */
#define   Y_ECHELLE                                                                                                                     \
                    FU                                                                                                                  \
                                        /* Echelle verticale du champ.                                                               */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N   C H A M P   F A I T   D E   T R O I S   G A U S S I E N N E S  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(Float,INIT(amplificateur_de_la_fonction_R,AMPLIFICATEUR_DE_LA_FONCTION_R));
     DEFV(Float,INIT(translateur_de_la_fonction_R,TRANSLATEUR_DE_LA_FONCTION_R));
     DEFV(Float,INIT(Fgaussien_____coefficient_R,GAUSS_R));
     DEFV(Float,INIT(Fgaussien_____coefficient_X2_R,GAUSS_X2_R));
     DEFV(Float,INIT(Fgaussien_____coefficient_Y2_R,GAUSS_Y2_R));
     DEFV(Float,INIT(Fgaussien_____coefficient_XY_R,GAUSS_XY_R));
     DEFV(deltaF_2D,translation_R);
                                        /* Definition du champ 'ROUGE'.                                                              */
     DEFV(Float,INIT(amplificateur_de_la_fonction_V,AMPLIFICATEUR_DE_LA_FONCTION_V));
     DEFV(Float,INIT(translateur_de_la_fonction_V,TRANSLATEUR_DE_LA_FONCTION_V));
     DEFV(Float,INIT(Fgaussien_____coefficient_V,GAUSS_V));
     DEFV(Float,INIT(Fgaussien_____coefficient_X2_V,GAUSS_X2_V));
     DEFV(Float,INIT(Fgaussien_____coefficient_Y2_V,GAUSS_Y2_V));
     DEFV(Float,INIT(Fgaussien_____coefficient_XY_V,GAUSS_XY_V));
     DEFV(deltaF_2D,translation_V);
                                        /* Definition du champ 'VERTE'.                                                              */
     DEFV(Float,INIT(amplificateur_de_la_fonction_B,AMPLIFICATEUR_DE_LA_FONCTION_B));
     DEFV(Float,INIT(translateur_de_la_fonction_B,TRANSLATEUR_DE_LA_FONCTION_B));
     DEFV(Float,INIT(Fgaussien_____coefficient_B,GAUSS_B));
     DEFV(Float,INIT(Fgaussien_____coefficient_X2_B,GAUSS_X2_B));
     DEFV(Float,INIT(Fgaussien_____coefficient_Y2_B,GAUSS_Y2_B));
     DEFV(Float,INIT(Fgaussien_____coefficient_XY_B,GAUSS_XY_B));
     DEFV(deltaF_2D,translation_B);
                                        /* Definition du champ 'BLEUE'.                                                              */
     DEFV(coeffF_2D,echelle);
                                        /* Echelle du champ a generer.                                                               */
     /*..............................................................................................................................*/
     INITIALISATION_ACCROISSEMENT_2D(translation_R,X_TRANSLATION_R,Y_TRANSLATION_R);
                                        /* Initialisation de la translation du champ 'ROUGE'.                                        */
     INITIALISATION_ACCROISSEMENT_2D(translation_V,X_TRANSLATION_V,Y_TRANSLATION_V);
                                        /* Initialisation de la translation du champ 'VERTE'.                                        */
     INITIALISATION_ACCROISSEMENT_2D(translation_B,X_TRANSLATION_B,Y_TRANSLATION_B);
                                        /* Initialisation de la translation du champ 'BLEUE'.                                        */

     INITIALISATION_COEFFICIENT_2D(echelle,X_ECHELLE,Y_ECHELLE);
                                        /* Initialisation de l'echelle du champ a generer.                                           */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_F("amplificateurR=""aR=",amplificateur_de_la_fonction_R);
                         GET_ARGUMENT_F("translateurR=""tR=""TR=",translateur_de_la_fonction_R);
                         GET_ARGUMENT_F("amplificateurV=""aV=",amplificateur_de_la_fonction_V);
                         GET_ARGUMENT_F("translateurV=""tV=""TV=",translateur_de_la_fonction_V);
                         GET_ARGUMENT_F("amplificateurB=""aB=",amplificateur_de_la_fonction_B);
                         GET_ARGUMENT_F("translateurB=""tB=""TB=",translateur_de_la_fonction_B);
                         GET_ARGUMENT_F("TxR=",ASD1(translation_R,dx));
                         GET_ARGUMENT_F("TyR=",ASD1(translation_R,dy));
                         GET_ARGUMENT_F("cR=",Fgaussien_____coefficient_R);
                         GET_ARGUMENT_F("cx2R=",Fgaussien_____coefficient_X2_R);
                         GET_ARGUMENT_F("cy2R=",Fgaussien_____coefficient_Y2_R);
                         GET_ARGUMENT_F("cxyR=",Fgaussien_____coefficient_XY_R);
                         GET_ARGUMENT_F("TxV=",ASD1(translation_V,dx));
                         GET_ARGUMENT_F("TyV=",ASD1(translation_V,dy));
                         GET_ARGUMENT_F("cV=",Fgaussien_____coefficient_V);
                         GET_ARGUMENT_F("cx2V=",Fgaussien_____coefficient_X2_V);
                         GET_ARGUMENT_F("cy2V=",Fgaussien_____coefficient_Y2_V);
                         GET_ARGUMENT_F("cxyV=",Fgaussien_____coefficient_XY_V);
                         GET_ARGUMENT_F("TxB=",ASD1(translation_B,dx));
                         GET_ARGUMENT_F("TyB=",ASD1(translation_B,dy));
                         GET_ARGUMENT_F("cB=",Fgaussien_____coefficient_B);
                         GET_ARGUMENT_F("cx2B=",Fgaussien_____coefficient_X2_B);
                         GET_ARGUMENT_F("cy2B=",Fgaussien_____coefficient_Y2_B);
                         GET_ARGUMENT_F("cxyB=",Fgaussien_____coefficient_XY_B);
                         GET_ARGUMENT_F("Ex=",ASD1(echelle,cx));
                         GET_ARGUMENT_F("Ey=",ASD1(echelle,cy));
                         )
                    );
     CALi(Inoir(ImageA1));
     CALi(Inoir(ImageA2));
     CALi(Inoir(ImageA3));
     CALi(Inoir(ImageR));
                                        /* Initialisation des images Resultat avant le changement eventuel de (pasX,pasY).           */
     EGAL(Fgaussien_____coefficient,Fgaussien_____coefficient_R);
     EGAL(Fgaussien_____coefficient_X2,Fgaussien_____coefficient_X2_R);
     EGAL(Fgaussien_____coefficient_Y2,Fgaussien_____coefficient_Y2_R);
     EGAL(Fgaussien_____coefficient_XY,Fgaussien_____coefficient_XY_R);
                                        /* Definition du champ gaussien 'ROUGE'.                                                     */
     CALS(Igenere_champ(ImageA1
                       ,amplificateur_de_la_fonction_R,aFONCTION(Fgaussien),translateur_de_la_fonction_R
                       ,ADRESSE(translation_R)
                       ,ADRESSE(echelle)
                       ,GAUSS_Z
                       ,Tf_ARGUMENT_INUTILE
                        )
          );
                                        /* Et generation du champ gaussien 'ROUGE'.                                                  */
     EGAL(Fgaussien_____coefficient,Fgaussien_____coefficient_V);
     EGAL(Fgaussien_____coefficient_X2,Fgaussien_____coefficient_X2_V);
     EGAL(Fgaussien_____coefficient_Y2,Fgaussien_____coefficient_Y2_V);
     EGAL(Fgaussien_____coefficient_XY,Fgaussien_____coefficient_XY_V);
                                        /* Definition du champ gaussien 'VERTE'.                                                     */
     CALS(Igenere_champ(ImageA2
                       ,amplificateur_de_la_fonction_V,aFONCTION(Fgaussien),translateur_de_la_fonction_V
                       ,ADRESSE(translation_V)
                       ,ADRESSE(echelle)
                       ,GAUSS_Z
                       ,Tf_ARGUMENT_INUTILE
                        )
          );
                                        /* Et generation du champ gaussien 'VERTE'.                                                  */
     EGAL(Fgaussien_____coefficient,Fgaussien_____coefficient_B);
     EGAL(Fgaussien_____coefficient_X2,Fgaussien_____coefficient_X2_B);
     EGAL(Fgaussien_____coefficient_Y2,Fgaussien_____coefficient_Y2_B);
     EGAL(Fgaussien_____coefficient_XY,Fgaussien_____coefficient_XY_B);
                                        /* Definition du champ gaussien 'BLEUE'.                                                     */
     CALS(Igenere_champ(ImageA3
                       ,amplificateur_de_la_fonction_B,aFONCTION(Fgaussien),translateur_de_la_fonction_B
                       ,ADRESSE(translation_B)
                       ,ADRESSE(echelle)
                       ,GAUSS_Z
                       ,Tf_ARGUMENT_INUTILE
                        )
          );
                                        /* Et generation du champ gaussien 'BLEUE'.                                                  */
     CALS(Iaddition3_avec_renormalisation(ImageR,ImageA1,ImageA2,ImageA3));
                                        /* Et enfin, generation du champ fait de trois gaussiennes...                                */

     CALi(Iupdate_image(nom_imageR,ImageR));
     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.