module Config
+open System
+
type Debug =
| DebugOff
| DebugOn of string // Output directory.
-type Config = {
- debug: Debug
-
+type Parameters = {
scale: float
- minRBCSize: float
- maxRBCSize: float
+ minRbcRadius: float
+ maxRbcRadius: float
preFilterSigma: float
// Parasites detection.
darkStainLevel: float
- stainSigma: float
- stainLevel: float
- stainSpreadRequired: float
+ stainArea: float // Factor of a RBC area. 0.5 means the half of RBC area.
+ stainLevel: float // [0, 1]
- infectionSigma: float
- infectionLevel: float
+ infectionArea: float // Factor of a RBC area. 0.5 means the half of RBC area.
+ infectionLevel: float // [0, 1]
infectionPixelsRequired: int
- percentageOfFgValidCell: float
+ maxDarkStainRatio: float
+
+ minimumCellArea: float // Factor of RBC area.
+}
+
+type Config (param: Parameters) =
+ member this.Parameters = param
+ member val Debug = DebugOff with get, set
+ member val RBCSize = 30. with get, set
+
+ member this.RBCMin = this.RBCSize + param.minRbcRadius * this.RBCSize
+ member this.RBCMax = this.RBCSize + param.maxRbcRadius * this.RBCSize
- MaxDarkStainRatio: float
+ member this.RBCMinArea = param.minimumCellArea * Math.PI * this.RBCSize ** 2.0
- minimumCellArea: int
- maxOffcenter: float
-}
\ No newline at end of file
+ member this.ParasiteArea = param.infectionArea * Math.PI * this.RBCSize ** 2.0
+ member this.StainArea = param.stainArea * Math.PI * this.RBCSize ** 2.0