Esempio n. 1
0
        public static Bitmap ConnectByKMeans(this Bitmap map, List <ImageObject> images, KMeansProperties kMeansProperties, int countOfCluster)
        {
            Bitmap dst = new Bitmap(map.Width, map.Height);

            for (int i = 0; i < map.Width; i++)
            {
                for (int j = 0; j < map.Height; j++)
                {
                    dst.SetPixel(i, j, Color.White);
                }
            }

            var imageEngineService = new ImageEngineService();

            images.ForEach(imageEngineService.SetImageProperties);
            var    clusters = imageEngineService.KMeans(images, countOfCluster, 0.0001, kMeansProperties);
            Random rnd      = new Random();

            foreach (var cluster in clusters)
            {
                var RRand = rnd.Next(0, 255);
                var GRand = rnd.Next(0, 255);
                var BRand = rnd.Next(0, 255);
                foreach (var clusterImage in cluster.Images)
                {
                    clusterImage.Pixels.ForEach(x => setRColor(x, RRand, GRand, BRand, dst));
                }
            }

            return(dst);
        }
Esempio n. 2
0
        public static Bitmap FoursConnection(this Bitmap map)
        {
            Bitmap dst          = new Bitmap(map.Width, map.Height);
            var    array        = map.GetArrayOfPixels();
            var    imageObjects = new List <ImageObject>();

            int currentColor = 2;

            for (int i = 0; i < map.Width; i++)
            {
                for (int j = 0; j < map.Height; j++)
                {
                    dst.SetPixel(i, j, Color.White);
                    if (array[i, j] == 1)
                    {
                        array = ConnectMap(array, i, j, currentColor, map.Width, imageObjects);
                        currentColor++;
                    }
                }
            }

            var imageEngineService = new ImageEngineService();

            imageObjects.ForEach(imageEngineService.SetImageProperties);

            var kMeansProperies = new KMeansProperties(false, false, true, true);
            var clusters        = imageEngineService.KMeans(imageObjects, 6, 0.0001, kMeansProperies);

            Random rnd = new Random();

            foreach (var cluster in clusters)
            {
                var RRand = rnd.Next(0, 255);
                var GRand = rnd.Next(0, 255);
                var BRand = rnd.Next(0, 255);
                foreach (var clusterImage in cluster.Images)
                {
                    clusterImage.Pixels.ForEach(x => setRColor(x, RRand, GRand, BRand, dst));
                }
            }

            return(dst);
        }