X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemiaCore%2FTypes.fs;h=84d4548718cb3567e6dfa9369435096a24422566;hp=c1a635d9b659b2ce24dac06ad2ab35d95d109562;hb=6250f10c807301a760b8659f9c00ca6dbbd4c7b7;hpb=aeb0583fa94d4c8cef1f8b53559ecac76bc1a191 diff --git a/Parasitemia/ParasitemiaCore/Types.fs b/Parasitemia/ParasitemiaCore/Types.fs index c1a635d..84d4548 100644 --- a/Parasitemia/ParasitemiaCore/Types.fs +++ b/Parasitemia/ParasitemiaCore/Types.fs @@ -8,6 +8,7 @@ open Emgu.CV open Emgu.CV.Structure open Const +open UnitsOfMeasure type Points = HashSet @@ -36,15 +37,16 @@ type Ellipse (cx : float32, cy : float32, a : float32, b : float32, alpha : floa this.CutAnHorizontalLine 0.f || this.CutAnHorizontalLine height member this.Scale (factor : float32) : Ellipse = - Ellipse(this.Cx, this.Cy, this.A * factor, this.B * factor, alpha) + Ellipse (this.Cx, this.Cy, this.A * factor, this.B * factor, alpha) // Approximation of Ramanujan. member this.Perimeter = PI * (3.f * (this.A + this.B) - sqrt ((3.f * this.A + this.B) * (this.A + 3.f * this.B))) override this.ToString () = - sprintf "(cx: %f, cy: %f, a: %f, b: %f, alpha: %f)" this.Cx this.Cy this.A this.B this.Alpha + sprintf "{Ellipse: cx = %f, cy = %f, a = %f, b = %f, alpha = %f}" this.Cx this.Cy this.A this.B this.Alpha +[] type CellClass = HealthyRBC | InfectedRBC | Peculiar type Cell = @@ -71,16 +73,16 @@ type MaybeBuilder () = member this.TryFinally (body, compensation) = try - this.ReturnFrom(body()) + this.ReturnFrom (body ()) finally - compensation() + compensation () member this.Using (disposable : 'a when 'a :> IDisposable, body) = let body' = fun () -> body disposable - this.TryFinally(body', fun () -> + this.TryFinally (body', fun () -> match disposable with | null -> () - | disp -> disp.Dispose()) + | disp -> disp.Dispose ()) member this.Zero () = None @@ -88,7 +90,7 @@ type MaybeBuilder () = member this.Return x = Some x -let maybe = MaybeBuilder() +let maybe = MaybeBuilder () type Result<'a> = | Success of 'a @@ -102,4 +104,11 @@ type ResultBuilder () = member this.ReturnFrom (x) = x -let result = ResultBuilder() \ No newline at end of file +let result = ResultBuilder () + +type AnalysisResult = + { + Cells : Cell list + RBCSize_μm : float<μm> + RBCSize_px : float32 + } \ No newline at end of file