pylops.signalprocessing.Patch3D#
- class pylops.signalprocessing.Patch3D(Op, dims, dimsd, nwin, nover, nop, tapertype='hanning', savetaper=True, scalings=None, name='P')[source]#
3D Patch transform operator.
Apply a transform operator
Oprepeatedly to patches of the model vector in forward mode and patches of the data vector in adjoint mode. More specifically, in forward mode the model vector is divided into patches, each patch is transformed, and patches are then recombined together. Both model and data are internally reshaped and interpreted as 3-dimensional arrays: each patch contains a portion of the array in every axis.This operator can be used to perform local, overlapping transforms (e.g.,
pylops.signalprocessing.FFTNDorpylops.signalprocessing.Radon3D) on 3-dimensional arrays.Note
The shape of the model has to be consistent with the number of windows for this operator not to return an error. As the number of windows depends directly on the choice of
nwinandnover, it is recommended to first runpatch3d_designto obtain the correspondingdimsand number of windows.Warning
Depending on the choice of nwin and nover as well as the size of the data, sliding windows may not cover the entire data. The start and end indices of each window will be displayed and returned with running
patch3d_design.- Parameters
- Op
pylops.LinearOperator Transform operator
- dims
tuple Shape of 3-dimensional model. Note that
dims[0],dims[1]anddims[2]should be multiple of the model size of the transform in their respective dimensions- dimsd
tuple Shape of 3-dimensional data
- nwin
tuple Number of samples of window
- nover
tuple Number of samples of overlapping part of window
- nop
tuple Size of model in the transformed domain
- tapertype
str, optional Type of taper (
hanning,cosine,cosinesquareorNone)- savetaper
bool, optional New in version 2.3.0.
Save all tapers and apply them in one go (
True) or save unique tapers and apply them one by one (False). The first option is more computationally efficient, whilst the second is more memory efficient.- scalings
tupleorlist, optional Set of scalings to apply to each patch. If
None, no scale will be applied- name
str, optional Name of operator (to be used by
pylops.utils.describe.describe)
- Op
- Raises
- ValueError
Identified number of windows is not consistent with provided model shape (
dims).
See also
- Attributes
- taps: :obj:`numpy.ndarray`
Set of tapers to be applied to each patch (if
tapertypeis notNone)- simOp
bool Operator
Opis applied to all patches simultaneously (True) or to each patch individually (False)- dims
tuple Shape of the array after the adjoint, but before flattening.
For example,
x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).- dimsd
tuple Shape of the array after the forward, but before flattening.
For example,
y_reshaped = (Op * x.ravel()).reshape(Op.dimsd).- shape
tuple Operator shape.
Methods
__init__(Op, dims, dimsd, nwin, nover, nop)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.
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()