#######################################################################################################################################
#                                                                                                                                     #
#         Z O O M   S U R   L E S   E C H E L L E S   D ' U N E   T R A N S F O R M E E   E N   O N D E L E T T E S  :                #
#                                                                                                                                     #
#                                                                                                                                     #
#              *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *              #
#                         *             *        *             **        *        *        *   *         *   **        *              #
#             * *         *             *        *             * *       *        *        *   *         *   * *       *              #
#                         *             *        *             *  *      *        *        *   *         *   *  *      *              #
#            *   *        *             *        *             *   *     *        *        *   *         *   *   *     *              #
#                         *             *        * * *         *    *    *        *        *   *         *   *    *    *              #
#           * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *              #
#                         *             *        *             *      *  *        *        *   *         *   *      *  *              #
#          *       *      *             *        *             *       * *        *        *   *         *   *       * *              #
#                         *             *        *             *        **        *        *   *         *   *        **              #
#         *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *              #
#                                                                                                                                     #
#                                                                                                                                     #
#         ATTENTION :                                                                                                                 #
#                                                                                                                                     #
#                     L'echantillonnage de l'axe des                                                                                  #
#                   dilatations 'S' est fait lineairement,                                                                            #
#                   alors que c'est celui des '1/S' qui                                                                               #
#                   devrait l'etre. Ce module a donc ete                                                                              #
#                   reecrit selon 'v $xivP_d06_f2/.MORL.2.22.$U'                                                                      #
#                   en consequences...                                                                                                #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xivP/disk.000000006/face.2/.MORL.2.21.$U' :                                                                                    #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20030430210551).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z        SETParam            Premiere                      1

$Z        SETParam            Derniere                      128

$Z        SETParam            _____Dilat0                   0.01

$Z        SETParam            _____DilatN                   1.00

$Z        unsetenv  Dilat0
$Z        SETENV    Dilat0    $_____Dilat0
$Z        unsetenv  DilatN
$Z        SETENV    DilatN    $_____DilatN

$X        echo                "neutre"
$X                                      # commande destinee uniquement a mettre a jour l'environnement 'env'...                       #

$Z        setParam            _____Anisotrope               1

$Z        setParam            _____Angle                    0

$Z        setParam            _____Isotrope                 0

$Z        setParam            _____Postfixe                 $PR
$Z                                      # Postfixe de la composante a conserver (introduit le 20030505122704)...                      #

$Z        Std

$Z        SET                 Fsize=$UNDEF
$Z                                      # Afin d'eviter un :                                                                          #
$Z                                      #                                                                                             #
$Z                                      #                   Fsize: Undefined variable.                                                #
$Z                                      #                                                                                             #
$Z                                      # lors du 'listN' dans le traitement du 'if(...)' qui suit...                                 #
$Z        SIZE                $_____imageA
$Z
$Z        if                  ($Fsize == $taille_Std) then
$Z                                      # Ce test a ete introduit le 20030502140754 en vue de traiter des images "standard=FAUX"...   #
$Z                            $xci/acces$X                                                                                              \
$Z                                                A=$_____imageA                                                                        \
$Z                                                standard=VRAI convertir_standard=VRAI                                                 \
$Z                                                                                                                      $formatI  |     \
$Z                            $xci/normalise.01$X                                                                                       \
$Z                                                origine=-1                                                                            \
$Z                                                extremite=+1                                                                          \
$Z                                                R=$xTV/CHAMP                                                                          \
$Z                                                                                                                      $formatI
$Z        else
$Z                                      # Ce test a ete introduit le 20030508100437 afin de conserver en l'etat les images de type    #
$Z                                      # "standard=FAUX"...                                                                          #
$Z                            $xci/acces$X                                                                                              \
$Z                                                A=$_____imageA                                                                        \
$Z                                                standard=FAUX convertir_non_standard=FAUX                                             \
$Z                                                R=$xTV/CHAMP                                                                          \
$Z                                                                                                                      $formatI
$Z                                      # La normalisation du champ a ete introduite le 20030506144818 dans [0,1] et le               #
$Z                                      # 20030508192413 dans [-1,+1]...                                                              #
$Z        endif
$Z
$Z        unset               Fsize

$Z        $DELETE   $xTV/MINIMUM
$Z        $DELETE   $xTV/MAXIMUM

