Represent a symmetric tensor of second rank. More...
#include <itkSymmetricSecondRankTensor.h>
Public Types | |
typedef NumericTraits < ValueType >::RealType | AccumulateValueType |
typedef FixedArray< TComponent, itkGetStaticConstMacro(InternalDimension)> | BaseArray |
typedef ValueType | CArray [VLength] |
typedef ComponentType | ComponentArrayType [itkGetStaticConstMacro(InternalDimension)] |
typedef TComponent | ComponentType |
typedef const ValueType * | const_pointer |
typedef const ValueType & | const_reference |
typedef const ValueType * | ConstIterator |
typedef FixedArray< TComponent, NDimension > | EigenValuesArrayType |
typedef Matrix< TComponent, NDimension, NDimension > | EigenVectorsMatrixType |
typedef ValueType * | Iterator |
typedef Matrix< TComponent, NDimension, NDimension > | MatrixType |
typedef ValueType * | pointer |
typedef NumericTraits < ValueType >::RealType | RealValueType |
typedef ValueType & | reference |
typedef SymmetricSecondRankTensor | Self |
typedef unsigned int | SizeType |
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 |
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) | |
template<typename TCoordRepB > | |
SymmetricSecondRankTensor (const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa) | |
SymmetricSecondRankTensor () | |
SymmetricSecondRankTensor (const ComponentArrayType r) | |
template<typename TCoordRepB > | |
Self & | operator= (const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa) |
Self & | operator= (const ComponentType &r) |
Self & | operator= (const ComponentArrayType r) |
Self | operator+ (const Self &vec) const |
Self | operator- (const Self &vec) const |
const Self & | operator+= (const Self &vec) |
const Self & | operator-= (const Self &vec) |
Self | operator* (const RealValueType &scalar) const |
Self | operator/ (const RealValueType &scalar) const |
const Self & | operator*= (const RealValueType &scalar) |
const Self & | operator/= (const RealValueType &scalar) |
ValueType & | operator() (unsigned int row, unsigned int col) |
const ValueType & | operator() (unsigned int row, unsigned int col) const |
bool | operator== (const FixedArray &r) const |
bool | operator!= (const FixedArray &r) const |
reference | operator[] (short index) |
const_reference | operator[] (short index) const |
reference | operator[] (unsigned short index) |
const_reference | operator[] (unsigned short index) const |
reference | operator[] (int index) |
const_reference | operator[] (int index) const |
reference | operator[] (unsigned int index) |
const_reference | operator[] (unsigned int index) const |
reference | operator[] (long index) |
const_reference | operator[] (long index) const |
reference | operator[] (unsigned long index) |
const_reference | operator[] (unsigned long index) const |
void | SetElement (unsigned short index, const_reference value) |
const_reference | GetElement (unsigned short index) const |
ValueType * | GetDataPointer () |
const ValueType * | GetDataPointer () const |
Iterator | Begin () |
ConstIterator | Begin () const |
Iterator | End () |
ConstIterator | End () const |
ReverseIterator | rBegin () |
ConstReverseIterator | rBegin () const |
ReverseIterator | rEnd () |
ConstReverseIterator | rEnd () const |
SizeType | Size () const |
void | Fill (const ValueType &) |
Static Public Member Functions | |
static FixedArray | Filled (const ValueType &) |
static unsigned int | GetNumberOfComponents () |
Static Public Attributes | |
static const unsigned int | Length |
static const unsigned int | Dimension = NDimension |
static const unsigned int | InternalDimension = NDimension*(NDimension+1)/2 |
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>
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
Definition at line 74 of file itkSymmetricSecondRankTensor.h.
typedef NumericTraits<ValueType>::RealType itk::SymmetricSecondRankTensor< TComponent, NDimension >::AccumulateValueType |
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 101 of file itkSymmetricSecondRankTensor.h.
typedef FixedArray<TComponent, itkGetStaticConstMacro(InternalDimension)> itk::SymmetricSecondRankTensor< TComponent, NDimension >::BaseArray |
Convenience typedefs.
Definition at line 89 of file itkSymmetricSecondRankTensor.h.
typedef ValueType itk::FixedArray< TComponent , VLength >::CArray[VLength] [inherited] |
A type representing the C-array version of this FixedArray.
Definition at line 77 of file itkFixedArray.h.
typedef ComponentType itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComponentArrayType[itkGetStaticConstMacro(InternalDimension)] |
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 117 of file itkSymmetricSecondRankTensor.h.
typedef TComponent itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComponentType |
Define the component type.
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 99 of file itkSymmetricSecondRankTensor.h.
typedef const ValueType* itk::FixedArray< TComponent , VLength >::const_pointer [inherited] |
A const pointer to the ValueType.
Definition at line 129 of file itkFixedArray.h.
typedef const ValueType& itk::FixedArray< TComponent , VLength >::const_reference [inherited] |
A const reference to the ValueType.
Definition at line 135 of file itkFixedArray.h.
typedef const ValueType* itk::FixedArray< TComponent , VLength >::ConstIterator [inherited] |
A const iterator through the array.
Definition at line 83 of file itkFixedArray.h.
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.
typedef Matrix<TComponent, NDimension, NDimension> itk::SymmetricSecondRankTensor< TComponent, NDimension >::EigenVectorsMatrixType |
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 96 of file itkSymmetricSecondRankTensor.h.
typedef ValueType* itk::FixedArray< TComponent , VLength >::Iterator [inherited] |
An iterator through the array.
Definition at line 80 of file itkFixedArray.h.
typedef Matrix<TComponent, NDimension, NDimension> itk::SymmetricSecondRankTensor< TComponent, NDimension >::MatrixType |
Matrix of eigen-vectors.
Definition at line 95 of file itkSymmetricSecondRankTensor.h.
typedef ValueType* itk::FixedArray< TComponent , VLength >::pointer [inherited] |
A pointer to the ValueType.
Definition at line 126 of file itkFixedArray.h.
typedef NumericTraits<ValueType>::RealType itk::SymmetricSecondRankTensor< TComponent, NDimension >::RealValueType |
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 102 of file itkSymmetricSecondRankTensor.h.
typedef ValueType& itk::FixedArray< TComponent , VLength >::reference [inherited] |
A reference to the ValueType.
Definition at line 132 of file itkFixedArray.h.
typedef SymmetricSecondRankTensor itk::SymmetricSecondRankTensor< TComponent, NDimension >::Self |
Standard class typedefs.
Reimplemented in itk::DiffusionTensor3D< TComponent >.
Definition at line 79 of file itkSymmetricSecondRankTensor.h.
typedef unsigned int itk::FixedArray< TComponent , VLength >::SizeType [inherited] |
Definition at line 137 of file itkFixedArray.h.
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.
typedef SymmetricEigenAnalysis< MatrixType, EigenValuesArrayType, EigenVectorsMatrixType > itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricEigenAnalysisType |
Definition at line 105 of file itkSymmetricSecondRankTensor.h.
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 100 of file itkSymmetricSecondRankTensor.h.
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor | ( | ) | [inline] |
Default constructor has nothing to do.
Definition at line 108 of file itkSymmetricSecondRankTensor.h.
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor | ( | const ComponentType & | r | ) | [inline] |
Definition at line 110 of file itkSymmetricSecondRankTensor.h.
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor | ( | const SymmetricSecondRankTensor< TCoordRepB, NDimension > & | pa | ) | [inline] |
Constructor to enable casting...
Definition at line 114 of file itkSymmetricSecondRankTensor.h.
itk::SymmetricSecondRankTensor< TComponent, NDimension >::SymmetricSecondRankTensor | ( | const ComponentArrayType | r | ) | [inline] |
Pass-through constructor for the Array base class.
Definition at line 120 of file itkSymmetricSecondRankTensor.h.
Iterator itk::FixedArray< TComponent , VLength >::Begin | ( | void | ) | [inherited] |
Get various iterators to the array.
Referenced by itk::DTITubeSpatialObjectPoint< TPointDimension >::SetTensorMatrix().
ConstIterator itk::FixedArray< TComponent , VLength >::Begin | ( | void | ) | const [inherited] |
Get various iterators to the array.
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComputeEigenAnalysis | ( | EigenValuesArrayType & | eigenValues, | |
EigenVectorsMatrixType & | eigenVectors | |||
) | const |
Return an array containing EigenValues, and a matrix containing Eigen vectors.
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::ComputeEigenValues | ( | EigenValuesArrayType & | eigenValues | ) | const |
Return an array containing EigenValues.
Iterator itk::FixedArray< TComponent , VLength >::End | ( | void | ) | [inherited] |
Get various iterators to the array.
Referenced by itk::DTITubeSpatialObjectPoint< TPointDimension >::SetTensorMatrix().
ConstIterator itk::FixedArray< TComponent , VLength >::End | ( | void | ) | const [inherited] |
Get various iterators to the array.
void itk::FixedArray< TComponent , VLength >::Fill | ( | const ValueType & | ) | [inherited] |
Get various iterators to the array.
Referenced by itk::SymmetricSecondRankTensor< TComponent, 3 >::SymmetricSecondRankTensor().
static FixedArray itk::FixedArray< TComponent , VLength >::Filled | ( | const ValueType & | ) | [static, inherited] |
ValueType* itk::FixedArray< TComponent , VLength >::GetDataPointer | ( | ) | [inline, inherited] |
Return a pointer to the data.
Definition at line 222 of file itkFixedArray.h.
const ValueType* itk::FixedArray< TComponent , VLength >::GetDataPointer | ( | ) | const [inline, inherited] |
Return a pointer to the data.
Definition at line 223 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::GetElement | ( | unsigned short | index | ) | const [inline, inherited] |
Set/Get element methods are more convenient in wrapping languages
Definition at line 218 of file itkFixedArray.h.
ComponentType itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetNthComponent | ( | int | c | ) | const [inline] |
Return the value for the Nth component.
Definition at line 157 of file itkSymmetricSecondRankTensor.h.
static unsigned int itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetNumberOfComponents | ( | ) | [inline, static] |
Return the number of components.
Definition at line 151 of file itkSymmetricSecondRankTensor.h.
AccumulateValueType itk::SymmetricSecondRankTensor< TComponent, NDimension >::GetTrace | ( | ) | const |
Get Trace value
Reimplemented in itk::DiffusionTensor3D< TComponent >.
bool itk::FixedArray< TComponent , VLength >::operator!= | ( | const FixedArray< TComponent, NDimension *(NDimension+1)/2 > & | r | ) | const [inline, inherited] |
Operators == and != are used to compare whether two arrays are equal. Note that arrays are equal when the number of components (size) is the same, and each component value is equal.
Definition at line 194 of file itkFixedArray.h.
const ValueType& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator() | ( | unsigned int | row, | |
unsigned int | col | |||
) | const |
Matrix notation, in const and non-const forms.
ValueType& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator() | ( | unsigned int | row, | |
unsigned int | col | |||
) |
Matrix notation, in const and non-const forms.
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator* | ( | const RealValueType & | scalar | ) | const |
Arithmetic operations between tensors and scalars
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator*= | ( | const RealValueType & | scalar | ) |
Arithmetic operations between tensors and scalars
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator+ | ( | const Self & | vec | ) | const |
Aritmetic operations between pixels. Return a new SymmetricSecondRankTensor.
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator+= | ( | const Self & | vec | ) |
Aritmetic operations between pixels. Return a new SymmetricSecondRankTensor.
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator- | ( | const Self & | vec | ) | const |
Aritmetic operations between pixels. Return a new SymmetricSecondRankTensor.
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator-= | ( | const Self & | vec | ) |
Aritmetic operations between pixels. Return a new SymmetricSecondRankTensor.
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator/ | ( | const RealValueType & | scalar | ) | const |
Arithmetic operations between tensors and scalars
const Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator/= | ( | const RealValueType & | scalar | ) |
Arithmetic operations between tensors and scalars
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= | ( | const ComponentType & | r | ) |
Pass-through assignment operator for the Array base class.
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= | ( | const SymmetricSecondRankTensor< TCoordRepB, NDimension > & | pa | ) | [inline] |
Templated Pass-through assignment for the Array base class.
Definition at line 124 of file itkSymmetricSecondRankTensor.h.
Self& itk::SymmetricSecondRankTensor< TComponent, NDimension >::operator= | ( | const ComponentArrayType | r | ) |
Pass-through assignment operator for the Array base class.
bool itk::FixedArray< TComponent , VLength >::operator== | ( | const FixedArray< TComponent, NDimension *(NDimension+1)/2 > & | r | ) | const [inherited] |
Operators == and != are used to compare whether two arrays are equal. Note that arrays are equal when the number of components (size) is the same, and each component value is equal.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned int | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 207 of file itkFixedArray.h.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned long | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 211 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | long | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 210 of file itkFixedArray.h.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | long | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 209 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned long | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 212 of file itkFixedArray.h.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | int | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 205 of file itkFixedArray.h.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | short | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 201 of file itkFixedArray.h.
Referenced by itk::SymmetricSecondRankTensor< TComponent, 3 >::GetNthComponent(), and itk::SymmetricSecondRankTensor< TComponent, 3 >::SetNthComponent().
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | short | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 202 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | int | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 206 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned short | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 204 of file itkFixedArray.h.
reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned short | index | ) | [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 203 of file itkFixedArray.h.
const_reference itk::FixedArray< TComponent , VLength >::operator[] | ( | unsigned int | index | ) | const [inline, inherited] |
Allow the FixedArray to be indexed normally. No bounds checking is done. The separate versions are a work-around for an integer conversion bug in Visual C++.
Definition at line 208 of file itkFixedArray.h.
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::PostMultiply | ( | const MatrixType & | m | ) | const |
Self itk::SymmetricSecondRankTensor< TComponent, NDimension >::PreMultiply | ( | const MatrixType & | m | ) | const |
ReverseIterator itk::FixedArray< TComponent , VLength >::rBegin | ( | ) | [inherited] |
Get various iterators to the array.
ConstReverseIterator itk::FixedArray< TComponent , VLength >::rBegin | ( | ) | const [inherited] |
Get various iterators to the array.
ReverseIterator itk::FixedArray< TComponent , VLength >::rEnd | ( | ) | [inherited] |
Get various iterators to the array.
ConstReverseIterator itk::FixedArray< TComponent , VLength >::rEnd | ( | ) | const [inherited] |
Get various iterators to the array.
void itk::FixedArray< TComponent , VLength >::SetElement | ( | unsigned short | index, | |
const_reference | value | |||
) | [inline, inherited] |
Set/Get element methods are more convenient in wrapping languages
Definition at line 216 of file itkFixedArray.h.
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::SetIdentity | ( | ) |
Set the tensor to an identity tensor. This has 1 in its diagonal elements zero elsewhere
void itk::SymmetricSecondRankTensor< TComponent, NDimension >::SetNthComponent | ( | int | c, | |
const ComponentType & | v | |||
) | [inline] |
Set the Nth component to v.
Definition at line 161 of file itkSymmetricSecondRankTensor.h.
SizeType itk::FixedArray< TComponent , VLength >::Size | ( | void | ) | const [inherited] |
Get various iterators to the array.
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 83 of file itkSymmetricSecondRankTensor.h.
const unsigned int itk::SymmetricSecondRankTensor< TComponent, NDimension >::InternalDimension = NDimension*(NDimension+1)/2 [static] |
Dimension of the vector space.
Definition at line 84 of file itkSymmetricSecondRankTensor.h.
Referenced by itk::SymmetricSecondRankTensor< TComponent, 3 >::GetNumberOfComponents().
const unsigned int itk::FixedArray< TComponent , VLength >::Length [static, inherited] |
Length constant
Definition at line 68 of file itkFixedArray.h.