open Utils
// All ellipses with a score below this are removed.
-let matchingScoreThresholdPerRadiusUnit = 0.02f // For a radius of 1.
+let matchingScoreThresholdPerRadiusUnit = 0.07f // For a radius of 1. // 0.25
let matchingScorePower = 20.f
-let windowSizeRadiusFactor = 1.f / 2.f
-let minimumDistanceFromCenterRadiusFactor = 1.f / 3.f // 1.f / 3.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
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
| _ ->
()