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();