Чтобы перевести изображение из оттенков серого в цвет, можно создать цветовую палитру на основе значения оттенков серого для каждого пикселя изображения. Значение шкалы серого можно рассчитать как среднее значение красного, зеленого и синего цветов для каждого пикселя. Затем каждое значение шкалы серого можно сопоставить с соответствующим цветом в цветовой палитре.
Вот реализация алгоритма на языке C# с использованием предоставленного кода:
private void TranslateToColor(Bitmap bmp)
{
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
int R = bmp.GetPixel(i, j).R;
int G = bmp.GetPixel(i, j).G;
int B = bmp.GetPixel(i, j).B;
int gray = (R + G + B) / 3;
// Create the color palette based on the grayscale value
Color color;
if (gray >= 0 && gray < 85)
color = Color.FromArgb(255, 0, 0, gray * 3);
else if (gray >= 85 && gray < 170)
color = Color.FromArgb(255, 0, (gray - 85) * 3, 255);
else
color = Color.FromArgb(255, (gray - 170) * 3, 255, 255);
bmp.SetPixel(i, j, color);
}
}
Refresh();
}
Этот алгоритм отображает значения серого цвета в цветовую палитру, которая варьируется от красного до зеленого и синего. Вы можете настроить цветовую палитру по своему усмотрению, чтобы добиться желаемого эффекта.
Dmitrii DNKМастер (1243)
1 год назад
Вот еще один вариант перевода изображения из полутонов в цвет:
private void TranslateToColor(Bitmap bmp)
{
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
int R = bmp.GetPixel(i, j).R;
int G = bmp.GetPixel(i, j).G;
int B = bmp.GetPixel(i, j).B;
int gray = (R + G + B) / 3;
// Create the color palette based on the grayscale value
Color color = Color.FromArgb(255, gray, gray * 2, 255 - gray);
bmp.SetPixel(i, j, color);
}
}
Refresh();
}
Точные цвета будут зависеть от значений, присвоенных красным, зеленым и синим компонентам каждого пикселя.