X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemia%2FMainAnalysis.fs;fp=Parasitemia%2FParasitemia%2FMainAnalysis.fs;h=7f55c7ca324449f65f26b1616e124db941b88d0c;hp=2be9be151c4cf70b1f9240ad9de12222694df2f4;hb=4147bfad3c85dcf4fe7d291abf7d356379d88b4f;hpb=a5d61d4974c211bd8dd4e5de07c690489d9507c7 diff --git a/Parasitemia/Parasitemia/MainAnalysis.fs b/Parasitemia/Parasitemia/MainAnalysis.fs index 2be9be1..7f55c7c 100644 --- a/Parasitemia/Parasitemia/MainAnalysis.fs +++ b/Parasitemia/Parasitemia/MainAnalysis.fs @@ -13,8 +13,8 @@ open ImgTools open Config open Types - let doAnalysis (img: Image) (name: string) (config: Config) (reportProgress: (int -> unit) option) : Cell list = + // To report the progress of this function from 0 to 100. let inline report (percent: int) = match reportProgress with | Some f -> f percent @@ -22,22 +22,25 @@ let doAnalysis (img: Image) (name: string) (config: Config) (reportPr use green = img.Item(1) let greenFloat = green.Convert() - let filteredGreen = gaussianFilter greenFloat (float config.Parameters.preFilterSigma) + let filteredGreen = gaussianFilter greenFloat config.LPFStandardDeviation - logTime "areaOpen 1" (fun () -> ImgTools.areaOpenF filteredGreen config.Parameters.initialAreaOpen) + let initialAreaOpening = int<| config.RBCArea * config.Parameters.ratioAreaPaleCenter + logTime "Area opening number one" (fun () -> ImgTools.areaOpenF filteredGreen initialAreaOpening) report 8 - let r1 = logTime "Granulometry (morpho)" (fun() -> Granulometry.findRadiusByClosing (filteredGreen.Convert()) (10, 80) 0.5 |> float32) - // let r2 = logTime "Granulometry (area)" (fun() -> Granulometry.findRadiusByAreaClosing filteredGreen (10, 80) |> float32) + let range = + let delta = config.Parameters.granulometryRange * config.RBCRadius + int <| config.RBCRadius - delta, int <| config.RBCRadius + delta + //let r1 = logTime "Granulometry (morpho)" (fun() -> Granulometry.findRadiusByClosing (filteredGreen.Convert()) range 1.0 |> float32) + let r2 = logTime "Granulometry (area)" (fun() -> Granulometry.findRadiusByAreaClosing filteredGreen range |> float32) // log (sprintf "r1: %A, r2: %A" r1 r2) - config.RBCRadius <- r1 + config.RBCRadius <- r2 report 24 - let secondAreaOpen = int <| config.RBCArea * config.Parameters.ratioSecondAreaOpen - - if secondAreaOpen > config.Parameters.initialAreaOpen + let secondAreaOpening = int <| config.RBCArea * config.Parameters.ratioAreaPaleCenter + if secondAreaOpening > initialAreaOpening then - logTime "areaOpen 2" (fun () -> ImgTools.areaOpenF filteredGreen secondAreaOpen) + logTime "Area opening number two" (fun () -> ImgTools.areaOpenF filteredGreen secondAreaOpening) let parasites, filteredGreenWhitoutStain = ParasitesMarker.find filteredGreen config //let parasites, filteredGreenWhitoutInfection, filteredGreenWhitoutStain = ParasitesMarker.findMa greenFloat filteredGreenFloat config @@ -83,7 +86,7 @@ let doAnalysis (img: Image) (name: string) (config: Config) (reportPr drawCells imgCells' true cells saveImg imgCells' (buildFileName " - cells - full.png") - let filteredGreenMaxima = gaussianFilter greenFloat config.Parameters.preFilterSigma + let filteredGreenMaxima = gaussianFilter greenFloat config.LPFStandardDeviation for m in ImgTools.findMaxima filteredGreenMaxima do ImgTools.drawPoints filteredGreenMaxima m 255.f saveImg filteredGreenMaxima (buildFileName " - filtered - maxima.png") @@ -103,7 +106,6 @@ let doAnalysis (img: Image) (name: string) (config: Config) (reportPr cells - // ID * cell radius * cell list. let doMultipleAnalysis (imgs: (string * Image) list) (config : Config) (reportProgress: (int -> unit) option) : (string * float * Cell list) list = let inline report (percent: int) =