/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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



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