|
|
@ -18,7 +18,7 @@ class Test(unittest.TestCase):
|
|
|
|
assert_array_almost_equal(c.shape, a.shape)
|
|
|
|
assert_array_almost_equal(c.shape, a.shape)
|
|
|
|
assert_array_almost_equal(c, a)
|
|
|
|
assert_array_almost_equal(c, a)
|
|
|
|
|
|
|
|
|
|
|
|
def test_dct3(self):
|
|
|
|
def _test_3d(self, dct, idct, dctn, idctn):
|
|
|
|
a = np.array([[[0.51699637, 0.42946223, 0.89843545],
|
|
|
|
a = np.array([[[0.51699637, 0.42946223, 0.89843545],
|
|
|
|
[0.27853391, 0.8931508, 0.34319118],
|
|
|
|
[0.27853391, 0.8931508, 0.34319118],
|
|
|
|
[0.51984431, 0.09217771, 0.78764716]],
|
|
|
|
[0.51984431, 0.09217771, 0.78764716]],
|
|
|
@ -28,26 +28,37 @@ class Test(unittest.TestCase):
|
|
|
|
[[0.86098829, 0.07901332, 0.82169182],
|
|
|
|
[[0.86098829, 0.07901332, 0.82169182],
|
|
|
|
[0.12560088, 0.78210188, 0.69805434],
|
|
|
|
[0.12560088, 0.78210188, 0.69805434],
|
|
|
|
[0.33544628, 0.81540172, 0.9393219]]])
|
|
|
|
[0.33544628, 0.81540172, 0.9393219]]])
|
|
|
|
dct = wd.dct
|
|
|
|
|
|
|
|
d = dct(dct(dct(a).transpose(0, 2, 1)).transpose(2, 1, 0)
|
|
|
|
d = dct(dct(dct(a).transpose(0, 2, 1)).transpose(2, 1, 0)
|
|
|
|
).transpose(2, 1, 0).transpose(0, 2, 1)
|
|
|
|
).transpose(2, 1, 0).transpose(0, 2, 1)
|
|
|
|
d0 = wd.dctn(a)
|
|
|
|
d0 = dctn(a)
|
|
|
|
idct = wd.idct
|
|
|
|
e0 = idctn(d0)
|
|
|
|
e = idct(idct(idct(d).transpose(0, 2, 1)).transpose(2, 1, 0)
|
|
|
|
e = idct(idct(idct(d).transpose(0, 2, 1)).transpose(2, 1, 0)
|
|
|
|
).transpose(2, 1, 0).transpose(0, 2, 1)
|
|
|
|
).transpose(2, 1, 0).transpose(0, 2, 1)
|
|
|
|
assert_array_almost_equal(d, d0)
|
|
|
|
assert_array_almost_equal(d, d0)
|
|
|
|
|
|
|
|
assert_array_almost_equal(e, e0)
|
|
|
|
assert_array_almost_equal(a, e)
|
|
|
|
assert_array_almost_equal(a, e)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_3d_dct_idct_dctn_idctn(self):
|
|
|
|
|
|
|
|
self._test_3d(wd.dct, wd.idct, wd.dctn, wd.idctn)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_3d_dst_idst_dstn_idstn(self):
|
|
|
|
|
|
|
|
self._test_3d(wd.dst, wd.idst, wd.dstn, wd.idstn)
|
|
|
|
|
|
|
|
|
|
|
|
def test_dct_and_dctn(self):
|
|
|
|
def test_dct_and_dctn(self):
|
|
|
|
a = np.arange(12).reshape((3, -1))
|
|
|
|
self._test_1d(wd.dct, wd.idct, wd.dctn, wd.idctn)
|
|
|
|
|
|
|
|
|
|
|
|
y = wd.dct(a)
|
|
|
|
def test_dst_and_dstn(self):
|
|
|
|
x = wd.idct(y)
|
|
|
|
self._test_1d(wd.dst, wd.idst, wd.dstn, wd.idstn)
|
|
|
|
assert_array_almost_equal(x, a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yn = wd.dctn(a) # , shape=(10,), axes=(1,))
|
|
|
|
def _test_1d(self, dct, idct, dctn, idctn):
|
|
|
|
xn = wd.idctn(yn) # , axes=(1,))
|
|
|
|
a = np.arange(12) # .reshape((3, -1))
|
|
|
|
|
|
|
|
y = dct(a)
|
|
|
|
|
|
|
|
yn = dctn(a)
|
|
|
|
|
|
|
|
x = idct(y)
|
|
|
|
|
|
|
|
xn = idctn(yn)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_array_almost_equal(y, yn)
|
|
|
|
|
|
|
|
assert_array_almost_equal(x, a)
|
|
|
|
assert_array_almost_equal(xn, a)
|
|
|
|
assert_array_almost_equal(xn, a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|