Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::SymmetricSecondRankTensor< TComponent, NDimension > Class Template Reference
[Image Representation Objects]

#include <itkSymmetricSecondRankTensor.h>

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

Inheritance graph
[legend]
Collaboration diagram for itk::SymmetricSecondRankTensor< TComponent, NDimension >:

Collaboration graph
[legend]
List of all members.

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
TensorObjects Geometry

Definition at line 74 of file itkSymmetricSecondRankTensor.h.

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
 itkStaticConstMacro (InternalDimension, unsigned int, NDimension *(NDimension+1)/2)
Dimension of the vector space * itkStaticConstMacro (Dimension, unsigned int, NDimension)
Arithmetic operations between
tensors and scalars *Self 
operator * (const RealValueType &scalar) const
const Selfoperator *= (const RealValueType &scalar)
Pass through assignment operator for the Array base class.*/Self &operator= (const Self &r)
const ValueTypeoperator() (unsigned int row, unsigned int col) const
Matrix in const and non const
forms *ValueType
operator() (unsigned int row, unsigned int col)
Aritmetic operations between
pixels Return a new SymmetricSecondRankTensor
*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)
void SetIdentity ()
void SetNthComponent (int c, const ComponentType &v)
 SymmetricSecondRankTensor (const ComponentArrayType r)
Pass through constructor for
the Array base class
SymmetricSecondRankTensor (const Self &r)
 SymmetricSecondRankTensor (const ComponentType &r)
 SymmetricSecondRankTensor ()

Static Public Member Functions

static unsigned int GetNumberOfComponents ()

Public Attributes

Matrix notation


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 101 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 89 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 112 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 99 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 92 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 96 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 95 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 102 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 79 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 80 of file itkSymmetricSecondRankTensor.h.

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

Definition at line 105 of file itkSymmetricSecondRankTensor.h.

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

Reimplemented in itk::DiffusionTensor3D< TComponent >.

Definition at line 100 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 108 of file itkSymmetricSecondRankTensor.h.

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

Definition at line 110 of file itkSymmetricSecondRankTensor.h.

template<typename TComponent, unsigned int NDimension = 3>
Pass through constructor for the Array base class* itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor const Self r  )  [inline]
 

Definition at line 115 of file itkSymmetricSecondRankTensor.h.

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

Definition at line 116 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 146 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 140 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>
itk::SymmetricSecondRankTensor< TComponent, NDimension >::itkStaticConstMacro InternalDimension  ,
unsigned  int,
NDimension *(NDimension+1)/  2
 

template<typename TComponent, unsigned int NDimension = 3>
Dimension of the vector space* itk::SymmetricSecondRankTensor< TComponent, NDimension >::itkStaticConstMacro Dimension  ,
unsigned  int,
NDimension 
 

template<typename TComponent, unsigned int NDimension = 3>
Arithmetic operations between tensors and scalars* 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>
Pass through assignment itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator for the Array base class.*/Self &operator= const Self r  ) 
 

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>
Matrix in const and non const forms* ValueType& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator() unsigned int  row,
unsigned int  col
 

template<typename TComponent, unsigned int NDimension = 3>
Aritmetic operations between pixels Return a new SymmetricSecondRankTensor* 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 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 ComponentArrayType  r  ) 
 

Reimplemented in itk::DiffusionTensor3D< TComponent >.

template<typename TComponent, unsigned int NDimension = 3>
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= const ComponentType r  ) 
 

Reimplemented in itk::DiffusionTensor3D< TComponent >.

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 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 150 of file itkSymmetricSecondRankTensor.h.


Member Data Documentation

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

Definition at line 153 of file itkSymmetricSecondRankTensor.h.


The documentation for this class was generated from the following file:
Generated at Sun Jul 9 21:37:00 2006 for ITK by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2000