/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M E E   D E   F O U R I E R   D I R E C T E   E T   C O M P L E X E  :                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/fft.01$K' :                                                                                                */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1989??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CENTRER_LA_TRANSFORMEE_DE_FOURIER                                                                                             \
                    FAUX                                                                                                                \
                                        /* Faut-il centrer en {0.5,0.5} la transformee de Fourier ('VRAI') ou pas ('FAUX') ?         */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M E E   D E   F O U R I E R   D I R E C T E   E T   C O M P L E X E  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_transformee_de_Fourier),NOM_PIPE));
                                        /* Nom de l'image Resultat (transformme de Fourier directe complexe).                        */
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
                                        /* Nom de l'image Argument complexe dont on veut la transformee de Fourier complexe.         */
     DEFV(Logical,INIT(centrer_la_transformee_de_Fourier,CENTRER_LA_TRANSFORMEE_DE_FOURIER));
                                        /* Faut-il centrer en {0.5,0.5} la transformee de Fourier ('VRAI') ou pas ('FAUX') ?         */
     DEFV(complexe,valeur_initiale);
                                        /* Valeur initiale de la transformee de Fourier.                                             */
     /*..............................................................................................................................*/
     Cinitialisation(valeur_initiale,R0_Complexe,I0_Complexe);

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("transformee_de_fourier=""transformee_de_Fourier=""tf=""ft=""TF=""R=""FT="
                                       ,nom_transformee_de_Fourier
                                        );
                         GET_ARGUMENT_L("centrer=",centrer_la_transformee_de_Fourier);
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(IloadJ_image(IJmageA,nom_imageA))))
          Bblock
                                        /* A = image complexe dont on veut la transformee de Fourier.                                */
          BDEFV(imageJ,transformee_de_Fourier);
                                        /* Image complexe contenant la transformee de Fourier directe complexe de l'image Argument.  */
          PUSH_ECHANTILLONNAGE;
          SET_ECHANTILLONNAGE(PasX,PasY);

          CALS(IJinitialisation(transformee_de_Fourier,ADRESSE(valeur_initiale)));
                                        /* Initialisation de l'image Resultat.                                                       */
          PULL_ECHANTILLONNAGE;

          CALS(IJfourier_2D_directe_complexe(transformee_de_Fourier,IJmageA));
                                        /* On fait la transformee de Fourier directe complexe.                                       */

          Test(IL_FAUT(centrer_la_transformee_de_Fourier))
               Bblock
               BDEFV(imageJ,transformee_de_Fourier_centree);
                                        /* Image complexe contenant la transformee de Fourier centree...                             */
               DEFV(deltaF_2D,translation_de_centrage);
                                        /* Translation de centrage...                                                                */

               INITIALISATION_ACCROISSEMENT_2D(translation_de_centrage
                                              ,NEUT(_____lNORMALISE_OX(MOIT(dimX)))
                                              ,NEUT(_____lNORMALISE_OY(MOIT(dimY)))
                                               );
                                        /* Definition de la translation de centrage...                                               */

               CALS(IJtranslation(transformee_de_Fourier_centree
                                 ,transformee_de_Fourier
                                 ,ADRESSE(translation_de_centrage)
                                 ,VRAI
                                 ,VRAI
                                  )
                    );
               CALS(IJmove(transformee_de_Fourier
                          ,transformee_de_Fourier_centree
                           )
                    );
                                        /* Et on decale la transformee de Fourier...                                                 */

               EDEFV(imageJ,transformee_de_Fourier_centree);
                                        /* Image complexe contenant la transformee de Fourier centree...                             */
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          CALi(IupdateJ_image(nom_transformee_de_Fourier,transformee_de_Fourier));

          EDEFV(imageJ,transformee_de_Fourier);
                                        /* Image complexe contenant la transformee de Fourier directe complexe de l'image Argument.  */
          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.