Есть ли способ получить наиболее распространенные элементы из массива и исключить двойные элементы? - PullRequest
0 голосов
/ 04 ноября 2019

Для проекта мне нужно уменьшить цвета с изображения с 24 до 8 бит.

Я хочу создать функцию, которая могла бы найти 256 наиболее часто используемых цветов в изображении поэтому я могу использовать эти цвета в новой цветовой палитре и выполнить некоторое цветовое квантование на изображении

У меня уже есть функция, которая может считывать цвета пикселей с изображения

public static byte[] OwnGetColorData(Bitmap bmp)
        {
            int height = bmp.Height;
            int width = bmp.Width;
            int res = height * width;
            var colors = new List<List<byte>>();
            var pixelColor = new List<byte>();
            Color c;

            for (int x = 0; x < bmp.Height; x++)
            {
                for(int y = 0; y< bmp.Width; y++)
                {
                    c = bmp.GetPixel(x, y);

                    pixelColor.Add(c.R);
                    pixelColor.Add(c.G);
                    pixelColor.Add(c.B);

                    colors.Add(pixelColor);
                    pixelColor.Clear();
                }
            }
            return pixelColor.ToArray();
        }

на выходеэтой функции является 2-мерный массив, который имеет RGB-массив на каждый индекс пикселя. например: по индексу 0 находится пиксель 1 с массивом (255, 255, 255)

...