ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions
itk::SymmetricSecondRankTensor< TComponent, NDimension > Class Template Reference

Represent a symmetric tensor of second rank. More...

#include <itkSymmetricSecondRankTensor.h>

Inheritance diagram for itk::SymmetricSecondRankTensor< TComponent, NDimension >:
Collaboration diagram for itk::SymmetricSecondRankTensor< TComponent, NDimension >:

List of all members.

Public Types

typedef NumericTraits
< ValueType >::RealType 
AccumulateValueType
typedef FixedArray< TComponent,
itkGetStaticConstMacro(InternalDimension) > 
BaseArray
typedef ComponentType ComponentArrayType [itkGetStaticConstMacro(InternalDimension)]
typedef TComponent ComponentType
typedef FixedArray< TComponent,
NDimension > 
EigenValuesArrayType
typedef Matrix< TComponent,
NDimension, NDimension > 
EigenVectorsMatrixType
typedef Matrix< TComponent,
NDimension, NDimension > 
MatrixType
typedef NumericTraits
< ValueType >::RealType 
RealValueType
typedef SymmetricSecondRankTensor Self
typedef FixedArray< TComponent,
NDimension *(NDimension+1)/2 > 
Superclass
typedef SymmetricEigenAnalysis
< MatrixType,
EigenValuesArrayType,
EigenVectorsMatrixType
SymmetricEigenAnalysisType
typedef Superclass::ValueType ValueType

Public Member Functions

void ComputeEigenAnalysis (EigenValuesArrayType &eigenValues, EigenVectorsMatrixType &eigenVectors) const
void ComputeEigenValues (EigenValuesArrayType &eigenValues) const
ComponentType GetNthComponent (int c) const
AccumulateValueType GetTrace () const
const ValueTypeoperator() (unsigned int row, unsigned int col) const
ValueTypeoperator() (unsigned int row, unsigned int col)
Self operator* (const RealValueType &scalar) const
const Selfoperator*= (const RealValueType &scalar)
Self operator+ (const Self &vec) const
const Selfoperator+= (const Self &vec)
Self operator- (const Self &vec) const
const Selfoperator-= (const Self &vec)
Self operator/ (const RealValueType &scalar) const
const Selfoperator/= (const RealValueType &scalar)
Selfoperator= (const ComponentArrayType r)
Selfoperator= (const ComponentType &r)
Self PostMultiply (const MatrixType &m) const
Self PreMultiply (const MatrixType &m) const
void SetIdentity ()
void SetNthComponent (int c, const ComponentType &v)
 SymmetricSecondRankTensor (const ComponentType &r)
 SymmetricSecondRankTensor ()
 SymmetricSecondRankTensor (const ComponentArrayType r)
template<typename TCoordRepB >
 SymmetricSecondRankTensor (const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa)
template<typename TCoordRepB >
Selfoperator= (const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa)

Static Public Member Functions

static unsigned int GetNumberOfComponents ()

Static Public Attributes

static const unsigned int Dimension = NDimension
static const unsigned int InternalDimension = ( NDimension * ( NDimension + 1 ) / 2 )

Detailed Description

template<typename TComponent, unsigned int NDimension = 3>
class itk::SymmetricSecondRankTensor< TComponent, NDimension >

Represent a symmetric tensor of second rank.

This class implements a ND symmetric tensor of second rank.

Since SymmetricSecondRankTensor is a subclass of FixedArray, you can access its components as:

typedef itk::SymmetricSecondRankTensor< float > TensorPixelType; TensorPixelType tensor;

tensor[0] = 1.233; tensor[1] = 1.456;

for convenience the indexed access is also available as

tensor(0,0) = 1.233; tensor(2,0) = 1.233;

The Tensor in principle represents a NxN matrix, but given that it is always symmetric the representation can be compacted into a N*(N+1)/2 elements array that derives from the itk::FixedArray<T>

Author:
Jeffrey Duda from School of Engineering at University of Pennsylvania
Torsten Rohlfing from SRI International Neuroscience Program.

