Overview¶
Curvelets is an open-source implementation of the Uniform Discrete Curvelet Transform (UDCT) [Nguyen and Chauris, 2010] in the Python programming language for N-dimensional signals.
Getting Started¶
Installation¶
Curvelets can be installed directly from the PyPI index:
pip install curvelets
or, if you want to use the PyTorch backend, you can install the torch optional dependency:
pip install curvelets[torch]
Curvelets supports Python 3.9 and above, NumPy 1.20 and above.
First Steps¶
Curvelets provides a very simple interface to use the UDCT, UDCT.
Its only required argument is the shape of the inputs, but you can also supply the number of “scale” or “resolutions” (num_scales) as well as the number of wedges per direction (wedges_per_direction).
The more scales there are, the more granular the distinction between a slowly-varying and a highly-varying feature. The more wedges there are, the more granular the distinction between the directions of the features. Explore the Asymmetric Directional Resolution example to better understand the effect of the scales and the wedges on the decomposition.
import numpy as np
from curvelets.numpy import UDCT
x = np.ones((128, 128))
C = UDCT(shape=x.shape)
y = C.forward(x)
np.testing.assert_allclose(x, C.backward(y))
Features¶
Credits¶
The original MATLAB implementation was developed by one of the authors of the UDCT, Truong T. Nguyen. The Python implementation was developed by Carlos Alberto da Costa Filho and Duy Nguyen.
References¶
Truong T. Nguyen and Hervé Chauris. Uniform Discrete Curvelet Transform. IEEE Transactions on Signal Processing, 58(7):3618–3634, jul 2010. doi:10.1109/TSP.2010.2047666.
Martin Storath. The monogenic curvelet transform. In 2010 IEEE International Conference on Image Processing, 353–356. IEEE, sep 2010. doi:10.1109/ICIP.2010.5651318.