1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| function stereoDP(BW1,BW2)
%lire les deux images
I=imread('ImageDroite.png');
J=imread('ImageGauche.png');
Im=imresize(rgb2gray(I),[256 256]);
Jm=imresize(rgb2gray(J),[256 256]);
IG0= edge(Im,'prewitt');
ID0= edge(Jm,'prewitt');
[M,N]=size(IG0)
Fen=9;
FenG=zeros(1,Fen*2+1);
IG = zeros(M+(2*Fen),N+(2*Fen));
ID = zeros(M+(2*Fen),N+(2*Fen));
IG(Fen+1:Fen+M,Fen+1:Fen+N) = IG0;
ID(Fen+1:Fen+M,Fen+1:Fen+N) = ID0;
%%%%%%%%
%%%%%%
D = zeros(size(IG0));
% Calcule du SAD
barre = waitbar(0,'Patientez...');
for L=1+Fen:M+Fen,
pause(0.1);
D = zeros(N,N);
for i=1:N
for j=1:N
FenG = IG(L,i:(i)+(2*Fen));
FenD = ID(L,j:(j)+(2*Fen));
I=FenG(1,i);
I1=FenD(1,j);
PROD=I*I1;
Dist(i,j)=sum(sum(FenG.*FenD));
end
end
% Chercher le chemin minimal
[p,q,Dist] = stereoDP2(Dist);
for k=1:N
% Sauvegarder la disparité
D(L,k)=p(1,k)-q(1,k);
end
waitbar(L/(M+Fen),barre);
end
close(barre)
% Affichage du Resultat
figure;
subplot(2,2,1);imshow(IG0);
subplot(2,2,2);imshow(ID0);
subplot(2,2,3);imagesc(D);colormap('gray');title('La disparité');
end |
Partager