Создать 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д