Сегодня немного поговорим о том, как перевести изображение в монохром. Сразу хочу отметить, что речь идет не о черно-белом изображении, а именно о монохроме, т.е. изображении, имеющем только черный и белый цвета, без градаций серого.
Возьмем для испытания картинку ниже (котики нынче в моде).
Многим известно, что цвет можно задать тройкой RGB (Прозрачность рассматривать не будем). Значение каждого оттенка занимает байт, а значит лежит в диапазоне от 0 до 255 включительно. (R=0,G=0,B=0 — черный, R=255,G=255,B=255 — белый).
Определим среднее значение всех оттенков по школьной формуле:
Реализуем данный алгоритм:
private Bitmap BlachAndWhite(Bitmap bmpImg, int P) { Bitmap result = new Bitmap(bmpImg.Width, bmpImg.Height); Color color = new Color(); try { for (int j = 0; j < bmpImg.Height; j++) { for (int i = 0; i < bmpImg.Width; i++) { color = bmpImg.GetPixel(i, j); int K = (color.R + color.G + color.B) / 3; result.SetPixel(i, j, K <= P ? Color.Black : Color.White); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } return result; }
Пример работы: