#!/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



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