#!/bin/csh ####################################################################################################################################### # # # T R A N S F O R M E E E N O N D E L E T T E D E M O R L E T # # D ' U N E I M A G E F L O T T A N T E : # # # # # # Utilisation : # # # # $xci/morlet.12$Z <nomA> <nomR> [<Directe> [<Dilatation> [<Anisotrope> [<Rotation> [<Isotrope> [<Centrer>]]]]]] # # # # # # Nota sur '$nomA' : # # # # Suivant le sens de la transformee, la # # signification de '$nomA' change : # # # # $Directe=VRAI : l'image flottante Argument a pour nom '$nomA', # # $Directe=FAUX : l'image complexe Argument est donnee sous forme de deux images # # flottantes de noms {$nomA$PR,$nomA$PI}. # # # # # # Nota sur '$nomR' : # # # # Suivant le sens de la transformee, la # # signification de '$nomR' change : # # # # $Directe=VRAI : l'image complexe Resultat est donnee sous forme de deux images # # flottantes de noms {$nomR$PR,$nomR$PI}. # # $Directe=FAUX : l'image flottante Resultat a pour nom '$nomR$Mo'. # # # # en notant qu'en fait les quatre composantes {$PR,$PI,$Mo,$Ph} # # existent systematiquement... # # # # # # Author of '$xci/morlet.12$Z' : # # # # Jean-Francois Colonna (LACTAMME, 20030430160357). # # # ####################################################################################################################################### set nomA=$1 set nomR=$2 set Directe=$3 set Dilatation=$4 set Anisotrope=$5 set Rotation=$6 set Isotrope=$7 set Centrer_DeCentrer=$8 setArgum Directe VRAI setArgum Dilatation 0.1 setArgum Rotation $pis2 setArgum Anisotrope 1 setArgum Isotrope 0 setArgum Centrer_DeCentrer FAUX # On ne centre pas a priori (pour des raisons de compatibilite anterieure)... # if ($NEXIST) then # La 'Trace' a ete inhibe le 20030509211531... # if ("$Directe" == "VRAI") then set MessageDirect="D:" else set MessageDirect="I:" endif alias Trace 'set MeSsAgE=\!:1 ; set N_ImAgE=\!:2 ; set ImAgE=`eval echo "$N_ImAgE"` ; \\ FileTmpB TmP ; set MeSsAgE="$MessageDirect$MeSsAgE" ; \\ $xci/J_RIMP$X A=$ImAgE standard=FAUX RR=$TmP$PR RI=$TmP$PI module_phase=FAUX $formatI ; \\ set ExT_R=`$xci/extrema$X format=f decimales=2 standard=FAUX A=$TmP$PR Prme=VRAI | $SE -e "s/ /,/"` ; \\ set ExT_I=`$xci/extrema$X format=f decimales=2 standard=FAUX A=$TmP$PI Prme=VRAI | $SE -e "s/ /,/"` ; \\ echo "$MeSsAgE : $N_ImAgE R=($ExT_R) I=($ExT_I)" | $SE -e "s/^\(.......................................\) *\( R=\)/\1\2/" ; \\ FileTmpE TmP ; \\ unset MeSsAgE N_ImAgE ImAgE ExT_R ExT_I' # Introduit le 20030507155801 pour essayer de comprendre le probleme de la forte valeur # # absolue des '$PR' obtenues lors de la transformee inverse... # else alias Trace 'set MeSsAgE=\!:1 ; set ImAgE=\!:2 ; \\ unset MeSsAgE ImAgE' endif if ("$Directe" == "VRAI") then $xci/neutre$X \ A=$nomA \ standard=FAUX \ R=$xT/ARGUMENT$PR \ $formatI $xci/init$X \ standard=FAUX \ v=0 \ R=$xT/ARGUMENT$PI \ $formatI $xci/RI_J$X AR=$xT/ARGUMENT$PR AI=$xT/ARGUMENT$PI \ standard=FAUX \ R=$xT/ARGUMENT$J \ $formatI else $xci/RI_J$X AR=$nomA$PR AI=$nomA$PI \ standard=FAUX \ R=$xT/ARGUMENT$J \ $formatI endif Trace '$xci/RI_J$X.....' '$xT/ARGUMENT$J' # Conversion images flottantes {$PR,$PI} --> image complexe ($J). # $xci/fft.01$X A=$xT/ARGUMENT$J \ centrer=$Centrer_DeCentrer \ TF=$xT/ARGUMENT$TF \ $formatI Trace '$xci/fft.01$X...' '$xT/ARGUMENT$TF' # Calcul de la transformee de Fourier ($TF) de l'image complexe ($J). # $xci/morlet.12$X \ dilatation=$Dilatation \ lineaire=$Anisotrope rotation=$Rotation \ radiale=$Isotrope \ directe=$Directe \ R=$xT/ONDELETTE$J \ $formatI Trace '$xci/morlet.12$X' '$xT/ONDELETTE$J' # Generation de l'ondelette de Morlet demandee. Jusqu'au 20030514091143, il y avait comme # # arguments de '$xci/morlet.12$X' : # # # # seuil_inferieur=0.010 seuil_superieur=1.000 # # # # pour des raisons de test... # $xci/fftd$Z \ $xT/ONDELETTE \ $Centrer_DeCentrer \ $NEXIST Trace '$xci/fftd$Z.....' '$xT/ONDELETTE$TF' # Calcul de la transformee de Fourier directe de l'ondelette de Morlet. # # # # On notera que de remplacer l'operation precedente par : # # # # $xci/init$X standard=FAUX complexe=VRAI \ # # PR=1 PI=0 \ # # R=$xT/ONDELETTE$TF \ # # $formatI # # # # transforme l'ensemble en une operation neutre au facteur multiplicatif '$FaCtEuR' pres... # $xci/fftp$Z \ $xT/ARGUMENT \ $xT/ONDELETTE \ $xT/PRODUIT Trace '$xci/fftp$Z.....' '$xT/PRODUIT$TF' # Produit de convolution des deux transformees de Fourier directes precedentes. # # # # ATTENTION, on notera l'ordre des deux '$TF' arguments car, en effet, en general le produit # # '$xci/fftp$Z' ne commute pas a cause de 'v $xiii/tri_image$FON IJproduit_complexe' et de # # son argument 'translation_de_l_imageA2'... # if ("$Directe" == "VRAI") then set FaCtEuR=`calcul 1/sqrt($Dilatation)` else set FaCtEuR=`calcul 1/($Dilatation*$Dilatation)` endif $xci/ffti$Z \ $xT/PRODUIT \ $Centrer_DeCentrer \ $NEXIST \ $FaCtEuR Trace '$xci/ffti$Z.....' '$xT/PRODUIT$J' # Calcul de la transformee de Fourier inverse du produit precedent. On notera le facteur # # '$FaCtEuR' introduit le 20030506135745. # $xci/J_RIMP$X \ A=$xT/PRODUIT$J \ standard=FAUX \ RR=$nomR$PR \ RI=$nomR$PI \ module_phase=VRAI \ RM=$nomR$Mo \ RP=$nomR$Ph \ $formatI # Extraction des parties Reelle et Imaginaire de la transformee en ondelettes. # $DELETE $xT/ONDELETTE* $DELETE $xT/ARGUMENT* $DELETE $xT/PRODUIT* # Nettoyage... #