15 #ifndef itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter_h
16 #define itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter_h
18 #include <itkVector.h>
20 #include <itkImageToImageFilter.h>
21 #include <itkVectorLinearInterpolateImageFunction.h>
22 #include <itkNearestNeighborInterpolateImageFunction.h>
24 #include <itkContinuousIndex.h>
64 template <
typename TScalarType,
unsigned int NDimensions = 3>
66 public ImageToImageFilter<
67 Image< Vector<TScalarType, NDimensions>, NDimensions + 1>,
68 Image< Vector<TScalarType, NDimensions>, NDimensions>
76 typedef ImageToImageFilter<Image< Vector<TScalarType, NDimensions>, NDimensions + 1>,
89 itkStaticConstMacro(
Dimension,
unsigned int, NDimensions);
113 typedef VectorLinearInterpolateImageFunction< TimeVaryingVelocityImageType,
124 itkSetMacro(StartTime,
float);
125 itkGetMacro(StartTime,
float);
128 itkSetMacro(FinishTime,
float);
129 itkGetMacro(FinishTime,
float);
132 itkSetMacro(DeltaTime,
float);
133 itkGetMacro(DeltaTime,
float);
136 itkSetMacro(CalculateThickness,
bool);
137 itkGetMacro(CalculateThickness,
bool);
140 itkGetMacro(MaxThickness,
float);
143 itkGetMacro(MaxDisplacement,
float);
146 itkGetMacro(FieldEnergy,
float);
164 void PrintSelf(std::ostream& os, Indent indent)
const;
167 virtual void BeforeThreadedGenerateData();
170 virtual void ThreadedGenerateData(
const DisplacementImageRegionType ®ionForThread, ThreadIdType threadId);
173 virtual void AfterThreadedGenerateData();
181 void operator=(
const Self&);
193 float m_MaxThickness;
196 float m_MaxDisplacement;
202 TimeVaryingVelocityFieldInterpolatorPointer m_TimeVaryingVelocityFieldInterpolator;
205 ThicknessImageInterpolatorPointer m_MaxDistanceImageInterpolator;
208 ThicknessImagePointer m_MaxDistanceMask;
211 MaskImagePointer m_MaskImage;
214 MaskImagePointer m_GreyWhiteInterface;
217 bool m_CalculateThickness;
220 ThicknessImagePointer m_ThicknessImage;
223 ThicknessImagePointer m_HitsImage;
226 virtual void GenerateOutputInformation();
229 void IntegrateRegion(
const DisplacementImageRegionType ®ionForThread,
float directionOverride,
bool writeToOutput,
bool writeToThicknessImage);
232 void IntegratePoint(
const float& startTime,
233 const float& endTime,
234 const float& direction,
235 const unsigned int& numberOfTimePoints,
236 const DisplacementImageIndexType&
index,
237 const TimeVaryingVelocityImageType* velocityField,
238 const bool& writeToThicknessImage,
239 DisplacementPixelType& displacement);
245 #ifndef ITK_MANUAL_INSTANTIATION
246 #include "itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.txx"
MaskImageType::Pointer MaskImagePointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:102
void SetGreyWhiteInterfaceMaskImage(MaskImageType *greyWhiteInterface)
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:155
TimeVaryingVelocityImageType::DirectionType TimeVaryingVelocityDirectionType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:99
NearestNeighborInterpolateImageFunction< ThicknessImageType, TScalarType > ThicknessImageInterpolatorType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:120
MaskImageType::PointType MaskImagePointType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:104
TimeVaryingVelocityFieldInterpolatorType::Pointer TimeVaryingVelocityFieldInterpolatorPointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:115
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
DisplacementImageType::SpacingType DisplacementImageSpacingType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:111
TimeVaryingVelocityImageType::PointType TimeVaryingVelocityPointType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:97
Vector< TScalarType, NDimensions > DisplacementPixelType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:105
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
SmartPointer< Self > Pointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:79
void SetMaxDistanceMaskImage(ThicknessImageType *maxDistance)
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:152
ThicknessImageType::PixelType ThicknessImagePixelType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:118
Definition: niftkITKAffineResampleImage.cxx:74
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
ThicknessImageType::Pointer ThicknessImagePointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:119
TimeVaryingVelocityImageType::IndexType TimeVaryingVelocityIndexType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:95
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
DisplacementImageType::PointType DisplacementImagePointType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:110
Point< TScalarType, NDimensions+1 > TimeVaryingPointType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:116
DisplacementImageType::SizeType DisplacementImageSizeType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:109
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
DisplacementImageType::IndexType DisplacementImageIndexType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:108
TimeVaryingVelocityImageType::RegionType TimeVaryingVelocityRegionType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:94
TScalarType MaskPixelType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:100
Image< TimeVaryingVelocityPixelType, NDimensions+1 > TimeVaryingVelocityImageType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:93
FourthOrderRungeKuttaVelocityFieldIntegrationFilter Self
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:75
TimeVaryingVelocityImageType::SpacingType TimeVaryingVelocitySpacingType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:98
void SetVoxelsToIntegrateMaskImage(MaskImageType *image)
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:149
This filter integrates a time varying velocity field, using fourth order Runge-Kutta. This filter is basically a tidied up version of that in ANTS: http://www.picsl.upenn.edu/ANTS/ However, ANTS has the four timepoints back to front. I don't know if this is intentional.
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:65
GLuint index
Definition: glew.h:1798
SmartPointer< const Self > ConstPointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:80
ThicknessImageType * GetCalculatedThicknessImage()
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:158
Image< MaskPixelType, NDimensions > MaskImageType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:101
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
ThicknessImageInterpolatorType::Pointer ThicknessImageInterpolatorPointer
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:121
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
Image< DisplacementPixelType, NDimensions > DisplacementImageType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:106
ImageToImageFilter< Image< Vector< TScalarType, NDimensions >, NDimensions+1 >, Image< Vector< TScalarType, NDimensions >, NDimensions > > Superclass
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:78
VectorLinearInterpolateImageFunction< TimeVaryingVelocityImageType, TScalarType > TimeVaryingVelocityFieldInterpolatorType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:114
~FourthOrderRungeKuttaVelocityFieldIntegrationFilter()
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:163
TimeVaryingVelocityImageType::SizeType TimeVaryingVelocitySizeType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:96
DisplacementImageType::RegionType DisplacementImageRegionType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:107
Image< TScalarType, NDimensions > ThicknessImageType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:117
DisplacementImageType::DirectionType DisplacementImageDirectionType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:112
Vector< TScalarType, NDimensions > TimeVaryingVelocityPixelType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:92
MaskImageType::IndexType MaskImageIndexType
Definition: itkFourthOrderRungeKuttaVelocityFieldIntegrationFilter.h:103