N=1;
[ligne1,col1]= size(posc1);
[ligne2,col2]= size(posc2);
%la valeur moyenne de l'image 1
for i=1:ligne1
somme = 0;
for l=-N:1:N
for k=-N:1:N
somme=somme+double(ori_im1(posr1(i)+l,posc1(i)+k));
end
end
moyenne1(i)=somme/(2*N+1)^2;
end
%la valeur moyenne de l'image 2
for j=1:ligne2
somme =0;
for l=-N:1:N
for k=-N:1:N
somme = somme+double(ori_im2(posr2(j)+l,posc2(j)+k));
end
end
moyenne2(j) = somme/(2*N+1)^2;
end
for i=1:ligne1
for j=1:ligne2
ZNCC1 = 0;
num=0; %le num谷rateur de la formule
denom=0; %le d谷nominateur de la formule
denom1=0;
denom2=0;
for l=-N:1:N
for k=-N:1:N
num = num+(double(ori_im1(posr1(i)+l,posc1(i)+k))-double(moyenne1(i)))*(double(ori_im2(posr2(j)+l,posc2(j)+k))-double(moyenne2(j)));
denom1 = denom1+sqrt((double(ori_im1(posr1(i)+l,posc1(i)+k))-double(moyenne1(i)))^2);
denom2 = denom2+sqrt((double(ori_im2(posr2(j)+l,posc2(j)+k))-double(moyenne2(j)))^2);
denom = denom1+denom2;
ZNCC1 = num/denom;
end
end
ZNCC(i,j)=ZNCC1;
end
end
point1=zeros(100,2,'double'); % la matrice de zero pour s'adapter la taille de la matrice du point d'int谷r那t
point2=zeros(100,2,'double');
point3=zeros(100,2,'double');
point4=zeros(100,2,'double');
realpt1=1
for i = 1:ligne1
pt1 = find(ZNCC(i,:)==max(ZNCC(i,:)));
if (posr1(i)-posr2(pt1(1)))^2+(posc1(i)-posc2(pt1(1)))^2<=512
point1(realpt1,1)=posr1(i);
point1(realpt1,2)=posc1(i);
point2(realpt1,1)=posr2(pt1);
point2(realpt1,2)=posc2(pt1);
% figure(3)
% imshow(ori_im1);
% hold on;
% plot(posc1(i),posr1(i),'r+')
%
% figure(4)
% imshow(ori_im2);
% hold on;
% plot(posc2(pt),posr2(pt),'r+')
% pause;
realpt1=realpt1+1;
end
end
ZNCCiv=ZNCC'; %la validation crois谷e
realpt2=1;
for j = 1:ligne2
pt2 = find(ZNCCiv(j,:) == max(ZNCCiv(j,:)));
if (posr2(j)-posr1(pt2(1)))^2+(posc2(j)-posc1(pt2(1)))^2<512
point3(realpt2,1)=posr2(j);
point3(realpt2,2)=posc2(j);
point4(realpt2,1)=posr1(pt2);
point4(realpt2,2)=posc1(pt2);
% figure(5);
% imshow(ori_im3);
% hold on;
% plot(point3(realpt2,2), point3(realpt2,1),'r+');
%
% figure(6);
% imshow(ori_im4);
% hold on;
% plot(point4(realpt2,2), point4(realpt2,1),'r+');
% pause ;
realpt2=realpt2+1;
end
end
% la validation crois谷e
pp=1;
for i = 1:realpt1-1
for j=1:realpt2-1
if point1(i,1)==point4(j,1)&&point1(i,2)==point4(j,2)&&point1(i,1)>0&&point1(i,2)>0
figure(7);
imshow(ori_im1);
hold on;
plot(point1(i,2),point1(i,1),'r+');
figure(8);
imshow(ori_im2);
hold on;
plot(point3(j,2),point3(j,1),'r+');
P1(pp,1)=point1(i,1); % enregistrer des point d'interet de premi豕re image apr豕s la validation crois谷e
P1(pp,2)=point1(i,2);
P2(pp,1)=point3(j,1); % enregistrer des point d'interet de deuxi豕me image apr豕s la validation crois谷e
P2(pp,2)=point3(j,2);
pp=pp+1;
pause;
end
end
end
A=(pp-1)/nombre1
B=(pp-1)/nombre2
- 1
- 2
前往页