% Bon voila le programme pour eliminer les lacunes % dans la detection des edges function [Matrice_edge_relie,Matrice_edge_relie_fill] = relier(M, B, l, c, image) % on donne la bonne forme a la matrice Matrice_edge_relie2 = zeros([l-1 c-1]); Matrice_edge_relie = M; Matrice_edge_relie_fill = B; % On appelle les 3 petites fonctions qui concernent le programme b_b = @base_bloc; b_nb = @bloc_nb; M_r = @M_relier; couple = [[-1 -1];[-1 0];[-1 1];[0 -1];[0 1];[1 -1];[1 0];[1 1];[0 0]]; % On commence par donner un nom a notre M_relier M_trans = feval(M_r,M); % On commence a parcourir la matrice t = 1; for i = 2:l-2 for j = 2:c-2 valeur1 = feval(b_nb, M, i, j); valeur2 = M_trans(2, valeur1 + 1); if valeur1 ~= valeur2 t = t + 1; a = dec2base(valeur2,2,9); [B_33,B_33_couleur] = feval(b_b, a, M, B, i, j); Matrice_edge_relie(i-1:i+1,j-1:j+1) = B_33(1:3,1:3); Matrice_edge_relie2(i-1:i+1,j-1:j+1) = B_33(1:3,1:3); Matrice_edge_relie_fill(i-1:i+1,j-1:j+1) = B_33_couleur(1:3,1:3); end end end if image == 'on' % et finalement on affiche l'image %figure, Image_edge_relie = imshow(Matrice_edge_relie); %figure, Image_edge_relie2 = imshow(Matrice_edge_relie2); % Ou en noir sur blanc pour imprimer B_relie = ones([l-1 c-1]) - Matrice_edge_relie; B_relie2 = ones([l-1 c-1]) - Matrice_edge_relie2; figure, Image_edge_relie = imshow(B_relie); figure, Image_edge_relie2 = imshow(B_relie2); end