# CSJ2K.j2k.wavelet.synthesis

## Content

<div class="doc-site-dotnet-api-container">

  <h1 id="CSJ2K_j2k_wavelet_synthesis" data-uid="CSJ2K.j2k.wavelet.synthesis" class="text-break">CSJ2K.j2k.wavelet.synthesis 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.synthesis.InvWTAdapter.html">InvWTAdapter</a></h4>
      <section><p>This class provides default implementation of the methods in the 'InvWT'
interface. The source is always a 'MultiResImgData', which is a
multi-resolution image. The default implementation is just to return the
value of the source at the current image resolution level, which is set by
the 'setImgResLevel()' method.</p>
<pre><code>       &lt;p&gt;This abstract class can be used to facilitate the development of other
       classes that implement the 'InvWT' interface, because most of the trivial
       methods are already implemented.&lt;/p&gt;&lt;p&gt;If the default implementation of a method provided in this class does
       not suit a particular implementation of the 'InvWT' interface, the method
       can be overriden to implement the proper behaviour.&lt;/p&gt;&lt;p&gt;If the 'setImgResLevel()' method is overriden then it is very important
       that the one of this class is called from the overriding method, so that
       the other methods in this class return the correct values.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.InvWTFull.html">InvWTFull</a></h4>
      <section><p>This class implements the InverseWT with the full-page approach for int and
float data.</p>
<pre><code>       &lt;p&gt;The image can be reconstructed at different (image) resolution levels
       indexed from the lowest resolution available for each tile-component. This
       is controlled by the setImgResLevel() method.&lt;/p&gt;&lt;p&gt;Note: Image resolution level indexes may differ from tile-component
       resolution index. They are indeed indexed starting from the lowest number
       of decomposition levels of each component of each tile.&lt;/p&gt;&lt;p&gt;Example: For an image (1 tile) with 2 components (component 0 having 2
       decomposition levels and component 1 having 3 decomposition levels), the
       first (tile-) component has 3 resolution levels and the second one has 4
       resolution levels, whereas the image has only 3 resolution levels
       available.&lt;/p&gt;&lt;p&gt;This implementation does not support progressive data: Data is
       considered to be non-progressive (i.e. &quot;final&quot; data) and the 'progressive'
       attribute of the 'DataBlk' class is always set to false, see the 'DataBlk'
       class.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.InverseWT.html">InverseWT</a></h4>
      <section><p>This abstract class extends the WaveletTransform one with the specifics of
inverse wavelet transforms.</p>
<pre><code>       &lt;p&gt;The image can be reconstructed at different resolution levels. This is
       controlled by the setResLevel() method. All the image, tile and component
       dimensions are relative the the resolution level being used. The number of
       resolution levels indicates the number of wavelet recompositions that will
       be used, if it is equal as the number of decomposition levels then the full
       resolution image is reconstructed.&lt;/p&gt;&lt;p&gt;It is assumed in this class that all tiles and components the same
       reconstruction resolution level. If that where not the case the
       implementing class should have additional data structures to store those
       values for each tile. However, the 'recResLvl' member variable always
       contain the values applicable to the current tile, since many methods
       implemented here rely on them.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.MultiResImgDataAdapter.html">MultiResImgDataAdapter</a></h4>
      <section><p>This class provides a default implementation for the methods of the
'MultiResImgData' interface. The default implementation consists just in
returning the value of the source, where the source is another
'MultiResImgData' object.</p>
<pre><code>       &lt;p&gt;This abstract class can be used to facilitate the development of other
       classes that implement 'MultiResImgData'. For example a dequantizer can
       inherit from this class and all the trivial methods do not have to be
       reimplemented.&lt;/p&gt;&lt;p&gt;If the default implementation of a method provided in this class does
       not suit a particular implementation of the 'MultiResImgData' interface,
       the method can be overriden to implement the proper behaviour.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SubbandSyn.html">SubbandSyn</a></h4>
      <section><p>This class represents a subband in a tree structure that describes the
subband decomposition for a wavelet transform, specifically for the
syhthesis 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>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SynWTFilter.html">SynWTFilter</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SynWTFilterFloat.html">SynWTFilterFloat</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SynWTFilterFloatLift9x7.html">SynWTFilterFloatLift9x7</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SynWTFilterInt.html">SynWTFilterInt</a></h4>
      <section></section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SynWTFilterIntLift5x3.html">SynWTFilterIntLift5x3</a></h4>
      <section><p>This class inherits from the synthesis wavelet filter definition for int
data. It implements the inverse wavelet transform specifically for the 5x3
filter. The implementation is based on the lifting scheme.</p>
<pre><code>       &lt;p&gt;See the SynWTFilter 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.synthesis.SynWTFilterSpec.html">SynWTFilterSpec</a></h4>
      <section><p>This class extends ModuleSpec class for synthesis filters specification
holding purpose.</p>
</section>
    <h3 id="interfaces">
Interfaces
</h3>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.CBlkWTDataSrcDec.html">CBlkWTDataSrcDec</a></h4>
      <section><p>This abstract class defines methods to transfer wavelet data in a
code-block by code-block basis, for the decoder side. In each call to
'getCodeBlock()' or 'getInternCodeBlock()' 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, in general, for the inverse wavelet
       transforms. See the 'InverseWT' class.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.InvWT.html">InvWT</a></h4>
      <section><p>This interface extends the WaveletTransform with the specifics of inverse
wavelet transforms. Classes that implement inverse 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 inverse wavelet transform. Different data transfer methods are
       envisageable for different transforms.&lt;/p&gt;
</code></pre>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.InvWTData.html">InvWTData</a></h4>
      <section><p>This interface extends the MultiResImgData interface with the methods that
are necessary for inverse wavelet data (i.e. data that is the source to an
inverse wavlet trasnform).</p>
</section>
      <h4><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.MultiResImgData.html">MultiResImgData</a></h4>
      <section><p>This interface defines methods to access image attributes (width, height,
number of components, etc.) of multiresolution images, such as those
resulting from an inverse wavelet transform. The image can be tiled or not
(i.e. if the image is not tiled then there is only 1 tile). It should be
implemented by all classes that provide multi-resolution image data, such
as entropy decoders, dequantizers, etc. This interface, however, does not
define methods to transfer image data (i.e. pixel data), that is defined by
other interfaces, such as 'CBlkQuantDataSrcDec'.</p>
<pre><code>       &lt;p&gt;This interface is very similar to the 'ImgData' one. It differs only by
       the fact that it handles multiple resolutions.&lt;/p&gt;&lt;p&gt;Resolution levels are counted from 0 to L. Resolution level 0 is the
       lower resolution, while L is the maximum resolution level, or full
       resolution, which is returned by 'getMaxResLvl()'. Note that there are L+1
       resolution levels available.&lt;/p&gt;&lt;p&gt;As in the 'ImgData' interface a multi-resolution image lies on top of a
       canvas. The canvas coordinates are mapped from the full resolution
       reference grid (i.e. resolution level 'L' reference grid) to a resolution
       level 'l' reference grid by '(x_l,y_l) =
       (ceil(x_l/2^(L-l)),ceil(y_l/2^(L-l)))', where '(x,y)' are the full
       resolution reference grid coordinates and '(x_l,y_l)' are the level 'l'
       reference grid coordinates.&lt;/p&gt;&lt;p&gt;For details on the canvas system and its implications consult the
       'ImgData' interface.&lt;/p&gt;&lt;p&gt;Note that tile sizes may not be obtained by simply dividing the tile
       size in the reference grid by the subsampling factor.&lt;/p&gt;
</code></pre>
</section>


</div>
