DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
Public Types | Public Member Functions | Static Public Attributes | List of all members
itk::DiffusionTensor< TPrecision > Class Template Reference

#include <itkDiffusionTensor.h>

+ Inheritance diagram for itk::DiffusionTensor< TPrecision >:
+ Collaboration diagram for itk::DiffusionTensor< TPrecision >:

Detailed Description

template<class TPrecision>
class itk::DiffusionTensor< TPrecision >

tensor with some useful functions

The elements is stored as a 6 dimentional array.

\[ \begin{array}{ccc} 0 & 1 & 2 \\ X & 3 & 4 \\ X & X & 5 \end{array} \]

Author
Jian Cheng

Definition at line 46 of file itkDiffusionTensor.h.

Public Types

typedef Superclass::AccumulateValueType AccumulateValueType
 
typedef Superclass::ComponentType ComponentType
 
typedef Superclass::EigenValuesArrayType EigenValuesArrayType
 
typedef Superclass::EigenVectorsMatrixType EigenVectorsMatrixType
 
typedef Superclass::RealValueType RealValueType
 
typedef DiffusionTensor Self
 
typedef DiffusionTensor3D< TPrecision > Superclass
 
typedef Superclass::SymmetricEigenAnalysisType SymmetricEigenAnalysisType
 
typedef Superclass::ValueType ValueType
 
typedef Vector< TPrecision, NDimensionVectorType
 

Public Member Functions

 DiffusionTensor ()
 
 DiffusionTensor (const Self &r)
 
template<class TTensorValueType >
 DiffusionTensor (const DiffusionTensor< TTensorValueType > &v)
 
TPrecision EuclideanDistance (const DiffusionTensor< TPrecision > &X) const
 
Self Exp () const
 
void Flip (const int flipx, const int flipy, const int flipz)
 
TPrecision GeodesicDistance (const DiffusionTensor< TPrecision > &X) const
 
RealValueType GetADC () const
 
double GetDeterminant () const
 
template<class TVectorType >
void GetDWISamples (TVectorType &vec, const utl::NDArray< TPrecision, 2 > &gradients, const std::vector< TPrecision > &bValues) const
 
template<class TVectorType >
void GetEAPSamples (TVectorType &vec, const utl::NDArray< TPrecision, 2 > &gradients, const std::vector< TPrecision > &rValues, const TPrecision &tau) const
 
void GetEigenValuesVectors (vnl_diag_matrix< TPrecision > &eigenValues, vnl_matrix< TPrecision > &eigenVectors) const
 
template<class TArrayType , class TMatrixType >
void GetEigenValuesVectorsAnalytic (TArrayType &eigenValues, TMatrixType &eigenVectors) const
 
RealValueType GetFA () const
 
RealValueType GetGA () const
 
RealValueType GetMD () const
 
RealValueType GetMeanSquaredDisplacement (const TPrecision tau) const
 
RealValueType GetMODE () const
 
double GetNorm () const
 
template<class TVectorType >
void GetODFSamples (TVectorType &vec, const utl::NDArray< TPrecision, 2 > &gradients, const int &odfOrder=2, const bool &isNormalize=false) const
 
double GetQuadraticForm (const double x, const double y, const double z) const
 
RealValueType GetRA () const
 
RealValueType GetReturnToOrigin (const TPrecision tau) const
 
Self GetRotate (const typename Self::MatrixType &mat) const
 
vnl_matrix< TPrecision > GetRotate (const vnl_matrix< TPrecision > &vec) const
 
template<class TVectorType >
void GetSphericalSamples (TVectorType &vec, const utl::NDArray< TPrecision, 2 > &gradients) const
 
vnl_matrix< TPrecision > GetVnlMatrix () const
 
bool HasNans () const
 
Self Inv () const
 
Self InvSqrt () const
 
bool IsDiagonal (const double eps=1e-10) const
 
bool IsFinite () const
 
bool IsPositive () const
 
