cz.cuni.jagrlib
Class DefaultDiscreteTransform

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultDiscreteTransform
All Implemented Interfaces:
Breakable, DiscreteTransform, PersistentParamsBinary, Property, Template
Direct Known Subclasses:
DCT

public abstract class DefaultDiscreteTransform
extends Piece
implements DiscreteTransform, PersistentParamsBinary

Default implementation of DiscreteTransform interface. 2D transforms are based on 1D ones (separable extension).

Since:
0.25
See Also:
DefaultDiscreteTransform.java

Field Summary
protected static java.lang.String CATEGORY
          Object category.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, reg, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
DefaultDiscreteTransform()
           
 
Method Summary
 boolean getSizeBounds(int[] bounds)
          Get extreme domain (source) ranges.
 int inverse1D(double[] coef, int len, double[] sample, int start)
          Inverse 1D transform (floating-point form).
 int inverse1D(int[] coef, int len, int[] sample, int start)
          Inverse 1D transform (integer form).
 int inverse2D(double[] coef, int len, double[] sample, int start, int width, int stride)
          Inverse 2D transform (floating-point form).
 int inverse2D(int[] coef, int len, int[] sample, int start, int width, int stride)
          Inverse 2D transform (integer form).
 boolean loadData(byte[] data)
          Loads instance parameters from (previously stored) binary data.
 byte[] storeData()
          Pack instance parameters into binary format.
 int transform1D(double[] sample, int start, int len, double[] coef)
          Forward 1D transform (floating-point form).
 int transform1D(int[] sample, int start, int len, int[] coef)
          Forward 1D transform (integer form).
 int transform2D(double[] sample, int start, int width, int height, int stride, double[] coef)
          Forward 2D transform (floating-point form).
 int transform2D(int[] sample, int start, int width, int height, int stride, int[] coef)
          Forward 2D transform (integer form).
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplate, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, get, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit, get, set
 

Field Detail

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

See Also:
Constant Field Values
Constructor Detail

DefaultDiscreteTransform

public DefaultDiscreteTransform()
Method Detail

getSizeBounds

public boolean getSizeBounds(int[] bounds)
Get extreme domain (source) ranges.

Specified by:
getSizeBounds in interface DiscreteTransform
Parameters:
bounds - Pre-allocated array to hold extreme ranges:
bounds[0] .. minimum size in 1st dim,
bounds[1] .. maximum size in 1st dim,
bounds[2] .. minimum size in 2nd dim,
bounds[3] .. maximum size in 2nd dim, etc.
Returns:
true if arbitrary lengths are allowed (even non-powers-ow-two).

transform1D

public int transform1D(int[] sample,
                       int start,
                       int len,
                       int[] coef)
Forward 1D transform (integer form). Can be used if both source and target data are in integer format.

Converts argument into double[] array and performs transform1D(double[],int,int,double[]). Result double[] array is rounded back into original result array.

Specified by:
transform1D in interface DiscreteTransform
Parameters:
sample - Source array (containing sample data).
start - Starting index of the transformed segment.
len - Source segment length.
coef - Pre-allocated array to hold transformed data (coefficients).
Returns:
Number of coefficients (0 in case of error).
See Also:
inverse1D(int[],int,int[],int), transform1D(double[],int,int,double[])

transform1D

public int transform1D(double[] sample,
                       int start,
                       int len,
                       double[] coef)
Forward 1D transform (floating-point form). Has to be used if source and/or target data are floating-point!

Converts argument into int[] array and performs transform1D(int[],int,int,int[]).

Specified by:
transform1D in interface DiscreteTransform
Parameters:
sample - Source array (containing sample data).
start - Starting index of the transformed segment.
len - Source segment length.
coef - Pre-allocated array to hold transformed data (coefficients).
Returns:
Number of coefficients (0 in case of error).
See Also:
inverse1D(double[],int,double[],int), transform1D(int[],int,int,int[])

inverse1D

public int inverse1D(int[] coef,
                     int len,
                     int[] sample,
                     int start)
Inverse 1D transform (integer form). Inverse mapping to transform1D(int[],int,int,int[]).

Converts argument into double[] array and performs inverse1D(double[],int,double[],int). Result double[] array is rounded back into original result array.

