Fix an out-of-bound array access.
[master-thesis.git] / Parasitemia / Parasitemia / MainAnalysis.fs
index c9e9422..3f35fb7 100644 (file)
@@ -59,20 +59,15 @@ let doAnalysis (img: Image<Bgr, byte>) (name: string) (config: Config) : Cell li
     logTime "Finding edges" (fun() -> thin edges)
     logTime "Removing small connected components from thinning" (fun () -> removeArea edges 12)
 
-    (*
-    let kmediansResults = KMedians.kmedians filteredGreen 1.0
+    let kmediansResults = logTime "Finding foreground (k-medians)" (fun () -> KMedians.kmedians filteredGreen 1.0)
 
     let parasites = ParasitesMarker.find green filteredGreen kmediansResults config
 
-    let radiusRange = config.scale * config.minRBCSize, config.scale * config.maxRBCSize
-    let windowSize = roundInt (1.6 * (snd radiusRange))
-    let factorNbPick = 1.5
-    let ellipses = logTime "Finding ellipses" (fun () ->
-        Ellipse.find edges xEdges yEdges radiusRange windowSize factorNbPick)
+    let allEllipses, ellipses = logTime "Finding ellipses" (fun () ->
+        let matchingEllipses = Ellipse.find edges xEdges yEdges config
+        matchingEllipses.Ellipses, matchingEllipses.PrunedEllipses )
 
     let cells = logTime "Classifier" (fun () -> Classifier.findCells ellipses parasites kmediansResults.fg config)
-    *)
-    let cells = []
 
     // Output pictures if debug flag is set.
     match config.debug with
@@ -80,12 +75,16 @@ let doAnalysis (img: Image<Bgr, byte>) (name: string) (config: Config) : Cell li
         let buildFileName postfix = System.IO.Path.Combine(output, name + postfix)
         saveMat (edges * 255.0) (buildFileName " - edges.png")
 
-        (*saveImg parasites.darkStain (buildFileName " - parasites - dark stain.png")
+        saveImg parasites.darkStain (buildFileName " - parasites - dark stain.png")
         saveImg parasites.stain (buildFileName " - parasites - stain.png")
         saveImg parasites.infection (buildFileName " - parasites - infection.png")
 
+        let imgAllEllipses = img.Copy()
+        drawEllipses imgAllEllipses allEllipses (Bgr(0.0, 240.0, 240.0)) 0.1
+        saveImg imgAllEllipses (buildFileName " - ellipses - all.png")
+
         let imgEllipses = img.Copy()
-        drawEllipses imgEllipses ellipses (Bgr(0.0, 240.0, 240.0))
+        drawEllipses imgEllipses ellipses (Bgr(0.0, 240.0, 240.0)) 1.0
         saveImg imgEllipses (buildFileName " - ellipses.png")
 
         saveImg (kmediansResults.fg * 255.0) (buildFileName " - foreground.png")
@@ -96,7 +95,7 @@ let doAnalysis (img: Image<Bgr, byte>) (name: string) (config: Config) : Cell li
 
         let imgCells' = img.Copy()
         drawCells imgCells' true cells
-        saveImg imgCells' (buildFileName " - cells - full.png")*)
+        saveImg imgCells' (buildFileName " - cells - full.png")
     | _ -> ()
 
     cells