pylops.signalprocessing.PWSmoother2D

class pylops.signalprocessing.PWSmoother2D(dims, sigma, radius=8, alpha=0.9, dtype='float64', name='P')[source]

2D Structure-aligned smoother.

This operator builds a symmetric, positive semi-definite (PSD) smoother aligned over local structural dips (sigma). It is defined as:

\[S = P^H P\]

where \(P\) is a pylops.signalprocessing.PWSprayer2D operator that propagates values along local slopes. The composition P.H @ P produces a correlation-like operator that smooths preferentially along the defined slopes.

The resulting operator can be used as a regularizer or preconditioner in inverse problems to enforce structural smoothness.

Parameters:
dimstuple of int

Number of samples for each dimension - (nz, nx).

sigmanumpy.ndarray

Local slope field of shape (nz, nx) defined in samples per trace (\(\Delta z / \Delta x\)).

radiusint, optional

Maximum number of steps along each \(\pm x\) direction to spray or gather. Controls the spatial extent of spreading. Default is 8.

alphafloat, optional

Geometric decay factor per step (\(0 < \alpha \leq 1\)). Higher values propagate energy farther. Default is 0.9.

dtypestr, optional

Type of elements in input array.

namestr, optional

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

Attributes:
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.

See also

PWSprayer2D

Forward sprayer/gather operator

pwd_slope_estimate

Local slope estimation using plane-wave destruction

Notes

  • The smoother is symmetric by construction.

  • Effective correlation length along dip increases with larger radius and higher alpha.

  • Across-dip coupling is minimal (only through interpolation and dip variability).

Methods

__init__(dims, sigma[, radius, alpha, ...])

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()

Examples using pylops.signalprocessing.PWSmoother2D

PWD-based slope estimation and structural smoothing

PWD-based slope estimation and structural smoothing