pylops.signalprocessing.UDCT¶

class pylops.signalprocessing.UDCT(dims, num_scales=None, wedges_per_direction=None, window_overlap=None, radial_frequency_params=None, window_threshold=1e-05, high_frequency_mode='curvelet', transform_kind='real', dtype='complex128', name='C')[source]¶

Uniform Discrete Curvelet Transform

Apply the Uniform Discrete Curvelet Transform (UDCT) to a multi-dimensional array of shape dims.

Note that the UDCT operator is an overload of the curvelets implementation of the UDCT transform. Refer to https://curvelets.readthedocs.io for a detailed description of the input parameters.

Parameters:
dimstuple

Number of samples for each dimension

num_scalesint, optional

Total number of scales (including lowpass scale 0). Must be >= 2. Used when angular_wedges_config is not provided. Default is 3.

wedges_per_directionint, optional

Number of angular wedges per direction at the coarsest scale. The number of wedges doubles at each finer scale. Must be >= 3. Used when angular_wedges_config is not provided. Default is 3.

window_overlapfloat, optional

Window overlap parameter controlling the smoothness of window transitions. If None and using num_scales/wedges_per_direction, automatically chosen based on wedges_per_direction. Default is None (auto) or 0.15.

radial_frequency_paramstuple[float, float, float, float], optional

Radial frequency parameters defining the frequency bands. Default is (\(\pi/3\), \(2\pi/3\), \(2\pi/3\), \(4\pi/3\)).

window_thresholdfloat, optional

Threshold for sparse window storage (values below this are stored as sparse). Default is 1e-5.

high_frequency_mode{“curvelet”, “wavelet”}, optional

High frequency mode. “curvelet” uses curvelets at all scales, “wavelet” creates a single ring-shaped window (bandpass filter only, no angular components) at the highest scale with decimation=1. Default is “curvelet”.

transform_kind{“real”, “complex”, “monogenic”}, optional

Type of transform to use:

  • “real” (default): Real transform where each band captures both positive and negative frequencies combined.

  • “complex”: Complex transform which separates positive and negative frequency components into different bands. Each band is scaled by \(\\sqrt{0.5}\).

dtypestr, optional

Type of elements in input array.

namestr, optional

Name of operator (to be used by pylops.utils.describe.describe)

Attributes:
transformcurvelets.numpy.UDCT

Curvelets transform object.

dimstuple

Shape of the array after the adjoint, but before flattening.

For example, x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).

dimsdtuple

Shape of the array after the forward, but before flattening. In this case, same as dims.

shapetuple

Operator shape.

Raises:
ValueError

If any of the dimensions is odd-valued.

Notes

The UDCT operator applies the Uniform Discrete Curvelet Transform in forward mode and the Inverse Uniform Discrete Curvelet Transform in adjoint (and inverse) mode.

This transform decomposes a signal into different “scales” (analog to frequency in 1D, that is, how fast the signal is varying), “location” (equivalent to time in 1D, that is, where the signal is varying), and the direction in which the signal is varying (no 1D analog).

Methods

__init__(dims[, num_scales, ...])

adjoint()

apply_columns(cols)

Apply subset of columns of operator

cond([uselobpcg])

Condition number of linear operator.

conj()

Complex conjugate operator

div(y[, niter, densesolver])

Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).

dot(x)

Matrix-matrix or matrix-vector multiplication.

eigs([neigs, symmetric, niter, uselobpcg])

Most significant eigenvalues of linear operator.

inverse(x)

matmat(X)

Matrix-matrix multiplication.

matvec(x)

Matrix-vector multiplication.

reset_count()

Reset counters

rmatmat(X)

Matrix-matrix multiplication.

rmatvec(x)

Adjoint matrix-vector multiplication.

todense([backend])

Return dense matrix.

toimag([forw, adj])

Imag operator

toreal([forw, adj])

Real operator

tosparse()

Return sparse matrix.

trace([neval, method, backend])

Trace of linear operator.

transpose()

Examples using pylops.signalprocessing.UDCT¶

Uniform Discrete Curvelet Transform

Uniform Discrete Curvelet Transform