This class was mostly based on files that Jeffrey Duda, Torsten Rohlfing and Martin Styner contributed to the ITK users list during a discussion on support for DiffusionTensorImages. The funding for creating this class was largely provided by NAMIC (National Alliance for Medical Image Computing) (http://www.na-mic.org). A discussion on the design of this class can be found in the WIKI pages of NAMIC:

http://www.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:ITK-DiffusionTensorPixelType

See also:
DiffusionTensor3D

Definition at line 75 of file itkSymmetricSecondRankTensor.h.


Member Typedef Documentation

template<typename TComponent, unsigned int NDimension = 3>
typedef NumericTraits< ValueType >::RealType itk::SymmetricSecondRankTensor< TComponent, NDimension >::AccumulateValueType

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 102 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef FixedArray< TComponent, itkGetStaticConstMacro(InternalDimension) > itk::SymmetricSecondRankTensor< TComponent, NDimension >::BaseArray

Convenience typedefs.

Definition at line 90 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef ComponentType itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComponentArrayType[itkGetStaticConstMacro(InternalDimension)]

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 118 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef TComponent itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComponentType

Define the component type.

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 100 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef FixedArray< TComponent, NDimension > itk::SymmetricSecondRankTensor< TComponent, NDimension >::EigenValuesArrayType

Array of eigen-values.

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 93 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef Matrix< TComponent, NDimension, NDimension > itk::SymmetricSecondRankTensor< TComponent, NDimension >::EigenVectorsMatrixType

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 97 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef Matrix< TComponent, NDimension, NDimension > itk::SymmetricSecondRankTensor< TComponent, NDimension >::MatrixType

Matrix of eigen-vectors.

Definition at line 96 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef NumericTraits< ValueType >::RealType itk::SymmetricSecondRankTensor< TComponent, NDimension >::RealValueType

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 103 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef SymmetricSecondRankTensor itk::SymmetricSecondRankTensor< TComponent, NDimension >::Self

Standard class typedefs.

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 80 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef FixedArray< TComponent, NDimension *( NDimension + 1 ) / 2 > itk::SymmetricSecondRankTensor< TComponent, NDimension >::Superclass

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 81 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef SymmetricEigenAnalysis< MatrixType, EigenValuesArrayType, EigenVectorsMatrixType > itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricEigenAnalysisType

Definition at line 106 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
typedef Superclass::ValueType itk::SymmetricSecondRankTensor< TComponent, NDimension >::ValueType

The element type stored at each location in the FixedArray.

Reimplemented from itk::FixedArray< TComponent, NDimension *(NDimension+1)/2 >.

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 101 of file itkSymmetricSecondRankTensor.h.


Constructor & Destructor Documentation

template<typename TComponent, unsigned int NDimension = 3>
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor ( ) [inline]

Default constructor has nothing to do.

Definition at line 109 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor ( const ComponentType r) [inline]

Definition at line 111 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
template<typename TCoordRepB >
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor ( const SymmetricSecondRankTensor< TCoordRepB, NDimension > &  pa) [inline]

Constructor to enable casting...

Definition at line 115 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor ( const ComponentArrayType  r) [inline]

Pass-through constructor for the Array base class.

Definition at line 121 of file itkSymmetricSecondRankTensor.h.


Member Function Documentation

template<typename TComponent, unsigned int NDimension = 3>
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComputeEigenAnalysis ( EigenValuesArrayType eigenValues,
EigenVectorsMatrixType eigenVectors 
) const

Return an array containing EigenValues, and a matrix containing Eigen vectors.

template<typename TComponent, unsigned int NDimension = 3>
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComputeEigenValues ( EigenValuesArrayType eigenValues) const

Return an array containing EigenValues.

template<typename TComponent, unsigned int NDimension = 3>
ComponentType itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetNthComponent ( int  c) const [inline]

Return the value for the Nth component.

Definition at line 163 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
static unsigned int itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetNumberOfComponents ( ) [inline, static]

Return the number of components.

Definition at line 157 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
AccumulateValueType itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetTrace ( ) const

Get Trace value

Reimplemented in itk::DiffusionTensor3D< TComponent >.

template<typename TComponent, unsigned int NDimension = 3>
const ValueType& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator() ( unsigned int  row,
unsigned int  col 
) const
template<typename TComponent, unsigned int NDimension = 3>
ValueType& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator() ( unsigned int  row,
unsigned int  col 
)

Matrix notation, in const and non-const forms.

template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator* ( const RealValueType scalar) const

Arithmetic operations between tensors and scalars

template<typename TComponent, unsigned int NDimension = 3>
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator*= ( const RealValueType scalar)
template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator+ ( const Self vec) const

Aritmetic operations between pixels. Return a new SymmetricSecondRankTensor.

template<typename TComponent, unsigned int NDimension = 3>
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator+= ( const Self vec)
template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator- ( const Self vec) const
template<typename TComponent, unsigned int NDimension = 3>
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator-= ( const Self vec)
template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator/ ( const RealValueType scalar) const
template<typename TComponent, unsigned int NDimension = 3>
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator/= ( const RealValueType scalar)
template<typename TComponent, unsigned int NDimension = 3>
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= ( const ComponentType r)

Pass-through assignment operator for the Array base class.

Reimplemented in itk::DiffusionTensor3D< TComponent >.

template<typename TComponent, unsigned int NDimension = 3>
template<typename TCoordRepB >
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= ( const SymmetricSecondRankTensor< TCoordRepB, NDimension > &  pa) [inline]

Templated Pass-through assignment for the Array base class.

Definition at line 125 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= ( const ComponentArrayType  r)
template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::PostMultiply ( const MatrixType m) const

Post-Multiply by a Matrix as ResultingTensor = ThisTensor * Matrix.

template<typename TComponent, unsigned int NDimension = 3>
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::PreMultiply ( const MatrixType m) const

Pre-Multiply by a Matrix as ResultingTensor = Matrix * ThisTensor.

template<typename TComponent, unsigned int NDimension = 3>
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::SetIdentity ( )

Set the tensor to an identity tensor. This has 1 in its diagonal elements and zero elsewhere.

template<typename TComponent, unsigned int NDimension = 3>
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::SetNthComponent ( int  c,
const ComponentType v 
) [inline]

Set the Nth component to v.

Definition at line 166 of file itkSymmetricSecondRankTensor.h.


Member Data Documentation

template<typename TComponent, unsigned int NDimension = 3>
const unsigned int itk::SymmetricSecondRankTensor< TComponent, NDimension >::Dimension = NDimension [static]

Dimension of the vector space.

Reimplemented from itk::FixedArray< TComponent, NDimension *(NDimension+1)/2 >.

Definition at line 84 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
const unsigned int itk::SymmetricSecondRankTensor< TComponent, NDimension >::InternalDimension = ( NDimension * ( NDimension + 1 ) / 2 ) [static]

Dimension of the vector space.

Definition at line 85 of file itkSymmetricSecondRankTensor.h.

Referenced by itk::SymmetricSecondRankTensor< TComponent, 3 >::GetNumberOfComponents().


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