$c                  #include  <stdio.h>
$c
$c                  extern    double    atof();
$c                  extern    char      *getenv();
$c
$c                  #define   Dilat0    (atof(getenv("Dilat0")))
$c                                      /* Cette valeur doit etre superieure a N/512 ou '512' est sensee etre la dimension de        */
$c                                      /* l'image '$xTV/CHAMP' et 'N' un nombre entier plus grand que 1 ; ainsi, l'ondelette        */
$c                                      /* couvre plus d'un point...                                                                 */
$c                  #define   DilatN    (atof(getenv("DilatN")))
$c
$c                  #define   N0        Premiere
$c                  #define   N         Derniere
$c
$c                  int       main()
$c                            {
$c                            int       n;
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      double    Dilat=((DilatN*(n-N0))+(Dilat0*(N-n)))/(N-N0);
$c
$c                                      printf("$xci/morlet.12$Z
$c                                                          $xTV/CHAMP
$c                                                          $xTV/MORLET
$c                                                          VRAI
$c                                                          %f
$c                                                          $_____Anisotrope
$c                                                          $_____Angle
$c                                                          $_____Isotrope\n"
$c                                            ,Dilat
$c                                             );
$c                                      /* Transformation directe de la fonction F par l'ondelette W :                               */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /*                                      /                                                    */
$c                                      /*                                     |      ----------                                     */
$c                                      /*                               1     |          t-T                                        */
$c                                      /*                  TD(T,S) = -------  | F(t). W(-----) .dt                                  */
$c                                      /*                               ---   |           S                                         */
$c                                      /*                             \/ S    |                                                     */
$c                                      /*                                    /                                                      */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /*                            \___________________________/                                  */
$c                                      /*                                                                                           */
$c                                      /*                      calcul de '$xci/morlet.12$Z' directe=VRAI                            */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /* illustre dans un cas mono-dimensionnel ; 'S' represente la dilatation (ou "Scaling") et   */
$c                                      /* et 'T' la Translation.                                                                    */
$c
$c                                      printf("$xci/morlet.12$Z
$c                                                          $xTV/MORLET
$c                                                          $xTV/MORLET.%04d
$c                                                          FAUX
$c                                                          %f
$c                                                          $_____Anisotrope
$c                                                          $_____Angle
$c                                                          $_____Isotrope\n"
$c                                            ,n
$c                                            ,Dilat
$c                                             );
$c                                      /* Transformation inverse de la fonction F par l'ondelette W :                               */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /*                                /      /                                                   */
$c                                      /*                               |      |                                                    */
$c                                      /*                          1    | 1    |            t-T                                     */
$c                                      /*                  F(t) = ----  |----  | TD(T,S).W(-----).dt.dS                             */
$c                                      /*                           2   |  2   |             S                                      */
$c                                      /*                          C    | S    |                                                    */
$c                                      /*                           W  /      /                                                     */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /*                                \_________________________/                                */
$c                                      /*                                                                                           */
$c                                      /*                         calcul de '$xci/morlet.12$Z' directe=FAUX                         */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /* illustre dans un cas mono-dimensionnel. Dans l'operation realisee ci-dessus par           */
$c                                      /* '$xci/morlet.12$Z', on ne calcule que la partie situee a l'interieur de la premiere       */
$c                                      /* integrale (en 'dS').                                                                      */
$c                                      /*                                                                                           */
$c                                      /* On notera la constante 'CW' figurant en  denominateur devant les deux integrales ;        */
$c                                      /* celle-ci depend de l'ondelette utilisee (ici l'ondelette de Morlet) et sa valeur est      */
$c                                      /* calculee a l'aide de la transformee de Fourier 'TF(...)' de cette meme ondelette          */
$c                                      /* ('W(...)') :                                                                              */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /*                               / +infini                                                   */
$c                                      /*                              |                   1                                        */
$c                                      /*                              |            2     ---                                       */
$c                                      /*                              |  |TF(W(x))|       2                                        */
$c                                      /*                  C  = [2.pi  | -------------.dx]                                          */
$c                                      /*                   W          |      |x|                                                   */
$c                                      /*                              |                                                            */
$c                                      /*                              |                                                            */
$c                                      /*                             /                                                             */
$c                                      /*                                 -infini                                                   */
$c                                      /*                                                                                           */
$c                                      /*                                                                                           */
$c                                      /* et j'ignore combien elle vaut...                                                          */
$c
$c                                      }
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      printf("$xci/extrema$X
$c                                                          A=$xTV/MORLET.%04d$_____Postfixe
$c                                                          standard=FAUX
$c                                                          minimum=VRAI
$c                                                          maximum=FAUX
$c                                                          $formatI
$c                                                          >>&! $xTV/MINIMUM\n"
$c                                            ,n
$c                                             );
#20150224100648____:$c                                      printf("saut                                                              #
#20150224100648____:$c                                                          >>&! $xTV/MINIMUM\n"                                  #
#20150224100648____:$c                                             );                                                                 #
$c                                      printf("$xci/extrema$X
$c                                                          A=$xTV/MORLET.%04d$_____Postfixe
$c                                                          standard=FAUX
$c                                                          minimum=FAUX
$c                                                          maximum=VRAI
$c                                                          $formatI
$c                                                          >>&! $xTV/MAXIMUM\n"
$c                                            ,n
$c                                             );
#20150224100648____:$c                                      printf("saut                                                              #
#20150224100648____:$c                                                          >>&! $xTV/MAXIMUM\n"                                  #
#20150224100648____:$c                                             );                                                                 #
$c                                      /* Extraction des extrema de chacune des transformees.                                       */
$c                                      }
$c
$c             printf("set         MinC=`$xrv/extrema.01$X ne=0 fichier=$xTV/MINIMUM | $GRE '^minimum=' | $SE -e 's/^.*=//'`\n");
$c             printf("set         MaxC=`$xrv/extrema.01$X ne=0 fichier=$xTV/MAXIMUM | $GRE '^maximum=' | $SE -e 's/^.*=//'`\n");
$c                                      /* Extraction des extrema de l'ensemble des transformees.                                    */
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      printf("$xci/acces$X
$c                                                          A=$xTV/MORLET.%04d$_____Postfixe
$c                                                          standard=FAUX
$c                                                          extrema=FAUX
$c                                                          minimum=$MinC
$c                                                          maximum=$MaxC
$c                                                          tronquer=FAUX
$c                                                          R=$_____imagesR.%04d
$c                                                          $formatI\n"
$c                                            ,n
$c                                            ,n
$c                                             );
$c                                      /* Et enfin conversion "standard" avec renormalisation globale...                            */
$c                                      }
$c                            }

$Z        $DELETE   $xTV/MINIMUM
$Z        $DELETE   $xTV/MAXIMUM



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