# CSJ2K.j2k.wavelet.analysis

## Content

<div class="doc-site-dotnet-api-container">

  <h1 id="CSJ2K_j2k_wavelet_analysis" data-uid="CSJ2K.j2k.wavelet.analysis" class="text-break">CSJ2K.j2k.wavelet.analysis Namespace
</h1>
  <div class="markdown level0 summary"></div>
  <div class="markdown level0 conceptual"></div>
  <div class="markdown level0 remarks"></div>
    <h3 id="classes">
Classes
</h3>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilter.html">AnWTFilter</a></h4>
      <section><pre><code>&lt;p&gt;This abstract class defines the methods of all analysis wavelet
</code></pre>
<p>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.</p>
<p>All analysis wavelet filters should follow the following conventions:</p>
<ul><li>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.</li><li>The normalization is 1 for the DC gain and 2 for the Nyquist gain (Type
I normalization), for both reversible and non-reversible filters.</li><li>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.</li><li>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.</li><li>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).</li></ul>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilterFloat.html">AnWTFilterFloat</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilterFloatLift9x7.html">AnWTFilterFloatLift9x7</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilterInt.html">AnWTFilterInt</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilterIntLift5x3.html">AnWTFilterIntLift5x3</a></h4>
      <section><p>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>
<pre><code>       &lt;p&gt;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.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.AnWTFilterSpec.html">AnWTFilterSpec</a></h4>
      <section><p>This class extends ModuleSpec class for analysis filters specification
holding purpose.</p>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.CBlkWTData.html">CBlkWTData</a></h4>
      <section><p>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
(<tt>int</tt>, <tt>float</tt>, etc.).</p>
<pre><code>       &lt;p&gt;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.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;The classes &lt;tt&gt;CBlkWTDataInt&lt;/tt&gt; and &lt;tt&gt;CBlkWTDataFloat&lt;/tt&gt; provide
       implementations for &lt;tt&gt;int&lt;/tt&gt; and &lt;tt&gt;float&lt;/tt&gt; types respectively.&lt;/p&gt;&lt;p&gt;The types of data are the same as those defined by the 'DataBlk'
       class.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.CBlkWTDataFloat.html">CBlkWTDataFloat</a></h4>
      <section><p>This is an implementation of the 'CBlkWTData' abstract class for 32 bit
floating point data (float).</p>
<pre><code>       &lt;p&gt;The methods in this class are declared final, so that they can be
       inlined by inlining compilers.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.CBlkWTDataInt.html">CBlkWTDataInt</a></h4>
      <section><p>This is an implementation of the 'CBlkWTData' abstract class for signed 32
bit integer data.</p>
<pre><code>       &lt;p&gt;The methods in this class are declared final, so that they can be
       inlined by inlining compilers.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.ForwWTFull.html">ForwWTFull</a></h4>
      <section><p>This class implements the ForwardWT abstract class with the full-page
approach to be used either with integer or floating-point filters</p>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.ForwardWT.html">ForwardWT</a></h4>
      <section><p>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>
<pre><code>       &lt;p&gt;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.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.SubbandAn.html">SubbandAn</a></h4>
      <section><p>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>
<pre><code>       &lt;p&gt;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.&lt;/p&gt;&lt;p&gt;The tree is bidirectional. Each element in the tree structure has a
       &quot;parent&quot;, 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.&lt;/p&gt;
</code></pre>
</section>
    <h3 id="interfaces">
Interfaces
</h3>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.CBlkWTDataSrc.html">CBlkWTDataSrc</a></h4>
      <section><p>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>
<pre><code>       &lt;p&gt;This class is the source of data for the quantizer. See the 'Quantizer'
       class.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.ForwWT.html">ForwWT</a></h4>
      <section><p>This interface extends the WaveletTransform with the specifics of forward
wavelet transforms. Classes that implement forward wavelet transfoms should
implement this interface.</p>
<pre><code>       &lt;p&gt;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.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.analysis.ForwWTDataProps.html">ForwWTDataProps</a></h4>
      <section><p>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).</p>
</section>


</div>
