diff --git a/src/main/java/fr/pasteur/ida/zellige/Main.java b/src/main/java/fr/pasteur/ida/zellige/Main.java
index 44b2963bcf424fcc56002c546010fab94004bc47..0e66c540b8a975da2532fb0e190b58edb4aabd3a 100644
--- a/src/main/java/fr/pasteur/ida/zellige/Main.java
+++ b/src/main/java/fr/pasteur/ida/zellige/Main.java
@@ -53,7 +53,8 @@ public class Main
         double startingOsSize2 = Double.parseDouble( args[ 10 ] );
         int overlap2 = Integer.parseInt( args[ 11 ] );
         double connexityRate2 = Double.parseDouble( args[ 12 ] );
-        int delta = Integer.parseInt( args[ 13 ] );
+        double surfaceMinSizeFactor = Double.parseDouble( args[ 13 ] );
+        int delta = Integer.parseInt( args[ 14 ] );
         /* End of parameters. */
 
 
@@ -78,6 +79,7 @@ public class Main
         System.out.println( "starting os size2 : " + startingOsSize2 );
         System.out.println( "overlap2 :" + overlap2 );
         System.out.println( "connexityRate2  :" + connexityRate2 );
+        System.out.println( "surface Minimum size factor : " + surfaceMinSizeFactor );
         System.out.println( "delta : " + delta );
         System.out.println( System.lineSeparator() );
         /* End of  Print parameters.*/
@@ -87,8 +89,8 @@ public class Main
         PostTreatmentParameters postTreatmentParameters = new PostTreatmentParameters( sigmaXY, sigmaZ, islandSize, connexity );
         ProjectionParameters projectionParameters = new ProjectionParameters( delta, "MIP" );// no other method implemented yet.
         ConstructionParameters[] constructionParameters = new ConstructionParameters[]{
-                new ConstructionParameters( startingOsSize1, overlap1, connexityRate1 ),
-                new ConstructionParameters( startingOsSize2, overlap2, connexityRate2 ) };
+                new ConstructionParameters( startingOsSize1, overlap1, connexityRate1, surfaceMinSizeFactor ),
+                new ConstructionParameters( startingOsSize2, overlap2, connexityRate2, surfaceMinSizeFactor ) };
 
 
         DisplayParameters displayParameters = new DisplayParameters(
diff --git a/src/main/java/fr/pasteur/ida/zellige/command/ZelligeCommand.java b/src/main/java/fr/pasteur/ida/zellige/command/ZelligeCommand.java
index a672b19cd1d110fdd00d2d64cac9659b1fd80bff..020b895d7677500cdfe6d355c54e5a9385076c27 100644
--- a/src/main/java/fr/pasteur/ida/zellige/command/ZelligeCommand.java
+++ b/src/main/java/fr/pasteur/ida/zellige/command/ZelligeCommand.java
@@ -76,9 +76,13 @@ public class ZelligeCommand< T extends RealType< T > & NativeType< T > > extends
     @Parameter
     private double connexityRate2;
 
+    @Parameter
+    private double surfaceMinSizeFactor;
+
     @Parameter
     private int delta;
 
+
     public static void main( String[] args ) throws IOException
     {
         String currentFolder = FileSystems.getDefault()
@@ -173,8 +177,8 @@ public class ZelligeCommand< T extends RealType< T > & NativeType< T > > extends
             e.printStackTrace();
         }
         ConstructionParameters[] constructionParameters = new ConstructionParameters[]{
-                new ConstructionParameters( startingOsSize1, overlap1, connexityRate1 ),
-                new ConstructionParameters( startingOsSize2, overlap2, connexityRate2 ) };
+                new ConstructionParameters( startingOsSize1, overlap1, connexityRate1, surfaceMinSizeFactor ),
+                new ConstructionParameters( startingOsSize2, overlap2, connexityRate2, surfaceMinSizeFactor ) };
 
 
         DisplayParameters displayParameters = new DisplayParameters(
diff --git a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionParameters.java b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionParameters.java
index 72df91af97e3272b449e9d58a01c6858db960d7e..ff75096703c6231c44b6d3379540445b5fc3092b 100644
--- a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionParameters.java
+++ b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionParameters.java
@@ -6,12 +6,14 @@ public class ConstructionParameters
    private final double startingSizeThreshold;
    private final int overlap;
    private final double connexityRate;
+    private double surfaceMinSizeFactor;
 
-    public ConstructionParameters( double startingSizeThreshold, int overlap, double connexityRate )
+    public ConstructionParameters( double startingSizeThreshold, int overlap, double connexityRate, double surfaceMinSizeFactor )
     {
         this.startingSizeThreshold = startingSizeThreshold;
         this.overlap = overlap;
         this.connexityRate = connexityRate;
+        this.surfaceMinSizeFactor = surfaceMinSizeFactor;
     }
 
 
@@ -29,4 +31,9 @@ public class ConstructionParameters
     {
         return connexityRate;
     }
+
+    public double getSurfaceMinSizeFactor()
+    {
+        return surfaceMinSizeFactor;
+    }
 }
