* Add the analysis window.
[master-thesis.git] / Parasitemia / Parasitemia / ParasitesMarker.fs
index 720488d..fcb71da 100644 (file)
@@ -56,12 +56,12 @@ let find (filteredGreen: Image<Gray, float32>) (config: Config.Config) : Result
     let filteredGreenWithoutStain = filteredGreenWithoutInfection.Copy()
     ImgTools.areaCloseF filteredGreenWithoutStain (int config.StainArea)
 
     let filteredGreenWithoutStain = filteredGreenWithoutInfection.Copy()
     ImgTools.areaCloseF filteredGreenWithoutStain (int config.StainArea)
 
-    // We use the filtered image to find the dark stain.
-    let _, mean_fg, mean_bg =
-        let hist = ImgTools.histogramImg filteredGreenWithoutInfection 300
-        ImgTools.otsu hist
-
-    let darkStain = filteredGreenWithoutInfection.Cmp(-(float mean_bg) * config.Parameters.darkStainLevel + (float mean_fg), CvEnum.CmpType.LessThan)
+    let darkStain =
+        // We use the filtered image to find the dark stain.
+        let _, mean_fg, mean_bg =
+            let hist = ImgTools.histogramImg filteredGreenWithoutInfection 300
+            ImgTools.otsu hist
+        filteredGreenWithoutInfection.Cmp(-(float mean_bg) * config.Parameters.darkStainLevel + (float mean_fg), CvEnum.CmpType.LessThan)
 
     let marker (img: Image<Gray, float32>) (closed: Image<Gray, float32>) (level: float) : Image<Gray, byte> =
         let diff = img.Copy()
 
     let marker (img: Image<Gray, float32>) (closed: Image<Gray, float32>) (level: float) : Image<Gray, byte> =
         let diff = img.Copy()
@@ -73,6 +73,11 @@ let find (filteredGreen: Image<Gray, float32>) (config: Config.Config) : Result
     let infectionMarker = marker filteredGreen filteredGreenWithoutInfection config.Parameters.infectionLevel
     let stainMarker = marker filteredGreenWithoutInfection filteredGreenWithoutStain config.Parameters.stainLevel
 
     let infectionMarker = marker filteredGreen filteredGreenWithoutInfection config.Parameters.infectionLevel
     let stainMarker = marker filteredGreenWithoutInfection filteredGreenWithoutStain config.Parameters.stainLevel
 
+    // TODO: comprendre pourquoi des valeurs sont negatives!?!?
+    let blackTopHat = filteredGreen.CopyBlank()
+    CvInvoke.Subtract(filteredGreenWithoutInfection, filteredGreen, blackTopHat)
+    ImgTools.saveImg (ImgTools.normalizeAndConvert blackTopHat) "BottomHat.png"
+
     { darkStain = darkStain
       infection = infectionMarker
       stain = stainMarker },
     { darkStain = darkStain
       infection = infectionMarker
       stain = stainMarker },