bool IsSame (const Self &mat, const double eps=1e-8) const
 
bool IsZero (const double eps=1e-10) const
 
TPrecision KLDistance (const DiffusionTensor< TPrecision > &X) const
 
Self Log () const
 
TPrecision LogEucDistance (const DiffusionTensor< TPrecision > &X) const
 
bool operator!= (const Self &mat) const
 
ValueTypeoperator() (unsigned int row, unsigned int col)
 
const ValueTypeoperator() (unsigned int row, unsigned int col) const
 
Self operator* (const Self &A) const
 
vnl_matrix< TPrecision > operator* (const vnl_matrix< TPrecision > &A) const
 
VectorType operator* (const VectorType &v) const
 
Self operator+ (const Self &mat) const
 
Self operator- (const Self &mat) const
 
template<class TMatrixType >
Selfoperator= (const TMatrixType &mat)
 
bool operator== (const Self &mat) const
 
void Positivize () const
 
Self Pow (const double &n) const
 
void Print (std::ostream &os, Indent indent=0) const
 
SelfRotate (const typename Self::MatrixType &mat)
 
template<class TArrayType >
void SetEigenValues (const TArrayType &array)
 
template<class TMatrixType >
void SetEigenVectors (const TMatrixType &vectors)
 
void SetVnlMatrix (const vnl_matrix< TPrecision > &mat)
 
Self Sqrt () const
 

Static Public Attributes

static const unsigned int NDegreesOfFreedom = NDimension*(NDimension+1)/2
 
static const unsigned int NDimension = 3
 

Member Typedef Documentation

template<class TPrecision>
typedef Superclass::AccumulateValueType itk::DiffusionTensor< TPrecision >::AccumulateValueType

Definition at line 63 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::ComponentType itk::DiffusionTensor< TPrecision >::ComponentType

Definition at line 58 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::EigenValuesArrayType itk::DiffusionTensor< TPrecision >::EigenValuesArrayType

Definition at line 60 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::EigenVectorsMatrixType itk::DiffusionTensor< TPrecision >::EigenVectorsMatrixType

Definition at line 61 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::RealValueType itk::DiffusionTensor< TPrecision >::RealValueType

Definition at line 64 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef DiffusionTensor itk::DiffusionTensor< TPrecision >::Self

Standard class typedefs.

Definition at line 51 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef DiffusionTensor3D<TPrecision> itk::DiffusionTensor< TPrecision >::Superclass

Definition at line 52 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::SymmetricEigenAnalysisType itk::DiffusionTensor< TPrecision >::SymmetricEigenAnalysisType

Definition at line 66 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Superclass::ValueType itk::DiffusionTensor< TPrecision >::ValueType

Definition at line 57 of file itkDiffusionTensor.h.

template<class TPrecision>
typedef Vector<TPrecision, NDimension> itk::DiffusionTensor< TPrecision >::VectorType

Definition at line 68 of file itkDiffusionTensor.h.

Constructor & Destructor Documentation

template<class TPrecision>
itk::DiffusionTensor< TPrecision >::DiffusionTensor ( )
inline

Defaut constructor

Definition at line 71 of file itkDiffusionTensor.h.

template<class TPrecision>
itk::DiffusionTensor< TPrecision >::DiffusionTensor ( const Self r)
inline

copy constructors.

Definition at line 74 of file itkDiffusionTensor.h.

template<class TPrecision>
template<class TTensorValueType >
itk::DiffusionTensor< TPrecision >::DiffusionTensor ( const DiffusionTensor< TTensorValueType > &  v)
inline

Definition at line 77 of file itkDiffusionTensor.h.

Member Function Documentation

template<typename TPrecision>
TPrecision itk::DiffusionTensor< TPrecision >::EuclideanDistance ( const DiffusionTensor< TPrecision > &  X) const
inline

Definition at line 675 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::KLDistance().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::InvSqrt().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::Exp ( ) const
inline

Return the matrix exponential

