Slicer 5.9
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
29namespace itk
30{
36template <class TInput, class TOutput>
38 : public ImageToImageFilter
39 <Image<DiffusionTensor3D<TInput>, 3>,
40 Image<DiffusionTensor3D<TOutput>, 3> >
41{
42public:
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
67
69// /Set the transform
71// /Set the interpolation
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 ModifiedTimeType GetMTime() const 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 );
93protected:
95
96 void DynamicThreadedGenerateData( const OutputImageRegionType & outputRegionForThread) override;
97
99
101
103
105
106private:
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
itk::ImageRegionIterator< OutputImageType > IteratorType
DiffusionTensor3DInterpolateImageFunction< InputDataType > InterpolatorType
void GenerateOutputInformation() override
void DynamicThreadedGenerateData(const OutputImageRegionType &outputRegionForThread) override
itkSetObjectMacro(Interpolator, InterpolatorType)
void BeforeThreadedGenerateData() override
itkGetMacro(OutputDirection, typename OutputImageType::DirectionType)
itkTypeMacro(DiffusionTensor3DResample, ImageToImageFilter)
itkSetMacro(OutputSpacing, typename OutputImageType::SpacingType)
itkSetObjectMacro(Transform, TransformType)
ImageToImageFilter< Image< DiffusionTensor3D< TInput >, 3 >, Image< DiffusionTensor3D< TOutput >, 3 > > Superclass
Matrix< double, 3, 3 > GetOutputMeasurementFrame()
itkGetMacro(DefaultPixelValue, OutputDataType)
Image< InputTensorDataType, 3 > InputImageType
void GenerateInputRequestedRegion() override
Image< OutputTensorDataType, 3 > OutputImageType
itkGetMacro(OutputSize, typename OutputImageType::SizeType)
itkGetMacro(OutputSpacing, typename OutputImageType::SpacingType)
itkSetMacro(OutputSize, typename OutputImageType::SizeType)
itkSetMacro(DefaultPixelValue, OutputDataType)
ModifiedTimeType GetMTime() const override
itkSetMacro(OutputDirection, typename OutputImageType::DirectionType)
DiffusionTensor3DTransform< InputDataType > TransformType
itkGetMacro(OutputOrigin, typename OutputImageType::PointType)
DiffusionTensor3D< InputDataType > InputTensorDataType
void SetOutputParametersFromImage(InputImagePointerType Image)
DiffusionTensor3D< OutputDataType > OutputTensorDataType
itkSetMacro(OutputOrigin, typename OutputImageType::PointType)
OutputImageType::RegionType OutputImageRegionType
void AfterThreadedGenerateData() override
OutputImageType::Pointer OutputImagePointerType
Simplified inverse ITK transforms.