コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }