X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemiaCore%2FImgTools%2FImgTools.fs;h=fc8904783b3c11f0426457024b937b353ab843e3;hp=5a404e3d23a1bf18bffdebc921c07c345aea2456;hb=2d712781def419c9acc98368f7102b19b064f16d;hpb=d715615d0b1da40fd10e9dbabbd4530cd5125a19 diff --git a/Parasitemia/ParasitemiaCore/ImgTools/ImgTools.fs b/Parasitemia/ParasitemiaCore/ImgTools/ImgTools.fs index 5a404e3..fc89047 100644 --- a/Parasitemia/ParasitemiaCore/ImgTools/ImgTools.fs +++ b/Parasitemia/ParasitemiaCore/ImgTools/ImgTools.fs @@ -14,10 +14,10 @@ open Emgu.CV.Structure /// let normalize (img : Image) (upperLimit : float) : Image = let min = ref [| 0.0 |] - let minLocation = ref <| [| Point() |] + let minLocation = ref <| [| Point () |] let max = ref [| 0.0 |] - let maxLocation = ref <| [| Point() |] - img.MinMax(min, max, minLocation, maxLocation) + let maxLocation = ref <| [| Point () |] + img.MinMax (min, max, minLocation, maxLocation) let normalized = (img - (!min).[0]) / ((!max).[0] - (!min).[0]) if upperLimit = 1.0 then normalized @@ -30,17 +30,17 @@ let mergeChannels (img : Image) (rgbWeights : float * float * floa | 0., 1., 0. -> img.[1] | 0., 0., 1. -> img.[0] | redFactor, greenFactor, blueFactor -> - let result = new Image(img.Size) - CvInvoke.AddWeighted(result, 1., img.[2], redFactor, 0., result) - CvInvoke.AddWeighted(result, 1., img.[1], greenFactor, 0., result) - CvInvoke.AddWeighted(result, 1., img.[0], blueFactor, 0., result) + let result = new Image (img.Size) + CvInvoke.AddWeighted (result, 1., img.[2], redFactor, 0., result) + CvInvoke.AddWeighted (result, 1., img.[1], greenFactor, 0., result) + CvInvoke.AddWeighted (result, 1., img.[0], blueFactor, 0., result) result let mergeChannelsWithProjection (img : Image) (v1r : float32, v1g : float32, v1b : float32) (v2r : float32, v2g : float32, v2b : float32) (upperLimit : float) : Image = let vr, vg, vb = v2r - v1r, v2g - v1g, v2b - v1b let vMagnitude = sqrt (vr ** 2.f + vg ** 2.f + vb ** 2.f) let project (r : float32) (g : float32) (b : float32) = ((r - v1r) * vr + (g - v1g) * vg + (b - v1b) * vb) / vMagnitude - let result = new Image(img.Size) + let result = new Image (img.Size) // TODO: Essayer en bindant Data pour gagner du temps for i = 0 to img.Height - 1 do for j = 0 to img.Width - 1 do @@ -49,8 +49,8 @@ let mergeChannelsWithProjection (img : Image) (v1r : float32, v1g // Normalize image values between 0uy and 255uy. let normalizeAndConvert (img : Image) : Image = - (normalize (img.Convert()) 255.).Convert() + (normalize (img.Convert ()) 255.).Convert () let gaussianFilter (img : Image<'TColor, 'TDepth>) (standardDeviation : float) : Image<'TColor, 'TDepth> = let size = 2 * int (ceil (4.0 * standardDeviation)) + 1 - img.SmoothGaussian(size, size, standardDeviation, standardDeviation) + img.SmoothGaussian (size, size, standardDeviation, standardDeviation)