Сегодня немного поговорим о том, как перевести изображение в монохром. Сразу хочу отметить, что речь идет не о черно-белом изображении, а именно о монохроме, т.е. изображении, имеющем только черный и белый цвета, без градаций серого.
Возьмем для испытания картинку ниже (котики нынче в моде).

Многим известно, что цвет можно задать тройкой 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;
}
Пример работы:


