ptolemy.actor.lib.jai
Class JAIDFT

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.Transformer
                              extended by ptolemy.actor.lib.jai.JAIDFT
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class JAIDFT
extends Transformer

Calculate the discrete Fourier transform of an image. If the input is real, then the output has twice as many bands as the input (the dataNature parameter should be set to realToComplex). Band 0 in the input gets mapped to bands 0 and 1 in the output (band 0 contains the real information, band 1 contains the imaginary information). Band 1 in the input gets mapped to bands 1 and 2, etc.

If the input is complex, then the output has the same amount of bands as the input (the dataNature parameter should be set to "complexToComplex", "complexToReal should never be used").

The image is zero-padded to the next highest power of 2 (unless it already is a power of 2, in which case nothing happens).

The output of this actor may not be suitable for displaying or saving because of the increase in the number of bands, as well as the high resolution of the data (doubles).

Since:
Ptolemy II 3.0
Version:
$Id: JAIDFT.java 57040 2010-01-27 20:52:32Z cxh $
Author:
James Yeh
See Also:
JAIIDFT, Serialized Form
Accepted Rating:
Red (cxh)
Proposed Rating:
Red (cxh)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private static int _COMPLEX_TO_COMPLEX
          Constants used for more efficient computation
private static int _COMPLEX_TO_REAL
           
private  int _dataNature
          An indicator for the type of data being inputted and the type of data being outputted.
private static int _DIMENSIONS
           
private static int _NONE
           
private static int _REAL_TO_COMPLEX
           
private  int _scalingType
          An indicator for the type of scaling done
private static int _UNITARY
           
 StringAttribute dataNature
          A parameter that describes the nature of the input and output data.
 StringAttribute scalingType
          The scaling to be done on the output.
 
Fields inherited from class ptolemy.actor.lib.Transformer
input, output
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
JAIDFT(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
 void attributeChanged(Attribute attribute)
          Override the base class and set the parameters.
 void fire()
          Fire this actor.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

dataNature

public StringAttribute dataNature
A parameter that describes the nature of the input and output data. The default is realToComplex. If the input is complex, then complexToComplex should be used. The setting complexToReal should probably not be used.


scalingType

public StringAttribute scalingType
The scaling to be done on the output. There are three options, none (the default, does no scaling), unitary (multiplies by square root of the product of the dimensions), and dimensions (multiplies by the product of the dimensions). In a DFT-IDFT chain, the overall scaling should equal the product of the dimensions.


_dataNature

private int _dataNature
An indicator for the type of data being inputted and the type of data being outputted.


_scalingType

private int _scalingType
An indicator for the type of scaling done


_COMPLEX_TO_COMPLEX

private static final int _COMPLEX_TO_COMPLEX
Constants used for more efficient computation

See Also:
Constant Field Values

_COMPLEX_TO_REAL

private static final int _COMPLEX_TO_REAL
See Also:
Constant Field Values

_REAL_TO_COMPLEX

private static final int _REAL_TO_COMPLEX
See Also:
Constant Field Values

_DIMENSIONS

private static final int _DIMENSIONS
See Also:
Constant Field Values

_NONE

private static final int _NONE
See Also:
Constant Field Values

_UNITARY

private static final int _UNITARY
See Also:
Constant Field Values
Constructor Detail

JAIDFT

public JAIDFT(CompositeEntity container,
              java.lang.String name)
       throws IllegalActionException,
              NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Override the base class and set the parameters.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the function is not recognized.

fire

public void fire()
          throws IllegalActionException
Fire this actor. Output the discrete Fourier transform of the inputted image.

Specified by:
fire in interface Executable
Overrides:
fire in class AtomicActor
Throws:
IllegalActionException - If a contained method throws it, or if there is an invalid scaling type, or an invalid data nature set.