net.sourceforge.jiu.color.reduction
Class RGBToGrayConversion
public class 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();
DEFAULT_BLUE_WEIGHT
public static final float DEFAULT_BLUE_WEIGHT
The default weight for blue samples in the conversion, 0.11f.
DEFAULT_GREEN_WEIGHT
public static final float DEFAULT_GREEN_WEIGHT
The default weight for green samples in the conversion, 0.59f.
DEFAULT_RED_WEIGHT
public static final float DEFAULT_RED_WEIGHT
The default weight for red samples in the conversion, 0.3f.
blueWeight
private float blueWeight
greenWeight
private float greenWeight
redWeight
private float redWeight
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 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