32 #ifndef __itkDwiPhantomGenerationFilter_h_
33 #define __itkDwiPhantomGenerationFilter_h_
35 #include <itkImageSource.h>
36 #include <itkVectorImage.h>
37 #include <itkDiffusionTensor3D.h>
38 #include <itkMersenneTwisterRandomVariateGenerator.h>
46 template<
class TOutputScalarType >
55 typedef ImageSource< itk::VectorImage<TOutputScalarType,3> >
Superclass;
58 itkFactorylessNewMacro(Self)
76 void SetGradientList(GradientListType gradientList){m_GradientList = gradientList;}
77 void SetSignalRegions(std::vector< ItkUcharImgType::Pointer > signalRegions){m_SignalRegions = signalRegions;}
78 void SetTensorFA(std::vector< float > faList){m_TensorFA = faList;}
79 void SetTensorADC(std::vector< float > adcList){m_TensorADC = adcList;}
80 void SetTensorWeight(std::vector< float > weightList){m_TensorWeight = weightList;}
81 void SetTensorDirection(std::vector< vnl_vector_fixed<double, 3> > directionList){m_TensorDirection = directionList;}
84 itkSetMacro( BValue,
float )
85 itkSetMacro( SignalScale,
float )
86 itkSetMacro( NoiseVariance,
double )
87 itkSetMacro( GreyMatterAdc,
float )
91 itkSetMacro( ImageRegion, ImageRegion<3> )
92 itkSetMacro( SimulateBaseline,
bool )
98 itkGetMacro( OutputFiberBundle,
mitk::FiberBundle::Pointer)
102 ~DwiPhantomGenerationFilter(){}
109 itk::Vector<double> m_Spacing;
111 itk::Matrix<double, 3, 3> m_DirectionMatrix;
112 ImageRegion<3> m_ImageRegion;
119 std::vector< ItkUcharImgType::Pointer > m_SignalRegions;
120 std::vector< float > m_TensorFA;
121 std::vector< float > m_TensorADC;
122 std::vector< float > m_TensorWeight;
123 std::vector< vnl_vector_fixed<double, 3> > m_TensorDirection;
127 std::vector< itk::DiffusionTensor3D<float> > m_TensorList;
131 int m_BaselineImages;
132 double m_MaxBaseline;
133 double m_MeanBaseline;
134 double m_NoiseVariance;
136 float m_GreyMatterAdc;
137 bool m_SimulateBaseline;
138 TOutputScalarType m_DefaultBaseline;
140 double GetTensorL2Norm(itk::DiffusionTensor3D<float>& T);
141 void GenerateTensors();
148 #ifndef ITK_MANUAL_INSTANTIATION
152 #endif //__itkDwiPhantomGenerationFilter_h_
VectorContainer< unsigned int, ItkDirectionImage::Pointer > ItkDirectionImageContainer
void SetSignalRegions(std::vector< ItkUcharImgType::Pointer > signalRegions)
itk::SmartPointer< Self > Pointer
Generation of synthetic diffusion weighted images using a second rank tensor model.
Vector< double, 3 > GradientType
itk::Image< float, 3 > ItkFloatImgType
Superclass::OutputImageType OutputImageType
DataCollection - Class to facilitate loading/accessing structured data.
void SetTensorDirection(std::vector< vnl_vector_fixed< double, 3 > > directionList)
itk::Matrix< double, 3, 3 > MatrixType
SmartPointer< const Self > ConstPointer
std::vector< GradientType > GradientListType
itk::Image< unsigned char, 3 > ItkUcharImgType
itk::VectorContainer< int, double > AnglesContainerType
void SetTensorWeight(std::vector< float > weightList)
Vector< ScalarType, 3 > Vector3D
void SetTensorADC(std::vector< float > adcList)
Superclass::OutputImageRegionType OutputImageRegionType
ImageSource< itk::VectorImage< TOutputScalarType, 3 > > Superclass
DwiPhantomGenerationFilter Self
void SetTensorFA(std::vector< float > faList)
Point< ScalarType, 3 > Point3D
void SetGradientList(GradientListType gradientList)
Image< Vector< float, 3 >, 3 > ItkDirectionImage
SmartPointer< Self > Pointer