Change the parasite detection method.
[master-thesis.git] / Parasitemia / Parasitemia / MatchingEllipses.fs
index da74c65..2196122 100644 (file)
@@ -9,8 +9,11 @@ open Types
 open Utils
 
 
+// Do not take in account matching score below this when two ellipses are matched.
 let matchingScoreThreshold1 = 0.6
-let matchingScoreThreshold2 = 1.
+
+// All ellipsee with a score below this is removed.
+let matchingScoreThreshold2 = 2.
 
 type private EllipseScoreFlaggedKd (matchingScore: float, e: Ellipse) =
     let mutable matchingScore = matchingScore
@@ -18,6 +21,7 @@ type private EllipseScoreFlaggedKd (matchingScore: float, e: Ellipse) =
     member this.Ellipse = e
 
     member this.MatchingScore = matchingScore
+
     member this.AddMatchingScore(score: float) =
         matchingScore <- matchingScore + score
 
@@ -38,6 +42,7 @@ type MatchingEllipses (radiusMin: float) =
     member this.Ellipses : Ellipse list =
         List.ofSeq ellipses |> List.map (fun e -> e.Ellipse)
 
+    // Process all ellipses and return ellipses ordered from the best score to the worst.
     member this.PrunedEllipses : Ellipse list =
         if ellipses.Count = 0
         then
@@ -93,7 +98,7 @@ type MatchingEllipses (radiusMin: float) =
                     for other in tree.Search window do
                         if not other.Removed && other.MatchingScore < e.MatchingScore
                         then
-                            if e.Ellipse.Contains other.Ellipse.Cx other.Ellipse.Cy
+                            if e.Ellipse.Scale(0.8).Contains other.Ellipse.Cx other.Ellipse.Cy
                             then
                                 other.Removed <- true
             ellipses.RemoveAll(fun e -> e.Removed) |> ignore