SIVIC API  0.9.26
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
svkEPSIPhaseCorrect Class Reference

#include <svkEPSIPhaseCorrect.h>

Inheritance diagram for svkEPSIPhaseCorrect:
svkImageInPlaceFilter

Public Member Functions

 vtkTypeMacro (svkEPSIPhaseCorrect, svkImageInPlaceFilter)
 
void SetNumEPSIkRead (int numKspaceSamples)
 
void SetEPSIAxis (int epsiAxis)
 
void SetEPSIOrigin (float epsiOrigin)
 
float GetEPSIOrigin ()
 
- Public Member Functions inherited from svkImageInPlaceFilter
 vtkTypeMacro (svkImageInPlaceFilter, vtkImageInPlaceFilter)
 
svkImageDataGetOutput ()
 
svkImageDataGetOutput (int port)
 
svkImageDataGetImageDataInput (int port)
 

Static Public Member Functions

static svkEPSIPhaseCorrectNew ()
 

Protected Member Functions

 svkEPSIPhaseCorrect ()
 
 ~svkEPSIPhaseCorrect ()
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 
virtual int RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
- Protected Member Functions inherited from svkImageInPlaceFilter
 svkImageInPlaceFilter ()
 
 ~svkImageInPlaceFilter ()
 
virtual int FillOutputPortInformation (int vtkNotUsed(port), vtkInformation *info)
 
virtual int FillInputPortInformation (int vtkNotUsed(port), vtkInformation *info)
 

Detailed Description

This class corrects for the time shift of spectra in the EPSI direction that results from the EPSI sampling trajectory. For each TR, the spectra from neighboring K space values along the EPSI k-space axis are displaced in time relative to one another by Dt (time between EPSI samples). This time-domain shift is corrected here via the Fourier shift theorem, by applying a linear phase shift to the spectra in the frequency domain, where the magnitude of the phase shift is a linear functino of the distance of the spectrum from the origin of k-space (in EPSI direction). Spectra are then inverse FT'd back to the time domain resulting in a rectilinear spectral/spatial data set (see Figure 3 and equation 3 in the following reference).

References: Charles H. Cunningham, Daniel B. Vigneron, Albert P. Chen, Duan Xu, Sarah J. Nelson, Ralph E. Hurd, Douglas A. Kelley, John M. Pauly: "Design of Flyback Echo-Planar Readout Gradients for Magnetic Resonance Spectroscopic Imaging", Magnetic Resonance in Medicine 54:1286-1289 (2005).

Constructor & Destructor Documentation

svkEPSIPhaseCorrect ( )
protected

Constructor. Initialize any member variables.

~svkEPSIPhaseCorrect ( )
protected

Clean up any allocated member variables.

Member Function Documentation

int FillInputPortInformation ( int  port,
vtkInformation *  info 
)
protectedvirtual

Set the input data type, e.g. svkMrsImageData for an MRS algorithm.

float GetEPSIOrigin ( )

Get the origin index along the EPSI encoding axis default = (numEPSIkRead-1)/2. This is the c-lang index, thus the -1, e.g.: if numEPSIkRead is 8, and data index varies from 0-7, the default origin index is 3.5. However, should depend on whether k=0 was sampled or not. If not, (default, then origin is .5 higher.

static svkEPSIPhaseCorrect* New ( )
static
int RequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector 
)
protectedvirtual

This method is called during pipeline execution. Calculates the 2D array of linear phase correction factors, which are a function of the epsi k-space index, as well as the spectral index. Applies these to all spectra in data set to generate a rectilinear spectral/spatial (k-space, time-domain) data set.

References svkDcmHeader::COL_INDEX, svkMrsImageFFT::FORWARD, svkImageData::GetDcmHeader(), svkDcmHeader::GetDimensionIndexVector(), svkDcmHeader::GetDimensionVectorIndexFromCellID(), svkDcmHeader::GetDimensionVectorValue(), svkImageInPlaceFilter::GetImageDataInput(), svkDcmHeader::GetIntValue(), svkDcmHeader::GetNumberOfCells(), svkMrsImageData::GetSpectrum(), svkMrsImageFFT::REVERSE, svkDcmHeader::ROW_INDEX, and svkDcmHeader::SLICE_INDEX.

void SetEPSIAxis ( int  epsiAxis)

Set the axis index corresponding to the EPSI encoding (0,1 or 2).

void SetEPSIOrigin ( float  epsiOrigin)

Set the origin index along the EPSI encoding axis default = (numEPSIkRead-1)/2. See notes for GetEPSIOrigin.

void SetNumEPSIkRead ( int  numKspacePoints)

Set the number of k-space samples along the EPSI encoding direction (number of samples per lobe). This is the number of samples per echo in the EPSI acquisition trajetory (not necessarily the final k-space dimensionality).

vtkTypeMacro ( svkEPSIPhaseCorrect  ,
svkImageInPlaceFilter   
)

The documentation for this class was generated from the following files: