ITK  4.13.0
Insight Segmentation and Registration Toolkit
itkDiffusionTensor3D.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkDiffusionTensor3D_h
19 #define itkDiffusionTensor3D_h
20 
21 // Undefine an eventual DiffusionTensor3D macro
22 #ifdef DiffusionTensor3D
23 #undef DiffusionTensor3D
24 #endif
25 
27 
28 namespace itk
29 {
78 template< typename TComponent >
79 class ITK_TEMPLATE_EXPORT DiffusionTensor3D:public SymmetricSecondRankTensor< TComponent, 3 >
80 {
81 public:
85 
87  typedef typename Superclass::ValueType ValueType;
89 #if defined( __GNUC__ ) && !defined( __INTEL_COMPILER ) && ( __GNUC__ == 3 )
91 #else
92  typedef typename Superclass::ComponentArrayType ComponentArrayType;
93 #endif
96 
99 
102 
104  DiffusionTensor3D(const Superclass & r);
105  DiffusionTensor3D(const ComponentType & r);
108 
110  template< typename TCoordRepB >
112  SymmetricSecondRankTensor< TComponent, 3 >(pa) {}
113 
115  Self & operator=(const Superclass & r);
116 
117  Self & operator=(const ComponentType & r);
118 
119  Self & operator=(const ComponentArrayType r);
120 
122  template< typename TCoordRepB >
124  {
125  //NOTE (this != &pa ) because they are different pointer types
126  //if this templated function is called
127  // ComponentType 'itk::DiffusionTensor3D<double> *'
128  // TCoordRepB 'const DiffusionTensor3D<float> *')
130  return *this;
131  }
133 
135  AccumulateValueType GetTrace() const;
136 
138  RealValueType GetFractionalAnisotropy() const;
139 
141  RealValueType GetRelativeAnisotropy() const;
142 
144  RealValueType GetInnerScalarProduct() const;
145 };
146 } // end namespace itk
148 
149 #ifndef ITK_MANUAL_INSTANTIATION
150 #include "itkDiffusionTensor3D.hxx"
151 #endif
152 
153 #endif
A templated class holding a M x N size Matrix.
Definition: itkMatrix.h:53
Self & operator=(const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa)
DiffusionTensor3D(const DiffusionTensor3D< TCoordRepB > &pa)
Superclass::RealValueType RealValueType
Superclass::EigenValuesArrayType EigenValuesArrayType
Represent a symmetric tensor of second rank.
NumericTraits< ValueType >::RealType AccumulateValueType
Superclass::EigenVectorsMatrixType EigenVectorsMatrixType
SymmetricSecondRankTensor< TComponent, 3 > Superclass
Simulate a standard C array with copy semnatics.
Definition: itkFixedArray.h:50
Self & operator=(const DiffusionTensor3D< TCoordRepB > &pa)
Superclass::AccumulateValueType AccumulateValueType
Superclass::ComponentArrayType ComponentArrayType
Superclass::ValueType ValueType
Superclass::ComponentType ComponentType
Represent a diffusion tensor as used in DTI images.