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