private DirectBitmap Process(DirectBitmap image, Histogram mins) { var newImg = (DirectBitmap)image.Clone(); Parallel.For(0, newImg.Height, i => { for (var j = 0; j < newImg.Width; j++) { var pixel = newImg.GetPixel(j, i); var r = GetChanelValue(mins.ValuesR, pixel.R); var g = GetChanelValue(mins.ValuesG, pixel.G); var b = GetChanelValue(mins.ValuesB, pixel.B); newImg.SetPixel(j, i, Color.FromArgb(pixel.A, r, g, b)); } }); return(newImg); }
public DynamicSegmentationResult Segment(DirectBitmap image, double treshold, bool highlight) { var serments = new int[image.Height, image.Width]; var segmentsCount = 0; var newImg = (DirectBitmap)image.Clone(); for (var i = 0; i < image.Height; i++) { for (var j = 0; j < image.Width; j++) { if (serments[i, j] != 0) { continue; } ProcessSegment(image, newImg, treshold, serments, ++segmentsCount, i, j, GetRandomColor()); } } if (highlight) { HighlightSegments(newImg, serments); } return(new DynamicSegmentationResult(newImg, serments, segmentsCount)); }