%  Programme phase.m
%
%  Illustration de l'importance de la phase de la TFD
%
%  Licence de Physique, Sciences Physiques
%  Année universitaire: 1998, 1999, HC, JLA
%  ----------------------------------------
clear all
%%%% CHARGEMENT DES IMAGES
% Chargement de l'image x a partir du fichier clown.mat
  load clown;
  x = X;

% Chargement de l'image x a partir du fichier gatlin2.mat
  load gatlin;
%  load clown;
  y = X;

% mise a la meme taille de x et y
  l = min(size(x,1),size(y,1));
  c = min(size(x,2),size(y,2));
  x = x(1:l,1:c);
  y = y(1:l,1:c);

%%%%% CALCUL DES NOUVELLES IMAGES
% Calcul des TF de x et y
  X=fft2(x);
  Y = fft2(y);

% Construction de z1 avec le module de X et la phase de Y
  Z1 = abs(X).*exp(i*angle(Y));

% Construction de z2 avec le module de Y et la phase de x
  Z2 = abs(Y).*exp(i*angle(X));

% Calcul des TF inverses de z1 et z2
% On en prend la partie reelle car la partie imaginaire est theoriquement 
% nulle mais elle vaut numeriquement 10^-14
  z1 = real(ifft2(Z1));
  z2 = real(ifft2(Z2));

%%%%%% AFFICHAGE
% Affichage des TF de x et y : Module et Phase
  figure(1)
  fh = ([1:l]-l/2)/l;
  fv = ([1:c]-c/2)/c;
  subplot(3,2,1); image(x); axis('image'); title('image x'); axis off; colormap(gray)
  subplot(3,2,2); image(y); axis('image'); title('image y'); axis off
  subplot(3,2,3); imagesc(fh,fv,log(abs(fftshift(X.^2)))); axis('image'); title('Module de X');
  xlabel('frequences horizontales');ylabel('frequences verticales')
  subplot(3,2,4); imagesc(fh,fv,log(abs(fftshift(Y.^2)))); axis('image'); title('Module de Y');
  xlabel('frequences horizontales');ylabel('frequences verticales')
  subplot(3,2,5); imagesc(fh,fv,angle(fftshift(X))); axis('image'); title('Phase de X')
  xlabel('frequences horizontales');ylabel('frequences verticales')
  subplot(3,2,6); imagesc(fh,fv,angle(fftshift(Y))); axis('image'); title('Phase de Y')
  xlabel('frequences horizontales');ylabel('frequences verticales')

% Affichage des images construites z1 et z2
  figure(2)
  subplot(2,2,1); image(x); axis('image'); title('image x'); axis off
  subplot(2,2,2); image(y); axis('image'); title('image y'); axis off
  subplot(2,2,3); image(z1); axis('image'); axis off
  title('image module de x phase de y')
  subplot(2,2,4); image(z2); axis('image'); axis off
  title('image module de y phase de x')
  colormap('gray')

