Bonjour a tous,

J'ai trouvé un programme qui permet de calculer la translation d'une image par rapport a une autre. Ce programme utilise la phase correlation, mais je ne sais pas comment cela marche.
Est ce que quelqu'un pourrait m'expliquer?

Voici mon code si ca peut aider (Matlab)

Code:
 function [tx,ty] = register(imas1,imas2,t)
 %Call the function phase_correlation
  corr = phase_correlation(imas1,imas2);
  if (max(max(abs(corr)))>t)
      max(max(corr));
      [k,l] = find(corr == max(max(corr)));
      tx = round(size(corr,1)/2-k+1);
      ty = round(size(corr,2)/2-l+1);
  else
      tx = 0;
      ty = 0;
  end
Cette fonction appelle la fonction phase correlation donnée ci-dessous:
Code:
function ima = PhaseCorrelation(ima1,ima2)

s1 = size(ima1);
s2 = size(ima2);

s = max(s1,s2);
sx = s(1);
sy = s(2);
image1 = zeros(sx,sy);
image1(sx/2-s1(1)/2+1:sx/2+s1(1)/2,sy/2+1-s1(2)/2:sy/2+s1(2)/2) = ima1;
H1 = hamming(sx);
H2 = hamming(sy);
H = H1*H2';
image1 = image1.*H;
image2 = zeros(sx,sy);
image2(sx/2-s2(1)/2+1:sx/2+s2(1)/2,sy/2+1-s2(2)/2:sy/2+s2(2)/2) = ima2;
image2 = image2.*H;
f1 = fft2(fftshift(image1));
f1 = f1./abs(f1);
f2 = fft2(fftshift(image2));
f2 = f2./abs(f2);
corr = fftshift(ifft2(f1.*conj(f2)));
ima = abs(corr);
Mais impossible de trouver un document qui explique de facon pas trop compliqué ce que fait ce programme.

Merci d'avance
Thomas