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
svkMultiCoilPhase Class Reference

#include <svkMultiCoilPhase.h>

Inheritance diagram for svkMultiCoilPhase:
svkImageInPlaceFilter

Public Member Functions

 vtkTypeMacro (svkMultiCoilPhase, svkImageInPlaceFilter)
 
float PhaseBySymmetry (vtkFloatArray *spectrum, int peakMaxPtIn, int peakStartPtIn, int peakStopPtIn)
 
float CalculateCenterPhase (int timePt, int coilNum)
 
- Public Member Functions inherited from svkImageInPlaceFilter
 vtkTypeMacro (svkImageInPlaceFilter, vtkImageInPlaceFilter)
 
svkImageDataGetOutput ()
 
svkImageDataGetOutput (int port)
 
svkImageDataGetImageDataInput (int port)
 

Static Public Member Functions

static svkMultiCoilPhaseNew ()
 

Protected Member Functions

 svkMultiCoilPhase ()
 
 ~svkMultiCoilPhase ()
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 
virtual int RequestInformation (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
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

Class to apply a per channel phase factor to spectra prior to combining multi-coil data to achieve constructive addition of data from individual coils. References and Acknowledgments: Sarah J. Nelson, ISMRM abstract (Wei et al) k.Hammond.

Constructor & Destructor Documentation

svkMultiCoilPhase ( )
protected

References svkPhaseSpec::New().

~svkMultiCoilPhase ( )
protected

Member Function Documentation

float CalculateCenterPhase ( int  timePt,
int  coilNum 
)
int FillInputPortInformation ( int  port,
vtkInformation *  info 
)
protectedvirtual
static svkMultiCoilPhase* New ( )
static
float PhaseBySymmetry ( vtkFloatArray *  spectrum,
int  peakMaxPtIn,
int  peakStartPtIn,
int  peakStopPtIn 
)

Returns the phase of the peak at the specified position determined by maximizing the real component symmetry: left and right side should have equivalent positive integrals.

References svkImageInPlaceFilter::GetImageDataInput(), svkSpecUtils::GetMagnigutude(), and svkSpecUtils::PhaseSpectrum().

Referenced by svkMultiCoilPhase::CalculateCenterPhase(), and svkMultiCoilPhase::RequestData().

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

Algorithm needs to

  1. a)either find the optimal phase from the central voxels in the volume from each coil and average it or b) average the central voxels.. no, destructive interference prevents addition prior to phasing!.. do a)
  2. to find the phase we first need to find the peak: Phase using the water peak (predefined ppm range)
  3. method for phasing = TBD, see Sarah Code.
  4. use phasing algorithm already implemented to apply the phases to the specified coil (bundle the vtkPhaseSpec call inside this class.

for each of central voxels: Find peak from mag spec and calc its phase: use smoothed magnitude spectrum to find maximum point (sub est_peakmagmax) get phase angle at max pos: a0 = 180.0 * atan2(aimag(r(imax)),real(r(imax)))/3.14159 now estimate the peak sym: call est_peaksym(ncol,r,rback,s1pos,s2pos,imax,a1,nsmooth) -> see csi_subs_v6.f

References svkMultiCoilPhase::CalculateCenterPhase(), svkImageData::GetDcmHeader(), svkImageInPlaceFilter::GetImageDataInput(), svkDcmHeader::GetNumberOfCoils(), svkDcmHeader::GetNumberOfTimePoints(), svkImageData::GetNumberOfVoxels(), svkImageInPlaceFilter::GetOutput(), svkPhaseSpec::New(), svkMultiCoilPhase::PhaseBySymmetry(), svkPhaseSpec::SetChannel(), svkPhaseSpec::SetPhase0(), and svkPhaseSpec::SetUpdateExtent().

int RequestInformation ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector 
)
protectedvirtual
vtkTypeMacro ( svkMultiCoilPhase  ,
svkImageInPlaceFilter   
)

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