Class SubbandAn


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

    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.

    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.

    • Field Detail

      • parent

        public SubbandAn parent
        The reference to the parent of this subband. It is null for the root element. It is null by default.
      • subb_LL

        public SubbandAn subb_LL
        The reference to the LL subband resulting from the decomposition of this subband. It is null by default.
      • subb_HL

        public SubbandAn subb_HL
        The reference to the HL subband (horizontal high-pass) resulting from the decomposition of this subband. It is null by default.
      • subb_LH

        public SubbandAn subb_LH
        The reference to the LH subband (vertical high-pass) resulting from the decomposition of this subband. It is null by default.
      • subb_HH

        public SubbandAn subb_HH
        The reference to the HH subband resulting from the decomposition of this subband. It is null by default.
      • hFilter

        public AnWTFilter hFilter
        The horizontal analysis filter used to decompose this subband. This is applicable to "node" elements only. The default value is null.
      • vFilter

        public AnWTFilter vFilter
        The vertical analysis filter used to decompose this subband. This is applicable to "node" elements only. The default value is null.
      • l2Norm

        public float l2Norm
        The L2-norm of the synthesis basis waveform of this subband, applicable to "leafs" only. By default it is -1 (i.e. not calculated yet).
      • stepWMSE

        public float stepWMSE
        The contribution to the MSE or WMSE error that would result in the image if there was an error of exactly one quantization step size in the sample of the subband. This value is expressed relative to a nominal dynamic range in the image domain of exactly 1.0. This field contains valid data only after quantization 9See Quantizer).
        See Also:
        Quantizer
    • Constructor Detail

      • SubbandAn

        public SubbandAn()
        Creates a SubbandAn element with all the default values. The dimensions are (0,0) and the upper left corner is (0,0).
      • SubbandAn

        public SubbandAn​(int w,
                         int h,
                         int ulcx,
                         int ulcy,
                         int lvls,
                         WaveletFilter[] hfilters,
                         WaveletFilter[] vfilters)
        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.

        This constructor just calls the same constructor of the super class, and then calculates the L2-norm (or energy weight) of each leaf.

        This constructor does not initialize the value of the magBits or stepWMSE member variables. This variables are normally initialized by the quantizer (see Quantizer).

        Parameters:
        w - The top-level width
        h - The top-level height
        ulcx - The horizontal coordinate of the upper-left corner with respect to the canvas origin, in the component grid.
        ulcy - The vertical coordinate of the upper-left corner with respect to the canvas origin, in the component grid.
        lvls - The number of levels (or LL decompositions) in the tree.
        hfilters - The horizontal wavelet analysis filters for each resolution level, starting at resolution level 0.
        vfilters - The vertical wavelet analysis filters for each resolution level, starting at resolution level 0.
        See Also:
        Subband(int,int,int,int,int, WaveletFilter[],WaveletFilter[]), Quantizer
    • Method Detail

      • getParent

        public Subband getParent()
        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).
        Specified by:
        getParent in class Subband
        Returns:
        The parent subband, or null for the root one.
      • getLL

        public Subband getLL()
        Returns the LL child subband of this subband.
        Specified by:
        getLL in class Subband
        Returns:
        The LL child subband, or null if there are no childs.
      • getHL

        public Subband getHL()
        Returns the HL (horizontal high-pass) child subband of this subband.
        Specified by:
        getHL in class Subband
        Returns:
        The HL child subband, or null if there are no childs.
      • getLH

        public Subband getLH()
        Returns the LH (vertical high-pass) child subband of this subband.
        Specified by:
        getLH in class Subband
        Returns:
        The LH child subband, or null if there are no childs.
      • getHH

        public Subband getHH()
        Returns the HH child subband of this subband.
        Specified by:
        getHH in class Subband
        Returns:
        The HH child subband, or null if there are no childs.
      • split

        protected Subband split​(WaveletFilter hfilter,
                                WaveletFilter vfilter)
        Splits the current subband in its four subbands. It changes the status of this element (from a leaf to a node, and sets the filters), creates the childs and initializes them. An IllegalArgumentException is thrown if this subband is not a leaf.

        It uses the initChilds() method to initialize the childs.

        Specified by:
        split in class Subband
        Parameters:
        hfilter - The horizontal wavelet filter used to decompose this subband. It has to be a AnWTFilter object.
        vfilter - The vertical wavelet filter used to decompose this subband. It has to be a AnWTFilter object.
        Returns:
        A reference to the LL leaf (subb_LL).
        See Also:
        Subband.initChilds()
      • getHorWFilter

        public WaveletFilter getHorWFilter()
        This function returns the horizontal wavelet filter relevant to this subband
        Specified by:
        getHorWFilter in class Subband
        Returns:
        The horizontal wavelet filter
      • getVerWFilter

        public WaveletFilter getVerWFilter()
        This function returns the vertical wavelet filter relevant to this subband
        Specified by:
        getVerWFilter in class Subband
        Returns:
        The vertical wavelet filter