Class RGBToGrayConversion
java.lang.Object
net.sourceforge.jiu.ops.Operation
net.sourceforge.jiu.ops.ImageToImageOperation
net.sourceforge.jiu.color.reduction.RGBToGrayConversion
Converts RGB color images (both truecolor and paletted) to grayscale images.
The weights to be used with the three base colors red, green and blue can be
modified with a call to
setColorWeights(float, float, float)
.
Supported image types
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.
Usage example
Convert some PixelImage rgbImage to grayscale: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();
- Author:
- Marco Schmidt
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate float
static final float
The default weight for blue samples in the conversion, 0.11f.static final float
The default weight for green samples in the conversion, 0.59f.static final float
The default weight for red samples in the conversion, 0.3f.private float
private float
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic 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
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.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, removeProgressListener, setAbort, setProgress, setProgress
-
Field Details
-
DEFAULT_RED_WEIGHT
public static final float DEFAULT_RED_WEIGHTThe default weight for red samples in the conversion, 0.3f.- See Also:
-
DEFAULT_GREEN_WEIGHT
public static final float DEFAULT_GREEN_WEIGHTThe default weight for green samples in the conversion, 0.59f.- See Also:
-
DEFAULT_BLUE_WEIGHT
public static final float DEFAULT_BLUE_WEIGHTThe default weight for blue samples in the conversion, 0.11f.- See Also:
-
redWeight
private float redWeight -
greenWeight
private float greenWeight -
blueWeight
private float blueWeight
-
-
Constructor Details
-
RGBToGrayConversion
public RGBToGrayConversion()
-
-
Method Details
-
convert
public static PixelImage convert(PixelImage rgbImage) throws MissingParameterException, WrongParameterException Static convenience method to convert an RGB image to a grayscale image.- Parameters:
rgbImage
- input RGB image to be converted- Returns:
- a new grayscale image, created from the RGB input image
- Throws:
MissingParameterException
- rgbImage is nullWrongParameterException
- rgbImage's type is unsupported- Since:
- 0.14.2
-
process
-
process
Description copied from class:Operation
This method does the actual work of the operation. It must be called after all parameters have been given to the operation object.- Overrides:
process
in classOperation
- Throws:
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.)
-
process
-
process
- Throws:
WrongParameterException
-
process
- Throws:
WrongParameterException
-
setColorWeights
public void setColorWeights(float red, float green, float blue) Sets the weights for the three colors red, green and blue used in the conversion procedure. For each RGB value(r, g, b)
to be converted (whether in a truecolor image or in the palette), the formula isgray = r * red + g * green + b * blue
. The default values for these weights areDEFAULT_RED_WEIGHT
,DEFAULT_GREEN_WEIGHT
andDEFAULT_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.- Parameters:
red
- weight of the red sample in the conversion, between0.0f
and1.0f
green
- weight of the green sample in the conversion, between0.0f
and1.0f
blue
- weight of the blue sample in the conversion, between0.0f
and1.0f
- Throws:
IllegalArgumentException
- if any one of the above mentioned constraints for the arguments is not met
-