C# → Градации серого из RGB

Фев 6, 2011


Понадобилось перевести цветную картинку в черно-белую, а именно в градации серого. Для этого можно воспользоваться формулой перевода RGB в YUV, которую легко найти на просторах интернета.

Из нее нам потребуется компонента Y, формула конвертации которой выглядит так:

Y = 0.299 x R + 0.587 x G + B x 0.114

Результат этой формулы (Y) присваиваем всем компонентам - R, G и B. Пример на языке C# представлен ниже, но легко реализуется на любом языке.

Пример функции:

        public Bitmap GrayScale(Bitmap ImageBitmap)
        {
            for (int x = 0; x < ImageBitmap.Width; x++)
            {
                for (int y = 0; y < ImageBitmap.Height; y++)
                {
                    Color bitmapColor = ImageBitmap.GetPixel(x, y);
                    int colorGray = (int)(bitmapColor.R * 0.299 +
                    bitmapColor.G * 0.587 + bitmapColor.B * 0.114);
                    ImageBitmap.SetPixel(x, y, Color.FromArgb(colorGray, colorGray, colorGray));
                }
            }
            return ImageBitmap;

Post to Twitter

Похожие статьи:

  1. Критика класса LiveInternet

Нет комментариев

Ваш комментарий

Rambler's Top100 Яндекс.Метрика