[]
        
(Showing Draft Content)

CSJ2K.j2k.wavelet.analysis

CSJ2K.j2k.wavelet.analysis Namespace

Classes

AnWTFilter

<p>This abstract class defines the methods of all analysis wavelet

filters. Specialized abstract classes that work on particular data types (int, float) provide more specific method calls while retaining the generality of this one. See the AnWTFilterInt and AnWTFilterFloat classes. Implementations of analysis filters should inherit from one of those classes.

All analysis wavelet filters should follow the following conventions:

  • The first sample to filter is the low-pass one. As a consequence, if the input signal is of odd-length then the low-pass output signal is one sample longer than the high-pass output one. Therefore, if the length of input signal is N, the low-pass output signal is of length N/2 if N is even and N/2+1/2 if N is odd, while the high-pass output signal is of length N/2 if N is even and N/2-1/2 if N is odd.
  • The normalization is 1 for the DC gain and 2 for the Nyquist gain (Type I normalization), for both reversible and non-reversible filters.
  • If the length of input signal is N, the low-pass output signal is of length N/2 if N is even and N/2+1/2 if N is odd, while the high-pass output sample is of length N/2 if N is even and N/2-1/2 if N is odd.
  • The analyze method may seem very complicated, but is designed to minimize the amount of data copying and redundant calculations when used for block-based or line-based wavelet transform implementations, while being applicable to full-frame transforms as well.
  • All filters should implement the equals() method of the Object class. The call x.equals(y) should test if the 'x' and 'y' filters are the same or not, in what concerns the bit stream header syntax (two filters are the same if the same filter code should be output to the bit stream).

AnWTFilterFloat

AnWTFilterFloatLift9x7

AnWTFilterInt

AnWTFilterIntLift5x3

This class inherits from the analysis wavelet filter definition for int data. It implements the forward wavelet transform specifically for the 5x3 filter. The implementation is based on the lifting scheme.

       <p>See the AnWTFilter class for details such as normalization, how to split
       odd-length signals, etc. In particular, this method assumes that the
       low-pass coefficient is computed first.</p>

AnWTFilterSpec

This class extends ModuleSpec class for analysis filters specification holding purpose.

CBlkWTData

This is a generic abstract class to store a code-block of wavelet data, quantized or not. This class does not have the notion of components. Therefore, it should be used for data from a single component. Subclasses should implement the different types of storage (int, float, etc.).

       <p>The data is always stored in one array, of the type matching the data
       type (i.e. for 'int' it's an 'int[]'). The data should be stored in the
       array in standard scan-line order. That is the samples go from the top-left
       corner of the code-block to the lower-right corner by line and then
       column.</p><p>The member variable 'offset' gives the index in the array of the first
       data element (i.e. the top-left coefficient). The member variable 'scanw'
       gives the width of the scan that is used to store the data, that can be
       different from the width of the block. Element '(x,y)' of the code-block
       (i.e. '(0,0)' is the top-left coefficient), will appear at position
       'offset+y*scanw+x' in the array of data.</p><p>The classes <tt>CBlkWTDataInt</tt> and <tt>CBlkWTDataFloat</tt> provide
       implementations for <tt>int</tt> and <tt>float</tt> types respectively.</p><p>The types of data are the same as those defined by the 'DataBlk'
       class.</p>

CBlkWTDataFloat

This is an implementation of the 'CBlkWTData' abstract class for 32 bit floating point data (float).

       <p>The methods in this class are declared final, so that they can be
       inlined by inlining compilers.</p>

CBlkWTDataInt

This is an implementation of the 'CBlkWTData' abstract class for signed 32 bit integer data.

       <p>The methods in this class are declared final, so that they can be
       inlined by inlining compilers.</p>

ForwWTFull

This class implements the ForwardWT abstract class with the full-page approach to be used either with integer or floating-point filters

ForwardWT

This abstract class represents the forward wavelet transform functional block. The functional block may actually be comprised of several classes linked together, but a subclass of this abstract class is the one that is returned as the functional block that performs the forward wavelet transform.

       <p>This class assumes that data is transferred in code-blocks, as defined
       by the 'CBlkWTDataSrc' interface. The internal calculation of the wavelet
       transform may be done differently but a buffering class should convert to
       that type of transfer.</p>

SubbandAn

This class represents a subband in a bidirectional tree structure that describes the subband decomposition for a wavelet transform, specifically for the analysis side.

       <p>The element can be either a node or a leaf of the tree. If it is a node
       then ther are 4 descendants (LL, HL, LH and HH). If it is a leaf there are
       no descendants.</p><p>The tree is bidirectional. Each element in the tree structure has a
       "parent", which is the subband from which the element was obtained by
       decomposition. The only exception is the root element which has no parent
       (i.e.it's null), for obvious reasons.</p>

Interfaces

CBlkWTDataSrc

This abstract class defines methods to transfer wavelet data in a code-block by code-block basis. In each call to 'getNextCodeBlock()' or 'getNextInternCodeBlock()' a new code-block is returned. The code-blocks are returned in no specific order.

       <p>This class is the source of data for the quantizer. See the 'Quantizer'
       class.</p><p>Note that no more of one object may request data, otherwise one object
       would get some of the data and another one another part, in no defined
       manner.</p>

ForwWT

This interface extends the WaveletTransform with the specifics of forward wavelet transforms. Classes that implement forward wavelet transfoms should implement this interface.

       <p>This class does not define the methods to transfer data, just the
       specifics to forward wavelet transform. Different data transfer methods are 
       evisageable for different transforms.</p>

ForwWTDataProps

This interface extends the ImgData interface with methods that are necessary for forward wavelet data (i.e. data that is produced by a forward wavelet transform).