public Bitmap Cartoon(Bitmap OriginalImage, int R, int Level, int InverseThreshold)
{
Bitmap image = OriginalImage;
Bitmap image2 = new Bitmap(image.Width, image.Height);
Bitmap oilpaint = this.OilPaint(image, R, Level);
Bitmap edge = this.ToBlackwhiteInverse(this.ImageSobelFilterGS(image), InverseThreshold);
FastPixel fpOilpaint = new FastPixel(oilpaint);
FastPixel fpEdge = new FastPixel(edge);
FastPixel fpImage2 = new FastPixel(image2);
for (int i = 0; i < fpImage2.Width; i++)
{
for (int j = 0; j < fpImage2.Height; j++)
{
if (fpEdge.GetPixel(i, j).R == 255)
{
fpImage2.SetPixel(i, j, fpOilpaint.GetPixel(i, j));
}
else
{
fpImage2.SetPixel(i, j, fpEdge.GetPixel(i, j));
}
}
}
fpOilpaint.Unlock(false);
fpEdge.Unlock(false);
fpImage2.Unlock(true);
return image2;
}