function [Image_contour,Image_contour_fill] = piece_fill2(l, c, N, k,image,une_image)

% On appelle les fonctions handles

ed = @edginess;
cons = @byaverage;
n = @norme;
moy = @moyenne;

% Voila la premiere boucle pour trouver
% les edges et la matrice qui va avec
% En plus on cree la matrice temoin M

B = zeros(size(N));
B(l,:) = N(l,:);
B(:,c) = N(:,c);
M_temoin = zeros([l c]);
for i = 1:l-1
    for j = 1:c-1
        e(i,j) = feval( ed, N, i, j);
        d(i,j) = feval( cons, N ,i, j);
        R(i,j) = e(i,j)*d(i,j);
        if R(i,j) > k
            Matrice_contour(i,j) = 1;
            B(i,j) = 1;
            M_temoin(i,j) = 1;
        else
            B(i,j) = N(i,j);
            Matrice_contour(i,j) = 0;
            M_temoin(i,j) = 0;
        end
    end     
end

% on va limiter l'etude de la matrice temoin
M_temoin(l,:) = 1;
M_temoin(:,c) = 1;
M_temoin(1,:) = 1;
M_temoin(:,1) = 1;
t = 0;

% Ensuite on va "fill" les "holes"
couple =[[-1 0];[1 0];[0 -1];[0 1]];
for i = 1:l
    for j = 1:c
            if M_temoin(i,j) ~= 1
            M_temoin(i,j) = 1;
            % On cree la matrice AP qui represente 
            % les coordonnees des derniers points crees         
            % initialisation
            AP = [i j];
            [m,n] = size(AP);
            % On va essayer de tout mettre a la moyenne sur tous les points
            s = 0;
            So = 0;
            % d va representer le nombre de lignes dans l'ancienne matrice A
            while m > 0
                AV = AP;
                AP = [];                   
                % u va representer le nombre de lignes dans la nouvelle matrice A
                u = 0;
                for k = 1:m
                    for r = 1:4           
                        if M_temoin(AV(k,1) + couple(r,1), AV(k,2) + couple(r,2)) ~= 1
                            M_temoin(AV(k,1) + couple(r,1), AV(k,2) + couple(r,2)) = 1;
                            % Ici on agrandit l'after matrice
                            u = u + 1;
                            % Ici on agrandit le vecteur contenant les coordonnes des points
                            % dont on veut la moyenne
                            s = s + 1;
                            % On transforme le vecteur avant en vecteur apres
                            AP(u,1) = AV(k,1) + couple(r,1);
                            AP(u,2) = AV(k,2) + couple(r,2);
                            % Et on ajoute un vecteur dans le vecteur moyenne
                            AM(s,1) = AV(k,1) + couple(r,1);
                            AM(s,2) = AV(k,2) + couple(r,2);
                            So = So + B(AV(k,1) + couple(r,1), AV(k,2) + couple(r,2));
                        end
                    end
                end
                [m n] = size(AP);
            end 
            for e = 1:s
                B(AM(e,1),AM(e,2)) = (So)/s;
            end
        else continue    
        end
    end
end
            
          


% On affiche la matrice temoin

I_matrice_temoin = M_temoin;
figure, Image_temoin = imshow(I_matrice_temoin);
figure, Image_contour = imshow(B);

