Как преобразовать растровое изображение в черно-белое в 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));
}
}
функция принимает растровое изображение в качестве параметра и изменяет его на версию в оттенках серого.
надеюсь, это поможет.
пожалуйста, проверьте этот: http://www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale
редактировать посмотреть более полный ответ здесь: преобразование изображения в черно-белый или сепия в 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-канальное десатурированное "цветное" изображение.