From 6c18d45c84a2fb2e97ec7a5b19e0fa84d16f6494 Mon Sep 17 00:00:00 2001
From: ctrebeau <ctrebeau@pasteur.fr>
Date: Tue, 13 Oct 2020 17:29:07 +0200
Subject: [PATCH] bug fix: possibility to compute a thresholding on N
 dimensional images

---
 .../java/fr/pasteur/ida/zellige/utils/Otsu.java     | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fr/pasteur/ida/zellige/utils/Otsu.java b/src/main/java/fr/pasteur/ida/zellige/utils/Otsu.java
index f70bae33..c1032b1f 100644
--- a/src/main/java/fr/pasteur/ida/zellige/utils/Otsu.java
+++ b/src/main/java/fr/pasteur/ida/zellige/utils/Otsu.java
@@ -2,11 +2,11 @@ package fr.pasteur.ida.zellige.utils;
 
 import net.imglib2.Cursor;
 import net.imglib2.IterableInterval;
-import net.imglib2.img.Img;
 import net.imglib2.type.NativeType;
 import net.imglib2.type.numeric.RealType;
 
-import java.util.*;
+import java.util.Map;
+import java.util.TreeMap;
 
 public class Otsu
 {
@@ -133,7 +133,7 @@ public class Otsu
             while ( cursor.hasNext() )
             {
                 cursor.fwd();
-                final Double value = cursor.get().getRealDouble();
+                final double value =  cursor.get().getRealDouble();
                 Integer j = hm.get(value );
                 hm.put( value, ( j == null ) ? 1 : j + 1 );
 
@@ -157,7 +157,12 @@ public class Otsu
             }
 
             // Setting of mean and number of pixels
-            int N = ( int ) ( source.dimension( 0 ) * source.dimension( 1 ) * source.dimension( 2 ) );
+
+            int N = 1;
+            for(int d = 0 ; d<= source.numDimensions() - 1; d ++)
+            {
+                N = N* (int) source.dimension( d );
+            }
             double mTot = sum / N;
 
             // Cumulative arrays
-- 
GitLab