X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemiaCore%2FParasitesMarker.fs;h=6c25d043af0ea0f67ef2681e26c9a9cc649b1a5f;hp=e3c3ca2b3c8e17c2ddf8f5b381192a3c3bb41fe2;hb=e3842630f4d36c5ea8c8a0c3d4762684e1c510f4;hpb=b972d407545bc1a0d1c5e2f1e75a2d5887afc296 diff --git a/Parasitemia/ParasitemiaCore/ParasitesMarker.fs b/Parasitemia/ParasitemiaCore/ParasitesMarker.fs index e3c3ca2..6c25d04 100644 --- a/Parasitemia/ParasitemiaCore/ParasitesMarker.fs +++ b/Parasitemia/ParasitemiaCore/ParasitesMarker.fs @@ -7,25 +7,24 @@ open Emgu.CV open Emgu.CV.Structure open Utils +open ImgTools type Result = { darkStain: Image // Colored pixel, it's independent of the size of the areas. It corresponds to white cells, schizontes, gametocytes, throphozoites. nucleus: Image // Parasite nucleus. It may contain some debris. It shouldn't contain thrombocytes or larger elements. - cytoplasm: Image } // Parasite cytoplasm. + parasite: Image } // The whole parasites. let find (img: Image) (config: Config.Config) : Result * Image * Image = - let imgFilteredParasite = ImgTools.gaussianFilter img config.LPFStandardDeviationParasite - - let filteredGreenWithoutNucleus = imgFilteredParasite.Copy() - ImgTools.areaCloseF filteredGreenWithoutNucleus (roundInt config.RBCRadius.NucleusArea) + let imgWithoutNucleus = img.Copy() + areaCloseF imgWithoutNucleus (roundInt config.RBCRadius.NucleusArea) let darkStain = // We use the filtered image to find the dark stain. let _, mean_fg, mean_bg = - let hist = ImgTools.histogramImg filteredGreenWithoutNucleus 300 - ImgTools.otsu hist - filteredGreenWithoutNucleus.Cmp(-(float mean_bg) * config.Parameters.darkStainLevel + (float mean_fg), CvEnum.CmpType.LessThan) + let hist = histogramImg imgWithoutNucleus 300 + otsu hist + imgWithoutNucleus.Cmp(-(float mean_bg) * config.Parameters.darkStainLevel + (float mean_fg), CvEnum.CmpType.LessThan) let marker (img: Image) (closed: Image) (level: float) : Image = let diff = img.Copy() @@ -34,9 +33,9 @@ let find (img: Image) (config: Config.Config) : Result * Image() - let nucleusMarker = marker imgFilteredParasite filteredGreenWithoutNucleus (1. / config.Parameters.infectionSensitivity) + let nucleusMarker = marker img imgWithoutNucleus (1. / config.Parameters.infectionSensitivity) - let filteredGreenWithoutCytoplasm = imgFilteredParasite.CopyBlank() + let imgWithoutParasite = img.CopyBlank() let kernelSize = let size = roundInt (config.RBCRadius.Pixel / 5.f) if size % 2 = 0 then size + 1 else size @@ -47,13 +46,13 @@ let find (img: Image) (config: Config.Config) : Result * Image