Definition at line 589 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Pow(), itk::DiffusionTensor< TPrecision >::SetVnlMatrix(), and utlAssert.

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::Log().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
void itk::DiffusionTensor< TPrecision >::Flip ( const int  flipx,
const int  flipy,
const int  flipz 
)
inline
template<typename TPrecision>
TPrecision itk::DiffusionTensor< TPrecision >::GeodesicDistance ( const DiffusionTensor< TPrecision > &  X) const
inline

Definition at line 694 of file itkDiffusionTensor.hxx.

References utl::Log(), and itk::DiffusionTensor< TPrecision >::LogEucDistance().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::KLDistance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetADC ( ) const

Mean Diffusivity

Definition at line 441 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetRA().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), itk::DiffusionTensor< TPrecision >::GetFA(), and itk::DiffusionTensor< TPrecision >::GetMD().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
double itk::DiffusionTensor< TPrecision >::GetDeterminant ( ) const
inline

Definition at line 550 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetNorm().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), itk::DiffusionTensor< TPrecision >::GetMODE(), and itk::DiffusionTensor< TPrecision >::HasNans().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
template<class TVectorType >
void itk::DiffusionTensor< TPrecision >::GetDWISamples ( TVectorType &  vec,
const utl::NDArray< TPrecision, 2 > &  gradients,
const std::vector< TPrecision > &  bValues 
) const

get the DWI samples based on given gradients (Cartesian form) and b values.

Note
No boundary checking. The size of the input vec should be the same as the gradients.rows(), and vec should have the operator[].

Definition at line 326 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetODFSamples(), and utlAssert.

Referenced by itk::TensorBasisMatrixGenerator< TElement >::ComputeBasisMatrix(), itk::DiffusionTensor< TPrecision >::Flip(), itk::DWIGenerator< TOutputImage, TScalarImage >::GenerateData(), itk::DWISingleVoxelGenerator< TOutputImage, TScalarImage >::GenerateData(), and itk::DiffusionTensor< TPrecision >::GetSphericalSamples().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
template<class TVectorType >
void itk::DiffusionTensor< TPrecision >::GetEAPSamples ( TVectorType &  vec,
const utl::NDArray< TPrecision, 2 > &  gradients,
const std::vector< TPrecision > &  rValues,
const TPrecision &  tau 
) const

get the EAP samples based on given gradients (Cartesian form) and r values.

Note
No boundary checking. The size of the input vec should be the same as the gradients.rows(), and vec should have the operator[].

Definition at line 373 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetReturnToOrigin(), M_PI, and utlAssert.

Referenced by itk::TensorBasisMatrixGenerator< TElement >::ComputeBasisMatrix(), itk::DiffusionTensor< TPrecision >::Flip(), itk::DWIGenerator< TOutputImage, TScalarImage >::GenerateData(), itk::DWISingleVoxelGenerator< TOutputImage, TScalarImage >::GenerateData(), and itk::DiffusionTensor< TPrecision >::GetODFSamples().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
void itk::DiffusionTensor< TPrecision >::GetEigenValuesVectors ( vnl_diag_matrix< TPrecision > &  eigenValues,
vnl_matrix< TPrecision > &  eigenVectors 
) const

Return an array containing EigenValues in ascending order, and a matrix containing the corresponding Eigenvectors.

Parameters
eigenVectorseigenvectors stored in vnl_matrix<TPrecision>, where each column is an eigenvector.
Note
eigenvectors in itk::SymmetricSecondRankTensor::ComputeEigenAnalysis stored as rows of itk::Matrix

Definition at line 84 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetEigenValuesVectorsAnalytic().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::operator()().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
template<class TArrayType , class TMatrixType >
void itk::DiffusionTensor< TPrecision >::GetEigenValuesVectorsAnalytic ( TArrayType &  eigenValues,
TMatrixType &  eigenVectors 
) const

