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)
Cette fonction appelle la fonction phase correlation donnée ci-dessous: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
Mais impossible de trouver un document qui explique de facon pas trop compliqué ce que fait ce programme.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);
Merci d'avance
Thomas
-----