/*************************************************************************************************************************************/ /* */ /* F I L T R A G E D ' U N E I M A G E P A R T R A N S F O R M E E D E F O U R I E R C O M P L E X E : */ /* */ /* */ /* Author of '$xci/filtre.05$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1994??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N D U R E S U L T A T E N I M A G E " S T A N D A R D " S I N E C E S S A I R E : */ /* */ /*************************************************************************************************************************************/ Bblock CALS(Icomplexe_reelle(IFmage_PR,IJmageR)); CALS(IFnivo_extrema(IFmage_PR ,ADRESSE(minimum_reel_de_la_transformee) ,ADRESSE(maximum_reel_de_la_transformee) ) ); /* Recherche du minimum et du maximum de la partie reelle de la */ /* transformee de Fourier inverse. */ CALS(Icomplexe_imaginaire(IFmage_PI,IJmageR)); CALS(IFnivo_extrema(IFmage_PI ,ADRESSE(minimum_imaginaire_de_la_transformee) ,ADRESSE(maximum_imaginaire_de_la_transformee) ) ); /* Recherche du minimum et du maximum de la partie imaginaire de la */ /* transformee de Fourier inverse. */ Test(IFGE(SOUS(maximum_imaginaire_de_la_transformee,minimum_imaginaire_de_la_transformee) ,SOUS(maximum_reel_de_la_transformee,minimum_reel_de_la_transformee) ) ) Bblock PRINT_ERREUR("la partie imaginaire est trop importante"); CAL1(Prer1("amplitude reelle = %.^^^\n" ,SOUS(maximum_reel_de_la_transformee,minimum_reel_de_la_transformee) ) ); /* Le 20060105155016, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20091123123234, le format "^^g" est passe a "^^^" pour plus de souplesse... */ CAL1(Prer1("amplitude imaginaire = %.^^^\n" ,SOUS(maximum_imaginaire_de_la_transformee,minimum_imaginaire_de_la_transformee) ) ); /* Le 20060105155016, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20091123123234, le format "^^g" est passe a "^^^" pour plus de souplesse... */ Eblock ATes Bblock Eblock ETes Test(EST_VRAI(les_imagesR_sont_standards)) /* 'les_images_sont_standards' fut remplace par 'les_imagesR_sont_standards' le */ /* 20060307135956 a cause de 'v $xci/filtre.01$K les_images._sont_standards'... */ Bblock /* Cas ou la conversion en une image "standard" est demandee... */ Test(IFET(IL_NE_FAUT_PAS(renormaliser_l_image) ,IL_FAUT(tronquer_les_niveaux) ) ) Bblock CALS(Ifloat_std_avec_troncation(ImageR ,IFmage_PR ,FLOT__NOIR ,FLOT__BLANC ) ); /* Les niveaux minimal et maximal sont eventuellement tronques dans [NOIR,BLANC]. */ Eblock ATes Bblock Test(IFOU(IL_FAUT(renormaliser_l_image) ,IFOU(IFLT(minimum_reel_de_la_transformee,FLOT__NOIR) ,IFGT(maximum_reel_de_la_transformee,FLOT__BLANC) ) ) ) /* Nota : on n'oubliera pas que par definition 'minimum <= maximum'... */ Bblock CALS(Ifloat_std(ImageR ,IFmage_PR ,minimum_reel_de_la_transformee ,maximum_reel_de_la_transformee ) ); /* Lorsque les niveaux minimal et maximal sont hors de [NOIR,BLANC], */ /* ou bien si la renormalisation explicite est demandee, on renormalise... */ Eblock ATes Bblock CALS(Ifloat_std(ImageR ,IFmage_PR ,FLOT__NOIR ,FLOT__BLANC ) ); /* Les niveaux minimal et maximal sont dans [NOIR,BLANC] et on */ /* ne renormalise pas... */ Eblock ETes Eblock ETes Eblock ATes Bblock /* Cas ou l'on doit rester sous la forme flottante... */ Eblock ETes Eblock