半色调图像效果

时间:2013-06-26 17:36:36

标签: c# .net

我有这个代码来接收图像并将其转换为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

但现在,如何使用它将我的图像变成半色调?

1 个答案:

答案 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以获取完整代码。