ptolemy.actor.lib.jai
Class AdaptiveMedian
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.actor.lib.jai.AdaptiveMedian
- 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 AdaptiveMedian
- extends Transformer
This actor performs adaptive median filtering on an image. The
algorithm is as follows. For each pixel in the image, a square region
of interest is formed with the pixel at the center. If said region
can not be formed (because it is at or near the edge).
If the median of this region of interest is strictly less than the
maximum value in the region of interest and strictly greater than
the minimum value in the region of interest, then we keep the pixel
if it too is strictly less than the maximum value in the region of
interest and strictly greater than the minimum value in the region
of interest. If it is not, then use the median of the region of
interest instead of the pixel.
If the pixel is not strictly less than the maximum value and strictly
greater than the minimum value, an attempt is made at using larger
region of interest. If successful, then this process is repeated until
a value can be determine, or we hit the the maximum window size. If this
happens, then the pixel is kept. This process is repeated for each pixel.
- Since:
- Ptolemy II 4.0
- Version:
- $Id: AdaptiveMedian.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- James Yeh, Contributor: Christopher Hylands Brooks
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Method Summary |
private double |
_getMaximum(double[][] input,
int size)
Find the largest value in a region of interest. |
private double |
_getMedian(double[][] input,
int size)
Find the median value in a region of interest. |
private double |
_getMinimum(double[][] input,
int size)
Find the minimum value in a region of interest. |
void |
attributeChanged(Attribute attribute)
Override the base class and set the largest window size. |
void |
fire()
Fire this actor. |
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.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 |
maxWindowSize
public Parameter maxWindowSize
- The largest window size to use. This number must be an odd
integer. The default value is 7.
_maxWindowSize
private int _maxWindowSize
AdaptiveMedian
public AdaptiveMedian(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.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Override the base class and set the largest window size.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the largest window size is
not an odd integer.
fire
public void fire()
throws IllegalActionException
- Fire this actor.
Perform the adaptive median filtering.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If a contained method throws it.
_getMaximum
private double _getMaximum(double[][] input,
int size)
- Find the largest value in a region of interest.
_getMedian
private double _getMedian(double[][] input,
int size)
- Find the median value in a region of interest.
_getMinimum
private double _getMinimum(double[][] input,
int size)
- Find the minimum value in a region of interest.