+ e.State <- CellState.Removed
+
+ // 5) Define non-rbc (peculiar) cells.
+ let darkStainData = parasites.darkStain.Data
+ ellipsesWithNeigbors
+ |> List.choose (fun (e, neighbors) ->
+ if e.State = CellState.Removed
+ then
+ None
+ else
+ let mutable darkStainPixels = 0
+ let mutable nbElement = 0
+ let minX, minY, maxX, maxY = ellipseWindow e
+ for y in minY .. maxY do
+ for x in minX .. maxX do
+ let p = PointF(float32 x, float32 y)
+ if pixelOwnedByE p e neighbors
+ then
+ nbElement <- nbElement + 1
+ if darkStainData.[y, x, 0] > 0uy
+ then
+ darkStainPixels <- darkStainPixels + 1
+
+ if float darkStainPixels > config.Parameters.maxDarkStainRatio * (float nbElement) then Some e else None)
+ |> List.iter (fun e -> e.State <- CellState.Peculiar)