analytic way to calculate eigenValues (in ascending order) and eigenVectors. In mathematica, Eigenvectors[( { {a, b, c}, {b, d, e}, {c, e, f} } )]

Parameters
eigenVectorseigenvectors stored in vnl_matrix<TPrecision>, where each column is an eigenvector.
Note
: Eigenvalues can be obtained analytically. But there is a numerical issue when dividing a small number for calculating eigenvectors. In this case, use a numerical way for eigenvectors.

Definition at line 100 of file itkDiffusionTensor.hxx.

References utl::PolynomialRoot(), and itk::DiffusionTensor< TPrecision >::SetEigenValues().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), itk::DiffusionTensor< TPrecision >::GetEigenValuesVectors(), and itk::MeshFromTensorImageFilter< TInputImage, TOutputMesh >::GetScalarCodeFromTensor().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetFA ( ) const
template<class TPrecision >
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetGA ( ) const

GA

Definition at line 408 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetFA().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::GetMeanSquaredDisplacement().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
RealValueType itk::DiffusionTensor< TPrecision >::GetMD ( ) const
inline
template<class TPrecision>
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetMeanSquaredDisplacement ( const TPrecision  tau) const
template<class TPrecision >
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetMODE ( ) const
template<class TPrecision >
double itk::DiffusionTensor< TPrecision >::GetNorm ( ) const
inline

Definition at line 559 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Log().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), itk::DiffusionTensor< TPrecision >::GetDeterminant(), and itk::DiffusionTensor< TPrecision >::GetMODE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
template<class TVectorType >
void itk::DiffusionTensor< TPrecision >::GetODFSamples ( TVectorType &  vec,
const utl::NDArray< TPrecision, 2 > &  gradients,
const int &  odfOrder = 2,
const bool &  isNormalize = false 
) const

get the ODF samples based on given gradients (Cartesian form) and odf order. When gradients are evenly distributed in $S^2$, the odf samples can be numerically normalized if isNormalize=true.

Note
No boundary checking. The size of the input vec should be the same as the gradients.rows(), and vec should have the operator[].

Definition at line 342 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetEAPSamples(), and M_PI.

Referenced by itk::TensorBasisMatrixGenerator< TElement >::ComputeBasisMatrix(), itk::DiffusionTensor< TPrecision >::Flip(), itk::DWIGenerator< TOutputImage, TScalarImage >::GenerateData(), itk::DWISingleVoxelGenerator< TOutputImage, TScalarImage >::GenerateData(), and itk::DiffusionTensor< TPrecision >::GetDWISamples().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
double itk::DiffusionTensor< TPrecision >::GetQuadraticForm ( const double  x,
const double  y,
const double  z 
) const

Definition at line 302 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetSphericalSamples().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::GetRotate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetRA ( ) const

RA

Definition at line 449 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetMODE().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::GetADC().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
DiffusionTensor< TPrecision >::RealValueType itk::DiffusionTensor< TPrecision >::GetReturnToOrigin ( const TPrecision  tau) const
template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::GetRotate ( const typename Self::MatrixType &  mat) const
inline

Transform the tensor with a matrix

Definition at line 281 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::SetVnlMatrix().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::Rotate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
vnl_matrix< TPrecision > itk::DiffusionTensor< TPrecision >::GetRotate ( const vnl_matrix< TPrecision > &  vec) const
inline

Transform the tensor with a matrix

Definition at line 292 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetQuadraticForm().

+ Here is the call graph for this function:

template<class TPrecision>
template<class TVectorType >
void itk::DiffusionTensor< TPrecision >::GetSphericalSamples ( TVectorType &  vec,
const utl::NDArray< TPrecision, 2 > &  gradients 
) const

get spherical samples based on given gradients (Cartesian form).

Note
No boundary checking. The size of the input vec should be the same as the gradients.rows(), and vec should have the operator[].

Definition at line 312 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetDWISamples().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::GetQuadraticForm().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
vnl_matrix< TPrecision > itk::DiffusionTensor< TPrecision >::GetVnlMatrix ( void  ) const
inline

