# CSJ2K.j2k.wavelet.Subband

## Content

<div class="doc-site-dotnet-api-container">



  <h1 id="CSJ2K_j2k_wavelet_Subband" data-uid="CSJ2K.j2k.wavelet.Subband" class="text-break">Subband Class
</h1>
  <div class="markdown level0 summary"><p>This abstract class represents a subband in a bidirectional tree structure
that describes the subband decomposition for a wavelet transform. This
class is implemented by the SubbandAn and SubbandSyn classes, which are for
the analysis and synthesis sides respectively.</p>
<pre><code>       &lt;p&gt;The element can be either a node or a leaf of the tree. If it is a node,
       it has 4 descendants (LL, HL, LH and HH). If it is a leaf, it has no
       descendant.&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, for obvious
       reasons, has no parent (i.e. it is null).&lt;/p&gt;
</code></pre>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
    <div class="level1"><span class="xref">Subband</span></div>
      <div class="level2"><a class="xref" href="CSJ2K.j2k.wavelet.analysis.SubbandAn.html">SubbandAn</a></div>
      <div class="level2"><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.SubbandSyn.html">SubbandSyn</a></div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="CSJ2K.j2k.wavelet.html">CSJ2K.j2k.wavelet</a></h6>
  <h6><strong>Assembly</strong>: C1.WPF.ReportViewer.4.6.2.dll</h6>
  <h5 id="CSJ2K_j2k_wavelet_Subband_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public abstract class Subband</code></pre>
  </div>
  <div class="codewrapper">
    <pre><code class="lang-vbnet hljs">Public MustInherit Class Subband</code></pre>
  </div>
  <h3 id="constructors">Constructors
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband__ctor" data-uid="CSJ2K.j2k.wavelet.Subband.#ctor">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.-ctor.html#CSJ2K_j2k_wavelet_Subband__ctor">Subband()</a>
        </td>
        <td class="markdown level1 summary"><p>Creates a Subband element with all the default values. The dimensions
are (0,0), the upper left corner is (0,0) and the upper-left corner
with respect to the canvas is (0,0) too.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband__ctor_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_WaveletFilter___CSJ2K_j2k_wavelet_WaveletFilter___" data-uid="CSJ2K.j2k.wavelet.Subband.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,CSJ2K.j2k.wavelet.WaveletFilter[],CSJ2K.j2k.wavelet.WaveletFilter[])">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.-ctor.html#CSJ2K_j2k_wavelet_Subband__ctor_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_WaveletFilter___CSJ2K_j2k_wavelet_WaveletFilter___">Subband(int, int, int, int, int, WaveletFilter[], WaveletFilter[])</a>
        </td>
        <td class="markdown level1 summary"><p>Creates the top-level node and the entire subband tree, with the
top-level dimensions, the number of decompositions, and the
decomposition tree as specified.</p>
<pre><code>       &lt;p&gt;For the analysis subband gain calculation it is assumed that
       analysis filters are normalized with a DC gain of 1 and a Nyquist gain
       of 2.&lt;/p&gt;&lt;p&gt;This constructor does not initialize the value of the magBits member
       variable. This variable is normally initialized by the quantizer, on
       the encoder side, or the bit stream reader, on the decoder side.&lt;/p&gt;
</code></pre>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="fields">Fields
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_WT_ORIENT_HH" data-uid="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_HH">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_HH.html">WT_ORIENT_HH</a>
        </td>
        <td class="markdown level1 summary"><p>The ID for the HH orientation</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_WT_ORIENT_HL" data-uid="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_HL">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_HL.html">WT_ORIENT_HL</a>
        </td>
        <td class="markdown level1 summary"><p>The ID for the HL (horizontal high-pass) orientation</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_WT_ORIENT_LH" data-uid="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_LH">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_LH.html">WT_ORIENT_LH</a>
        </td>
        <td class="markdown level1 summary"><p>The ID for the LH (vertical high-pass) orientation</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_WT_ORIENT_LL" data-uid="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_LL">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.WT_ORIENT_LL.html">WT_ORIENT_LL</a>
        </td>
        <td class="markdown level1 summary"><p>The ID for the LL orientation</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_anGainExp" data-uid="CSJ2K.j2k.wavelet.Subband.anGainExp">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.anGainExp.html">anGainExp</a>
        </td>
        <td class="markdown level1 summary"><p>The base 2 exponent of the analysis gain of the subband. The analysis
gain of a subband is defined as the gain of the previous subband
(i.e. the one from which this one was obtained) multiplied by the line
gain and by the column gain. The line (column) gain is the gain of the
line (column) filter that was used to obtain it, which is the DC gain
for a low-pass filter and the Nyquist gain for a high-pass filter. It
is 0 by default.</p>
<pre><code>       &lt;p&gt;Using the base 2 exponent of the value contrains the possible gains
       to powers of 2. However this is perfectly compatible to the filter
       normalization policy assumed here. See the split() method for more
       details.&lt;/p&gt;
