Bonjour a tous.
Je viens de trouver un code qui permet de mesurer la valeur d'un déplacement en x et en y en faisant une corélation de 2 images.
Ce code fonctionne parfaitement, je l'ai testé, mais mon problème c'est que ce code n'est pas commenté, et j'ai énormément de mal a le comprendre.
Est ce que vous pourriez m'aider a le traduire en langage plus explicite? au moins les grandes ligne? Parce que la je suis paumé!!!
MErci beaucoup.
Voici mon code:
La fonction principale
Cette fonction fait appel a la fonction phase_correlation dont voici le code ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function [tx,ty] = register(imas1,imas2,t) 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
Encore Merci beaucoup
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 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);
Thomas
Partager