net.sourceforge.jiu.color.dithering

Class OrderedDither

Implemented Interfaces:
RGBIndex

public class OrderedDither
extends ImageToImageOperation
implements RGBIndex

This operation reduces the color depth of RGB truecolor images and grayscale images by applying ordered dithering. A relatively nice output image (for a human observer) will be created at the cost of introducing noise into the output image. The algorithm is relatively fast, but its quality is usually inferior to what can be reached by using ErrorDiffusionDithering or similar other methods.

Supported conversions

Usage example

The following code snippet demonstrates how to create a paletted image with 256 colors, using three bits for red and green and two bits for blue, from an RGB truecolor image.
 OrderedDither od = new OrderedDither();
 od.setRgbBits(3, 3, 2);
 od.setInputImage(image);
 od.process();
 Paletted8Image ditheredImage = (Paletted8Image)od.getOutputImage();
 
Author:
Marco Schmidt

Field Summary

private int
blueBits
private int
grayBits
private int
greenBits
private int
redBits
private int
valueHeight
private int
valueWidth
private int[]
values

Fields inherited from class net.sourceforge.jiu.ops.ImageToImageOperation

canInAndOutBeEqual, inputImage, outputImage

Fields inherited from class net.sourceforge.jiu.ops.Operation

abort, progressListeners

Fields inherited from interface net.sourceforge.jiu.data.RGBIndex

INDEX_BLUE, INDEX_GREEN, INDEX_RED

Method Summary

void
process()
private void
process(Gray8Image in, BilevelImage out)
private void
process(Gray8Image in, Gray8Image out)
private void
process(RGB24Image in, Paletted8Image out)
private void
process(RGB24Image in, RGB24Image out)
void
setOutputBits(int bits)
void
setRgbBits(int red, int green, int blue)
Sets the number of bits to be used for each RGB component in the output image.
void
setStandardThresholdValues()
Calls setThresholdValues(int[],int,int) with a 16 x 16 matrix.
void
setThresholdValues(int[] values, int valueWidth, int valueHeight)
Defines a matrix of threshold values that will be used for grayscale dithering.

Methods inherited from class net.sourceforge.jiu.ops.ImageToImageOperation

canInputAndOutputBeEqual, ensureImagesHaveSameResolution, ensureInputImageIsAvailable, ensureOutputImageResolution, getInputImage, getOutputImage, setCanInputAndOutputBeEqual, setInputImage, setOutputImage

Methods inherited from class net.sourceforge.jiu.ops.Operation

addProgressListener, addProgressListeners, getAbort, process, removeProgressListener, setAbort, setProgress, setProgress

Field Details

blueBits

private int blueBits

grayBits

private int grayBits

greenBits

private int greenBits

redBits

private int redBits

valueHeight

private int valueHeight

valueWidth

private int valueWidth

values

private int[] values

Method Details

process

public void process()
            throws MissingParameterException,
                   WrongParameterException
Overrides:
process in interface Operation

process

private void process(Gray8Image in,
                     BilevelImage out)

process

private void process(Gray8Image in,
                     Gray8Image out)

process

private void process(RGB24Image in,
                     Paletted8Image out)

process

private void process(RGB24Image in,
                     RGB24Image out)

setOutputBits

public void setOutputBits(int bits)

setRgbBits

public void setRgbBits(int red,
                       int green,
                       int blue)
Sets the number of bits to be used for each RGB component in the output image. Each argument must be one or larger. The values defined by this method are only used if the input image implements RGBIntegerImage. Later, in process, these values are checked against the actual number of bits per component in the input image. If any of the arguments of this method is equal to or larger than those actual bits per channel values, a WrongParameterException will then be thrown. Right now, there is no way how this can be checked, because the input image may not have been defined yet.
Parameters:
red - number of bits for the red channel in the output image
green - number of bits for the green channel in the output image
blue - number of bits for the blue channel in the output image

setStandardThresholdValues

public void setStandardThresholdValues()

setThresholdValues

public void setThresholdValues(int[] values,
                               int valueWidth,
                               int valueHeight)
Defines a matrix of threshold values that will be used for grayscale dithering.
Parameters:
values - the int values to use for comparing
valueWidth -
valueHeight -