X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=Parasitemia%2FParasitemiaCore%2FImgTools%2FOtsu.fs;h=8d976ff0710b7b25bbdf86ac07455a937dea7a68;hb=a498bc4223a22cd38b91b3348912301e15c077ae;hp=6b8ee53dd91e8edf69e67dd5d82edd6e2cd892cd;hpb=3f8b0d281b3058faf23dbd0363de440bd04c6574;p=master-thesis.git diff --git a/Parasitemia/ParasitemiaCore/ImgTools/Otsu.fs b/Parasitemia/ParasitemiaCore/ImgTools/Otsu.fs index 6b8ee53..8d976ff 100644 --- a/Parasitemia/ParasitemiaCore/ImgTools/Otsu.fs +++ b/Parasitemia/ParasitemiaCore/ImgTools/Otsu.fs @@ -2,33 +2,30 @@ open Histogram -let otsu (hist: Histogram) : float32 * float32 * float32 = +let otsu (hist : Histogram) : float32 * float32 * float32 = let mutable sumB = 0 let mutable wB = 0 let mutable maximum = 0.0 let mutable level = 0 let sum = hist.data |> Array.mapi (fun i v -> i * v |> float) |> Array.sum - for i in 0 .. hist.data.Length - 1 do + for i = 0 to hist.data.Length - 1 do wB <- wB + hist.data.[i] - if wB <> 0 - then + if wB <> 0 then let wF = hist.total - wB - if wF <> 0 - then + if wF <> 0 then sumB <- sumB + i * hist.data.[i] let mB = (float sumB) / (float wB) let mF = (sum - float sumB) / (float wF) let between = (float wB) * (float wF) * (mB - mF) ** 2.; - if between >= maximum - then + if between >= maximum then level <- i maximum <- between let mean1 = let mutable sum = 0 let mutable nb = 0 - for i in 0 .. level - 1 do + for i = 0 to level - 1 do sum <- sum + i * hist.data.[i] nb <- nb + hist.data.[i] (sum + level * hist.data.[level] / 2) / (nb + hist.data.[level] / 2) @@ -36,7 +33,7 @@ let otsu (hist: Histogram) : float32 * float32 * float32 = let mean2 = let mutable sum = 0 let mutable nb = 0 - for i in level + 1 .. hist.data.Length - 1 do + for i = level + 1 to hist.data.Length - 1 do sum <- sum + i * hist.data.[i] nb <- nb + hist.data.[i] (sum + level * hist.data.[level] / 2) / (nb + hist.data.[level] / 2)