#!/bin/csh ####################################################################################################################################### # # # T R A N S F O R M E E E N O N D E L E T T E S D ' U N C H A M P N O N S T A N D A R D : # # # # # # Utilisation : # # # # $xci/ondelettes.01$Z <Champ> <Transformee> [<ArgsMorlet> [<Centrer> [<trX> [<trY> [<Decentrer> [<Fact>]]]]]] # # # # # # Principe : # # # # La transformee en ondelettes de la # # fonction 'f' s'obtient en fait en faisant # # le produit de convolution '*' de 'f' par # # l'ondelette 'M', soit : # # # # f*M # # # # or, 'TF' designant la transformee de # # Fourier, on sait que : # # # # TF(f1*f2) = TF(f1).TF(f2) # # # # ou '.' designe le produit terme a terme # # de deux matrices complexes. # # # # En prenant la transformee de Fourier # # inverse de l'identite precedente, on a : # # # # -1 -1 # # TF (TF(f1*f2)) = TF (TF(f1).TF(f2)) # # # # soit : # # # # -1 # # f1*f2 = TF (TF(f1).TF(f2)) # # # # Appliquee a la transformee en ondelettes, # # on a donc : # # # # -1 # # f*M = TF (TF(f).TF(M)) # # # # Pour calculer la transformee en ondelettes # # de 'f' par 'M', on calcule donc la transformee # # de Fourier de la fonction 'f', soit TF(f), # # on precalcule (c'est-a-dire qu'en general elle # # est calculee une fois pour toute) la transformee # # de Fourier TF(M) de l'ondelette 'M' (notons # # qu'au passage, c'est en fait 'M(a,b)', puisque # # l'ondelette depend de deux parametres) ; on # # fait ensuite leur produit terme a terme, # # soit 'TF(f).TF(M)', puis enfin, on calcule # # la transformee de Fourier inverse de ce # # produit, ce qui donne la transformee cherchee... # # # # # # Note sur la periodicite : # # # # La transformee de Fourier demande a ce # # que le champ soit periodique dans les deux # # directions ; si ce n'est pas le cas, une # # solution simple consiste a le symetriser # # doublement par '$xci/kaleidoscope$X', et # # a faire, sur la mosaique doublement symetrique # # obtenue, la transformee en ondelettes, mais avec # # une resolution deux fois moindre suivant chaque # # direction. Alors on n'oubliera pas que l'echelle # # ("dilatation=") de l'ondelette doit changer elle # # aussi (reduction de moitie). # # # # # # Author of '$xci/ondelettes.01$Z' : # # # # Jean-Francois Colonna (LACTAMME, 20121114103747). # # # ####################################################################################################################################### set Champ=$1 set Transformee=$2 set ArgumentsMorlet=($3) # Des arguments du type : # # # # "dilatation=0.10 angle=... nombre_periodes=..." # # # # sont conseilles... # set Centrer=$4 set translationX=$5 set translationY=$6 set Decentrer=$7 set Facteur=$8 setArgum Centrer FAUX # On ne centre pas a priori (par compatibilite avec 'v $xci/fftds$Z Centrer')... # setArgum Decentrer FAUX # On ne decentre pas a priori (par compatibilite avec 'v $xci/ffti$Z Decentrer')... # setArgum Facteur 1 # Facteur compatible avec 'v $xci/ffti$Z Facteur'... # FilSTmpB ChampMorlet FilSTmpB ChampComplexe FilSTmpB ProduitFFT $xci/morlet.02$X \ renormaliser=FAUX \ $ArgumentsMorlet \ R=$ChampMorlet$J \ $formatI $xci/fft.01$X A=$ChampMorlet$J \ centrer=$Centrer \ TF=$ChampMorlet$TF \ $formatI # Generation du champ de Morlet Complexe et de sa transformee de Fourier... # $xci/RI_J$X \ AR=$Champ \ AI=0 \ standard=FAUX \ R=$ChampComplexe$J \ $formatI $xci/fft.01$X A=$ChampComplexe$J \ centrer=$Centrer \ TF=$ChampComplexe$TF \ $formatI # Generation du champ Argument Complexe et de sa transformee de Fourier... # $xci/fftp$Z $ChampComplexe $ChampMorlet $ProduitFFT $translationX $translationY # Calcul du produit des deux transformees de Fourier... # $xci/fft.03$X TF=$ProduitFFT$TF \ R=$Transformee$J \ decentrer=$Decentrer \ facteur=$Facteur \ $formatI # Et enfin transformees de Fourier inverse... # $xci/J_RIMP$X A=$Transformee$J \ RR=$Transformee$PR \ RI=$Transformee$PI \ RM=$Transformee$Mo \ RP=$Transformee$Ph \ standard=FAUX \ $formatI # Puis conversion en quatre images non standards ($nom$PR,$nom$PI,$nom$Mo,$nom$Ph). # $DELETE $Transformee$J # L'image '$Transformee$J' est a priori detruite car, en effet, peu utile... # FilSTmpE ProduitFFT FilSTmpE ChampComplexe FilSTmpE ChampMorlet