From af25ac72e80d70e17d0d2ada0efd93bff91b58bc Mon Sep 17 00:00:00 2001
From: ctrebeau <ctrebeau@pasteur.fr>
Date: Tue, 13 Oct 2020 17:33:33 +0200
Subject: [PATCH] addition of threshold amplitude in user parameter
---
.../fr/pasteur/ida/zellige/main/Main.java | 19 +++++----
.../construction/SurfacesExtraction.java | 42 +++++++------------
2 files changed, 28 insertions(+), 33 deletions(-)
diff --git a/src/main/java/fr/pasteur/ida/zellige/main/Main.java b/src/main/java/fr/pasteur/ida/zellige/main/Main.java
index 9f3ce22b..86274dd2 100644
--- a/src/main/java/fr/pasteur/ida/zellige/main/Main.java
+++ b/src/main/java/fr/pasteur/ida/zellige/main/Main.java
@@ -63,8 +63,10 @@ public class Main
// Input of the image.
final String imagePath =
-// "doc/BG2.tif";
- "C:\\Users\\ctrebeau\\Desktop\\MoucheAile\\STK\\STK_Mouche_c01_f0001_p005.tif";
+// "doc/STK_060.tif";
+// "C:\\Users\\ctrebeau\\Desktop\\MoucheAile\\STK\\STK_Mouche_c01_f0001_p005.tif";
+// "C:\\Users\\ctrebeau\\Downloads\\phantom2b_combined.tif";
+ "C:\\Users\\ctrebeau\\Desktop\\HighRes\\STK_170706_Vangl2-Lp-wt_E14.5_Phall_cochlea_01bHighRes_c01_f0001_p002.tif";
System.out.println(imagePath);
// Creation of the image : version with unsigned type. */
/* JY version for opening files. */
@@ -74,14 +76,16 @@ public class Main
/* User Parameters AKA arguments to run the program*/
- double percent = Double.parseDouble( args[ 0 ] );
- int sigmas = Integer.parseInt( args[ 1 ] );
- int delta = Integer.parseInt( args[ 2 ] );
+ double amplitude = Double.parseDouble( args[ 0 ] );
+ double threshold = Double.parseDouble( args[ 1 ] );
+ int sigmas = Integer.parseInt( args[ 2 ] );
+ int delta = Integer.parseInt( args[ 3 ] );
/* End of parameters. */
/* Print parameters.*/
- System.out.println( " percent : " + percent );
+ System.out.println( " amplitude : " + amplitude );
+ System.out.println( " threshold : " + threshold );
System.out.println( " Blur size : " + sigmas );
System.out.println( " Delta : " + delta );
System.out.println( System.lineSeparator() );
@@ -96,7 +100,8 @@ public class Main
SurfacesExtraction.setX( ( int ) stackImage.dimension( 0 ));// dimension X
SurfacesExtraction.setY(( int ) stackImage.dimension( 1 ));// dimension Y
- SurfacesExtraction.extract(stackImage,percent, sigmas, false, delta, false,
+ SurfacesExtraction.setZ(( int ) stackImage.dimension( 2 ));// dimension Z
+ SurfacesExtraction.extract(stackImage,amplitude,threshold, sigmas, false, delta, false,
false, true, "MIP");
}
else
diff --git a/src/main/java/fr/pasteur/ida/zellige/surfaceConstruction/construction/SurfacesExtraction.java b/src/main/java/fr/pasteur/ida/zellige/surfaceConstruction/construction/SurfacesExtraction.java
index aef14e0e..666ba47e 100644
--- a/src/main/java/fr/pasteur/ida/zellige/surfaceConstruction/construction/SurfacesExtraction.java
+++ b/src/main/java/fr/pasteur/ida/zellige/surfaceConstruction/construction/SurfacesExtraction.java
@@ -2,6 +2,7 @@ package fr.pasteur.ida.zellige.surfaceConstruction.construction;
import java.util.ArrayList;
+import fr.pasteur.ida.zellige.utils.*;
import org.jzy3d.analysis.AnalysisLauncher;
import fr.pasteur.ida.zellige.exception.FirstRoundConstructionException;
@@ -15,13 +16,6 @@ import fr.pasteur.ida.zellige.surfaceConstruction.element.Surface;
import fr.pasteur.ida.zellige.surfaceConstruction.element.os.OS;
import fr.pasteur.ida.zellige.surfaceConstruction.element.os.OSList;
import fr.pasteur.ida.zellige.surfaceConstruction.element.surfaceLine.SurfaceLine;
-import fr.pasteur.ida.zellige.utils.Interpolation;
-import fr.pasteur.ida.zellige.utils.IsolatedPixFilter;
-import fr.pasteur.ida.zellige.utils.LocalMaximumDetection;
-import fr.pasteur.ida.zellige.utils.LocalOtsu;
-import fr.pasteur.ida.zellige.utils.StackProjection;
-import fr.pasteur.ida.zellige.utils.Threshold;
-import fr.pasteur.ida.zellige.utils.Utils;
import net.imglib2.RandomAccess;
import net.imglib2.RandomAccessibleInterval;
import net.imglib2.img.Img;
@@ -40,38 +34,24 @@ public class SurfacesExtraction
{
private static int X;
private static int Y;
+ private static int Z;
public static int zCount;
public static TreeSet<Integer> list;
public static < T extends RealType< T > & NativeType< T > > void extract(
- Img< T > input, double percent, int sigmas,
+ Img< T > input, double amplitude,double threshold, int sigmas,
boolean zMapDisplay, int delta,
boolean extractedStackDisplay,
boolean heightMapDisplay,
boolean projectionDisplay,
String projectionType )
{
- final long start = System.currentTimeMillis();
- /* Pretreatment of the image.*/
- Img< T > original = input.copy();
- // Conversion into FloatType for the derivative computation (negative values)
- Img< FloatType > converted = Utils.convertIntoFloatType( original.copy() );
- //Image denoising with an anisotropic convolution
- Utils.gaussConvolution( converted.copy(), converted, new double[]{ 1, 1, 0 } );
-
- // Normalization for to simplify thresholding
- Img< FloatType > normalized = Utils.normalizeImage( converted );
-
- ImageJFunctions.show( normalized.copy(), "blurred " );
- /* Local maximum search and selection */
- Img< FloatType > maxIntensity = maximumSearch( normalized, percent, sigmas );
- Pixels[][] maximums = buildPixelArray( maxIntensity );
-// displayMaximums(maximums);
- System.out.println( System.currentTimeMillis() - start);
+ /* First step : Pixel selection */
+ Pixels[][] maximums = LocalMaximumSelection.run(input, amplitude,threshold, sigmas);
+
try
{
/* First round construction*/
-
ArrayList< Surface > surfaces = firstRoundConstruction( maximums );
System.out.println( "first round surfaces = " + surfaces.size() );
//
@@ -408,6 +388,16 @@ public class SurfacesExtraction
Y = y;
}
+ public static int getZ()
+ {
+ return Z;
+ }
+
+ public static void setZ( int z )
+ {
+ Z = z;
+ }
+
/**
* Displays the local maximums found using jzy3D package.
*/
--
GitLab