/*************************************************************************************************************************************/ /* */ /* P R O D U I T D E D E U X I M A G E S C O M P L E X E S : */ /* */ /* */ /* Author of '$xci/fft.02$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 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define X_TRANSLATION \ NEGA(MOIT(dimX)) \ /* Translation horizontale du noyau de convolution, */ #define Y_TRANSLATION \ NEGA(MOIT(dimY)) \ /* Translation verticale du noyau de convolution. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P R O D U I T D E D E U X I M A G E S C O M P L E X E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); /* Nom de l'image Resultat filtree. */ DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de l'image Argument a filtrer. */ DEFV(CHAR,INIC(POINTERc(nom_du_noyau),NOM_PIPE)); /* Nom du noyau de filtrage. */ DEFV(Float,INIT(translation_OX,FLOT__UNDEF)); DEFV(Float,INIT(translation_OY,FLOT__UNDEF)); /* Argument de translation du noyau initialise a priori a l'origine... */ DEFV(deltaF_2D,translation); /* Translation du champ. */ 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=""imageA1=""A=""A1=",nom_imageA); GET_ARGUMENT_C("imageN=""imageA2=""N=""A2=",nom_du_noyau); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GIT_ARGUMENT_F("trx=""trX=",translation_OX,_____lNORMALISE_OX(X_TRANSLATION)); GIT_ARGUMENT_F("try=""trY=",translation_OY,_____lNORMALISE_OY(Y_TRANSLATION)); ) ); INITIALISATION_ACCROISSEMENT_2D(translation,translation_OX,translation_OY); begin_nouveau_block Bblock BDEFV(imageJ,noyau_de_filtrage); /* Image complexe contenant le noyau de filtrage. */ BDEFV(imageJ,transformee_de_fourier_avant_filtrage); /* Image complexe contenant la transformee de Fourier complexe de l'image */ /* Argument (avant filtrage). */ BDEFV(imageJ,transformee_de_fourier_apres_filtrage); /* Image complexe contenant la transformee de Fourier complexe de l'image */ /* Resultat (apres filtrage). */ PUSH_ECHANTILLONNAGE; SET_ECHANTILLONNAGE(PasX,PasY); CALS(IJinitialisation(transformee_de_fourier_apres_filtrage,ADRESSE(valeur_initiale))); /* Initialisation de l'image Resultat... */ PULL_ECHANTILLONNAGE; Test(PAS_D_ERREUR(CODE_ERROR(IloadJ_image(transformee_de_fourier_avant_filtrage,nom_imageA)))) Bblock /* Recuperation de l'image complexe a filtrer, */ Test(PAS_D_ERREUR(CODE_ERROR(IloadJ_image(noyau_de_filtrage,nom_du_noyau)))) Bblock /* Recuperation du noyau de filtrage, */ CALS(IJproduit_complexe(transformee_de_fourier_apres_filtrage ,transformee_de_fourier_avant_filtrage ,noyau_de_filtrage,ADRESSE(translation) ) ); /* Puis produit complexe... */ CALi(IupdateJ_image(nom_imageR,transformee_de_fourier_apres_filtrage)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes EDEFV(imageJ,transformee_de_fourier_apres_filtrage); /* Image complexe contenant la transformee de Fourier complexe de l'image */ /* Resultat (apres filtrage). */ EDEFV(imageJ,transformee_de_fourier_avant_filtrage); /* Image complexe contenant la transformee de Fourier complexe de l'image */ /* Argument (avant filtrage). */ EDEFV(imageJ,noyau_de_filtrage); /* Image complexe contenant le noyau de filtrage. */ Eblock end_nouveau_block RETU_Commande; Eblock ECommande