Get a vnl_matrix with a copy of the internal memory block.

Definition at line 245 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::SetVnlMatrix().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), itk::DiffusionTensor< TPrecision >::operator*(), and itk::DiffusionTensor< TPrecision >::SetEigenVectors().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
bool itk::DiffusionTensor< TPrecision >::HasNans ( ) const

Definition at line 542 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetDeterminant().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::IsFinite().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::Inv ( void  ) const
inline

Definition at line 638 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Sqrt(), and utlGlobalException.

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), itk::DiffusionTensor< TPrecision >::KLDistance(), and itk::DiffusionTensor< TPrecision >::Pow().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::InvSqrt ( ) const
inline

Definition at line 667 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::EuclideanDistance(), and utl::Pow().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::Sqrt().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
bool itk::DiffusionTensor< TPrecision >::IsDiagonal ( const double  eps = 1e-10) const

Definition at line 520 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::IsFinite().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::IsZero().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
bool itk::DiffusionTensor< TPrecision >::IsFinite ( ) const

Definition at line 534 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::HasNans().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::IsDiagonal().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
bool itk::DiffusionTensor< TPrecision >::IsPositive ( ) const

Definition at line 474 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Positivize(), and utlAssert.

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::GetMODE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
bool itk::DiffusionTensor< TPrecision >::IsSame ( const Self mat,
const double  eps = 1e-8 
) const
inline
template<class TPrecision >
bool itk::DiffusionTensor< TPrecision >::IsZero ( const double  eps = 1e-10) const

Definition at line 507 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::IsDiagonal().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::Positivize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename TPrecision>
TPrecision itk::DiffusionTensor< TPrecision >::KLDistance ( const DiffusionTensor< TPrecision > &  X) const
inline

Definition at line 683 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GeodesicDistance(), and itk::DiffusionTensor< TPrecision >::Inv().

Referenced by itk::DiffusionTensor< TPrecision >::EuclideanDistance(), and itk::DiffusionTensor< TPrecision >::GetMD().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::Log ( ) const
inline

Return the matrix logarithm

Definition at line 568 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Exp(), itk::DiffusionTensor< TPrecision >::SetVnlMatrix(), and utlException.

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), itk::DiffusionTensor< TPrecision >::GetNorm(), and itk::DiffusionTensor< TPrecision >::LogEucDistance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename TPrecision>
TPrecision itk::DiffusionTensor< TPrecision >::LogEucDistance ( const DiffusionTensor< TPrecision > &  X) const
inline

Definition at line 704 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::Log(), and utl::Log().

Referenced by itk::DiffusionTensor< TPrecision >::GeodesicDistance(), and itk::DiffusionTensor< TPrecision >::GetMD().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
bool itk::DiffusionTensor< TPrecision >::operator!= ( const Self mat) const
inline

Definition at line 88 of file itkDiffusionTensor.h.

References itk::DiffusionTensor< TPrecision >::operator==().

+ Here is the call graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision >::ValueType & itk::DiffusionTensor< TPrecision >::operator() ( unsigned int  row,
unsigned int  col 
)

access matrix values, which is similar with the ones in DiffusionTensor3D, but with boundary check.

Matrix notation access to elements

Definition at line 64 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetEigenValuesVectors(), and utlAssert.

Referenced by itk::DiffusionTensor< TPrecision >::operator()(), and itk::DiffusionTensor< TPrecision >::operator*().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
const DiffusionTensor< TPrecision >::ValueType & itk::DiffusionTensor< TPrecision >::operator() ( unsigned int  row,
unsigned int  col 
) const

Matrix notation access to elements

Definition at line 40 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::operator()(), and utlAssert.

+ Here is the call graph for this function:

template<class TPrecision>
Self itk::DiffusionTensor< TPrecision >::operator* ( const Self A) const
inline

Definition at line 127 of file itkDiffusionTensor.h.

