diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin
index ddb4b12fab1ca5b2221a680defb1712d7dbba9e3..faa431d3e9bc95eafc2b519d4c58569a7de89e2e 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.bin and b/.gradle/8.3/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock
index abcd265318d7524d399506a0a4916b24aa827114..055e7813d940ddf8fae316945a96a262acd62cd1 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.lock and b/.gradle/8.3/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin
index 39f7ec8af8f4c6a380fd8a9f8fccf772d89f755e..bf01ebcc9ce53cb6db31b13b8288fb318a2c1246 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.bin and b/.gradle/8.3/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock
index e717aba62fcde27e2654d53ac57cc0c8dbf751eb..ff411491ef1b68e57098fa482ba2c4941e415050 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.lock and b/.gradle/8.3/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin
index 5a4414233f358fa22a3a72f48cdf664e33c7eadc..ff70ef0e11a83d02d3ba42aaa702694f76f78f3a 100644
Binary files a/.gradle/8.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.3/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 81b374fde1840b9f57f5ad3b746c349f476f02cd..3e94c0722d63d3529f8844cb5473248eb4c0db73 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index e46e12b92a9ef88030624aa69b8acf436bcb1b9c..92abf3e3b288ae24db14f2c5a942864877557654 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/Display.class b/build/classes/java/main/Display.class
index 1080fb79294bc6214b6a8a48f14413b539953290..f9ba28422a1eaee46c98e8c0390342dfa147e21f 100644
Binary files a/build/classes/java/main/Display.class and b/build/classes/java/main/Display.class differ
diff --git a/build/classes/java/main/Outline.class b/build/classes/java/main/Outline.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e873d34ba9c1429a26f4a8d761cfbb560817157
Binary files /dev/null and b/build/classes/java/main/Outline.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1
deleted file mode 100644
index bbb4e560ff43318539963d09cef48f6ecf0aca50..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0
index 978934d08c8abbe115ad764a01100b62f5d4c6d3..f9ba28422a1eaee46c98e8c0390342dfa147e21f 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..568cb260dfee6c163cada1fb364401b62c1f4413
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 5b3b3fa5b8ff24e41bee8b4b377e248c8aea091c..05ed6ce2a2fb7bdbd4f27496fc2cf80c5ea2fe6a 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/DecreaseGrayLevelsTest.java b/src/main/java/DecreaseGrayLevelsTest.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/main/java/Display.java b/src/main/java/Display.java
index 4a12bdda6af375e81ed7cd0fe033c13838e3ce0e..030bcc504b676496032b08965a837d076544a087 100644
--- a/src/main/java/Display.java
+++ b/src/main/java/Display.java
@@ -21,7 +21,7 @@ public class Display implements Initializable {
 
         this.image = MatrixGrayImage.createImageFromPGMFile("images/luminy.pgm");
 
-        transform transformation = new DecreaseGrayLevels(5);
+        transform transformation = new Outline(0.025);
 
         transformation.applyTo(this.image);
 
diff --git a/src/main/java/Outline.java b/src/main/java/Outline.java
new file mode 100644
index 0000000000000000000000000000000000000000..94f8c91adceab7bf43169f7293b71f1d96262c7c
--- /dev/null
+++ b/src/main/java/Outline.java
@@ -0,0 +1,53 @@
+import java.util.ArrayList;
+import java.util.List;
+
+import javafx.scene.paint.Color;
+
+public class Outline implements transform {
+
+    private double threshold;
+    
+    public Outline(double threshold) {
+        this.threshold = threshold;   // threshold détermine le seuil
+    }
+
+    public void applyTo(GrayImage image) {
+        for (int i = 0; i < image.getWidth(); i++) {
+            for (int j = 0; j < image.getHeight(); j++) {
+                modifyPixel(image, i, j);;
+            }   
+        }
+    }
+
+    public List<GrayColor> SouthEastNeigbors(GrayImage image, int x, int y) {
+        List<GrayColor> neigborsList = new ArrayList<>();
+
+        if (x != image.getWidth() - 1) {
+            neigborsList.add(image.getPixelGrayColor(x+1, y));
+        }
+
+        if (y != image.getHeight() - 1) {
+            neigborsList.add(image.getPixelGrayColor(x, y+1));
+        }
+
+        return neigborsList;
+    }
+
+
+    public void modifyPixel(GrayImage image, int x, int y) {
+        
+        GrayColor actualByte = image.getPixelGrayColor(x, y);
+        List<GrayColor> neigborsList = SouthEastNeigbors(image, x, y);
+        ByteGrayColor newColor = ByteGrayColor.BLACK;
+
+        for (GrayColor grayColor : neigborsList) {
+            if (Math.abs(grayColor.getLuminosity() - actualByte.getLuminosity()) > this.threshold) {
+                newColor = ByteGrayColor.WHITE;
+            }
+        }
+
+        image.setPixel(newColor, x, y);
+
+    }
+
+}