diff --git a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionRound.java b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionRound.java
index 2e387c239e7c1ad41eb0f6ba96bf4f7b6f1cd69a..8c0131923f5edda6bd527535d77288aee1a32d82 100644
--- a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionRound.java
+++ b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/ConstructionRound.java
@@ -18,6 +18,7 @@ public abstract class ConstructionRound
     private final double startingSizeThreshold;
     private final int overlap;
     private final double connexityRate;
+    private final double surfaceMinSizeFactor;
     private final ArrayList< Surface > surfaces;
     private long OSConstructionProcessingTime;
     private long ConstructionProcessingTime;
@@ -32,6 +33,7 @@ public abstract class ConstructionRound
         this.overlap = constructionParameters.getOverlap();
         this.connexityRate = constructionParameters.getConnexityRate();
         this.surfaces = new ArrayList<>();
+        this.surfaceMinSizeFactor = constructionParameters.getSurfaceMinSizeFactor();
     }
 
     void finalizeSurface( ArrayList< Surface > surfaces ) throws NoSurfaceFoundException
@@ -106,7 +108,7 @@ public abstract class ConstructionRound
     protected ArrayList< Surface > constructSurfaces( OSEListArray oseLists, int lineLength )
     {
         SurfacesConstruction construction =
-                new SurfacesConstruction( oseLists, lineLength, overlap, connexityRate );
+                new SurfacesConstruction( oseLists, lineLength, overlap, connexityRate, surfaceMinSizeFactor );
         construction.buildAllSurfaces();
         int tempSmallSurfaceCount = construction.getSmallSurfaceCount();
         smallSurfacesCount += tempSmallSurfaceCount;
diff --git a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/surface/SurfacesConstruction.java b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/surface/SurfacesConstruction.java
index 2b9ac2e4043f653c571895510a031ba10a5fe591..c07800936323dc6f2383fbef719063cb2cbf3828 100644
--- a/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/surface/SurfacesConstruction.java
+++ b/src/main/java/fr/pasteur/ida/zellige/steps/construction/rounds/surface/SurfacesConstruction.java
@@ -24,18 +24,20 @@ public class SurfacesConstruction
     private final double connexity;
     private final int overlap;
     private int smallSurfaceCount;
+    private final double surfaceMinSizeFactor;
 
-    public SurfacesConstruction( OSEListArray oseLists, int width, int overlap, double connexity )
+    public SurfacesConstruction( OSEListArray oseLists, int width, int overlap, double connexity, double surfaceMinSizeFactor )
     {
         this.oseListArray = oseLists;
         this.width = width;
         this.connexity = connexity;
         this.overlap = overlap;
+        this.surfaceMinSizeFactor = surfaceMinSizeFactor;
     }
 
-    public static ArrayList< Surface > run( OSEListArray oseListArray, int surfaceLineLength, int overlap, double connexity )
+    public static ArrayList< Surface > run( OSEListArray oseListArray, int surfaceLineLength, int overlap, double connexity, double surfaceMinSizeFactor )
     {
-        SurfacesConstruction reconstruction = new SurfacesConstruction( oseListArray, surfaceLineLength, overlap, connexity );
+        SurfacesConstruction reconstruction = new SurfacesConstruction( oseListArray, surfaceLineLength, overlap, connexity, surfaceMinSizeFactor );
         reconstruction.buildAllSurfaces();
         return reconstruction.constructedSurfaces;
     }
@@ -68,7 +70,7 @@ public class SurfacesConstruction
      */
     private void checkSurface( Surface surface )
     {
-        if ( surface.getSize() >= width * oseListArray.getLength() * 0.2 )
+        if ( surface.getSize() >= width * oseListArray.getLength() * surfaceMinSizeFactor )
         {
             constructedSurfaces.add( surface );
         }
diff --git a/src/main/java/fr/pasteur/ida/zellige/utils/test/ZParameters.java b/src/main/java/fr/pasteur/ida/zellige/utils/test/ZParameters.java
index 7a9fb62e2703a861beda10a32d5c657a89bd6737..702c1a3d2b5ad959165a2b8f6d2172c7648862a1 100644
--- a/src/main/java/fr/pasteur/ida/zellige/utils/test/ZParameters.java
+++ b/src/main/java/fr/pasteur/ida/zellige/utils/test/ZParameters.java
@@ -25,15 +25,15 @@ public class ZParameters
                         double XYSmoothing, double ZSmoothing,
                         double startingThreshold1, int overlap1, double connexityRate1,
                         double startingThreshold2, int overlap2, double connexityRate2,
-                        int delta ) throws DataValidationException
+                        double surfaceMinSizeFactor, int delta ) throws DataValidationException
     {
         pretreatmentParameters = new PretreatmentParameters( filter, filterParameter );
         classificationParameters = new ClassificationParameters( amplitudeThreshold, otsuThreshold );
         postTreatmentParameters = new PostTreatmentParameters( XYSmoothing, ZSmoothing, ISSize, ISConnexity );
 
         constructionParameters = new ConstructionParameters[]{
-                new ConstructionParameters( startingThreshold1, overlap1, connexityRate1 ),
-                new ConstructionParameters( startingThreshold2, overlap2, connexityRate2 ) };
+                new ConstructionParameters( startingThreshold1, overlap1, connexityRate1, surfaceMinSizeFactor ),
+                new ConstructionParameters( startingThreshold2, overlap2, connexityRate2, surfaceMinSizeFactor ) };
         projectionParameters = new ProjectionParameters( delta, "MIP" );
     }
 
