Beispiel #1
0
    def scales(self):
        """Get the scales of each coefficient.

        Returns
        -------
        scales : ``range`` element
            The scale of each coefficient, given by an integer. 0 for the
            lowest resolution and self.nlevels for the highest.
        """
        if self.impl == 'pywt':
            if self.__variant == 'forward':
                discr_space = self.domain
                wavelet_space = self.range
            else:
                discr_space = self.range
                wavelet_space = self.domain

            shapes = pywt_coeff_shapes(discr_space.shape, self.pywt_wavelet,
                                       self.nlevels, self.pywt_pad_mode)
            coeff_list = [np.ones(shapes[0]) * 0]
            dcoeffs_per_scale = 2**discr_space.ndim - 1
            for i in range(1, 1 + len(shapes[1:])):
                coeff_list.append(
                    (np.ones(shapes[i]) * i, ) * dcoeffs_per_scale)
            coeffs = pywt_flat_array_from_coeffs(coeff_list)
            return wavelet_space.element(coeffs)
        else:
            raise RuntimeError("bad `impl` '{}'".format(self.impl))
Beispiel #2
0
    def scales(self):
        """Get the scales of each coefficient.

        Returns
        -------
        scales : ``range`` element
            The scale of each coefficient, given by an integer. 0 for the
            lowest resolution and self.nlevels for the highest.
        """
        if self.impl == 'pywt':
            if self.__variant == 'forward':
                discr_space = self.domain
                wavelet_space = self.range
            else:
                discr_space = self.range
                wavelet_space = self.domain

            shapes = pywt_coeff_shapes(discr_space.shape, self.pywt_wavelet,
                                       self.nlevels, self.pywt_pad_mode)
            coeff_list = [np.ones(shapes[0]) * 0]
            dcoeffs_per_scale = 2 ** discr_space.ndim - 1
            for i in range(1, 1 + len(shapes[1:])):
                coeff_list.append(
                    (np.ones(shapes[i]) * i,) * dcoeffs_per_scale)
            coeffs = pywt_flat_array_from_coeffs(coeff_list)
            return wavelet_space.element(coeffs)
        else:
            raise RuntimeError("bad `impl` '{}'".format(self.impl))
Beispiel #3
0
 def _call(self, coeffs):
     """Return the inverse wavelet transform of ``coeffs``."""
     if self.impl == 'pywt':
         shapes = pywt_coeff_shapes(self.range.shape, self.pywt_wavelet,
                                    self.nlevels, self.pywt_pad_mode)
         coeff_list = pywt_coeffs_from_flat_array(coeffs, shapes)
         return pywt_multi_level_recon(
             coeff_list, recon_shape=self.range.shape,
             wavelet=self.pywt_wavelet, mode=self.pywt_pad_mode)
     else:
         raise RuntimeError("bad `impl` '{}'".format(self.impl))
Beispiel #4
0
 def _call(self, coeffs):
     """Return the inverse wavelet transform of ``coeffs``."""
     if self.impl == 'pywt':
         shapes = pywt_coeff_shapes(self.range.shape, self.pywt_wavelet,
                                    self.nlevels, self.pywt_pad_mode)
         coeff_list = pywt_coeffs_from_flat_array(coeffs, shapes)
         return pywt_multi_level_recon(
             coeff_list, recon_shape=self.range.shape,
             wavelet=self.pywt_wavelet, mode=self.pywt_pad_mode)
     else:
         raise RuntimeError("bad `impl` '{}'".format(self.impl))
Beispiel #5
0
def test_pywt_coeff_shapes(shape_setup):
    wavelet, pywt_mode, nlevels, image_shape, coeff_shapes = shape_setup
    shapes = pywt_coeff_shapes(image_shape, wavelet, nlevels, pywt_mode)
    assert all_equal(shapes, coeff_shapes)
def test_pywt_coeff_shapes(shape_setup):
    wavelet, pywt_mode, nlevels, image_shape, coeff_shapes = shape_setup
    shapes = pywt_coeff_shapes(image_shape, wavelet, nlevels, pywt_mode)
    assert all_equal(shapes, coeff_shapes)