net.sourceforge.jiu.color.adjustment

Class GammaCorrection


public class GammaCorrection
extends LookupTableOperation

Corrects the gamma of an image. Works with GrayIntegerImage, RGBIntegerImage and Paletted8Image. Only the palette is manipulated for paletted images.

Changes intensity values by applying the formula f(x) = MAX * (x / MAX)(1 / gamma) to each x from [0 ; MAX] to them. The MAX value is the maximum value allowed for an intensity value of the corresponding channel. It is determined by calling IntegerImage.getMaxSample(int) on the input image. The gamma parameter must be given to a GammaCorrection operation before the call to process is made. The valid interval for gamma is (0.0 ; MAX_GAMMA] (so 0.0 is not a valid value). Gamma values smaller than 1 will make the image darker, values larger than 1 will make it brighter.

Usage example

 GammaCorrection gamma = new GammaCorrection();
 gamma.setInputImage(image);
 gamma.setGamma(2.2);
 gamma.process();
 PixelImage correctedImage = gamma.getOutputImage();
 
Author:
Marco Schmidt

Field Summary

static double
MAX_GAMMA
The maximum allowed value for gamma.
private double
gamma

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

intTables, numTables

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

canInAndOutBeEqual, inputImage, outputImage

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

abort, progressListeners

Method Summary

private int[]
createLookupTable(int numSamples)
Creates a lookup table that holds all new values for samples 0 to numSamples - 1.
double
getGamma()
Returns the gamma value to be used for this operation.
void
process()
private void
process(Paletted8Image in, Paletted8Image out)
void
setGamma(double newGamma)
Sets a new gamma value to be used in this operation.

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

getNumTables, getTable, prepareImages, process, process, process, setNumTables, setTable, setTables

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

MAX_GAMMA

public static final double MAX_GAMMA
The maximum allowed value for gamma.
Field Value:
10.0

gamma

private double gamma

Method Details

createLookupTable

private final int[] createLookupTable(int numSamples)
Creates a lookup table that holds all new values for samples 0 to numSamples - 1.

getGamma

public double getGamma()
Returns the gamma value to be used for this operation.

process

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

process

private void process(Paletted8Image in,
                     Paletted8Image out)

setGamma

public void setGamma(double newGamma)
Sets a new gamma value to be used in this operation.
Parameters:
newGamma - the new gamma value must be > 0.0 and <= MAX_GAMMA