#!/bin/csh ####################################################################################################################################### # # # M O D U L E D ' A U T O - C O R R E L A T I O N D ' U N E I M A G E : # # # # # # Utilisation : # # # # $xci/auto_correl$Z <Image> <auto-correlation> # # # # # # Principe : # # # # L'auto-correlation de la fonction 'f' # # s'obtient en fait en faisant le produit # # de convolution '*' de 'f' par elle-meme : # # # # f*f # # # # 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 l'auto-correlation, on a donc : # # # # -1 # # f*f = TF (TF(f).TF(f)) # # # # # # 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, le calcul d'auto-correlation, mais avec # # une resolution deux fois moindre suivant chaque # # direction. # # # # # # Author of '$xci/auto_correl$Z' : # # # # Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### set Image=$1 set auto_correlation=$2 FileTmpB fft # Nom de la racine des images du type 'fft'. # $xci/fftds$Z $Image $NOIR $fft # Calcul de la transformee de Fourier de l'image argument. # $xci/fftp$Z $fft $fft $fft # Calcul du carre de la transformee de Fourier de l'image. # $xci/ffti$Z $fft # Calcul de la transformee de Fourier inverse, ce qui donne l'auto-correlation. # $MV $fft$Mo $auto_correlation$Mo >& $nul # Et on ne conserve que le Module du resultat (la Phase est nulle). # # ATTENTION : on utilise '$MV' et non pas 'mv' a cause de l'eventuel "miroir" que fait 'mv'. # FileTmpE fft