ptolemy.actor.lib.jai
Class JAIIDFT

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.JAIIDFT
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 JAIIDFT
extends Transformer

Calculate the inverse discrete Fourier transform of an image. If the input is complex, there are two options. One is to set the dataNature parameter to complexToReal (the default). The output would have half the bands of the input (bands 0 and 1 get transformed into band 0, bands 2 and 3 would get transformed into band 1, etc.), and could be display or saved after passing through a JAIDataConvert actor.

The other option would be to set it to complexToComplex, in which case the output would have the same number of bands as the input.

If the input is real, the only option is to set the dataNature parameter to realToComplex. An alternative to this would be to create a complex image from this real image by using the real image as a magnitude image, and creating a phase image of all 0's, and making a complex image using the JAIPolarToComplex actor.

The data of the output is of a high resolution (doubles), not suitable for displaying or saving. To display or save the output of this image, use the JAIDataConvert Actor to cast the data to an appropriate type (for instance, byte).

Since:
Ptolemy II 3.1
Version:
$Id: JAIIDFT.java 57040 2010-01-27 20:52:32Z cxh $
Author:
James Yeh
See Also:
JAIDataConvert, JAIDFT, 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
JAIIDFT(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 complexToReal (so that the output can be saved and/or displayed after putting it through the actor. The setting complexToComplex can also be used. The setting realToComplex should probably not be used.


scalingType

public StringAttribute scalingType
The scaling to be done on the output. There are three options, none (does no scaling), unitary (multiplies by square root of the product of the dimensions), and dimensions (the default, 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

JAIIDFT

public JAIIDFT(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 inverse 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.