15 #ifndef itkRegistrationBasedCTEFilter_h
16 #define itkRegistrationBasedCTEFilter_h
18 #include <itkImageToImageFilter.h>
19 #include <itkVector.h>
21 #include <itkImageFileWriter.h>
22 #include <itkLinearInterpolateImageFunction.h>
24 #include <itkDisplacementFieldJacobianDeterminantFilter.h>
25 #include <itkMinimumMaximumImageCalculator.h>
27 #include <itkSubtractImageFilter.h>
28 #include <itkVectorMagnitudeImageFilter.h>
32 #include <itkDiscreteGaussianImageFilter.h>
53 template<
class TInputImage,
typename TScalarType>
55 public ImageToImageFilter<TInputImage, TInputImage>
62 typedef ImageToImageFilter<TInputImage, TInputImage>
Superclass;
73 itkStaticConstMacro(
Dimension,
unsigned int, TInputImage::ImageDimension);
85 typedef Vector< VectorDataType, itkGetStaticConstMacro(Dimension) >
VectorPixelType;
104 typedef DisplacementFieldJacobianDeterminantFilter<VectorImageType,
136 itkSetMacro(MaxIterations,
unsigned int);
137 itkGetMacro(MaxIterations,
unsigned int);
140 itkSetMacro(M,
unsigned int);
141 itkGetMacro(M,
unsigned int);
144 itkSetMacro(N,
unsigned int);
145 itkGetMacro(N,
unsigned int);
148 itkSetMacro(Lambda,
double);
149 itkGetMacro(Lambda,
double);
152 itkSetMacro(Sigma,
double);
153 itkGetMacro(Sigma,
double);
156 itkSetMacro(Epsilon,
double);
157 itkGetMacro(Epsilon,
double);
168 itkSetMacro(Alpha,
double);
169 itkGetMacro(Alpha,
double);
180 itkSetMacro(OutputAbsoluteLocation,
bool);
181 itkGetMacro(OutputAbsoluteLocation,
bool);
187 itkSetMacro(TrackJacobian,
bool);
188 itkGetMacro(TrackJacobian,
bool);
195 itkSetMacro(WriteMagnitudeOfDisplacementImage,
bool);
196 itkGetMacro(WriteMagnitudeOfDisplacementImage,
bool);
202 itkSetMacro(WriteTSurfImage,
bool);
203 itkGetMacro(WriteTSurfImage,
bool);
210 itkSetMacro(WriteGradientImage,
bool);
211 itkGetMacro(WriteGradientImage,
bool);
218 itkSetMacro(WriteVelocityImage,
bool);
219 itkGetMacro(WriteVelocityImage,
bool);
224 itkSetMacro(WriteTransformedMovingImage,
bool);
225 itkGetMacro(WriteTransformedMovingImage,
bool);
230 itkSetMacro(SmoothPVMaps,
bool);
231 itkGetMacro(SmoothPVMaps,
bool);
236 itkSetMacro(SmoothPVMapSigma,
double);
237 itkGetMacro(SmoothPVMapSigma,
double);
243 itkSetMacro(UseGradientMovingImage,
bool);
244 itkGetMacro(UseGradientMovingImage,
bool);
250 void PrintSelf(std::ostream& os, Indent indent)
const;
253 virtual void GenerateData();
261 void operator=(
const Self&);
263 unsigned int m_MaxIterations;
270 double m_SmoothPVMapSigma;
271 bool m_OutputAbsoluteLocation;
272 bool m_TrackJacobian;
273 bool m_WriteMagnitudeOfDisplacementImage;
274 bool m_WriteTSurfImage;
275 bool m_WriteGradientImage;
276 bool m_WriteVelocityImage;
277 bool m_WriteTransformedMovingImage;
279 bool m_UseGradientMovingImage;
281 VectorImagePointer m_PhiZeroImageUninitialized;
282 VectorImagePointer m_PhiZeroImage;
283 VectorImagePointer m_FinalPhiImage;
286 typename InitializePhiFilterType::Pointer m_InitializePhiZeroFilter;
287 typename GaussianSmoothImageFilterType::Pointer m_SmoothWMPVMapFilter;
288 typename GaussianSmoothImageFilterType::Pointer m_SmoothGMWMPVMapFilter;
291 void InitializeScalarImage(ImageType *
image,
293 SpacingType& spacing,
295 DirectionType& direction);
298 void InitializeVectorImage(VectorImageType*
image,
299 const VectorImageRegionType& region,
300 const VectorImageSpacingType& spacing,
301 const VectorImageOriginType& origin,
302 const VectorImageDirectionType& direction);
305 double EvaluateVelocityField(VectorImageType* velocityField,
double dt);
308 double EvaluateRegistrationSimilarity(VectorImageType* phi, ImageType*
target, ImageType*
source);
311 double EvaluateCostFunction(
double velocityFieldEnergy,
double imageSimilarity);
314 void CalculateMinAndMaxJacobian(VectorImageType* phi,
double &min,
double& max);
317 double CalculateMaxDisplacement(VectorImageType* phi);
320 double CalculateMaxMagnitude(VectorImageType* vec);
323 void CopyVectorField(VectorImageType*
a, VectorImageType*
b);
335 #ifndef ITK_MANUAL_INSTANTIATION
336 #include "itkRegistrationBasedCTEFilter.txx"
VectorImageType::PointType VectorImagePointType
Definition: itkRegistrationBasedCTEFilter.h:92
void SetWhitePlusGreyMatterPVMap(ImagePointer image)
Definition: itkRegistrationBasedCTEFilter.h:127
ImageType::DirectionType DirectionType
Definition: itkRegistrationBasedCTEFilter.h:84
ImageType::Pointer ImagePointer
Definition: itkRegistrationBasedCTEFilter.h:78
RegistrationBasedCTEFilter Self
Definition: itkRegistrationBasedCTEFilter.h:61
This class basically takes two vector images as input (Phi and V) and calculates Phi + (dt * V)...
Definition: itkVectorPhiPlusDeltaTTimesVFilter.h:55
void SetGWI(ImagePointer image)
Definition: itkRegistrationBasedCTEFilter.h:133
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
VectorMagnitudeImageFilter< VectorImageType, TInputImage > VectorMagnitudeFilterType
Definition: itkRegistrationBasedCTEFilter.h:111
VectorImageType::SizeType VectorImageSizeType
Definition: itkRegistrationBasedCTEFilter.h:88
TInputImage ImageType
Definition: itkRegistrationBasedCTEFilter.h:76
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
VectorImageType::IndexType VectorImageIndexType
Definition: itkRegistrationBasedCTEFilter.h:89
VectorVPlusLambdaUImageFilter< TScalarType, itkGetStaticConstMacro(Dimension)> VectorVPlusLambdaUFilterType
Definition: itkRegistrationBasedCTEFilter.h:113
ImageType::IndexType IndexType
Definition: itkRegistrationBasedCTEFilter.h:80
DasGradientFilter< TScalarType, itkGetStaticConstMacro(Dimension)> DasGradientFilterType
Definition: itkRegistrationBasedCTEFilter.h:118
Definition: niftkITKAffineResampleImage.cxx:74
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
ImageType::PointType OriginType
Definition: itkRegistrationBasedCTEFilter.h:83
GLdouble GLdouble GLdouble b
Definition: glew.h:7885
Vector< VectorDataType, itkGetStaticConstMacro(Dimension) > VectorPixelType
Definition: itkRegistrationBasedCTEFilter.h:85
MinimumMaximumImageCalculator< TInputImage > MinMaxJacobianType
Definition: itkRegistrationBasedCTEFilter.h:107
VectorImageType::DirectionType VectorImageDirectionType
Definition: itkRegistrationBasedCTEFilter.h:94
VectorPhiPlusDeltaTTimesVFilter< TScalarType, itkGetStaticConstMacro(Dimension)> VectorPhiPlusDeltaTTimesVFilterType
Definition: itkRegistrationBasedCTEFilter.h:116
ImageToImageFilter< TInputImage, TInputImage > Superclass
Definition: itkRegistrationBasedCTEFilter.h:62
VectorImageType::PointType VectorImageOriginType
Definition: itkRegistrationBasedCTEFilter.h:93
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8272
SetOutputVectorToCurrentPositionFilter< TScalarType, itkGetStaticConstMacro(Dimension)> InitializePhiFilterType
Definition: itkRegistrationBasedCTEFilter.h:109
Image< VectorPixelType, itkGetStaticConstMacro(Dimension) > VectorImageType
Definition: itkRegistrationBasedCTEFilter.h:86
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
This class calculates the gradient as per equation 3 in Das et. al. Neuroimage 45 (2009) 867-879...
Definition: itkDasGradientFilter.h:45
ImageType::PixelType PixelType
Definition: itkRegistrationBasedCTEFilter.h:77
TScalarType VectorDataType
Definition: itkRegistrationBasedCTEFilter.h:60
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
LinearInterpolateImageFunction< TInputImage, TScalarType > LinearInterpolatorType
Definition: itkRegistrationBasedCTEFilter.h:99
SubtractImageFilter< VectorImageType, VectorImageType > SubtractImageFilterType
Definition: itkRegistrationBasedCTEFilter.h:110
ImageType::SizeType SizeType
Definition: itkRegistrationBasedCTEFilter.h:79
ImageFileWriter< ImageType > ScalarImageWriterType
Definition: itkRegistrationBasedCTEFilter.h:97
VectorImageType::RegionType VectorImageRegionType
Definition: itkRegistrationBasedCTEFilter.h:90
DiscreteGaussianImageFilter< ImageType, ImageType > GaussianSmoothImageFilterType
Definition: itkRegistrationBasedCTEFilter.h:121
DisplacementFieldJacobianDeterminantFilter< VectorImageType, TScalarType, TInputImage > JacobianFilterType
Definition: itkRegistrationBasedCTEFilter.h:106
void SetWhiteMatterPVMap(ImagePointer image)
Definition: itkRegistrationBasedCTEFilter.h:124
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
VectorImageType::SpacingType VectorImageSpacingType
Definition: itkRegistrationBasedCTEFilter.h:91
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
void SetThicknessPriorMap(ImagePointer image)
Definition: itkRegistrationBasedCTEFilter.h:130
DasTransformImageFilter< TScalarType, itkGetStaticConstMacro(Dimension)> DasTransformImageFilterType
Definition: itkRegistrationBasedCTEFilter.h:120
SmartPointer< Self > Pointer
Definition: itkRegistrationBasedCTEFilter.h:63
This class takes a vector image as input, and outputs a vector image, where the vector data value at ...
Definition: itkSetOutputVectorToCurrentPositionFilter.h:34
This class takes two vector images as input (V and U), and calculates V + (lambda * U)...
Definition: itkVectorVPlusLambdaUImageFilter.h:35
ImageType::SpacingType SpacingType
Definition: itkRegistrationBasedCTEFilter.h:82
ImageFileReader< VectorImageType > VectorImageReaderType
Definition: itkRegistrationBasedCTEFilter.h:95
Definition: itkRegistrationBasedCTEFilter.h:54
~RegistrationBasedCTEFilter()
Definition: itkRegistrationBasedCTEFilter.h:249
SmartPointer< const Self > ConstPointer
Definition: itkRegistrationBasedCTEFilter.h:64
Class that takes a vector field, and applies Gaussian smoothing.
Definition: itkGaussianSmoothVectorFieldFilter.h:35
ImageFileWriter< VectorImageType > VectorImageWriterType
Definition: itkRegistrationBasedCTEFilter.h:96
GLsizei const GLcharARB ** string
Definition: glew.h:5194
GLsizei GLsizei GLchar * source
Definition: glew.h:1816
GLenum target
Definition: glew.h:5584
VectorImageType::Pointer VectorImagePointer
Definition: itkRegistrationBasedCTEFilter.h:87
GaussianSmoothVectorFieldFilter< TScalarType, itkGetStaticConstMacro(Dimension), itkGetStaticConstMacro(Dimension) > ConvolveFilterType
Definition: itkRegistrationBasedCTEFilter.h:103
ImageType::RegionType RegionType
Definition: itkRegistrationBasedCTEFilter.h:81