</code></pre>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_h" data-uid="CSJ2K.j2k.wavelet.Subband.h">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.h.html">h</a>
        </td>
        <td class="markdown level1 summary"><p>The height of the subband</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_isNode" data-uid="CSJ2K.j2k.wavelet.Subband.isNode">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.isNode.html">isNode</a>
        </td>
        <td class="markdown level1 summary"><p>True if it is a node in the tree, false if it is a leaf.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_level" data-uid="CSJ2K.j2k.wavelet.Subband.level">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.level.html">level</a>
        </td>
        <td class="markdown level1 summary"><p>The level in the tree to which this subband belongs, which is the
number of performed wavelet decompositions to get this subband. It is 0
for the top-level (i.e. root) node.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_nomCBlkH" data-uid="CSJ2K.j2k.wavelet.Subband.nomCBlkH">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.nomCBlkH.html">nomCBlkH</a>
        </td>
        <td class="markdown level1 summary"><p>The nominal code-block height</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_nomCBlkW" data-uid="CSJ2K.j2k.wavelet.Subband.nomCBlkW">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.nomCBlkW.html">nomCBlkW</a>
        </td>
        <td class="markdown level1 summary"><p>The nominal code-block width</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_numCb" data-uid="CSJ2K.j2k.wavelet.Subband.numCb">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.numCb.html">numCb</a>
        </td>
        <td class="markdown level1 summary"><p>The number of code-blocks (in both directions) contained in this
subband.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_orientation" data-uid="CSJ2K.j2k.wavelet.Subband.orientation">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.orientation.html">orientation</a>
        </td>
        <td class="markdown level1 summary"><p>The orientation of this subband (WT_ORIENT_LL, WT_ORIENT_HL,
WT_ORIENT_LH, WT_ORIENT_HH).</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_resLvl" data-uid="CSJ2K.j2k.wavelet.Subband.resLvl">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.resLvl.html">resLvl</a>
        </td>
        <td class="markdown level1 summary"><p>The resolution level to which this subband contributes. 0 is the
smallest resolution level (the one with the lowest frequency LL
subband).</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_sbandIdx" data-uid="CSJ2K.j2k.wavelet.Subband.sbandIdx">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.sbandIdx.html">sbandIdx</a>
        </td>
        <td class="markdown level1 summary"><p>The subband index within its resolution level. This value uniquely
identifies a subband within a resolution level and a decomposition
level within it. Note that only leaf elements represent &quot;real&quot;
subbands, while node elements represent only intermediate stages.</p>
<pre><code>       &lt;p&gt;It is defined recursively. The root node gets a value of 0. For a
       given node, with a subband index 'b', its LL descendant gets 4*b, its
       HL descendant 4*b+1, its LH descendant 4*b+2, and its HH descendant
       4*b+3, for their subband indexes.&lt;/p&gt;
</code></pre>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_ulcx" data-uid="CSJ2K.j2k.wavelet.Subband.ulcx">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.ulcx.html">ulcx</a>
        </td>
        <td class="markdown level1 summary"><p>The horizontal coordinate of the upper-left corner of the subband, with
respect to the canvas origin, in the component's grid and subband's
decomposition level. This is the real horizontal index of the first
column of this subband. If even the horizontal decomposition of this
subband should be done with the low-pass-first convention. If odd it
should be done with the high-pass-first convention.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_ulcy" data-uid="CSJ2K.j2k.wavelet.Subband.ulcy">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.ulcy.html">ulcy</a>
        </td>
        <td class="markdown level1 summary"><p>The vertical coordinate of the upper-left corner of the subband, with
respect to the canvas origin, in the component's grid and subband's
decomposition level. This is the real vertical index of the first
column of this subband. If even the vertical decomposition of this
subband should be done with the low-pass-first convention. If odd it
should be done with the high-pass-first convention.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_ulx" data-uid="CSJ2K.j2k.wavelet.Subband.ulx">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.ulx.html">ulx</a>
        </td>
        <td class="markdown level1 summary"><p>The horizontal coordinate of the upper-left corner of the subband</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_uly" data-uid="CSJ2K.j2k.wavelet.Subband.uly">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.uly.html">uly</a>
        </td>
        <td class="markdown level1 summary"><p>The vertical coordinate of the upper-left corner of the subband</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_w" data-uid="CSJ2K.j2k.wavelet.Subband.w">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.w.html">w</a>
        </td>
        <td class="markdown level1 summary"><p>The width of the subband</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="properties">Properties
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_HH" data-uid="CSJ2K.j2k.wavelet.Subband.HH">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.HH.html#CSJ2K_j2k_wavelet_Subband_HH">HH</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the HH child subband of this subband.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_HL" data-uid="CSJ2K.j2k.wavelet.Subband.HL">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.HL.html#CSJ2K_j2k_wavelet_Subband_HL">HL</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the HL (horizontal high-pass) child subband of this subband.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_HorWFilter" data-uid="CSJ2K.j2k.wavelet.Subband.HorWFilter">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.HorWFilter.html#CSJ2K_j2k_wavelet_Subband_HorWFilter">HorWFilter</a>
        </td>
        <td class="markdown level1 summary"><p>This function returns the horizontal wavelet filter relevant to this
