clear; close all; taille_ecran = get(0,'ScreenSize'); L = taille_ecran(3); H = taille_ecran(4); % Lecture et affichage de l'image : I = imread('Lena.png'); pas_decimation = 6; I = I(1:pas_decimation:end,1:pas_decimation:end,:); % Dˇcimation de l'image I = double(rgb2gray(I)); [nb_lignes,nb_colonnes] = size(I); nb_pixels = nb_lignes*nb_colonnes; figure('Name','Image originale','Position',[0,0,0.5*L,0.7*H]); imagesc(I); axis equal; axis off; hold on; colormap gray; drawnow; % Indices absolus des paires de pixels voisins : ind_pixels = reshape(1:nb_pixels,nb_lignes,nb_colonnes); [voisins,distances] = voisinage(ind_pixels); % Variation de profondeur entre pixels voisins : d_z = delta_z(I,voisins,distances); % Symˇtrisation des paires de pixels voisins : voisins = [voisins ; flip(voisins,2)]; d_z = [d_z ; d_z]; % Matrice creuse dˇcrivant le syst¸me de voisinage des "8 plus proches voisins" : M_voisins = sparse(voisins(:,1),voisins(:,2),1,nb_pixels,nb_pixels); % Matrice creuse contenant les variations de profondeur entre pixels voisins : M_d_z = sparse(voisins(:,1),voisins(:,2),d_z,nb_pixels,nb_pixels); % Algorithme du fast marching : figure('Name','Front d''onde du fast marching','Position',[0.5*L,0,0.5*L,0.7*H]); z = fast_marching(M_voisins,M_d_z,nb_lignes,nb_colonnes); % Affichage du rˇsultat : close(2); figure('Name','Reeclairage du relief reconstruit','Position',[0.5*L,0,0.5*L,0.7*H]); z = reshape(z,nb_lignes,nb_colonnes); reeclairage(z);