javax.media.jai.operator
Class DivideComplexDescriptor

java.lang.Object
  extended byjavax.media.jai.OperationDescriptorImpl
      extended byjavax.media.jai.operator.DivideComplexDescriptor
All Implemented Interfaces:
OperationDescriptor, RegistryElementDescriptor, Serializable

public class DivideComplexDescriptor
extends OperationDescriptorImpl

An OperationDescriptor describing the "DivideComplex" operation.

The "DivideComplex" operation divides two images representing complex data. The source images must each contain an even number of bands with the even-indexed bands (0, 2, ...) representing the real and the odd-indexed bands (1, 3, ...) the imaginary parts of each pixel. The destination image similarly contains an even number of bands with the same interpretation and with contents defined by:

 a = src0[x][y][2*k];
 b = src0[x][y][2*k+1];
 c = src1[x][y][2*k];
 d = src1[x][y][2*k+1];

 dst[x][y][2*k] = (a*c + b*d)/(c^2 + d^2)
 dst[x][y][2*k+1] = (b*c - a*d)/(c^2 + d^2)
 
where 0 <= k < numBands/2. By default, the number of bands of the destination image is the the minimum of the number of bands of the two sources, and the data type is the biggest data type of the sources. However, the number of destination bands can be specified to be M = 2*L through an ImageLayout hint, when one source image has 2 bands and the other has N = 2*K bands where K > 1, with a natural restriction 1 <= L <= K. In such a special case, if the first source has 2 bands its single complex component will be divided by each of the first L complex components of the second source; if the second source has 2 bands its single complex component will divide each of the L complex components of the first source.

If the result of the operation underflows/overflows the minimum/maximum value supported by the destination data type, then it will be clamped to the minimum/maximum value respectively.

"DivideComplex" defines a PropertyGenerator that sets the "COMPLEX" property of the image to java.lang.Boolean.TRUE, which may be retrieved by calling the getProperty() method with "COMPLEX" as the property name.

Resource List
Name Value
GlobalName DivideComplex
LocalName DivideComplex
Vendor com.sun.media.jai
Description Compute the complex quotient of two images.
DocURL http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/DivideComplexDescriptor.html
Version 1.0

No parameters are needed for the "DivideComplex" operation.

See Also:
OperationDescriptor, Serialized Form

Field Summary
 
Fields inherited from class javax.media.jai.OperationDescriptorImpl
sourceNames
 
Fields inherited from interface javax.media.jai.OperationDescriptor
NO_PARAMETER_DEFAULT
 
Constructor Summary
DivideComplexDescriptor()
          Constructor.
 
Method Summary
static RenderedOp create(RenderedImage source0, RenderedImage source1, RenderingHints hints)
          Compute the complex quotient of two images.
static RenderableOp createRenderable(RenderableImage source0, RenderableImage source1, RenderingHints hints)
          Compute the complex quotient of two images.
 PropertyGenerator[] getPropertyGenerators(String modeName)
          Returns an array of PropertyGenerators implementing property inheritance for the "DivideComplex" operation.
protected  boolean validateSources(String modeName, ParameterBlock args, StringBuffer msg)
          Validates the input sources.
 
Methods inherited from class javax.media.jai.OperationDescriptorImpl
arePropertiesSupported, getDefaultSourceClass, getDestClass, getDestClass, getInvalidRegion, getName, getNumParameters, getNumSources, getParamClasses, getParamDefaults, getParamDefaultValue, getParameterListDescriptor, getParamMaxValue, getParamMinValue, getParamNames, getPropertyGenerators, getRenderableDestClass, getRenderableSourceClasses, getResourceBundle, getResources, getSourceClasses, getSourceClasses, getSourceNames, getSupportedModes, isImmediate, isModeSupported, isRenderableSupported, isRenderedSupported, makeDefaultSourceClassList, validateArguments, validateArguments, validateParameters, validateParameters, validateRenderableArguments, validateRenderableSources, validateSources
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DivideComplexDescriptor

public DivideComplexDescriptor()
Constructor.

Method Detail

validateSources

protected boolean validateSources(String modeName,
                                  ParameterBlock args,
                                  StringBuffer msg)
Validates the input sources.

In addition to the standard checks performed by the superclass method, this method checks that both sources have an even number of bands.

Overrides:
validateSources in class OperationDescriptorImpl
Parameters:
modeName - the operation mode name
args - a ParameterBlock that has the sources
msg - A string that may contain error messages.
See Also:
OperationDescriptorImpl.validateArguments(java.lang.String, java.awt.image.renderable.ParameterBlock, java.lang.StringBuffer)

getPropertyGenerators

public PropertyGenerator[] getPropertyGenerators(String modeName)
Returns an array of PropertyGenerators implementing property inheritance for the "DivideComplex" operation.

Specified by:
getPropertyGenerators in interface RegistryElementDescriptor
Overrides:
getPropertyGenerators in class OperationDescriptorImpl
Parameters:
modeName - the registry mode name
Returns:
An array of property generators.
See Also:
RegistryElementDescriptor

create

public static RenderedOp create(RenderedImage source0,
                                RenderedImage source1,
                                RenderingHints hints)
Compute the complex quotient of two images.

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

Parameters:
source0 - RenderedImage source 0.
source1 - RenderedImage source 1.
hints - The RenderingHints to use. May be null.
Returns:
The RenderedOp destination.
Throws:
IllegalArgumentException - if source0 is null.
IllegalArgumentException - if source1 is null.
See Also:
JAI, ParameterBlockJAI, RenderedOp

createRenderable

public static RenderableOp createRenderable(RenderableImage source0,
                                            RenderableImage source1,
                                            RenderingHints hints)
Compute the complex quotient of two images.

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

Parameters:
source0 - RenderableImage source 0.
source1 - RenderableImage source 1.
hints - The RenderingHints to use. May be null.
Returns:
The RenderableOp destination.
Throws:
IllegalArgumentException - if source0 is null.
IllegalArgumentException - if source1 is null.
See Also:
JAI, ParameterBlockJAI, RenderableOp