X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=Parasitemia%2FParasitemiaCore%2FMatchingEllipses.fs;h=d4a6a41c72c9ec96a6c62d5d2358b8311aeb41c7;hb=000e7091983f20ef75d0eba9bf1c865c76483f24;hp=3ed8ad6ac06bd6fda61bcd4bde7d7b5723a99878;hpb=c4a76a01f62568c6353396ff85551a3151fc5236;p=master-thesis.git diff --git a/Parasitemia/ParasitemiaCore/MatchingEllipses.fs b/Parasitemia/ParasitemiaCore/MatchingEllipses.fs index 3ed8ad6..d4a6a41 100644 --- a/Parasitemia/ParasitemiaCore/MatchingEllipses.fs +++ b/Parasitemia/ParasitemiaCore/MatchingEllipses.fs @@ -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 | _ -> ()