diff --git a/src/main/java/fr/pasteur/ida/zellige/utils/Filter2D.java b/src/main/java/fr/pasteur/ida/zellige/utils/Filter2D.java index 732a1eab7d814ec5782637f142482703338f2fde..0974e99fbca6d94d95edf84a0c8da4c640a12b01 100644 --- a/src/main/java/fr/pasteur/ida/zellige/utils/Filter2D.java +++ b/src/main/java/fr/pasteur/ida/zellige/utils/Filter2D.java @@ -8,6 +8,7 @@ import net.imglib2.RandomAccessibleInterval; import net.imglib2.algorithm.neighborhood.Neighborhood; import net.imglib2.algorithm.neighborhood.RectangleShape; import net.imglib2.img.Img; +import net.imglib2.img.display.imagej.ImageJFunctions; import net.imglib2.type.NativeType; import net.imglib2.type.numeric.RealType; import net.imglib2.view.IntervalView; @@ -39,6 +40,7 @@ public class Filter2D<T extends RealType<T> & NativeType<T>> { public static <T extends RealType<T> & NativeType<T>> Img<T> mean(final Img<T> source, final int radius) { Process<T> p = new Process<>(source, radius, "mean"); p.run(); + return p.output; } @@ -64,8 +66,9 @@ public class Filter2D<T extends RealType<T> & NativeType<T>> { final IntervalView<T> outputSlice = Views.hyperSlice(output, 2, z); ProcessSlice<T> p = new ProcessSlice<>(slice, outputSlice, radius); p.run(method); - } + }ImageJFunctions.show( output.copy(), method ); } + } public static class ProcessSlice<T extends RealType<T> & NativeType<T>> { @@ -112,9 +115,12 @@ public class Filter2D<T extends RealType<T> & NativeType<T>> { double sum = 0; for (final T pixel : nra.get()) { double value = pixel.getRealDouble(); - values[index] = value; - sum = sum + value; - index++; + if(value != 0) + { + values[ index ] = value; + sum = sum + value; + index++; + } } return sum / (index);