Example #1
0
 def _decompose(self):
     if self.is_empty:
         data_ll, data_lh, data_hl, data_hh = None, None, None, None
     else:
         data_ll, (data_lh, data_hl, data_hh) = dwt2(self.data, self.wavelet, self.mode)
     self._create_subnode(self.LL, data_ll)
     self._create_subnode(self.LH, data_lh)
     self._create_subnode(self.HL, data_hl)
     self._create_subnode(self.HH, data_hh)
     return self._get_node(self.LL), self._get_node(self.LH), self._get_node(self.HL), self._get_node(self.HH)
Example #2
0
 def _decompose(self):
     if self.is_empty:
         data_ll, data_lh, data_hl, data_hh = None, None, None, None
     else:
         data_ll, (data_lh, data_hl,
                   data_hh) = dwt2(self.data, self.wavelet, self.mode)
     self._create_subnode(self.LL, data_ll)
     self._create_subnode(self.LH, data_lh)
     self._create_subnode(self.HL, data_hl)
     self._create_subnode(self.HH, data_hh)
     return self._get_node(self.LL), self._get_node(
         self.LH), self._get_node(self.HL), self._get_node(self.HH)
Example #3
0
def wavedec2(data, wavelet, mode='sym', level=None):
    """
    Multilevel 2D Discrete Wavelet Transform.
    
    data    - 2D input data
    wavelet - wavelet to use (Wavelet object or name string)
    mode    - signal extension mode, see MODES
    level   - decomposition level. If level is None then it will be
              calculated using `dwt_max_level` function .

    Returns coefficients list - [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)]
    """

    data = as_float_array(data)

    if len(data.shape) != 2:
        raise ValueError("Expected 2D input data.")

    if not isinstance(wavelet, Wavelet):
        wavelet = Wavelet(wavelet)

    if level is None:
        size = min(data.shape)
        level = dwt_max_level(size, wavelet.dec_len)
    elif level < 0:
        raise ValueError("Level value of %d is too low . Minimum level is 0." %
                         level)

    coeffs_list = []

    a = data
    for i in xrange(level):
        a, ds = dwt2(a, wavelet, mode)
        coeffs_list.append(ds)

    coeffs_list.append(a)
    coeffs_list.reverse()

    return coeffs_list
Example #4
0
def wavedec2(data, wavelet, mode='sym', level=None):
    """
    Multilevel 2D Discrete Wavelet Transform.

    data    - 2D input data
    wavelet - wavelet to use (Wavelet object or name string)
    mode    - signal extension mode, see MODES
    level   - decomposition level. If level is None then it will be
              calculated using `dwt_max_level` function .

    Returns coefficients list - [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)]
    """

    data = as_float_array(data)

    if len(data.shape) != 2:
        raise ValueError("Expected 2D input data.")

    if not isinstance(wavelet, Wavelet):
        wavelet = Wavelet(wavelet)

    if level is None:
        size = min(data.shape)
        level = dwt_max_level(size, wavelet.dec_len)
    elif level < 0:
        raise ValueError(
            "Level value of %d is too low . Minimum level is 0." % level)

    coeffs_list = []

    a = data
    for i in xrange(level):
        a, ds = dwt2(a, wavelet, mode)
        coeffs_list.append(ds)

    coeffs_list.append(a)
    coeffs_list.reverse()

    return coeffs_list