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

#include <svkMrsImageData.h>

Inheritance diagram for svkMrsImageData:
svk4DImageData svkImageData

Public Types

enum  MrsVolumeIndex { TIMEPOINT = 0, CHANNEL }
 Enum represents objects in the scene. More...
 
- Public Types inherited from svk4DImageData
enum  ActorType { PLOT_GRID, VOL_SELECTION, SAT_BANDS }
 
- Public Types inherited from svkImageData
enum  RangeComponent { REAL = 0, IMAGINARY, MAGNITUDE }
 
enum  DataBasis {
  ROW = 0, COLUMN, SLICE, LR,
  PA, SI
}
 

Public Member Functions

 vtkTypeMacro (svkMrsImageData, svk4DImageData)
 
void GetIndexArray (int timePoint, int channel, int *indexArray)
 
vtkDataArray * GetSpectrum (int i)
 
vtkDataArray * GetSpectrum (int i, int j, int k, int timePoint=0, int channel=0)
 
vtkDataArray * GetSpectrumFromID (int index, int timePoint=0, int channel=0)
 
void GetImage (svkMriImageData *image, int point, int timePoint, int channel, int component, vtkstd::string seriesDescription, int vtkDataType=VTK_VOID)
 
void GetImage (svkMriImageData *image, int point, svkDcmHeader::DimensionVector *dimensionVector, int component, string seriesDescription, int vtkDataType=VTK_VOID)
 
void SetImage (vtkImageData *image, int point, int timePoint=0, int channel=0)
 
void SetImage (vtkImageData *image, int point, svkDcmHeader::DimensionVector *dimensionVector)
 
void SetImageComponent (vtkImageData *image, int point, int timePoint=0, int channel=0, int component=0)
 
int GetClosestSlice (double *posLPS, svkDcmHeader::Orientation sliceOrientation, double tolerance=-1)
 
void EstimateDataRange (double range[2], int minPt, int maxPt, int component, int *tlcBrc=NULL, int timePoint=0, int channel=0)
 
int GetVolumeIndexSize (int volumeIndex)
 
int GetNumberOfVolumeDimensions ()
 
int GetNumberOfChannels ()
 
bool HasSelectionBox ()
 
void GenerateSelectionBox (vtkUnstructuredGrid *selectionBox)
 
void GetSelectionBoxCenter (double *selBoxCenter)
 
void GetSelectionBoxDimensions (float *dims)
 