diff --git a/src/test/java/fr/pasteur/ida/zellige/behavior/ParameterSweep.java b/src/test/java/fr/pasteur/ida/zellige/behavior/ParameterSweep.java
index 11c5aa4fe1dc033da220a1a9ed6ed5281758fbf7..87c077caf72a65615a059861de3902385350916a 100644
--- a/src/test/java/fr/pasteur/ida/zellige/behavior/ParameterSweep.java
+++ b/src/test/java/fr/pasteur/ida/zellige/behavior/ParameterSweep.java
@@ -28,6 +28,7 @@ public class ParameterSweep< T extends RealType< T > & NativeType< T >, R extend
     static ArrayList< Img > ref;
     static Img tested;
     private final int delta = 0;
+    private double surfaceMinSizeFactor;
 
     //    @Ignore
     @BeforeAll
@@ -74,7 +75,7 @@ public class ParameterSweep< T extends RealType< T > & NativeType< T >, R extend
         ZParameters parameters = new ZParameters( filter, filterParameter,
                 amplitudeThreshold, otsuThreshold, ISConnexity, ISSize, XYSmoothing, ZSmoothing,
                 startingThreshold1, overlap1, connexityRate1,
-                startingThreshold2, overlap2, connexityRate2, delta );
+                startingThreshold2, overlap2, connexityRate2, surfaceMinSizeFactor, delta );
 
         parameters.print();
         ZelligePipelineAnalyse< T, R > analyse = new ZelligePipelineAnalyse();
@@ -121,7 +122,7 @@ public class ParameterSweep< T extends RealType< T > & NativeType< T >, R extend
         ZParameters parameters = new ZParameters( filter, filterParameter,
                 amplitudeThreshold, otsuThreshold, ISConnexity, ISSize, XYSmoothing, ZSmoothing,
                 startingThreshold1, overlap1, connexityRate1,
-                startingThreshold2, overlap2, connexityRate2, delta );
+                startingThreshold2, overlap2, connexityRate2, surfaceMinSizeFactor, delta );
 
         parameters.print();
         ZelligePipelineAnalyse< T, R > analyse = new ZelligePipelineAnalyse();