public class GammaCorrection extends LookupTableOperation
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(net.sourceforge.jiu.data.Paletted8Image, net.sourceforge.jiu.data.Paletted8Image)
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.
GammaCorrection gamma = new GammaCorrection(); gamma.setInputImage(image); gamma.setGamma(2.2); gamma.process(); PixelImage correctedImage = gamma.getOutputImage();
Modifier and Type | Field and Description |
---|---|
private double |
gamma |
static double |
MAX_GAMMA
The maximum allowed value for gamma.
|
Constructor and Description |
---|
GammaCorrection() |
Modifier and Type | Method and Description |
---|---|
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()
This method does the actual work of the operation.
|
private void |
process(Paletted8Image in,
Paletted8Image out) |
void |
setGamma(double newGamma)
Sets a new gamma value to be used in this operation.
|
getNumTables, getTable, prepareImages, setNumTables, setTable, setTables
canInputAndOutputBeEqual, ensureImagesHaveSameResolution, ensureInputImageIsAvailable, ensureOutputImageResolution, getInputImage, getOutputImage, setCanInputAndOutputBeEqual, setInputImage, setOutputImage
addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress
public static final double MAX_GAMMA
private double gamma
private final int[] createLookupTable(int numSamples)
public double getGamma()
MAX_GAMMA
private void process(Paletted8Image in, Paletted8Image out)
public void process() throws MissingParameterException, WrongParameterException
Operation
process
in class LookupTableOperation
MissingParameterException
- if any mandatory parameter was not given to the operationWrongParameterException
- if at least one of the input parameters was
not initialized appropriately (values out of the valid interval, etc.)public void setGamma(double newGamma)
newGamma
- the new gamma value must be > 0.0 and <= MAX_GAMMAjava.lang.IllegalArgumentException
- if the argument is not in the described interval