ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkDiffusionTensor3D.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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 * https://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
28namespace itk
29{
74
75template <typename TComponent>
76class ITK_TEMPLATE_EXPORT DiffusionTensor3D : public SymmetricSecondRankTensor<TComponent, 3>
77{
78public:
82
84 using typename Superclass::ValueType;
85 using typename Superclass::ComponentType;
86 using typename Superclass::ComponentArrayType;
87
89 using typename Superclass::RealValueType;
90
93
95 DiffusionTensor3D() = default;
96
102
104 template <typename TCoordinateB>
108
110 Self &
112
113 Self &
115
116 Self &
118
120 template <typename TCoordinateB>
121 Self &
123 {
124 // NOTE (this != &pa ) because they are different pointer types
125 // if this templated function is called
126 // ComponentType 'itk::DiffusionTensor3D<double> *'
127 // TCoordinateB 'const DiffusionTensor3D<float> *')
129 return *this;
130 }
131
132
147 AccumulateValueType
148 GetTrace() const;
149
153
157
161};
162
163
164template <typename T>
165inline void
167{
168 a.swap(b);
169}
170
171} // end namespace itk
173
174#ifndef ITK_MANUAL_INSTANTIATION
175# include "itkDiffusionTensor3D.hxx"
176#endif
177
178#endif
Represent a diffusion tensor as used in DTI images.
AccumulateValueType GetTrace() const
DiffusionTensor3D(const Superclass &r)
DiffusionTensor3D(const ComponentType &r)
Self & operator=(const ComponentType &r)
Self & operator=(const ComponentArrayType r)
ComponentType[Self::InternalDimension] ComponentArrayType
Self & operator=(const Superclass &r)
DiffusionTensor3D(const DiffusionTensor3D< TCoordinateB > &pa)
DiffusionTensor3D(const ComponentArrayType r)
Self & operator=(const DiffusionTensor3D< TCoordinateB > &pa)
RealValueType GetRelativeAnisotropy() const
RealValueType GetFractionalAnisotropy() const
SymmetricSecondRankTensor< TComponent, 3 > Superclass
RealValueType GetInnerScalarProduct() const
typename NumericTraits< ValueType >::RealType RealValueType
typename NumericTraits< ValueType >::RealType RealValueType
Self & operator=(const SymmetricSecondRankTensor< TCoordinateB, VDimension > &pa)
ComponentType[Self::InternalDimension] ComponentArrayType
FixedArray< TComponent, VDimension > EigenValuesArrayType
Matrix< TComponent, VDimension, VDimension > EigenVectorsMatrixType
typename NumericTraits< ValueType >::RealType AccumulateValueType
AddImageFilter Self
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
void swap(Array< T > &a, Array< T > &b) noexcept
Definition itkArray.h:249