References itk::DiffusionTensor< TPrecision >::GetVnlMatrix(), and itk::DiffusionTensor< TPrecision >::SetVnlMatrix().

+ Here is the call graph for this function:

template<class TPrecision>
vnl_matrix<TPrecision> itk::DiffusionTensor< TPrecision >::operator* ( const vnl_matrix< TPrecision > &  A) const
inline

Definition at line 133 of file itkDiffusionTensor.h.

References itk::DiffusionTensor< TPrecision >::GetVnlMatrix().

+ Here is the call graph for this function:

template<class TPrecision>
VectorType itk::DiffusionTensor< TPrecision >::operator* ( const VectorType v) const
inline

Tensor multiplication by a vector - returns a vector

Definition at line 139 of file itkDiffusionTensor.h.

References itk::DiffusionTensor< TPrecision >::NDimension, and itk::DiffusionTensor< TPrecision >::operator()().

+ Here is the call graph for this function:

template<class TPrecision>
Self itk::DiffusionTensor< TPrecision >::operator+ ( const Self mat) const
inline
template<class TPrecision>
Self itk::DiffusionTensor< TPrecision >::operator- ( const Self mat) const
inline
template<class TPrecision>
template<class TMatrixType >
Self& itk::DiffusionTensor< TPrecision >::operator= ( const TMatrixType &  mat)
inline
template<class TPrecision>
bool itk::DiffusionTensor< TPrecision >::operator== ( const Self mat) const
inline

Definition at line 79 of file itkDiffusionTensor.h.

References itk::DiffusionTensor< TPrecision >::NDegreesOfFreedom.

Referenced by itk::DiffusionTensor< TPrecision >::operator!=().

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::DiffusionTensor< TPrecision >::Positivize ( ) const

Definition at line 487 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::IsZero().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::IsPositive().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::Pow ( const double &  n) const
inline

Power of the tensor

Definition at line 607 of file itkDiffusionTensor.hxx.

References spams::abs(), itk::DiffusionTensor< TPrecision >::Inv(), itk::DiffusionTensor< TPrecision >::SetVnlMatrix(), utlAssert, and utlException.

Referenced by itk::DiffusionTensor< TPrecision >::Exp(), and itk::DiffusionTensor< TPrecision >::GetMD().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
void itk::DiffusionTensor< TPrecision >::Print ( std::ostream &  os,
Indent  indent = 0 
) const
inline
template<class TPrecision >
DiffusionTensor< TPrecision > & itk::DiffusionTensor< TPrecision >::Rotate ( const typename Self::MatrixType &  mat)
inline
template<class TPrecision >
template<class TArrayType >
void itk::DiffusionTensor< TPrecision >::SetEigenValues ( const TArrayType &  array)
template<class TPrecision >
template<class TMatrixType >
void itk::DiffusionTensor< TPrecision >::SetEigenVectors ( const TMatrixType &  vectors)

Definition at line 225 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::GetVnlMatrix().

Referenced by itk::DiffusionTensor< TPrecision >::Flip(), and itk::DiffusionTensor< TPrecision >::SetEigenValues().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
void itk::DiffusionTensor< TPrecision >::SetVnlMatrix ( const vnl_matrix< TPrecision > &  mat)
inline
template<class TPrecision >
DiffusionTensor< TPrecision > itk::DiffusionTensor< TPrecision >::Sqrt ( void  ) const
inline

Definition at line 658 of file itkDiffusionTensor.hxx.

References itk::DiffusionTensor< TPrecision >::InvSqrt(), and utl::Pow().

Referenced by itk::DiffusionTensor< TPrecision >::GetMD(), and itk::DiffusionTensor< TPrecision >::Inv().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

template<class TPrecision>
const unsigned int itk::DiffusionTensor< TPrecision >::NDegreesOfFreedom = NDimension*(NDimension+1)/2
static
template<class TPrecision>
const unsigned int itk::DiffusionTensor< TPrecision >::NDimension = 3
static

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