public static Image <Pixel32> ColorAccent(this Image <Pixel32> image, double hue, double hueRange) { var h1 = (hue - hueRange / 2d + 360d) % 360d; var h2 = (hue + hueRange / 2d + 360d) % 360d; image.ForEach((x, y) => { var pixel = image.Get(x, y); var pixelHue = pixel.ToHSV().H; bool toGrayscale = false; if (h1 <= h2) { if (pixelHue < h1 || pixelHue > h2) { toGrayscale = true; } } else { if (pixelHue < h1 && pixelHue > h2) { toGrayscale = true; } } if (toGrayscale) { var grayscale = GrayscaleExtension.Luminance(pixel); image.Set(x, y, new Pixel32(pixel.A, grayscale)); } }); return(image); }
public static Image <Pixel32> BlackAndWhite(this Image <Pixel32> image, byte threshold = 127) { Pixel32 pixelOperator(Pixel32 pixel) { var grayscale = GrayscaleExtension.Luminance(pixel); if (grayscale > threshold) { return(new Pixel32(pixel.A, 255)); } else { return(new Pixel32(pixel.A, 0)); } }; return(image.BlackAndWhite(pixelOperator)); }
public Pixel8 ToPixel8() { var gs = GrayscaleExtension.Luminance(this); return(new Pixel8(gs)); }
public Pixel1 ToPixel1() { var gs = GrayscaleExtension.Luminance(this); return(new Pixel1(gs > 127)); }