PowerGrid - docs - Objects in PowerGrid

Objects in PowerGrid

Object Reference

Object Reference

Transform objects

These objects implement forward and adjoint transforms. All can be used via the syntax below. The forward operations and adjoint operations are implemented via operator overloading in C++.


arma::Col<complex<double>> data;

//G is a transform object

ForwardTransform = G * data;
AdjointTransform = G / data;

Gfft

Implements the FFT (Fast Fourier Transform) sampled uniformly on the grid in both dimensions. This transform supports both GPU and CPU computation, relying on cufft for GPU computation and FFTW for GPU computation.

Gfft(nx, ny, nz)

Variables Description
nx image size in the x direction
ny image size in the y direction
nz number of slices

Gdft

Implements a field corrected discrete Fourier transform (DFT). This object supports both CPU and GPU computation, although the CPU implementation not recommended for production work. The CPU version is not multithreaded and is O(n^2) in complexity, scaling very poorly.

Gdft(sizeKspace, sizeImg, kx, ky, kz, ix, iy, iz, FieldMap, timeVec)

Variables Description
dataLength k-space data size
sizeImg image size
kx k-space coordinates in the x direction
ky k-space coordinates in the y direction
kz k-space coordinates in the z direction
ix image coordinates in the x direction
iy image coordinates in the y direction
iz image coordinates in the z direction
FieldMap field map
timeVec timing vector for a single shot (all shots assumed to have same timing vector)

Gnufft

Implements a non-Uniform Fast Fourier Transform (NUFFT). Field correction can be achieved with this object by combining with the TimeSegmentation object. This transform runs on both CPU and GPU, achieving good performance on both.

Gnufft(dataLength, gridOS, nx, ny, nz, k1, k2, k3, i1, i2, i3)

Variables Description
dataLength length of k-space trajectory
gridOS grid oversampling parameter
nx image size in the x direction
ny image size in the x direction
nz number of slices
kx k-space coordinates in the x direction
ky k-space coordinates in the y direction
kz k-space coordinates in the z direction
ix image coordinates in the x direction
iy image coordinates in the y direction
iz image coordinates in the z direction

Model objects

These objects allow to perform different types of image reconstructions. Forward and adjoint operations are also defined via operator overloading in C++.

TimeSegmentation

Implements corrections for image distortions due to magnetic field susceptibility using a time segmentation approach. Hanning interpolator and min-max formulation are implemented.

TimeSegmentation(G, FieldMap, timeVec, dataLength, sizeImg, L, interpType, shots)

Variables Description
G Transform object such as TimeSegmentation
FieldMap field map
dataLength length of k-space trajectory
sizeImg image size
L number of time segments
interpType type of time interpolator (1 = Hanning interpolation ; 2= min-max interpolation). Default is 1
shots number of shots. Default is 1

SENSE

Implements a sensitivity encoding (SENSE) operator.

SENSE( G, SENSEmap, dataLength, sizeImg, nc)

Variables Description
G Transform object such as Ggrid
SENSEmap coil sensitivity map: dimensions are the image size (nxnynz) by number of coils (nc)
dataLength length of k-space trajectory
sizeImg image size
nc number of coils

pcSENSE

Implements SENSE operator with phase correction for motion induced phase errors in DTI.

pcSENSE( kx, ky, kz, nx, ny, nz, nc, timeVec, SENSEmap, FieldMap, ShotPhaseMap)

Variables Description
kx kspace coordinates in the x direction
ky kspace coordinates in the y direction
kz kspace coordinates in the z direction
nx image size in the x direction
ny image size in the y direction
nz number of slices
nc number of coils
timeVec timing vector for a single shot (all shots assumed to have same timing vector)
SENSEmap coil sensitivity map: dimensions are the image size (nxnynz) by number of coils (nc)
FieldMap field map
ShotPhaseMap shot phase map in radians: dimensions are image size (nxnynz) by number of coils (nc)

mpipcSENSE

Implements the same operator than pcSENSE with MPI.

mpipcSENSE(kx, ky, kz, nx, ny, nz, nc, timeVec, SENSEmap, FieldMap, ShotPhaseMap, en, wor)

Same variables as pcSENSE. Two additional variables en , wor are boost::mpi variables for the MPI environment and MPI world communicator.

Penalty objects

These objects correspond to different penalty functions that can be used in the solver.

Robject

TVPenalty

Implements a total variation penalty. It inherits from the Robject.

TVPenalty(nx, ny, nz, beta, delta)

Variables Description
nx image size in the x direction
ny image size in the y direction
nz number of slice
beta regularization parameter
delta regularization parameter

QuadPenalty

Implements a quadratic penalty. It inherits from the Robject class.

QuadPenalty(nx, ny, nz, beta);

Variables Description
nx image size in the x direction
ny image size in the y direction
nz number of slices
beta regularization parameter