Как преобразовать растровое изображение в черно-белое в c#? [дубликат]

Возможные Дубликаты:
преобразование изображения в черно-белый или сепия в c#

Я пишу приложение c#, которое открывает изображение и, нажав на кнопку, отображает его только в черно-белом цвете! Я был уверен, чтобы найти много информации в сети, но мои поиски не дали мне много понятной и полезной информации.

Я понятия не имею, как действовать. У кого-нибудь есть советы ? Знать учебник в сети?

3 ответов


однажды я нашел функцию, которая преобразует растровое изображение в оттенки серого

public void ToGrayScale(Bitmap Bmp)
{
    int rgb;
    Color c;

    for (int y = 0; y < Bmp.Height; y++)
    for (int x = 0; x < Bmp.Width; x++)
    {
        c = Bmp.GetPixel(x, y);
        rgb = (int)Math.Round(.299 * c.R + .587 * c.G + .114 * c.B);
        Bmp.SetPixel(x, y, Color.FromArgb(rgb, rgb, rgb));
    }
}

функция принимает растровое изображение в качестве параметра и изменяет его на версию в оттенках серого.

надеюсь, это поможет.



редактировать посмотреть более полный ответ здесь: преобразование изображения в черно-белый или сепия в C#.

есть много способов, чтобы обесцветить цветное изображение. На самом деле, вероятно, нет никакого "истинного" или "правильного" способа сделать это, хотя некоторые способы более правильны, чем другие.
Я предполагаю, что ваше изображение находится в формате RGB (красный-зеленый-синий) (хотя BGR также распространен).

на простой путь, который должен работать на большинстве фотографий (но менее так для синтетических изображений), просто использовать зеленый канал 3 RGB каналов. Люди наиболее чувствительны к изменениям в зеленой части спектра, поэтому зеленый канал охватывает большую часть видимого диапазона и является хорошим приближением к изображению в градациях серого, который вы хотите.

лучший способ создания изображения в оттенках серого - использовать средневзвешенное значение 3 RGB-каналов. Выбор равных Весов (0.33 * R+0.33 * G+0.33 * B) даст довольно хорошее изображение в оттенках серого. Другие веса будут давать различные результаты, некоторые из которых можно считать более эстетически приятными, а некоторые могут учитывать перцептивные параметры.

вы всегда можете преобразовать изображение в другое цветовое пространство, которое имеет только один канал оттенков серого (и 2" цветных " канала), таких как HSV (V-оттенки серого), YUV (Y-оттенки серого) или Lab (L-градации серого). Различия не должны быть очень большими.

термин "де-насыщение" происходит от Пространство ВПГ. Если вы конвертируете изображение в HSV, устанавливаете s-канал (насыщенность) как все нули и визуализируете изображение, вы получите 3-канальное десатурированное "цветное" изображение.