% 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