function laplacien(I)  %fonction qui prend en paramètre une image I et retourne une image J 
    [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);

%LAPLACIEN DE MATLAB : 
    I3=I;
    H = fspecial('laplacian');    %H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filter approximating the shape of the two-dimensional Laplacian operator. 
                                        %The parameter ALPHA controls the shape of the Laplacian and must be in the range 0.0 to 1.0. The default ALPHA is 0.2.

    %SOLUTION 1 AVEC UN SEUIL MANUEL :
    J = edge(I3, 'zerocross', seuil/255, H);   %BW = EDGE(I,'zerocross',THRESH,H) specifies the zero-cross method, using the specified filter H. 
                                               %If THRESH is empty ([]), EDGE chooses the sensitivity threshold automatically. 
                                               %[BW,THRESH] =
                                               %EDGE(I,'zerocross',...) returns the threshold value.
                                               
    %SOLUTION 2 AVEC LE SEUIL AUTOMATIQUE DE MATLAB :
    [J2, seuil2] = edge(I3, 'zerocross'); %, [], H);   

%AFFICHAGE : 
    figure
    %divise la fenêtre en 1 ligne et 2 colonnes : pour afficher 2 images l'une à côté de l'autre
    subplot(1, 2, 1)  %sélectionne le premier cadran 
    colormap(gray)
    imagesc(J);      %affichage du résultat
    title(strcat(['Matlab - Seuil égal à ', num2str(seuil)]));  % affichage du seuil

    subplot(1, 2, 2) %sélectionne le deuxième cadran
    colormap(gray)
    imagesc(J2);   %affichage du résultat
    title(strcat(['Matlab - Seuil égal à ', num2str(seuil2*255)]));  % affichage du seuil
    