// Do not take in account matching score below this when two ellipses are matched.
let matchingScoreThreshold1 = 0.6
-// All ellipsee with a score below this is removed.
-let matchingScoreThreshold2 = 1. / 50.
+// All ellipses with a score below this are removed.
+let matchingScoreThreshold2 = 600.
type private EllipseScoreFlaggedKd (matchingScore: float, e: Ellipse) =
let mutable matchingScore = matchingScore
- let perimeter = e.Perimeter
member this.Ellipse = e
member this.MatchingScore = matchingScore
- // The score is proportional to the perimeter because large ellipse will receive more votes.
member this.AddMatchingScore(score: float) =
- matchingScore <- matchingScore + score / perimeter
+ matchingScore <- matchingScore + score
member val Processed = false with get, set
member val Removed = false with get, set
let matchingScore = 2.0 * commonArea / (areaE + areaOther)
if matchingScore >= matchingScoreThreshold1
then
- other.AddMatchingScore(matchingScore)
- e.AddMatchingScore(matchingScore)
+ other.AddMatchingScore(matchingScore * e.Ellipse.Perimeter)
+ e.AddMatchingScore(matchingScore * other.Ellipse.Perimeter)
| _ -> ()
// 3) Sort ellipses by their score.