public Bitmap ToBlackwhiteInverse(Bitmap OriginalImage, int threshold)
{
FastPixel fpOriginal = new FastPixel(OriginalImage);
Bitmap OutputImage = new System.Drawing.Bitmap(fpOriginal.Width, fpOriginal.Height);
FastPixel fpOutput = new FastPixel(OutputImage);
if (threshold < 1 || threshold > 254)
{
throw new Exception("Threshold value must be in range from 1 to 254");
}
for (int x = 0; x < fpOriginal.Width; x++)
{
for (int y = 0; y < fpOriginal.Height; y++)
{
Color pixel = fpOriginal.GetPixel(x, y);
int gs = (int)((pixel.R * 0.3) + (pixel.G * 0.59) + (pixel.B * 0.11));
if (gs > threshold) gs = 0; else gs = 255;
Color newColor = Color.FromArgb(255, gs, gs, gs);
fpOutput.SetPixel(x, y, newColor);
}
}
fpOriginal.Unlock(false);
fpOutput.Unlock(true);
return OutputImage;
}