50 lines
1.3 KiB
Matlab
50 lines
1.3 KiB
Matlab
clear;
|
|
close all;
|
|
|
|
% Lecture des données :
|
|
load lapin;
|
|
valeurs_z = 1.5:0.002:2.5;
|
|
k_ref = 1; % Indice de l'image de référence
|
|
nb_images = size(I,3);
|
|
|
|
% Affichage des images :
|
|
figure('Name','Images');
|
|
for k = 1:nb_images
|
|
subplot(2,ceil(nb_images/2),k);
|
|
imagesc(I(:,:,k));
|
|
colormap gray;
|
|
axis equal;
|
|
axis off;
|
|
if k<k_ref
|
|
title(['Image I_{' num2str(k) '}'],'FontSize',15);
|
|
elseif k==k_ref
|
|
title('Image I_{ref}','FontSize',15);
|
|
else
|
|
title(['Image I_{' num2str(k-1) '}'],'FontSize',15);
|
|
end
|
|
end
|
|
drawnow;
|
|
|
|
% Érosion du masque de l'image de référence (pour tenir compte des fenêtres 3 x 3) :
|
|
masque_ref = masque(:,:,k_ref); % Masque de l'image de référence
|
|
masque_ref_9 = pretraitement(masque_ref);
|
|
masque_ref = sum(masque_ref_9,3);
|
|
masque_ref = masque_ref>=9;
|
|
|
|
% Calcul de l'erreur de reprojection :
|
|
erreur_reprojection = MVS_2(I,k_ref,masque_ref,K,R,t,valeurs_z);
|
|
|
|
% Affichage de l'erreur de reprojection en fonction de la profondeur :
|
|
figure('Name','Erreur de reprojection');
|
|
imagesc(erreur_reprojection);
|
|
xlabel('Valeur de la profondeur','FontSize',20);
|
|
ylabel('Indice du pixel','FontSize',20);
|
|
|
|
input('Tapez Entree pour afficher le relief reconstruit !');
|
|
|
|
% Affichage de la reconstruction 3D :
|
|
figure('Name','Reconstruction 3D');
|
|
[~,indices_min] = min(erreur_reprojection,[],2);
|
|
z = transpose(valeurs_z(indices_min));
|
|
affichage_surface(masque_ref,K,z);
|