javax.media.jai.operator
Class BoxFilterDescriptor

java.lang.Object
  |
  +--javax.media.jai.OperationDescriptorImpl
        |
        +--javax.media.jai.operator.BoxFilterDescriptor
All Implemented Interfaces:
OperationDescriptor, RegistryElementDescriptor, Serializable

public class BoxFilterDescriptor
extends OperationDescriptorImpl

An OperationDescriptor describing the "BoxFilter" operation.

The "BoxFilter" operation determines the intensity of a pixel in an image by averaging the source pixels within a rectangular area around the pixel. This is a special case of the convolution operation, in which each source pixel contributes the same weight to the destination pixel. The pixel values of the destination image are defined by the pseudocode:

     int count = width * height; // # of pixels in the box
     for (int b = 0; b < numBands; b++) {
         int total = 0;
         for (int j = -yKey; j < -yKey + height; j++) {
             for (int i = -xKey; i < -xKey + width; i++) {
                 total += src[x+i][y+j][b];
             }
         }
         dst[x][y][b] = (total + count/2) / count; // round
     }
 

Convolution, like any neighborhood operation, leaves a band of pixels around the edges undefined. For example, for a 3x3 kernel only four kernel elements and four source pixels contribute to the convolution pixel at the corners of the source image. Pixels that do not allow the full kernel to be applied to the source are not included in the destination image. A "Border" operation may be used to add an appropriate border to the source image in order to avoid shrinkage of the image boundaries.

The kernel may not be bigger in any dimension than the image data.

Resource List
Name Value
GlobalName BoxFilter
LocalName BoxFilter
Vendor com.sun.media.jai
Description Performs special case convolution where each source pixel contributes equally to the intensity of the destination pixel.
DocURL http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/BoxFilterDescriptor.html
Version 1.0
arg0Desc The width of the box.
arg1Desc The height of the box.
arg2Desc The X position of the key element.
arg3Desc The Y position of the key element.

Parameter List
Name Class Type Default Value
width java.lang.Integer 3
height java.lang.Integer width
xKey java.lang.Integer width/2
yKey java.lang.Integer height/2

See Also:
OperationDescriptor, Serialized Form

Fields inherited from class javax.media.jai.OperationDescriptorImpl
resources, sourceNames, supportedModes
 
Fields inherited from interface javax.media.jai.OperationDescriptor
NO_PARAMETER_DEFAULT
 
Constructor Summary
BoxFilterDescriptor()
          Constructor.
 
Method Summary
static RenderedOp create(RenderedImage source0, Integer width, Integer height, Integer xKey, Integer yKey, RenderingHints hints)
          Performs special case convolution where each source pixel contributes equally to the intensity of the destination pixel.
 Number getParamMinValue(int index)
          Returns the minimum legal value of a specified numeric parameter for this operation.
 PropertyGenerator[] getPropertyGenerators()
          Returns an array of PropertyGenerators implementing property inheritance for the "BoxFilter" operation.
protected  boolean validateParameters(ParameterBlock args, StringBuffer msg)
          Returns true if this operation is capable of handling the given input parameters.
 
Methods inherited from class javax.media.jai.OperationDescriptorImpl
arePropertiesSupported, getDefaultSourceClass, getDestClass, getDestClass, getInvalidRegion, getName, getNumParameters, getNumSources, getParamClasses, getParamDefaults, getParamDefaultValue, getParameterListDescriptor, getParamMaxValue, getParamNames, getPropertyGenerators, getRenderableDestClass, getRenderableSourceClasses, getResourceBundle, getResources, getSourceClasses, getSourceClasses, getSourceNames, getSupportedModes, isImmediate, isModeSupported, isRenderableSupported, isRenderedSupported, makeDefaultSourceClassList, validateArguments, validateArguments, validateParameters, validateRenderableArguments, validateRenderableSources, validateSources, validateSources
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BoxFilterDescriptor

public BoxFilterDescriptor()
Constructor.
Method Detail

getParamMinValue

public Number getParamMinValue(int index)
Returns the minimum legal value of a specified numeric parameter for this operation.
Overrides:
getParamMinValue in class OperationDescriptorImpl
Following copied from class: javax.media.jai.OperationDescriptorImpl
Parameters:
index - The index of the parameter to be queried.
Returns:
A Number representing the minimum legal value, or null if the specified parameter is not numeric.
Throws:
IllegalArgumentException - if this operation has no parameters.
ArrayIndexOutOfBoundsException - if there is no parameter corresponding to the specified index.
See Also:
ParameterListDescriptor.getParamValueRange(java.lang.String), ParameterListDescriptor.getEnumeratedParameterValues(java.lang.String), ParameterListDescriptor.isParameterValueValid(java.lang.String, java.lang.Object)

validateParameters

protected boolean validateParameters(ParameterBlock args,
                                     StringBuffer msg)
Description copied from class: OperationDescriptorImpl
Returns true if this operation is capable of handling the given input parameters. The default implementation validates the number of parameters, the class type of each parameter, and null parameters. For those non-null numeric parameters, it also checks to see if the parameter value is within the minimum and maximum range. Subclasses should override this implementation if their requirements for the parameter objects are different from the default.

JAI allows unspecified tailing parameters if these parameters have default values. This method automatically sets these unspecified parameters to their default values. However, if a parameter, which has a default value, is followed by one or more parameters that have no default values, this parameter must be specified in the ParameterBlock; else this method returns false.

Note that DeferredData parameters will not be recognized as valid unless the parameter is defined to have class DeferredData.class.

Overrides:
validateParameters in class OperationDescriptorImpl
Following copied from class: javax.media.jai.OperationDescriptorImpl
Throws:
IllegalArgumentException - if args is null.
IllegalArgumentException - if msg is null and the validation fails.
See Also:
OperationDescriptorImpl.validateParameters(java.lang.String, java.awt.image.renderable.ParameterBlock, java.lang.StringBuffer)

getPropertyGenerators

public PropertyGenerator[] getPropertyGenerators()
Returns an array of PropertyGenerators implementing property inheritance for the "BoxFilter" operation.
Overrides:
getPropertyGenerators in class OperationDescriptorImpl
Returns:
An array of property generators.

create

public static RenderedOp create(RenderedImage source0,
                                Integer width,
                                Integer height,
                                Integer xKey,
                                Integer yKey,
                                RenderingHints hints)
Performs special case convolution where each source pixel contributes equally to the intensity of the destination pixel.

Creates a ParameterBlockJAI from all supplied arguments except hints and invokes JAI.create(String,ParameterBlock,RenderingHints).

Parameters:
source0 - RenderedImage source 0.
width - The width of the box. May be null.
height - The height of the box. May be null.
xKey - The X position of the key element. May be null.
yKey - The Y position of the key element. May be null.
hints - The RenderingHints to use. May be null.
Returns:
The RenderedOp destination.
Throws:
IllegalArgumentException - if source0 is null.
See Also:
JAI, ParameterBlockJAI, RenderedOp