public class RGBToGrayConversion extends ImageToImageOperation
setColorWeights(float, float, float)
.
RGB24Image
and Paletted8Image
can be used as input image types.
A Gray8Image
be will be created from them.
Could be optimized to use int multiplication instead of float multiplication.
PixelImage grayImg = RGBToGrayConversion.convert(rgbImage);Using your own color weights can be done like this. You may also want to specify an output grayscale image if you have one to reuse.
RGBToGrayConversion rgbtogray = new RGBToGrayConversion(); rgbtogray.setInputImage(image); rgbtogray.setColorWeights(0.3f, 0.3f, 0.4f); rgbtogray.process(); PixelImage grayImage = rgbtogray.getOutputImage();
Modifier and Type | Field and Description |
---|---|
private float |
blueWeight |
static float |
DEFAULT_BLUE_WEIGHT
The default weight for blue samples in the conversion, 0.11f.
|
static float |
DEFAULT_GREEN_WEIGHT
The default weight for green samples in the conversion, 0.59f.
|
static float |
DEFAULT_RED_WEIGHT
The default weight for red samples in the conversion, 0.3f.
|
private float |
greenWeight |
private float |
redWeight |
Constructor and Description |
---|
RGBToGrayConversion() |
Modifier and Type | Method and Description |
---|---|
static PixelImage |
convert(PixelImage rgbImage)
Static convenience method to convert an RGB image to a grayscale image.
|
void |
process()
This method does the actual work of the operation.
|
private void |
process(Paletted8Image in) |
private void |
process(RGB24Image in) |
private void |
process(RGB48Image in) |
private void |
process(RGBIntegerImage in,
GrayIntegerImage out) |
void |
setColorWeights(float red,
float green,
float blue)
Sets the weights for the three colors red, green and blue used in the conversion procedure.
|
canInputAndOutputBeEqual, ensureImagesHaveSameResolution, ensureInputImageIsAvailable, ensureOutputImageResolution, getInputImage, getOutputImage, setCanInputAndOutputBeEqual, setInputImage, setOutputImage
addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress
public static final float DEFAULT_RED_WEIGHT
public static final float DEFAULT_GREEN_WEIGHT
public static final float DEFAULT_BLUE_WEIGHT
private float redWeight
private float greenWeight
private float blueWeight
public static PixelImage convert(PixelImage rgbImage) throws MissingParameterException, WrongParameterException
rgbImage
- input RGB image to be convertedMissingParameterException
- rgbImage is nullWrongParameterException
- rgbImage's type is unsupportedprivate void process(RGBIntegerImage in, GrayIntegerImage out)
public void process() throws MissingParameterException, WrongParameterException
Operation
process
in class Operation
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.)private void process(Paletted8Image in) throws MissingParameterException, WrongParameterException
private void process(RGB24Image in) throws WrongParameterException
WrongParameterException
private void process(RGB48Image in) throws WrongParameterException
WrongParameterException
public void setColorWeights(float red, float green, float blue)
(r, g, b)
to be converted (whether in a truecolor
image or in the palette), the formula is gray = r * red + g * green + b * blue
.
The default values for these weights are DEFAULT_RED_WEIGHT
,
DEFAULT_GREEN_WEIGHT
and DEFAULT_BLUE_WEIGHT
.
This method lets the user change these values.
Each of these arguments must be >= 0.0f and <= 1.0f.
The sum of the three must be <= 1.0f.
For any resulting gray value to be spread over the complete scale from 0.0f to 1.0f it is
preferable for the sum to be equal to or at least close to 1.0f.
However, this is not checked.
The smaller the sum of the weights is, the darker the resulting gray image will become.red
- weight of the red sample in the conversion, between 0.0f
and 1.0f
green
- weight of the green sample in the conversion, between 0.0f
and 1.0f
blue
- weight of the blue sample in the conversion, between 0.0f
and 1.0f
java.lang.IllegalArgumentException
- if any one of the above mentioned constraints for the arguments is not met