Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __mitkTeemDiffusionTensor3DReconstructionImageFilter_h__
00020 #define __mitkTeemDiffusionTensor3DReconstructionImageFilter_h__
00021
00022 #include "mitkImage.h"
00023 #include "mitkTensorImage.h"
00024 #include "mitkDiffusionImage.h"
00025 #include "itkDiffusionTensor3D.h"
00026
00027 namespace mitk
00028 {
00029
00030 enum TeemTensorEstimationMethods{
00031 TeemTensorEstimationMethodsLLS,
00032 TeemTensorEstimationMethodsNLS,
00033 TeemTensorEstimationMethodsWLS,
00034 TeemTensorEstimationMethodsMLE,
00035 };
00036
00037 template< class DiffusionImagePixelType = short,
00038 class TTensorPixelType=float >
00039 class TeemDiffusionTensor3DReconstructionImageFilter : public itk::Object
00040 {
00041 public:
00042
00043 typedef TTensorPixelType TensorPixelType;
00044
00045 typedef itk::Vector<TensorPixelType,7> VectorType;
00046 typedef itk::Image<VectorType,3> VectorImageType;
00047
00048 typedef itk::DiffusionTensor3D<TensorPixelType> TensorType;
00049 typedef itk::Image<TensorType,3 > ItkTensorImageType;
00050
00051 typedef itk::Vector<TensorPixelType,6> ItkTensorVectorType;
00052 typedef itk::Image<ItkTensorVectorType,3> ItkTensorVectorImageType;
00053
00054 typedef DiffusionImagePixelType DiffusionPixelType;
00055 typedef itk::VectorImage< DiffusionPixelType, 3 > DiffusionImageType;
00056
00057 mitkClassMacro( TeemDiffusionTensor3DReconstructionImageFilter,
00058 itk::Object );
00059 itkNewMacro(Self);
00060
00061 itkGetMacro(Input,
00062 typename DiffusionImage<DiffusionImagePixelType>::Pointer);
00063 itkSetMacro(Input,
00064 typename DiffusionImage<DiffusionImagePixelType>::Pointer);
00065
00066 itkGetMacro(EstimateErrorImage, bool);
00067 itkSetMacro(EstimateErrorImage, bool);
00068
00069 itkGetMacro(Sigma, float);
00070 itkSetMacro(Sigma, float);
00071
00072 itkGetMacro(EstimationMethod, TeemTensorEstimationMethods);
00073 itkSetMacro(EstimationMethod, TeemTensorEstimationMethods);
00074
00075 itkGetMacro(NumIterations, int);
00076 itkSetMacro(NumIterations, int);
00077
00078 itkGetMacro(ConfidenceThreshold, double);
00079 itkSetMacro(ConfidenceThreshold, double);
00080
00081 itkGetMacro(ConfidenceFuzzyness, float);
00082 itkSetMacro(ConfidenceFuzzyness, float);
00083
00084 itkGetMacro(MinPlausibleValue, double);
00085 itkSetMacro(MinPlausibleValue, double);
00086
00087 itkGetMacro(Output, mitk::TensorImage::Pointer);
00088 itkGetMacro(OutputItk, mitk::TensorImage::Pointer);
00089
00090
00091 virtual void Update();
00092
00093 protected:
00094
00095 TeemDiffusionTensor3DReconstructionImageFilter();
00096 virtual ~TeemDiffusionTensor3DReconstructionImageFilter();
00097
00098 typename DiffusionImage<DiffusionImagePixelType>::Pointer m_Input;
00099 bool m_EstimateErrorImage;
00100 float m_Sigma;
00101 TeemTensorEstimationMethods m_EstimationMethod;
00102 int m_NumIterations;
00103 double m_ConfidenceThreshold;
00104 float m_ConfidenceFuzzyness;
00105 double m_MinPlausibleValue;
00106 mitk::TensorImage::Pointer m_Output;
00107 mitk::TensorImage::Pointer m_OutputItk;
00108 mitk::Image::Pointer m_ErrorImage;
00109 };
00110
00111 }
00112
00113 #include "mitkTeemDiffusionTensor3DReconstructionImageFilter.cpp"
00114
00115 #endif
00116
00117