subband</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_LH" data-uid="CSJ2K.j2k.wavelet.Subband.LH">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.LH.html#CSJ2K_j2k_wavelet_Subband_LH">LH</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the LH (vertical high-pass) child subband of this subband.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_LL" data-uid="CSJ2K.j2k.wavelet.Subband.LL">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.LL.html#CSJ2K_j2k_wavelet_Subband_LL">LL</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the LL child subband of this subband.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_NextResLevel" data-uid="CSJ2K.j2k.wavelet.Subband.NextResLevel">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.NextResLevel.html#CSJ2K_j2k_wavelet_Subband_NextResLevel">NextResLevel</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the first leaf subband element in the next higher resolution
level.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_Parent" data-uid="CSJ2K.j2k.wavelet.Subband.Parent">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.Parent.html#CSJ2K_j2k_wavelet_Subband_Parent">Parent</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the parent of this subband. The parent of a subband is the
subband from which this one was obtained by decomposition. The root
element has no parent subband (null).</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_VerWFilter" data-uid="CSJ2K.j2k.wavelet.Subband.VerWFilter">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.VerWFilter.html#CSJ2K_j2k_wavelet_Subband_VerWFilter">VerWFilter</a>
        </td>
        <td class="markdown level1 summary"><p>This function returns the vertical wavelet filter relevant to this
subband</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_ToString" data-uid="CSJ2K.j2k.wavelet.Subband.ToString">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.ToString.html#CSJ2K_j2k_wavelet_Subband_ToString">ToString()</a>
        </td>
        <td class="markdown level1 summary"><p>Returns subband informations in a string.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_getSubband_System_Int32_System_Int32_" data-uid="CSJ2K.j2k.wavelet.Subband.getSubband(System.Int32,System.Int32)">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.getSubband.html#CSJ2K_j2k_wavelet_Subband_getSubband_System_Int32_System_Int32_">getSubband(int, int)</a>
        </td>
        <td class="markdown level1 summary"><p>Returns a reference to the Subband element to which the specified point
belongs. The specified point must be inside this (i.e. the one defined
by this object) subband. This method searches through the tree.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_getSubbandByIdx_System_Int32_System_Int32_" data-uid="CSJ2K.j2k.wavelet.Subband.getSubbandByIdx(System.Int32,System.Int32)">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.getSubbandByIdx.html#CSJ2K_j2k_wavelet_Subband_getSubbandByIdx_System_Int32_System_Int32_">getSubbandByIdx(int, int)</a>
        </td>
        <td class="markdown level1 summary"><p>Returns a subband element in the tree, given its resolution level and
subband index. This method searches through the tree.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_initChilds" data-uid="CSJ2K.j2k.wavelet.Subband.initChilds">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.initChilds.html#CSJ2K_j2k_wavelet_Subband_initChilds">initChilds()</a>
        </td>
        <td class="markdown level1 summary"><p>Initializes the childs of this node with the correct values. The sizes
of the child subbands are calculated by taking into account the
position of the subband in the canvas.</p>
<pre><code>       &lt;p&gt;For the analysis subband gain calculation it is assumed that
       analysis filters are normalized with a DC gain of 1 and a Nyquist gain
       of 2.&lt;/p&gt;
</code></pre>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_nextSubband" data-uid="CSJ2K.j2k.wavelet.Subband.nextSubband">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.nextSubband.html#CSJ2K_j2k_wavelet_Subband_nextSubband">nextSubband()</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the next subband in the same resolution level, following the
subband index order. If already at the last subband then null is
returned. If this subband is not a leaf an IllegalArgumentException is
thrown.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_wavelet_Subband_split_CSJ2K_j2k_wavelet_WaveletFilter_CSJ2K_j2k_wavelet_WaveletFilter_" data-uid="CSJ2K.j2k.wavelet.Subband.split(CSJ2K.j2k.wavelet.WaveletFilter,CSJ2K.j2k.wavelet.WaveletFilter)">
          <a class="xref" href="CSJ2K.j2k.wavelet.Subband.split.html#CSJ2K_j2k_wavelet_Subband_split_CSJ2K_j2k_wavelet_WaveletFilter_CSJ2K_j2k_wavelet_WaveletFilter_">split(WaveletFilter, WaveletFilter)</a>
        </td>
        <td class="markdown level1 summary"><p>Splits the current subband in its four subbands. This creates the four
childs (LL, HL, LH and HH) and converts the leaf in a node.</p>
</td>
      </tr>
    </tbody>
  </table>

</div>
