Slicer  4.10
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
itkDiffusionTensor3DResample.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Diffusion Applications
4  Module: $HeadURL$
5  Language: C++
6  Date: $Date$
7  Version: $Revision$
8 
9  Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved.
10 
11  See License.txt or http://www.slicer.org/copyright/copyright.txt for details.
12 
13 ==========================================================================*/
14 #ifndef itkDiffusionTensor3DResample_h
15 #define itkDiffusionTensor3DResample_h
16 
17 #include <itkObject.h>
18 #include <itkImageToImageFilter.h>
21 #include <itkImage.h>
22 #include <itkDiffusionTensor3D.h>
23 #include <itkCastImageFilter.h>
24 #include <itkImageRegionIterator.h>
25 #include <itkPoint.h>
26 
28 
29 namespace itk
30 {
36 template <class TInput, class TOutput>
38  : public ImageToImageFilter
39  <Image<DiffusionTensor3D<TInput>, 3>,
40  Image<DiffusionTensor3D<TOutput>, 3> >
41 {
42 public:
43  typedef TInput InputDataType;
44  typedef TOutput OutputDataType;
45 
46  typedef ImageToImageFilter
47  <Image<DiffusionTensor3D<TInput>, 3>,
48  Image<DiffusionTensor3D<TOutput>, 3> > Superclass;
49 
50  typedef DiffusionTensor3D<InputDataType> InputTensorDataType;
51  typedef Image<InputTensorDataType, 3> InputImageType;
52  typedef DiffusionTensor3D<OutputDataType> OutputTensorDataType;
53  typedef Image<OutputTensorDataType, 3> OutputImageType;
55  typedef SmartPointer<Self> Pointer;
56  typedef SmartPointer<const Self> ConstPointer;
59  typedef typename InputImageType::Pointer InputImagePointerType;
60  typedef typename OutputImageType::Pointer OutputImagePointerType;
61  typedef itk::ImageRegionIterator<OutputImageType> IteratorType;
62  typedef typename OutputImageType::RegionType OutputImageRegionType;
63 // typedef typename OutputTensorDataType::RealValueType TensorRealType ;
64 
66  itkTypeMacro(DiffusionTensor3DResample, ImageToImageFilter);
67 
68  itkNewMacro( Self );
69 // /Set the transform
70  itkSetObjectMacro( Transform, TransformType );
71 // /Set the interpolation
72  itkSetObjectMacro( Interpolator, InterpolatorType );
73 
74 // /Set the output parameters (size, spacing, origin, orientation) from a reference image
76 
77 // /Get the time of the last modification of the object
78  unsigned long GetMTime() const ITK_OVERRIDE;
79 
80  itkSetMacro( DefaultPixelValue, OutputDataType );
81  itkGetMacro( DefaultPixelValue, OutputDataType );
82 
83  itkSetMacro( OutputOrigin, typename OutputImageType::PointType );
84  itkSetMacro( OutputSpacing, typename OutputImageType::SpacingType );
85  itkSetMacro( OutputSize, typename OutputImageType::SizeType );
86  itkSetMacro( OutputDirection, typename OutputImageType::DirectionType );
87  Matrix<double, 3, 3> GetOutputMeasurementFrame();
88 
89  itkGetMacro( OutputOrigin, typename OutputImageType::PointType );
90  itkGetMacro( OutputSpacing, typename OutputImageType::SpacingType );
91  itkGetMacro( OutputSize, typename OutputImageType::SizeType );
92  itkGetMacro( OutputDirection, typename OutputImageType::DirectionType );
93 protected:
95 
96  void ThreadedGenerateData( const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId ) ITK_OVERRIDE;
97 
98  void BeforeThreadedGenerateData() ITK_OVERRIDE;
99 
100  void GenerateOutputInformation() ITK_OVERRIDE;
101 
102  void AfterThreadedGenerateData() ITK_OVERRIDE;
103 
104  void GenerateInputRequestedRegion() ITK_OVERRIDE;
105 
106 private:
107  typename InterpolatorType::Pointer m_Interpolator;
108  typename TransformType::Pointer m_Transform;
109  typename OutputImageType::PointType m_OutputOrigin;
110  typename OutputImageType::SpacingType m_OutputSpacing;
111  typename OutputImageType::SizeType m_OutputSize;
112  typename OutputImageType::DirectionType m_OutputDirection;
113  OutputDataType m_DefaultPixelValue;
114  OutputTensorDataType m_DefaultTensor;
115 };
116 
117 } // end namespace itk
118 
119 #ifndef ITK_MANUAL_INSTANTIATION
120 #include "itkDiffusionTensor3DResample.txx"
121 #endif
122 
123 #endif
OutputImageType::RegionType OutputImageRegionType
Image< OutputTensorDataType, 3 > OutputImageType
DiffusionTensor3DInterpolateImageFunction< InputDataType > InterpolatorType
itkTypeMacro(DiffusionTensor3DResample, ImageToImageFilter)
ImageToImageFilter< Image< DiffusionTensor3D< TInput >, 3 >, Image< DiffusionTensor3D< TOutput >, 3 > > Superclass
DiffusionTensor3D< OutputDataType > OutputTensorDataType
Simplified inverse ITK transforms.
DiffusionTensor3D< InputDataType > InputTensorDataType
void ThreadedGenerateData(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) ITK_OVERRIDE
DiffusionTensor3DTransform< InputDataType > TransformType
itkGetMacro(DefaultPixelValue, OutputDataType)
itkSetObjectMacro(Transform, TransformType)
void AfterThreadedGenerateData() ITK_OVERRIDE
Image< InputTensorDataType, 3 > InputImageType
void GenerateOutputInformation() ITK_OVERRIDE
itk::ImageRegionIterator< OutputImageType > IteratorType
void SetOutputParametersFromImage(InputImagePointerType Image)
OutputImageType::Pointer OutputImagePointerType
itkSetMacro(DefaultPixelValue, OutputDataType)
void GenerateInputRequestedRegion() ITK_OVERRIDE
void BeforeThreadedGenerateData() ITK_OVERRIDE
unsigned long GetMTime() const ITK_OVERRIDE
Matrix< double, 3, 3 > GetOutputMeasurementFrame()