Class AnWTFilterFloatLift9x7

  • All Implemented Interfaces:
    WaveletFilter

    public class AnWTFilterFloatLift9x7
    extends AnWTFilterFloat
    This class inherits from the analysis wavelet filter definition for int data. It implements the forward wavelet transform specifically for the 9x7 filter. The implementation is based on the lifting scheme.

    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.

    See Also:
    AnWTFilter, AnWTFilterFloat
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static float ALPHA
      The value of the first lifting step coefficient
      static float BETA
      The value of the second lifting step coefficient
      static float DELTA
      The value of the fourth lifting step coefficient
      static float GAMMA
      The value of the third lifting step coefficient
      static float KH
      The value of the high-pass subband normalization factor
      static float KL
      The value of the low-pass subband normalization factor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void analyze_hpf​(float[] inSig, int inOff, int inLen, int inStep, float[] lowSig, int lowOff, int lowStep, float[] highSig, int highOff, int highStep)
      An implementation of the analyze_hpf() method that works on int data, for the forward 9x7 wavelet transform using the lifting scheme.
      void analyze_lpf​(float[] inSig, int inOff, int inLen, int inStep, float[] lowSig, int lowOff, int lowStep, float[] highSig, int highOff, int highStep)
      An implementation of the analyze_lpf() method that works on int data, for the forward 9x7 wavelet transform using the lifting scheme.
      boolean equals​(Object obj)
      Tests if the 'obj' object is the same filter as this one.
      int getAnHighNegSupport()
      Returns the negative support of the high-pass analysis filter.
      int getAnHighPosSupport()
      Returns the positive support of the high-pass analysis filter.
      int getAnLowNegSupport()
      Returns the negative support of the low-pass analysis filter.
      int getAnLowPosSupport()
      Returns the positive support of the low-pass analysis filter.
      int getFilterType()
      Returns the type of filter used according to the FilterTypes interface(W9x7).
      float[] getHPSynthesisFilter()
      Returns the time-reversed high-pass synthesis waveform of the filter, which is the high-pass filter.
      int getImplType()
      Returns the implementation type of this filter, as defined in this class, such as WT_FILTER_INT_LIFT, WT_FILTER_FLOAT_LIFT, WT_FILTER_FLOAT_CONVOL.
      float[] getLPSynthesisFilter()
      Returns the time-reversed low-pass synthesis waveform of the filter, which is the low-pass filter.
      int getSynHighNegSupport()
      Returns the negative support of the high-pass synthesis filter.
      int getSynHighPosSupport()
      Returns the positive support of the high-pass synthesis filter.
      int getSynLowNegSupport()
      Returns the negative support of the low-pass synthesis filter.
      int getSynLowPosSupport()
      Returns the positive support of the low-pass synthesis filter.
      boolean isReversible()
      Returns the reversibility of the filter.
      boolean isSameAsFullWT​(int tailOvrlp, int headOvrlp, int inLen)
      Returns true if the wavelet filter computes or uses the same "inner" subband coefficient as the full frame wavelet transform, and false otherwise.
      String toString()
      Debugging method
    • Field Detail

      • ALPHA

        public static final float ALPHA
        The value of the first lifting step coefficient
        See Also:
        Constant Field Values
      • BETA

        public static final float BETA
        The value of the second lifting step coefficient
        See Also:
        Constant Field Values
      • GAMMA

        public static final float GAMMA
        The value of the third lifting step coefficient
        See Also:
        Constant Field Values
      • DELTA

        public static final float DELTA
        The value of the fourth lifting step coefficient
        See Also:
        Constant Field Values
      • KL

        public static final float KL
        The value of the low-pass subband normalization factor
        See Also:
        Constant Field Values
      • KH

        public static final float KH
        The value of the high-pass subband normalization factor
        See Also:
        Constant Field Values
    • Constructor Detail

      • AnWTFilterFloatLift9x7

        public AnWTFilterFloatLift9x7()
    • Method Detail

      • analyze_lpf

        public void analyze_lpf​(float[] inSig,
                                int inOff,
                                int inLen,
                                int inStep,
                                float[] lowSig,
                                int lowOff,
                                int lowStep,
                                float[] highSig,
                                int highOff,
                                int highStep)
        An implementation of the analyze_lpf() method that works on int data, for the forward 9x7 wavelet transform using the lifting scheme. See the general description of the analyze_lpf() method in the AnWTFilter class for more details.

        The coefficients of the first lifting step are [ALPHA 1 ALPHA].

        The coefficients of the second lifting step are [BETA 1 BETA].

        The coefficients of the third lifting step are [GAMMA 1 GAMMA].

        The coefficients of the fourth lifting step are [DELTA 1 DELTA].

        The low-pass and high-pass subbands are normalized by respectively a factor of KL and a factor of KH

        Specified by:
        analyze_lpf in class AnWTFilterFloat
        Parameters:
        inSig - This is the array that contains the input signal.
        inOff - This is the index in inSig of the first sample to filter.
        inLen - This is the number of samples in the input signal to filter.
        inStep - This is the step, or interleave factor, of the input signal samples in the inSig array.
        lowSig - This is the array where the low-pass output signal is placed.
        lowOff - This is the index in lowSig of the element where to put the first low-pass output sample.
        lowStep - This is the step, or interleave factor, of the low-pass output samples in the lowSig array.
        highSig - This is the array where the high-pass output signal is placed.
        highOff - This is the index in highSig of the element where to put the first high-pass output sample.
        highStep - This is the step, or interleave factor, of the high-pass output samples in the highSig array.
        See Also:
        AnWTFilter.analyze_lpf(java.lang.Object, int, int, int, java.lang.Object, int, int, java.lang.Object, int, int)
      • analyze_hpf

        public void analyze_hpf​(float[] inSig,
                                int inOff,
                                int inLen,
                                int inStep,
                                float[] lowSig,
                                int lowOff,
                                int lowStep,
                                float[] highSig,
                                int highOff,
                                int highStep)
        An implementation of the analyze_hpf() method that works on int data, for the forward 9x7 wavelet transform using the lifting scheme. See the general description of the analyze_hpf() method in the AnWTFilter class for more details.

        The coefficients of the first lifting step are [ALPHA 1 ALPHA].

        The coefficients of the second lifting step are [BETA 1 BETA].

        The coefficients of the third lifting step are [GAMMA 1 GAMMA].

        The coefficients of the fourth lifting step are [DELTA 1 DELTA].

        The low-pass and high-pass subbands are normalized by respectively a factor of KL and a factor of KH

        Specified by:
        analyze_hpf in class AnWTFilterFloat
        Parameters:
        inSig - This is the array that contains the input signal.
        inOff - This is the index in inSig of the first sample to filter.
        inLen - This is the number of samples in the input signal to filter.
        inStep - This is the step, or interleave factor, of the input signal samples in the inSig array.
        lowSig - This is the array where the low-pass output signal is placed.
        lowOff - This is the index in lowSig of the element where to put the first low-pass output sample.
        lowStep - This is the step, or interleave factor, of the low-pass output samples in the lowSig array.
        highSig - This is the array where the high-pass output signal is placed.
        highOff - This is the index in highSig of the element where to put the first high-pass output sample.
        highStep - This is the step, or interleave factor, of the high-pass output samples in the highSig array.
        See Also:
        AnWTFilter.analyze_hpf(java.lang.Object, int, int, int, java.lang.Object, int, int, java.lang.Object, int, int)
      • getAnLowNegSupport

        public int getAnLowNegSupport()
        Returns the negative support of the low-pass analysis filter. That is the number of taps of the filter in the negative direction.
        Returns:
        2
      • getAnLowPosSupport

        public int getAnLowPosSupport()
        Returns the positive support of the low-pass analysis filter. That is the number of taps of the filter in the negative direction.
        Returns:
        The number of taps of the low-pass analysis filter in the positive direction
      • getAnHighNegSupport

        public int getAnHighNegSupport()
        Returns the negative support of the high-pass analysis filter. That is the number of taps of the filter in the negative direction.
        Returns:
        The number of taps of the high-pass analysis filter in the negative direction
      • getAnHighPosSupport

        public int getAnHighPosSupport()
        Returns the positive support of the high-pass analysis filter. That is the number of taps of the filter in the negative direction.
        Returns:
        The number of taps of the high-pass analysis filter in the positive direction
      • getSynLowNegSupport

        public int getSynLowNegSupport()
        Returns the negative support of the low-pass synthesis filter. That is the number of taps of the filter in the negative direction.

        A MORE PRECISE DEFINITION IS NEEDED

        Returns:
        The number of taps of the low-pass synthesis filter in the negative direction
      • getSynLowPosSupport

        public int getSynLowPosSupport()
        Returns the positive support of the low-pass synthesis filter. That is the number of taps of the filter in the negative direction.

        A MORE PRECISE DEFINITION IS NEEDED

        Returns:
        The number of taps of the low-pass synthesis filter in the positive direction
      • getSynHighNegSupport

        public int getSynHighNegSupport()
        Returns the negative support of the high-pass synthesis filter. That is the number of taps of the filter in the negative direction.

        A MORE PRECISE DEFINITION IS NEEDED

        Returns:
        The number of taps of the high-pass synthesis filter in the negative direction
      • getSynHighPosSupport

        public int getSynHighPosSupport()
        Returns the positive support of the high-pass synthesis filter. That is the number of taps of the filter in the negative direction.

        A MORE PRECISE DEFINITION IS NEEDED

        Returns:
        The number of taps of the high-pass synthesis filter in the positive direction
      • getLPSynthesisFilter

        public float[] getLPSynthesisFilter()
        Returns the time-reversed low-pass synthesis waveform of the filter, which is the low-pass filter. This is the time-reversed impulse response of the low-pass synthesis filter. It is used to calculate the L2-norm of the synthesis basis functions for a particular subband (also called energy weight).

        The returned array may not be modified (i.e. a reference to the internal array may be returned by the implementation of this method).

        Specified by:
        getLPSynthesisFilter in class AnWTFilter
        Returns:
        The time-reversed low-pass synthesis waveform of the filter.
      • getHPSynthesisFilter

        public float[] getHPSynthesisFilter()
        Returns the time-reversed high-pass synthesis waveform of the filter, which is the high-pass filter. This is the time-reversed impulse response of the high-pass synthesis filter. It is used to calculate the L2-norm of the synthesis basis functions for a particular subband (also called energy weight).

        The returned array may not be modified (i.e. a reference to the internal array may be returned by the implementation of this method).

        Specified by:
        getHPSynthesisFilter in class AnWTFilter
        Returns:
        The time-reversed high-pass synthesis waveform of the filter.
      • getImplType

        public int getImplType()
        Returns the implementation type of this filter, as defined in this class, such as WT_FILTER_INT_LIFT, WT_FILTER_FLOAT_LIFT, WT_FILTER_FLOAT_CONVOL.
        Returns:
        WT_FILTER_INT_LIFT.
      • isReversible

        public boolean isReversible()
        Returns the reversibility of the filter. A filter is considered reversible if it is suitable for lossless coding.
        Returns:
        true since the 9x7 is reversible, provided the appropriate rounding is performed.
      • isSameAsFullWT

        public boolean isSameAsFullWT​(int tailOvrlp,
                                      int headOvrlp,
                                      int inLen)
        Returns true if the wavelet filter computes or uses the same "inner" subband coefficient as the full frame wavelet transform, and false otherwise. In particular, for block based transforms with reduced overlap, this method should return false. The term "inner" indicates that this applies only with respect to the coefficient that are not affected by image boundaries processings such as symmetric extension, since there is not reference method for this.

        The result depends on the length of the allowed overlap when compared to the overlap required by the wavelet filter. It also depends on how overlap processing is implemented in the wavelet filter.

        Parameters:
        tailOvrlp - This is the number of samples in the input signal before the first sample to filter that can be used for overlap.
        headOvrlp - This is the number of samples in the input signal after the last sample to filter that can be used for overlap.
        inLen - This is the lenght of the input signal to filter.The required number of samples in the input signal after the last sample depends on the length of the input signal.
        Returns:
        true if both overlaps are greater than 2, and correct processing is applied in the analyze() method.
      • equals

        public boolean equals​(Object obj)
        Tests if the 'obj' object is the same filter as this one. Two filters are the same if the same filter code should be output for both filters by the encodeFilterCode() method.

        Currently the implementation of this method only tests if 'obj' is also of the class AnWTFilterFloatLift9x7

        Overrides:
        equals in class Object
        Parameters:
        obj - The object against which to test inequality.
      • getFilterType

        public int getFilterType()
        Returns the type of filter used according to the FilterTypes interface(W9x7).
        Specified by:
        getFilterType in class AnWTFilter
        Returns:
        The filter type.
        See Also:
        FilterTypes