Создать 256 оттенков серого из любой картинки - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Существует задача зашифровки небольшого изображения. Для этого нужно знать значение градации серого (0(белый)-255(черный)) каждого пикселя. Есть проблема. Любую картинку я могу переделать в Черно-белую с 256 оттенками серого в фотошопе, но тогда, я не знаю, как узнать конкретное значение(0-255) конкретного пикселя имея только параметры RGB Если же переделывать цветную картину в Черно-белую программно, то картинка будет иметь гораздо больше оттенков серого! Подскажите, как мне решить данную проблему. Может способ переделки цветной картинки в чернобелую можно изменить?
Bitmap img = new Bitmap(textBoxFilePath.Text);
 
            for (int i = 0; i < img.Width; i++)
            {
                for (int j = 0; j < img.Height; j++)
                {
                    Color pixel = img.GetPixel(i, j);
                   
                    int grayScale = (int)((pixel.R * .3) + (pixel.G * .59)
                        + (pixel.B * .11));

                    Color nColor = Color.FromArgb(grayScale, grayScale, grayScale);
 
                    //set the new image's pixel to the grayscale version
                   img.SetPixel(i, j, nColor);
                }
            }
Немного не разобрался в оттенках серого. Я так понял их всего 256? Тогда как можно привязать конкретный пиксель к конкретному значению (0-255) ?
разобрался, нашел формулу!
H[i, j] = Convert.ToInt32(pixel.R * 0.2126 + pixel.G * 0.7152 + pixel.B * 0.0722);

Решение задачи: «Создать 256 оттенков серого из любой картинки»

textual
Листинг программы
H[i, j] = 255 - Convert.ToInt32(pixel.R * 0.2126 + pixel.G * 0.7152 + pixel.B * 0.0722);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы