function gradient_roberts (I)  %fonction qui prend en paramètre une image I et affiche les images des coord et de la norme pour le gradient de Roberts
    [m, n, can] = size(I); %m=nb lignes, n=nb colonnes, can=nb canaux
    if(can > 1)
        I = rgb2gray(I);  %dans le cas d'une image couleur, la transformer en NG
    end

    I2=I;
    %I2=imnoise(I,'gaussian',0, 0.05);
    %I2=imnoise(I,'salt & pepper',0.4);

    %SOLUTION 1 :
    J = I2;
    GH = double(zeros(m-1,n-1));
    GV = double(zeros(m-1,n-1));
    for l = 1:m-1;
        for c = 1:n-1;
            GH(l,c)= double(I2(l,c)) - double(I2(l+1,c+1));
            GV(l,c)= double(I2(l,c+1)) - double(I2(l+1,c));
            %J(l,c)= uint8(sqrt(double(abs((GH(l,c)))^2 + abs((GV(l,c)))^2)));  %norme 2
            %J(l,c)= uint8(abs(GH(l,c)) + abs(GV(l,c)));  %norme 1
            J(l,c)= uint8(max(abs(GH(l,c)), abs(GV(l,c))));  %norme infinie
        end;
    end;
    %seuillage : 
    seuil = input('Donner le seuil: ');
    bin =(J >= seuil) * 255;

    %SOLUTION AVEC LA FONCTION DE MATLAB :
    [J2,seuil2] = edge(I2, 'roberts');    %BW = EDGE(I,'roberts',THRESH) specifies the sensitivity threshold for the Roberts method. 
                                          %EDGE ignores all edges that are not stronger than THRESH. If you do not specify THRESH, or if THRESH is empty ([]),
                                          %EDGE chooses the value automatically.

    figure
    %divise la fenêtre en 1 ligne et 2 colonnes : pour afficher 2 images l'une à côté de l'autre
    subplot(2, 2, 1)  %sélectionne le premier cadran 
    colormap(gray)
    imagesc(GH);    %affichage des coord diag du grad
    title(strcat('GH - min = ', num2str(min(min(GH))), ' max = ', num2str(max(max(GH)))));
    
    subplot(2, 2, 2) %sélectionne le deuxième cadran
    colormap(gray)
    imagesc(GV);    %affichage des coord diag du grad
    title(strcat('GV - min = ', num2str(min(min(GV))), ' max = ', num2str(max(max(GV)))));

    subplot(2, 2, 3) %sélectionne le 3ème cadran
    colormap(gray)
    imagesc(bin);   %affichage de la solution 1 (seuillage)
    title(strcat(['Seuil égal à ', num2str(seuil)]));  % affichage du seuil
    
    subplot(2, 2, 4) %sélectionne le 3ème cadran
    colormap(gray)
    imagesc(J2);      %affichage de la solution 2 (seuillage)
    title(strcat(['Seuil égal à ', num2str(seuil2*255)]));  % affichage du seuil

