Change the way the dark stain is marked.
[master-thesis.git] / Parasitemia / ParasitemiaCore / MatchingEllipses.fs
index 3ed8ad6..d4a6a41 100644 (file)
@@ -10,10 +10,11 @@ open Types
 open Utils
 
 // All ellipses with a score below this are removed.
-let matchingScoreThreshold = 0.4f
+let matchingScoreThresholdPerRadiusUnit = 0.07f // For a radius of 1. // 0.25
 let matchingScorePower = 20.f
-let windowSizeRadiusFactor = 1.f / 2.f
+let windowSizeRadiusFactor = 1.f / 2.f // Used when searching for neighbor ellipses.
 let minimumDistanceFromCenterRadiusFactor = 1.f / 3.f
+let minimumAreaFactor = 1.1f;
 
 type private EllipseScoreFlaggedKd (matchingScore: float32, e: Ellipse) =
     let mutable matchingScore = matchingScore
@@ -72,6 +73,7 @@ type MatchingEllipses (radius: float32) =
                         | _ -> ()
 
             // 3) Remove ellipses whose center is near the center of another ellipse with a better score.
+            let matchingScoreThreshold = matchingScoreThresholdPerRadiusUnit * radius
             for e in ellipses do
                 if e.MatchingScore < matchingScoreThreshold
                 then
@@ -91,7 +93,7 @@ type MatchingEllipses (radius: float32) =
                             else
                                 // Case where ellipses are overlapped.
                                 match EEOver.EEOverlapArea e.Ellipse other.Ellipse with
-                                | Some (overlapArea, _, _) when e.Ellipse.Area < 1.1f * overlapArea || other.Ellipse.Area < 1.1f * overlapArea ->
+                                | Some (overlapArea, _, _) when e.Ellipse.Area < minimumAreaFactor * overlapArea || other.Ellipse.Area < minimumAreaFactor * overlapArea ->
                                     other.Removed <- true
                                 | _ ->
                                     ()