Specified by:
inverse1D in interface DiscreteTransform
Parameters:
coef - Source array (holding coefficients).
len - Number of coefficients.
sample - Pre-allocated array to hold reconstructed sample data.
start - Starting index of the reconstructed sample data.
Returns:
Sample data length (0 in case of error).
See Also:
transform1D(int[],int,int,int[]), inverse1D(double[],int,double[],int)

inverse1D

public int inverse1D(double[] coef,
                     int len,
                     double[] sample,
                     int start)
Inverse 1D transform (floating-point form). Inverse mapping to transform1D(double[],int,int,double[]).

Converts argument into int[] array and performs inverse1D(int[],int,int[],int).

Specified by:
inverse1D in interface DiscreteTransform
Parameters:
coef - Source array (holding coefficients).
len - Number of coefficients.
sample - Pre-allocated array to hold reconstructed sample data.
start - Starting index of the reconstructed sample data.
Returns:
Sample data length (0 in case of error).
See Also:
transform1D(double[],int,int,double[]), inverse1D(int[],int,int[],int)

transform2D

public int transform2D(int[] sample,
                       int start,
                       int width,
                       int height,
                       int stride,
                       int[] coef)
Forward 2D transform (integer form). Can be used if both source and target data are in integer format.

Specified by:
transform2D in interface DiscreteTransform
Parameters:
sample - Source array (containing sample data).
start - Starting index of the transformed data.
width - Source rectangle's width (faster index).
height - Source rectangle's height (slower index).
stride - Source matrix row length.
coef - Pre-allocated array to hold transformed data (coefficients).
Returns:
Number of coefficients (0 in case of error).
See Also:
inverse2D(int[],int,int[],int,int,int), transform2D(double[],int,int,int,int,double[])

transform2D

public int transform2D(double[] sample,
                       int start,
                       int width,
                       int height,
                       int stride,
                       double[] coef)
Forward 2D transform (floating-point form). Has to be used if source and/or target data are floating-point!

Specified by:
transform2D in interface DiscreteTransform
Parameters:
sample - Source array (containing sample data).
start - Starting index of the transformed data.
width - Source rectangle's width (faster index).
height - Source rectangle's height (slower index).
stride - Source matrix row length.
coef - Pre-allocated array to hold transformed data (coefficients).
Returns:
Number of coefficients (0 in case of error).
See Also:
inverse2D(double[],int,double[],int,int,int), transform2D(int[],int,int,int,int,int[])

inverse2D

public int inverse2D(int[] coef,
                     int len,
                     int[] sample,
                     int start,
                     int width,
                     int stride)
Inverse 2D transform (integer form). Inverse mapping to transform2D(int[],int,int,int,int,int[]).

Specified by:
inverse2D in interface DiscreteTransform
Parameters:
coef - Source array (holding coefficients).
len - Number of coefficients.
sample - Pre-allocated array to hold reconstructed sample data.
start - Starting index of the reconstructed rectangle.
width - Reconstructed rectangle's width (faster index).
stride - Reconstructed data matrix row length.
Returns:
Sample data height (0 in case of error).
See Also:
transform2D(int[],int,int,int,int,int[]), inverse2D(double[],int,double[],int,int,int)

inverse2D

public int inverse2D(double[] coef,
                     int len,
                     double[] sample,
                     int start,
                     int width,
                     int stride)
Inverse 2D transform (floating-point form). Inverse mapping to transform2D(double[],int,int,int,int,double[]).

Specified by:
inverse2D in interface DiscreteTransform
Parameters:
coef - Source array (holding coefficients).
len - Number of coefficients.
sample - Pre-allocated array to hold reconstructed sample data.
start - Starting index of the reconstructed rectangle.
width - Reconstructed rectangle's width (faster index).
stride - Reconstructed data matrix row length.
Returns:
Sample data height (0 in case of error).
See Also:
transform2D(double[],int,int,int,int,double[]), inverse2D(int[],int,int[],int,int,int)

storeData

public byte[] storeData()
Pack instance parameters into binary format.

Specified by:
storeData in interface PersistentParamsBinary
Returns:
Data array to be stored into binary stream. Can be null. The array can be shared by all method calls.
See Also:
loadData(byte[])

loadData

public boolean loadData(byte[] data)
Loads instance parameters from (previously stored) binary data.

Specified by:
loadData in interface PersistentParamsBinary
Parameters:
data - Binary data to be interpreted. Can be null.
Returns:
true if successful.
See Also:
storeData()