pylops.signalprocessing.Patch2D(Op, dims, dimsd, nwin, nover, nop, tapertype='hanning', design=False)[source]

2D Patch transform operator.

Apply a transform operator Op repeatedly 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 2-dimensional arrays: each patch contains a portion of the array in both the first and second dimension.

This operator can be used to perform local, overlapping transforms (e.g., pylops.signalprocessing.FFT2D or pylops.signalprocessing.Radon2D) on 2-dimensional arrays.


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 nwin and nover, it is recommended to use design=True if unsure about the choice dims and use the number of windows printed on screen to define such input parameter.


Depending on the choice of nwin and nover as well as the size of the data, patches may not cover the entire size of the data. The start and end indices of each window can be displayed using design=True while defining the best patching approach.

Op : pylops.LinearOperator

Transform operator

dims : tuple

Shape of 2-dimensional model. Note that dims[0] and dims[1] should be multiple of the model size of the transform in their respective dimensions

dimsd : tuple

Shape of 2-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, cosinesquare or None)

design : bool, optional

Print number of sliding window (True) or not (False)

Sop : pylops.LinearOperator

Sliding operator


Identified number of windows is not consistent with provided model shape (dims).

See also

2D Sliding transform operator.

Examples using pylops.signalprocessing.Patch2D