module Config
-type Config = {
- doGSigma1: float
- doGSigma2: float
- doGLowFreqPercentageReduction: float
+open System
+type Debug =
+ | DebugOff
+ | DebugOn of string // Output directory.
+
+type Parameters = {
scale: float
-}
\ No newline at end of file
+
+ minRbcRadius: float
+ maxRbcRadius: float
+
+ preFilterSigma: float
+
+ // Ellipse.
+ factorNbPick: float
+ factorWindowSize: float // factor of 'maxRBCSize'.
+
+ // Parasites detection.
+ darkStainLevel: float
+
+ stainArea: float // Factor of a RBC area. 0.5 means the half of RBC area.
+ stainLevel: float // [0, 1]
+
+ infectionArea: float // Factor of a RBC area. 0.5 means the half of RBC area.
+ infectionLevel: float // [0, 1]
+ infectionPixelsRequired: int
+
+ 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
+
+ member this.RBCMinArea = param.minimumCellArea * Math.PI * this.RBCSize ** 2.0
+
+ member this.ParasiteArea = param.infectionArea * Math.PI * this.RBCSize ** 2.0
+ member this.StainArea = param.stainArea * Math.PI * this.RBCSize ** 2.0