JIU 0.12.0 Homepage

net.sourceforge.jiu.color.reduction
Class RGBToGrayConversion

java.lang.Object
  extended bynet.sourceforge.jiu.ops.Operation
      extended bynet.sourceforge.jiu.ops.ImageToImageOperation
          extended bynet.sourceforge.jiu.color.reduction.RGBToGrayConversion

public class RGBToGrayConversion
extends ImageToImageOperation

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.

NOTE: Should be adjusted to support RGB48Image objects once they're available.

Usage example

 RGBToGrayConversion rgbtogray = new RGBToGrayConversion();
 rgbtogray.setInputImage(image);
 rgbtogray.process();
 PixelImage grayImage = rgbtogray.getOutputImage();
 

Author:
Marco Schmidt

Field Summary
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.
 
Constructor Summary
RGBToGrayConversion()
           
 
Method Summary
 void process()
          This method does the actual work of the operation.
 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_RED_WEIGHT

public static final float DEFAULT_RED_WEIGHT
The default weight for red samples in the conversion, 0.3f.

See Also:
Constant Field Values

DEFAULT_GREEN_WEIGHT

public static final float DEFAULT_GREEN_WEIGHT
The default weight for green samples in the conversion, 0.59f.

See Also:
Constant Field Values

DEFAULT_BLUE_WEIGHT

public static final float DEFAULT_BLUE_WEIGHT
The default weight for blue samples in the conversion, 0.11f.

See Also:
Constant Field Values
Constructor Detail

RGBToGrayConversion

public RGBToGrayConversion()
Method Detail

process

public void process()
             throws MissingParameterException,
                    WrongParameterException
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 class Operation
Throws:
MissingParameterException - if any mandatory parameter was not given to the operation
WrongParameterException - if at least one of the input parameters was not initialized appropriately (values out of the valid interval, etc.)

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.

Parameters:
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
Throws:
IllegalArgumentException - if any one of the above mentioned constraints for the arguments is not met

JIU 0.12.0 Homepage

Copyright © 2000, 2001, 2002, 2003, 2004 Marco Schmidt