pylops.signalprocessing.FourierRadon3D#
- class pylops.signalprocessing.FourierRadon3D(taxis, hyaxis, hxaxis, pyaxis, pxaxis, nfft, flims=None, kind=('linear', 'linear'), engine='numpy', num_threads_per_blocks=(32, 32), dtype='float64', name='R')[source]#
3D Fourier Radon transform
Apply Radon forward (and adjoint) transform using Fast Fourier Transform to a 3-dimensional array of size \([n_{p_y} \times n_{p_x} \times n_t]\) (and \([n_y \times n_x \times n_t]\)).
Note that forward and adjoint follow the same convention of the time-space implementation in
pylops.signalprocessing.Radon3D
.- Parameters
- taxis
np.ndarray
Time axis
- hyaxis
np.ndarray
Slow spatial axis
- hxaxis
np.ndarray
Fast spatial axis
- pyaxis
np.ndarray
Axis of scanning variable \(p_y\) of parametric curve
- pxaxis
np.ndarray
Axis of scanning variable \(p_x\) of parametric curve
- nfft
int
Number of samples in Fourier transform
- flims
tuple
, optional Indices of lower and upper limits of Fourier axis to be used in the application of the Radon matrix (when
None
, use entire axis)- kind
tuple
Curves to be used for stacking/spreading along the y- and x- axes (
("linear", "linear")
,("linear", "parabolic")
,("parabolic", "linear")
, or("parabolic", "parabolic")
)- engine
str
Engine used for computation (
numpy
ornumba
orcuda
)- num_threads_per_blocks
tuple
Number of threads in each block (only when
engine=cuda
)- dtype
str
Type of elements in input array.
- name
str
Name of operator (to be used by
pylops.utils.describe.describe
)
- taxis
- Raises
- NotImplementedError
If
engine
is neithernumpy
,numba
, norcuda
.- ValueError
If
kind
is not a tuple of two elements.
Notes
The FourierRadon3D operator applies the Radon transform in the frequency domain. After transforming a 3-dimensional array of size \([n_y \times n_x \times n_t]\) into the frequency domain, the following linear transformation is applied to each frequency component in adjoint mode:
\[\begin{split}\begin{bmatrix} \mathbf{m}(p_{y,1}, \mathbf{p}_{x}, \omega_i) \\ \mathbf{m}(p_{y,2}, \mathbf{p}_{x}, \omega_i) \\ \vdots \\ \mathbf{m}(p_{y,N_{py}}, \mathbf{p}_{x}, \omega_i) \end{bmatrix} = \begin{bmatrix} e^{-j \omega_i (p_{y,1} y^l_1 + \mathbf{p}_x \cdot \mathbf{x}^l)} & e^{-j \omega_i (p_{y,1} y^l_2 + \mathbf{p}_x \cdot \mathbf{x}^l)} & \ldots & e^{-j \omega_i (p_{y,1} y^l_{N_y} + \mathbf{p}_x \cdot \mathbf{x}^l)} \\ e^{-j \omega_i (p_{y,2} y^l_1 + \mathbf{p}_x \cdot \mathbf{x}^l)} & e^{-j \omega_i (p_{y,2} y^l_2 + \mathbf{p}_x \cdot \mathbf{x}^l)} & \ldots & e^{-j \omega_i (p_{y,2} y^l_{N_y} + \mathbf{p}_x \cdot \mathbf{x}^l)} \\ \vdots & \vdots & \ddots & \vdots \\ e^{-j \omega_i (p_{y,N_{py}} y^l_1 + \mathbf{p}_x \cdot \mathbf{x}^l)} & e^{-j \omega_i (p_{y,N_{py}} y^l_2 + \mathbf{p}_x \cdot \mathbf{x}^l)} & \ldots & e^{-j \omega_i (p_{y,N_{py}} y^l_{N_y} + \mathbf{p}_x \cdot \mathbf{x}^l)} \\ \end{bmatrix} \begin{bmatrix} \mathbf{d}(y_1, \mathbf{x}, \omega_i) \\ \mathbf{d}(y_2, \mathbf{x}, \omega_i) \\ \vdots \\ \mathbf{d}(y_{N_y}, \mathbf{x}, \omega_i) \end{bmatrix}\end{split}\]where \(\cdot\) represents the element-wise multiplication of two vectors and math:l=1,2. Similarly the forward mode is implemented by applying the transpose and complex conjugate of the above matrix to the model transformed to the Fourier domain.
Refer to [1] for more theoretical and implementation details.
- 1
Sacchi, M. “Statistical and Transform Methods for Geophysical Signal Processing”, 2007.
- Attributes
Methods
__init__
(taxis, hyaxis, hxaxis, pyaxis, ...)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
()