bool IsSliceInSelectionBox (int slice, svkDcmHeader::Orientation orientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
void GetSelectionBoxSpacing (double spacing[3])
 
void GetSelectionBoxOrigin (double origin[3])
 
void GetSelectionBoxMaxMin (double minPoint[3], double maxPoint[3], double tolerance=DEFAULT_SELECTION_TOLERANCE)
 
void Get2DProjectedTlcBrcInSelectionBox (int tlcBrc[2], svkDcmHeader::Orientation orientation, int slice, double tolerance=DEFAULT_SELECTION_TOLERANCE)
 
void Get3DVoxelsInSelectionBox (int tlcVoxel[3], int brcVoxel[3], double tolerance=DEFAULT_SELECTION_TOLERANCE)
 
void GetSelectionBoxMask (short *mask, double tolerance=DEFAULT_SELECTION_TOLERANCE)
 
void Get3DTlcBrcInSelectionBox (int tlcBrc[2], double tolerance=DEFAULT_SELECTION_TOLERANCE)
 
void Redimension (svkDcmHeader::DimensionVector *dimensionVector, double *newOrigin, double *newSpacing, bool resizeSelectionBoxToFOV=false)
 
void InitializeDataArrays ()
 
- Public Member Functions inherited from svk4DImageData
 vtkTypeMacro (svk4DImageData, svkImageData)
 
virtual void GetNumberOfVoxels (int numVoxels[3])
 
virtual int GetIDFromIndex (int indexX, int indexY, int indexZ, int *indexArray=NULL)
 
vtkDataArray * GetArray (int linearIndex)
 
vtkDataArray * GetArrayFromID (int index, int *indexArray=NULL)
 
vtkDataArray * GetArray (int x, int y, int z, int *indexArray=NULL)
 
vtkDataArray * GetArray (int *indexArray)
 
void SetArrayName (vtkDataArray *array, svkDcmHeader::DimensionVector *dimensionVector)
 
virtual int GetLastSlice (svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
void GetTlcBrcInUserSelection (int tlcBrc[2], double userSelection[6], svkDcmHeader::Orientation orientation=svkDcmHeader::UNKNOWN_ORIENTATION, int slice=-1)
 
void GetZeroImage (svkImageData *image)
 
virtual void GetImage (svkImageData *image, int point, int *indexArray=NULL, int component=2, int vtkDataType=VTK_VOID)
 
virtual void GetImage (svkImageData *image, int point, svkDcmHeader::DimensionVector *indexVector=NULL, int component=2, int vtkDataType=VTK_VOID)
 
virtual void GetImage (svkImageData *image, int point, string seriesDescription, int *indexArray=NULL, int component=2, int vtkDataType=VTK_VOID)
 
virtual void GetImage (svkImageData *image, int point, string seriesDescription, svkDcmHeader::DimensionVector *indexVector=NULL, int component=2, int vtkDataType=VTK_VOID)
 
void SetImage (vtkImageData *image, int point, int *indexArray=NULL)
 
void SetImage (vtkImageData *image, int point, svkDcmHeader::DimensionVector *indexVector)
 
void SetImageComponent (vtkImageData *image, int point, int *indexArray=NULL, int component=0)
 
virtual void UpdateRange (int component)
 
int GetNumberOfSlices (svkDcmHeader::Orientation sliceOrientation)
 
virtual void EstimateDataRange (double range[2], int minPt, int maxPt, int component, int *tlcBrc=NULL, int *indexArray=NULL)
 
virtual void GetPolyDataGrid (vtkPolyData *grid)
 
- Public Member Functions inherited from svkImageData
 vtkTypeMacro (svkImageData, vtkImageData)
 
virtual void PrintSelf (ostream &os, vtkIndent indent)
 
virtual void DeepCopy (vtkDataObject *src)
 
virtual void DeepCopy (vtkDataObject *src, svkDcmHeader::DcmPixelDataFormat castToFormat)
 
virtual void ShallowCopy (vtkDataObject *src)
 
virtual void ShallowCopy (vtkDataObject *src, svkDcmHeader::DcmPixelDataFormat castToFormat)
 
virtual void ZeroCopy (vtkImageData *src, svkDcmHeader::DcmPixelDataFormat castToFormat=svkDcmHeader::UNDEFINED)
 
virtual void CopyAndFillComponents (vtkImageData *src, double fillValue, svkDcmHeader::DcmPixelDataFormat castToFormat=svkDcmHeader::UNDEFINED)
 
virtual void CastDataFormat (svkDcmHeader::DcmPixelDataFormat castToFormat)
 
virtual void CopyAndCastFrom (vtkImageData *inData, int extent[6])
 
virtual void CopyAndCastFrom (vtkImageData *inData, int x0, int x1, int y0, int y1, int z0, int z1)
 
virtual void CopyStructure (vtkDataSet *ds)
 
virtual void CopyDcos (vtkDataObject *src)
 
virtual void CopyVtkImage (vtkImageData *sourceImage, double dcos[][3])
 
virtual double * GetPoint (vtkIdType ptId)
 
virtual void GetPoint (vtkIdType id, double x[3])
 
virtual vtkCell * GetCell (vtkIdType cellId)
 
virtual void GetCell (vtkIdType cellId, vtkGenericCell *cell)
 
virtual void GetCellBounds (vtkIdType cellId, double bounds[6])
 
virtual vtkIdType FindPoint (double x, double y, double z)
 
virtual vtkIdType FindPoint (double x[3])
 
virtual vtkIdType FindCell (double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
virtual vtkIdType FindCell (double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
virtual vtkCell * FindAndGetCell (double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
virtual int GetCellType (vtkIdType cellId)
 
virtual void GetCellPoints (vtkIdType cellId, vtkIdList *ptIds)
 
virtual void GetPointCells (vtkIdType ptId, vtkIdList *cellIds)
 
virtual void ComputeBounds ()
 
virtual int ComputeStructuredCoordinates (double x[3], int ijk[3], double pcoords[3])
 
virtual void GetVoxelGradient (int i, int j, int k, vtkDataArray *s, vtkDataArray *g)
 
virtual void GetPointGradient (int i, int j, int k, vtkDataArray *s, double g[3])
 
virtual void SetAxisUpdateExtent (int axis, int min, int max)
 
virtual void GetAxisUpdateExtent (int axis, int &min, int &max)
 
virtual void SetDcos (double x[3][3])
 
virtual void GetDcos (double x[3][3])
 
void SetDcmHeader (svkDcmHeader *dcmHeader)
 
svkDcmHeaderGetDcmHeader ()
 
void SetProvenance (svkProvenance *provenance)
 
svkProvenanceGetProvenance ()
 
int GetIDFromIndex (int indexX, int indexY, int indexZ)
 
void GetIndexFromID (int voxelID, int *indexX, int *indexY, int *indexZ)
 
void GetIndexFromID (int voxelID, int *index)
 
void GetIndexFromPosition (double posLPS[3], int *index)
 
void GetIndexFromPosition (double posLPS[3], double *index)
 
virtual void GetPositionFromIndex (int *index, double *posLPS)
 
virtual void GetSliceOrigin (int slice, double *sliceOrigin, svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
virtual void GetSliceCenter (int slice, double *sliceCenter, svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
virtual void GetSliceNormal (double *normal, svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
virtual int GetFirstSlice (svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
 
virtual void GetDataBasis (double basisVector[3], DataBasis basis)
 
virtual int GetOrientationIndex (svkDcmHeader::Orientation orientation)
 
virtual void GetImageCenter (double *center)
 
void GetDataRange (double range[2], int component)
 Getter of the data range variable. More...
 
void SetDataRange (double range[2], int component)
 Setter of the data range variable. More...
 
void SetSourceData (svkImageData *source)
 
svkImageDataGetSourceData ()
 
void SyncVTKImageDataToDcmHeader ()
 
 vtkSetStringMacro (SourceFileName)
 
 vtkGetStringMacro (SourceFileName)
 

Static Public Member Functions

static svkMrsImageDataNew ()
 
static vtkObject * NewObject ()
 
- Static Public Member Functions inherited from svk4DImageData
static svk4DImageDataNew ()
 
static vtkObject * NewObject ()
 
static string GetArrayName (svkDcmHeader::DimensionVector *dimensionVector)
 
static bool IsIndexInExtent (int *extent, svkDcmHeader::DimensionVector *indexVector)
 
- Static Public Member Functions inherited from svkImageData
static void RemoveArrays (svkImageData *data)
 

Protected Member Functions

 svkMrsImageData ()
 
 ~svkMrsImageData ()
 
- Protected Member Functions inherited from svk4DImageData
 svk4DImageData ()
 
 ~svk4DImageData ()
 
- Protected Member Functions inherited from svkImageData
 svkImageData ()
 
 ~svkImageData ()
 
bool WasModified ()
 
virtual void UpdateSvkParams ()
 
int FindMatchingSlice (double *posLPS, svkDcmHeader::Orientation sliceOrientation, double *origin, double *spacing, double tolerance=-1)
 

Additional Inherited Members

- Protected Attributes inherited from svkImageData
svkDcmHeaderdcmHeader
 
svkProvenanceprovenance
 
char * SourceFileName
 
svkImageDatasource
 
double range [3][2]
 Range needs to be able to accomodate real, imaginary, and magnitude components. More...
 

Detailed Description

Class that represents a MR Spectroscopy data set. Contains methods for accessing MRS specific actors: plotGrid, volumeSelection, and satBands.

Member Enumeration Documentation

Enum represents objects in the scene.

Enumerator
TIMEPOINT 
CHANNEL 

Constructor & Destructor Documentation

svkMrsImageData ( )
protected

Constructor.

~svkMrsImageData ( )
protected

Destructor.

Member Function Documentation

void EstimateDataRange ( double  range[2],
int  minPt,
int  maxPt,
int  component,
int *  tlcBrc = NULL,
int  timePoint = 0,
int  channel = 0 
)

Estimates the data range for the given timepoint, channel, index range, and voxel range.

Parameters
rangeoutput object
minPtlowest point to consider in determining range
maxPthighest point to consider in determining range
componentthe component you want to calculate
tlcBrcthe voxel range you are interested in
timePointthe timePoint you are interested in
channelthe channel you are interested in

References svkImageData::GetDcmHeader(), svkMrsImageData::GetIndexArray(), and svkDcmHeader::GetStringValue().

void GenerateSelectionBox ( vtkUnstructuredGrid *  selectionBoxGrid)
void Get2DProjectedTlcBrcInSelectionBox ( int  tlcBrc[2],
svkDcmHeader::Orientation  orientation,
int  slice,
double  tolerance = DEFAULT_SELECTION_TOLERANCE 
)

Calculates the top left corner, and bottom right corner (high index-low index) of all voxels that lie within the selection box for projected onto the given slice. Checks to make sure the given slices is within the range of the volume, if it is not then -1,-1 is returned as tlcBrc.

Parameters
tlcBrcthe destination for the result of the calculation
slicethe slice you wish to project the results onto.
tolerancethe tolerance ranges from 0.0-1.0 and determines what fraction of the voxel must be within the selection box to be selected

References svkImageData::GetFirstSlice(), and svk4DImageData::GetLastSlice().

void Get3DTlcBrcInSelectionBox ( int  tlcBrc[2],
double  tolerance = DEFAULT_SELECTION_TOLERANCE 
)

Calculates the top left corner, and bottom right corner (high index-low index) of all voxels that lie within the selection box for a given slice.

Parameters
tlcBrcthe destination for the result of the calculation
tolerancethe tolerance ranges from 0.0-1.0 and determines what fraction of the voxel must be within the selection box to be selected

References svkDcmHeader::UNKNOWN_ORIENTATION.

void Get3DVoxelsInSelectionBox ( int  tlcVoxel[3],
int  brcVoxel[3],
double  tolerance = DEFAULT_SELECTION_TOLERANCE 
)

Calculates the top left corner, and bottom right corner (high index-low index) of all voxels that lie within the selection box for a given slice. Returns the index of the each voxels.

Parameters
tlcVoxelthe destination for the result
brcVoxelthe destination for the result
tolerancethe tolerance ranges from 0.0-1.0 and determines what fraction of the voxel must be within the selection box to be selected

References svkImageData::GetIndexFromID(), and svkDcmHeader::UNKNOWN_ORIENTATION.

Referenced by svkMrsImageData::GetSelectionBoxMask(), and svkMrsLinearPhase::RequestData().

int GetClosestSlice ( double *  posLPS,
svkDcmHeader::Orientation  sliceOrientation,
double  tolerance = -1 
)
virtual

Gets the closests slice for a given LPS coordinate, and a sliceOrientation.

Parameters
posLPSthe position in LPS coordinates
orientationthe orientation of the slice you wish to select

Reimplemented from svkImageData.

References svkImageData::FindMatchingSlice(), svkImageData::GetDcmHeader(), svkMrsImageData::GetSelectionBoxCenter(), svkMrsImageData::GetSelectionBoxSpacing(), svkDcmHeader::GetStringValue(), and svkMrsImageData::HasSelectionBox().

void GetImage ( svkMriImageData image,
int  point,
int  timePoint,
int  channel,
int  component,
vtkstd::string  seriesDescription,
int  vtkDataType = VTK_VOID 
)
void GetImage ( svkMriImageData image,
int  point,
svkDcmHeader::DimensionVector dimensionVector,
int  component,
string  seriesDescription,
int  vtkDataType = VTK_VOID 
)

Gets the 3D point volume image for the given dimensionIndex. User can specify a series description for the new volume.

Parameters
image
point(frequency or time point from spectral dimension)
dimensionIndexVectorwith non spatial indices representing 3D volume to retrieve only the non spatial indices are relevant.
channel
component
seriesDescription
void GetIndexArray ( int  timePoint,
int  channel,
int *  indexArray 
)

Populates the argument indexArray based on the input paramateres of channel and timePoint. These arrays are used in the parent class for general data access.

Parameters
channel
timePoint
indexArray

References svkMrsImageData::CHANNEL, and svkMrsImageData::TIMEPOINT.

Referenced by svkMrsImageData::EstimateDataRange(), svkMrsImageData::GetSpectrum(), svkMrsImageData::GetSpectrumFromID(), svkMrsImageData::SetImage(), and svkMrsImageData::SetImageComponent().

int GetNumberOfChannels ( )

Gets the number of channels in the dataset. The first time it is called it gets the number of channels from the header, after that it stores the value in a member variable.

References svkImageData::GetDcmHeader(), and svkDcmHeader::GetNumberOfCoils().

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

int GetNumberOfVolumeDimensions ( )
virtual

svkMrsImageData has only two dimension indices: channel, timepoint.

Returns

Reimplemented from svk4DImageData.

void GetSelectionBoxCenter ( double *  selBoxCenter)

Calculate the center of the selection box.

Parameters
selBoxCenterthe array to populate in LPS coords

References svkMrsImageData::GenerateSelectionBox().

Referenced by svkMrsImageData::GetClosestSlice().

void GetSelectionBoxDimensions ( float *  dims)
void GetSelectionBoxMask ( short *  mask,
double  tolerance = DEFAULT_SELECTION_TOLERANCE 
)

Generates a 3D data array representing binary mask indicating whether a given voxel is within the selection box or the specified fraction (tolerane) of a voxel is within the selection box. length of mask array is number of voxels in data set. mask values are 0, not in selected volume, or 1, in selected volume. Mask must be pre allocated.

References svkMrsImageData::Get3DVoxelsInSelectionBox(), svkImageData::GetIndexFromID(), and svk4DImageData::GetNumberOfVoxels().

Referenced by svkMRSNoise::RequestData(), svkHSVD::RequestData(), and svkMRSAutoPhase::SVKRequestDataPreExec().

void GetSelectionBoxMaxMin ( double  minPoint[3],
double  maxPoint[3],
double  tolerance = DEFAULT_SELECTION_TOLERANCE 
)

Method takes all points that define our selection box and determines the maximum and minimum point.

Parameters
minPointthe lowest point (most negative)
maxPointthe highest point (most positive)
toleranceranges from 0-1, allows you to push slightly past the points for selection purposes

References svkMrsImageData::GenerateSelectionBox(), svkImageData::GetDataBasis(), svkImageData::LR, svkImageData::PA, and svkImageData::SI.

void GetSelectionBoxOrigin ( double  origin[3])

Get the origin of the selection box as defined in the images coordinate system (dcos). The origin is defined as the point minimum point in the 3 dcos directions.

eg. For vector (0,0,1) the origin would be the most negative z value. For vector (0,0,-1) the origin would be the most positive z value.

To calculate the origin we start by getting the vertecies of the selection box. The gemoetry of the selection box is determined by the method GenerateSelectionBox which stores the results as an unstructured grid of points with a single cell that represent the volume of the selection. As such the points are not ordered so we have no idea which point is the origin relative to our dcos.

To make this determination we take the dot product of each point with each axis' unit vector in the dcos. This gives us a projection of the point onto a vector that points along the direction of the axis of the dataset and intersects 0. If we project each point onto each axis the "origin" is going to have the lowest value when projected onto each axis.

To avoid precision errors we are going to sum the distances in all three projected directions and choose the minimum value. These precision errors are caused when you have four points that define a surface of the selection box and you project them onto the axis perpendicular to the plane. Geometrically these should all project to exactly the same value (assuming the selection box is perfectly aligned with the dcos), but in practice this calculation can be off by a very small amount. This error becomes insignificant when you sum the distances in all three directions.

Parameters
orgintarget array

References svkImageData::COLUMN, svkMrsImageData::GenerateSelectionBox(), svkImageData::GetDataBasis(), svkImageData::ROW, and svkImageData::SLICE.

void GetSelectionBoxSpacing ( double  spacing[3])

Get the spacing of the selection box

Parameters
spacingtarget array

References svkImageData::GetDcmHeader(), svkDcmHeader::GetFloatSequenceItemElement(), and svkDcmHeader::GetNumberOfItemsInSequence().

Referenced by svkMrsImageData::GetClosestSlice().

vtkDataArray * GetSpectrum ( int  i)
vtkDataArray * GetSpectrum ( int  i,
int  j,
int  k,
int  timePoint = 0,
int  channel = 0 
)

Gets a specified data array.

References svk4DImageData::GetArray(), and svkMrsImageData::GetIndexArray().

vtkDataArray * GetSpectrumFromID ( int  index,
int  timePoint = 0,
int  channel = 0 
)

Gets a specified data array from linear index.

References svk4DImageData::GetArrayFromID(), and svkMrsImageData::GetIndexArray().

int GetVolumeIndexSize ( int  volumeIndex)
virtual

Gets the size for a given volume index.

Parameters
volumeIndex
Returns

Reimplemented from svk4DImageData.

References svkImageData::GetDcmHeader(), svkDcmHeader::GetNumberOfCoils(), and svkDcmHeader::GetNumberOfTimePoints().

bool HasSelectionBox ( )
void InitializeDataArrays ( )
bool IsSliceInSelectionBox ( int  slice,
svkDcmHeader::Orientation  orientation = svkDcmHeader::UNKNOWN_ORIENTATION 
)
static svkMrsImageData* New ( )
static
vtkObject * NewObject ( )
static
void Redimension ( svkDcmHeader::DimensionVector dimensionVector,
double *  newOrigin,
double *  newSpacing,
bool  resizeSelectionBoxToFOV = false 
)

Redimensions the image data object.

WARNING: This will re-initialize all the arrays in the result to zero for all components!

References dims, svkDcmHeader::GetDataDcos(), svkImageData::GetDcmHeader(), svkMrsImageData::InitializeDataArrays(), svkDcmHeader::InitVolumeLocalizationSeq(), svkDcmHeader::Redimension(), and svkImageData::SyncVTKImageDataToDcmHeader().

void SetImage ( vtkImageData *  image,
int  point,
int  timePoint = 0,
int  channel = 0 
)

Sets the point volume image for the given index.

Parameters
image
point
timePoint
channel

References svkMrsImageData::GetIndexArray().

Referenced by svkMrsImageFlip::RequestData(), svkIntegratePeak::RequestData(), and svkMrsImageFFT::RequestDataSpatial().

void SetImage ( vtkImageData *  image,
int  point,
svkDcmHeader::DimensionVector dimensionVector 
)

Sets the point volume image for the given index.

Parameters
image
point(frequency or time point from spectral domain)
dimensionVectorrepresents non spatial volume indices to inset 3D image into
channel
void SetImageComponent ( vtkImageData *  image,
int  point,
int  timePoint = 0,
int  channel = 0,
int  component = 0 
)

Sets the point volume image for the given index.

Parameters
image
point
timePoint
channel

References svkMrsImageData::GetIndexArray().

vtkTypeMacro ( svkMrsImageData  ,
svk4DImageData   
)

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