- let infectionMarker = marker filteredGreen filteredGreenWithoutInfection (1. / config.Parameters.infectionSensitivity)
- let stainMarker = marker filteredGreenWithoutInfection filteredGreenWithoutStain (1. / config.Parameters.stainSensitivity)
-
- // TODO: comprendre pourquoi des valeurs sont negatives!?!?
- (*
- let blackTopHat = filteredGreen.CopyBlank()
- CvInvoke.Subtract(filteredGreenWithoutInfection, filteredGreen, blackTopHat)
- ImgTools.saveImg (ImgTools.normalizeAndConvert blackTopHat) "BottomHat.png"
- *)
+ let infectionMarker = marker imgFilteredInfection filteredGreenWithoutInfection (1. / config.Parameters.infectionSensitivity)
+
+ let imgFilteredStain = ImgTools.gaussianFilter img config.LPFStandardDeviationStain
+ let areaOpening = int <| config.RBCRadius.Area * config.Parameters.ratioAreaPaleCenter
+ //ImgTools.areaOpenF imgFilteredStain areaOpening
+
+ let filteredGreenWithoutStain = imgFilteredStain.CopyBlank()
+ let kernelSize =
+ let size = roundInt (config.RBCRadius.Pixel / 5.f)
+ if size % 2 = 0 then size + 1 else size
+ use kernel =
+ if kernelSize <= 3
+ then
+ CvInvoke.GetStructuringElement(CvEnum.ElementShape.Rectangle, Size(3, 3), Point(-1, -1))
+ else
+ CvInvoke.GetStructuringElement(CvEnum.ElementShape.Ellipse, Size(kernelSize, kernelSize), Point(-1, -1))
+ CvInvoke.MorphologyEx(imgFilteredStain, filteredGreenWithoutStain, CvEnum.MorphOp.Close, kernel, Point(-1, -1), 1, CvEnum.BorderType.Replicate, MCvScalar())
+ let stainMarker = marker (*filteredGreenWithoutInfection*) imgFilteredStain filteredGreenWithoutStain (1. / config.Parameters.stainSensitivity)
+
+ //
+ (*let blackTopHat = filteredGreenWithoutStain.CopyBlank()
+ CvInvoke.Subtract(filteredGreenWithoutStain, imgFilteredStain, blackTopHat)
+ ImgTools.saveImg blackTopHat "blackTopHat.png"*)