72 lines
2 KiB
Mathematica
72 lines
2 KiB
Mathematica
|
clear;
|
||
|
close all;
|
||
|
taille_ecran = get(0,'ScreenSize');
|
||
|
L = taille_ecran(3);
|
||
|
H = taille_ecran(4);
|
||
|
|
||
|
% Choix du jeu de données :
|
||
|
% load Donnees/vase_brillant_bis;
|
||
|
load Donnees/visage;
|
||
|
% load Donnees/Buddha;
|
||
|
|
||
|
% Correction des données :
|
||
|
I = correction(I,masque);
|
||
|
|
||
|
[nb_lignes,nb_colonnes] = size(masque);
|
||
|
[n,p] = size(I);
|
||
|
exterieur = find(masque==0); % Extérieur du domaine de reconstruction
|
||
|
|
||
|
% Affichage des images :
|
||
|
figure('Name','Donnees de stereophotometrie','Position',[0.5*L,0.66*H,0.5*L,0.4*H]);
|
||
|
colormap gray;
|
||
|
n_c = min(4,ceil(sqrt(n)));
|
||
|
n_l = min(2,ceil(n/n_c));
|
||
|
for i = 1:n_c*n_l
|
||
|
img = reshape(I(i,:),nb_lignes,nb_colonnes);
|
||
|
subplot(n_l,n_c,i);
|
||
|
imagesc(img);
|
||
|
hold on;
|
||
|
axis image;
|
||
|
axis off;
|
||
|
title(['$\mathbf{s}_{' num2str(i,'%2d') '}$'],'Interpreter','Latex','FontSize',20);
|
||
|
end
|
||
|
|
||
|
% Estimation aléatoire des normales et de l'albédo :
|
||
|
[rho_estime,N_estime] = estimation_non_calibree(I,masque);
|
||
|
|
||
|
% Intégration du champ de normales :
|
||
|
N_estime(3,find(abs(N_estime(3,:))<0.1)) = Inf; % Les pentes trop fortes sont tronquées
|
||
|
p_estime = reshape(-N_estime(1,:)./N_estime(3,:),size(masque));
|
||
|
q_estime = reshape(N_estime(2,:)./N_estime(3,:),size(masque));
|
||
|
p_estime(exterieur) = 0;
|
||
|
q_estime(exterieur) = 0;
|
||
|
z_estime = integration_SCS(q_estime,p_estime);
|
||
|
|
||
|
% Ambiguïté concave/convexe :
|
||
|
if (z_estime(floor(nb_lignes/2),floor(nb_colonnes/2))<z_estime(1,1))
|
||
|
z_estime = -z_estime;
|
||
|
end
|
||
|
z_estime(exterieur) = NaN;
|
||
|
|
||
|
% Affichage de l'albédo et du relief estimés :
|
||
|
figure('Name','Resultats','Position',[0.5*L,0,0.5*L,0.4*H]);
|
||
|
affichage_albedo_relief(rho_estime,z_estime);
|
||
|
|
||
|
% Affichage du modèle 3D complet :
|
||
|
figure('Name','Resultats','Position',[0.5*L,0,0.5*L,0.4*H]);
|
||
|
h = surf(fliplr(z_estime));
|
||
|
title('Modele 3D','FontSize',15);
|
||
|
set(h,'CData',fliplr(rho_estime),'FaceColor','texturemap','EdgeColor','none');
|
||
|
zdir = [1 0 0];
|
||
|
rotate(h,zdir,90);
|
||
|
zdir = [0 1 0];
|
||
|
rotate(h,zdir,180);
|
||
|
zdir = [1 0 0];
|
||
|
rotate(h,zdir,-90);
|
||
|
shading flat;
|
||
|
colormap gray;
|
||
|
axis equal;
|
||
|
axis off;
|
||
|
view(-44,42); % Direction d'observation
|
||
|
rotate3d;
|