ANIMA  4.0
animaMCMResampleImageFilter.h
Go to the documentation of this file.
1 #pragma once
2 
5 
6 namespace anima
7 {
8 
9 template <typename TImageType, typename TInterpolatorPrecisionType=double>
11  public OrientedModelBaseResampleImageFilter <TImageType, TInterpolatorPrecisionType>
12 {
13 public:
16 
18  typedef itk::SmartPointer<Self> Pointer;
19  typedef itk::SmartPointer<const Self> ConstPointer;
20 
23  itkStaticConstMacro(ImageDimension, unsigned int,InputImageType::ImageDimension);
24 
27 
29  itkNewMacro(Self)
30 
31 
33 
34 
35  void SetReferenceOutputModel(const MCModelPointer &model);
36 
37 protected:
39  {
40  }
41 
43 
44  virtual void BeforeThreadedGenerateData() ITK_OVERRIDE;
45  virtual void InitializeInterpolator() ITK_OVERRIDE;
46 
47  virtual void ReorientInterpolatedModel(const InputPixelType &interpolatedModel, vnl_matrix <double> &modelOrientationMatrix,
48  InputPixelType &orientedModel, itk::ThreadIdType threadId) ITK_OVERRIDE;
49 
50  virtual unsigned int GetOutputVectorLength() ITK_OVERRIDE;
51 
52  virtual itk::LightObject::Pointer InternalClone() const ITK_OVERRIDE;
53 
54 private:
55  ITK_DISALLOW_COPY_AND_ASSIGN(MCMResampleImageFilter);
56 
57  MCModelPointer m_ReferenceOutputModel;
58 
59  std::vector <MCModelPointer> m_WorkModels;
60 };
61 
62 } // end namespace anima
63 
virtual void ReorientInterpolatedModel(const InputPixelType &interpolatedModel, vnl_matrix< double > &modelOrientationMatrix, InputPixelType &orientedModel, itk::ThreadIdType threadId) ITK_OVERRIDE
Needs to be implemented in sub-classes, does the actual re-orientation of the model.
virtual unsigned int GetOutputVectorLength() ITK_OVERRIDE
virtual void BeforeThreadedGenerateData() ITK_OVERRIDE
itk::SmartPointer< const Self > ConstPointer
Superclass::InputImageType InputImageType
void SetReferenceOutputModel(const MCModelPointer &model)
Sets reference output MCM model, necessary to determine output organization (and rotate) ...
Superclass::InputPixelType InputPixelType
MultiCompartmentModel: holds several diffusion compartments, ordered by type It also handles weights ...
anima::MultiCompartmentModel MCModelType
virtual itk::LightObject::Pointer InternalClone() const ITK_OVERRIDE
static const unsigned int ImageDimension
virtual void InitializeInterpolator() ITK_OVERRIDE
Initializes the default interpolator, might change in derived classes.
OrientedModelBaseResampleImageFilter< TImageType, TInterpolatorPrecisionType > Superclass