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; % load Donnees/vase_brillant; % load Donnees/vase_brillant_bis; load Donnees/visage; % Les données contiennent : % * I (n x p) : matrice des niveaux de gris (transpose(I(i,:)) est l'image numéro i vectorisée) % * N (3 x p) : vérité terrain des normales (si elles sont connues) % * S (n x 3) : matrice des éclairages (transpose(S(i,:)) est le vecteur d'éclairage numéro i) % * Z (nb_lignes x nb_colonnes) : vérité terrain de la profondeur (si elle est connue) % * masque (nb_lignes x nb_colonnes) : masque de l'objet à reconstruire % * rho (nb_lignes x nb_colonnes) : vérité terrain de l'albédo (s'il est connu) [nb_lignes,nb_colonnes] = size(masque); interieur = find(masque>0); % Intérieur du domaine de reconstruction exterieur = find(masque==0); % Extérieur du domaine de reconstruction [n,p] = size(I); % n = nombre d'images, p = nombre de pixels % Affichage des images : figure('Name','Donnees','Position',[0.8*L,0,0.2*L,H]); if n==3 n_l = n; n_c = 1; else n_l = 7; n_c = floor(n/7); end for i = 1:n_l*n_c img = reshape(I(i,:),nb_lignes,nb_colonnes); subplot(n_l,n_c,i); imshow(uint8(img)); hold on; axis image; axis off; title(['$I_{' num2str(i,'%2d') '}$'],'Interpreter','Latex','FontSize',20); end colormap gray; drawnow; % Estimation de M, rho et N : [rho_estime,N_estime] = estimation(I,S,masque); % Intégration du champ de normales : N_estime(3,exterieur) = 1; % Pour éviter les divisions par 0 p_estime = reshape(-N_estime(1,:)./N_estime(3,:),size(masque)); p_estime(exterieur) = 0; q_estime = reshape(-N_estime(2,:)./N_estime(3,:),size(masque)); 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))