我有这个代码来接收图像并将其转换为B& W:
public Bitmap GrayScaleFilter(Bitmap image)
{
Bitmap grayScale = new Bitmap(image.Width, image.Height);
for (Int32 y = 0; y < grayScale.Height; y++)
for (Int32 x = 0; x < grayScale.Width; x++)
{
Color c = image.GetPixel(x, y);
Int32 gs = (Int32)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11);
grayScale.SetPixel(x, y, Color.FromArgb(gs, gs, gs));
}
return grayScale;
}
现在,我需要使用这个b&amp; w图像做一个新方法来做半色调效果。 我知道此效果基于此http://www.inf.pucrs.br/~pinho/CG/Aulas/Img/IMG.htm
但现在,如何使用它将我的图像变成半色调?
答案 0 :(得分:0)
半色调的基本概念是像素强度与目标圆的大小的映射。一种可能性是以下数学:
double sum = 1.0 - (pixel / 255.0)
double size = sum * SQUARE_ROOT_2;
使用此尺寸,您可以像这样绘制圆圈:
int maxdotsize = 10;
ellipse(x, y,
(size * maxdotsize),
(size * maxdotsize));
我在Java for Processing中实现了这个算法。查看here以获取完整代码。