projects
/
master-thesis.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Simplification of the parasite marker.
[master-thesis.git]
/
Parasitemia
/
Parasitemia
/
MatchingEllipses.fs
diff --git
a/Parasitemia/Parasitemia/MatchingEllipses.fs
b/Parasitemia/Parasitemia/MatchingEllipses.fs
index
da74c65
..
6e6218d
100644
(file)
--- a/
Parasitemia/Parasitemia/MatchingEllipses.fs
+++ b/
Parasitemia/Parasitemia/MatchingEllipses.fs
@@
-9,8
+9,11
@@
open Types
open Utils
open Utils
+// Do not take in account matching score below this when two ellipses are matched.
let matchingScoreThreshold1 = 0.6
let matchingScoreThreshold1 = 0.6
-let matchingScoreThreshold2 = 1.
+
+// All ellipses with a score below this are removed.
+let matchingScoreThreshold2 = 600.
type private EllipseScoreFlaggedKd (matchingScore: float, e: Ellipse) =
let mutable matchingScore = matchingScore
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.Ellipse = e
member this.MatchingScore = matchingScore
+
member this.AddMatchingScore(score: float) =
matchingScore <- matchingScore + score
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)
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
member this.PrunedEllipses : Ellipse list =
if ellipses.Count = 0
then
@@
-64,8
+69,8
@@
type MatchingEllipses (radiusMin: float) =
let matchingScore = 2.0 * commonArea / (areaE + areaOther)
if matchingScore >= matchingScoreThreshold1
then
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.
| _ -> ()
// 3) Sort ellipses by their score.
@@
-93,7
+98,7
@@
type MatchingEllipses (radiusMin: float) =
for other in tree.Search window do
if not other.Removed && other.MatchingScore < e.MatchingScore
then
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
then
other.Removed <- true
ellipses.RemoveAll(fun e -> e.Removed) |> ignore