Color dithering using Floyd-Steinberg error diffusion.
Namespace:
AForge.Imaging.ColorReductionAssembly: AForge.Imaging (in AForge.Imaging.dll) Version: 2.2.5.0 (2.2.5.0)
Syntax
C# |
---|
public sealed class FloydSteinbergColorDithering : ColorErrorDiffusionToAdjacentNeighbors |
Remarks
The image processing routine represents color dithering algorithm, which is based on error diffusion dithering with Floyd-Steinberg coefficients. Error is diffused on 4 neighbor pixels with the next coefficients:

| * | 7 | | 3 | 5 | 1 | / 16
The image processing routine accepts 24/32 bpp color images for processing. As a result this routine produces 4 bpp or 8 bpp indexed image, which depends on size of the specified color table - 4 bpp result for color tables with 16 colors or less; 8 bpp result for larger color tables.
Sample usage:

// create color image quantization routine ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); // create 16 colors table Color[] colorTable = ciq.CalculatePalette( image, 16 ); // create dithering routine FloydSteinbergColorDithering dithering = new FloydSteinbergColorDithering( ); dithering.ColorTable = colorTable; // apply the dithering routine Bitmap newImage = dithering.Apply( image );
Initial image:

Result image:

Inheritance Hierarchy
System..::.Object
AForge.Imaging.ColorReduction..::.ErrorDiffusionColorDithering
AForge.Imaging.ColorReduction..::.ColorErrorDiffusionToAdjacentNeighbors
AForge.Imaging.ColorReduction..::.FloydSteinbergColorDithering
AForge.Imaging.ColorReduction..::.ErrorDiffusionColorDithering
AForge.Imaging.ColorReduction..::.ColorErrorDiffusionToAdjacentNeighbors
AForge.Imaging.ColorReduction..::.FloydSteinbergColorDithering