18 #ifndef __itkDiffusionTensor3DReconstructionImageFilter_h
19 #define __itkDiffusionTensor3DReconstructionImageFilter_h
24 #include "vnl/vnl_matrix.h"
25 #include "vnl/vnl_vector_fixed.h"
26 #include "vnl/vnl_matrix_fixed.h"
27 #include "vnl/algo/vnl_svd.h"
123 template<
class TReferenceImagePixelType,
124 class TGradientImagePixelType = TReferenceImagePixelType,
125 class TTensorPixelType = double,
126 class TMaskImageType = Image<unsigned char, 3> >
129 Image< DiffusionTensor3D< TTensorPixelType >, 3 > >
161 typedef typename Superclass::OutputImageRegionType
208 if ( m_GradientImageTypeEnumeration == GradientIsInASingleImage )
210 itkExceptionMacro(<<
"Cannot call both methods:"
211 <<
"AddGradientImage and SetGradientImage. Please call only one of them.");
216 m_GradientImageTypeEnumeration = GradientIsInManyImages;
226 if ( idx >= m_NumberOfGradientDirections )
228 itkExceptionMacro(<<
"Gradient direction " << idx <<
"does not exist");
230 return m_GradientDirectionContainer->ElementAt(idx + 1);
235 void SetMaskImage(MaskImageType *maskImage);
238 void SetMaskSpatialObject(MaskSpatialObjectType *maskSpatialObject);
244 itkSetMacro(Threshold, ReferencePixelType);
245 itkGetConstMacro(Threshold, ReferencePixelType);
254 itkSetMacro(BValue, TTensorPixelType);
258 itkGetConstReferenceMacro(BValue, TTensorPixelType);
261 #ifdef ITK_USE_CONCEPT_CHECKING
273 ReferencePixelType > ) );
276 ReferencePixelType > ) );
288 void PrintSelf(std::ostream & os,
Indent indent)
const;
291 void ComputeTensorBasis();
293 void BeforeThreadedGenerateData();
295 void ThreadedGenerateData(
const
296 OutputImageRegionType & outputRegionForThread,
ThreadIdType);
301 GradientIsInASingleImage = 1,
304 } GradientImageTypeEnumeration;
335 #ifndef ITK_MANUAL_INSTANTIATION
336 #include "itkDiffusionTensor3DReconstructionImageFilter.hxx"