15 #ifndef itkSimilarityMeasure_h
16 #define itkSimilarityMeasure_h
20 #include <itkCovariantVector.h>
22 #include <itkImageFileWriter.h>
23 #include <itkSignedMaurerDistanceMapImageFilter.h>
24 #include <itkLinearInterpolateImageFunction.h>
26 #include <itkImageMaskSpatialObject.h>
55 template <
typename TFixedImage,
typename TMovingImage >
73 TFixedImage::ImageDimension,
99 typedef const ImageMaskSpatialObject<TFixedImage::ImageDimension>
FixedMaskType;
100 typedef const ImageMaskSpatialObject<TMovingImage::ImageDimension>
MovingMaskType;
107 void Initialize() throw (ExceptionObject);
110 void InitializeIntensityBounds() throw (ExceptionObject);
113 void SetIntensityBounds( const FixedImagePixelType fixedLower,
114 const FixedImagePixelType fixedUpper,
115 const MovingImagePixelType movingLower,
116 const MovingImagePixelType movingUpper);
119 itkGetConstMacro( FixedLowerBound, FixedImagePixelType );
122 itkGetConstMacro( FixedUpperBound, FixedImagePixelType );
125 itkGetConstMacro( MovingLowerBound, MovingImagePixelType );
128 itkGetConstMacro( MovingUpperBound, MovingImagePixelType );
133 itkGetMacro( NumberOfFixedSamples,
long int);
138 itkGetMacro( NumberOfMovingSamples,
long int);
173 itkSetMacro( TwoSidedMetric,
bool );
174 itkGetMacro( TwoSidedMetric,
bool );
177 itkSetMacro( WriteFixedImage,
bool );
178 itkGetMacro( WriteFixedImage,
bool );
181 itkSetMacro( FixedImageFileName,
std::
string );
182 itkGetMacro( FixedImageFileName,
std::
string );
185 itkSetMacro( FixedImageFileExt,
std::
string );
186 itkGetMacro( FixedImageFileExt,
std::
string );
189 itkSetMacro( WriteTransformedMovingImage,
bool );
190 itkGetMacro( WriteTransformedMovingImage,
bool );
193 itkSetMacro( TransformedMovingImageFileName,
std::
string );
194 itkGetMacro( TransformedMovingImageFileName,
std::
string );
197 itkSetMacro( TransformedMovingImageFileExt,
std::
string );
198 itkGetMacro( TransformedMovingImageFileExt,
std::
string );
206 itkSetMacro(DirectVoxelComparison,
bool);
207 itkGetMacro(DirectVoxelComparison,
bool);
216 itkSetMacro(SymmetricMetric,
int);
217 itkGetMacro(SymmetricMetric,
int);
219 itkSetMacro(IsUpdateMatrix,
bool);
220 itkGetMacro(IsUpdateMatrix,
bool);
223 itkSetMacro(TransformedMovingImagePadValue, MovingImagePixelType);
224 itkGetMacro(TransformedMovingImagePadValue, MovingImagePixelType);
227 itkSetMacro(UseWeighting,
bool);
228 itkGetMacro(UseWeighting,
bool);
231 itkSetMacro(WeightingDistanceThreshold,
double);
232 itkGetMacro(WeightingDistanceThreshold,
double);
237 itkSetObjectMacro(FixedImageInterpolator, InterpolatorType);
238 itkSetObjectMacro(MovingImageInterpolator, InterpolatorType);
239 itkGetObjectMacro(FixedImageInterpolator, InterpolatorType);
240 itkGetObjectMacro(MovingImageInterpolator, InterpolatorType);
245 itkSetObjectMacro(FixedImageTransform, TransformType);
246 itkGetObjectMacro(FixedImageTransform, TransformType);
251 itkSetMacro(InitialiseIntensityBoundsUsingMask,
bool);
252 itkGetMacro(InitialiseIntensityBoundsUsingMask,
bool);
257 itkSetMacro(IsResampleWholeImage,
bool);
258 itkGetMacro(IsResampleWholeImage,
bool);
265 virtual
bool ShouldBeMaximized() {
return false; }
280 double GetMeasureOfParameterChange(TransformParametersType lastP, TransformParametersType
p);
286 void PrintSelf(std::ostream& os, Indent indent)
const;
292 virtual MeasureType GetSimilarity(
const TransformParametersType & parameters )
const;
298 virtual void ResetCostFunction() = 0;
304 virtual void AggregateCostFunctionPair(FixedImagePixelType fixedValue, MovingImagePixelType movingValue) = 0;
317 virtual MeasureType FinalizeCostFunction() = 0;
421 virtual MeasureType GetSymmetricSimilarity(
const TransformParametersType & parameters);
430 virtual MeasureType GetSymmetricSimilarityAtHalfway(
const TransformParametersType & parameters);
435 virtual MeasureType GetSimilarityUsingFixedAndMovingImageTransforms(
const TransformParametersType& parameters);
440 virtual void InitializeSymmetricMetric();
445 virtual void InitializeDistanceWeightings();
450 void operator=(
const Self&);
456 bool m_BoundsSetByUser;
463 mutable long int m_NumberOfFixedSamples;
470 mutable long int m_NumberOfMovingSamples;
473 mutable int m_IterationNumber;
476 bool m_WriteFixedImage;
479 bool m_WriteTransformedMovingImage;
494 bool m_TwoSidedMetric;
501 bool m_DirectVoxelComparison;
507 int m_SymmetricMetric;
509 bool m_IsUpdateMatrix;
512 MovingImagePixelType m_TransformedMovingImagePadValue;
518 #ifndef ITK_MANUAL_INSTANTIATION
519 #include "itkSimilarityMeasure.txx"
const ImageMaskSpatialObject< TFixedImage::ImageDimension > FixedMaskType
Definition: itkSimilarityMeasure.h:99
InterpolatorType::Pointer m_MovingImageInterpolator
Definition: itkSimilarityMeasure.h:343
MovingDistanceMapImageFilterType::Pointer m_MovingDistanceMap
Definition: itkSimilarityMeasure.h:384
bool m_InitialiseIntensityBoundsUsingMask
Definition: itkSimilarityMeasure.h:404
FixedImagePixelType m_FixedUpperBound
Definition: itkSimilarityMeasure.h:349
Abstract base class, implementing TemplateMethod [2] for similarity measures.
Definition: itkSimilarityMeasure.h:56
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
virtual ~SimilarityMeasure()
Definition: itkSimilarityMeasure.h:285
SmartPointer< Self > Pointer
Definition: itkSimilarityMeasure.h:64
static const int SYMMETRIC_METRIC_AVERAGE
Definition: itkSimilarityMeasure.h:102
Superclass::TransformParametersType TransformParametersType
Definition: itkSimilarityMeasure.h:76
Abstract base class to provide functionality for adding arbitrary constraints, and also arbitrary way...
Definition: itkImageToImageMetricWithConstraint.h:49
Superclass::TransformType TransformType
Definition: itkSimilarityMeasure.h:68
Superclass::FixedImageType FixedImageType
Definition: itkSimilarityMeasure.h:82
FixedImageType::SizeType FixedImageSizeType
Definition: itkSimilarityMeasure.h:83
TransformType::Pointer m_FixedImageTransform
Definition: itkSimilarityMeasure.h:399
Image< float, TFixedImage::ImageDimension > FloatImageType
Definition: itkSimilarityMeasure.h:93
virtual const TFixedImage * GetTransformedMovingImage() const
Definition: itkSimilarityMeasure.h:270
ImageFileWriter< TFixedImage > ImageFileWriterType
Definition: itkSimilarityMeasure.h:90
Superclass::TransformPointer TransformPointer
Definition: itkSimilarityMeasure.h:75
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
bool m_UseWeighting
Definition: itkSimilarityMeasure.h:360
Definition: niftkMeshSmoother.cxx:19
Definition: niftkITKAffineResampleImage.cxx:74
Superclass::MovingImageType MovingImageType
Definition: itkSimilarityMeasure.h:85
Superclass::FixedImageType::PixelType FixedImagePixelType
Definition: itkSimilarityMeasure.h:84
SignedMaurerDistanceMapImageFilter< UnsignedCharImageType, FloatImageType > FixedDistanceMapImageFilterType
Definition: itkSimilarityMeasure.h:95
SmartPointer< const Self > ConstPointer
Definition: itkSimilarityMeasure.h:65
Superclass::InputPointType InputPointType
Definition: itkSimilarityMeasure.h:78
itk::Point< double, 2 > InputPointType
Definition: EulerAffine2DJacobianTest.cxx:34
GLuint GLuint GLfloat weight
Definition: glew.h:11786
itk::EulerAffineTransform< double, 2, 2 > TransformType
Definition: EulerAffine2DJacobianTest.cxx:27
Image< unsigned char, TFixedImage::ImageDimension > UnsignedCharImageType
Definition: itkSimilarityMeasure.h:94
DistanceMapLinearInterpolatorType::Pointer m_FixedDistanceMapInterpolator
Definition: itkSimilarityMeasure.h:389
virtual const TFixedImage * GetTransformedFixedImage() const
Definition: itkSimilarityMeasure.h:275
MovingImagePixelType m_MovingLowerBound
Definition: itkSimilarityMeasure.h:352
MidwayImageType::Pointer m_MidwayImage
Definition: itkSimilarityMeasure.h:371
SimilarityMeasure Self
Definition: itkSimilarityMeasure.h:62
SignedMaurerDistanceMapImageFilter< UnsignedCharImageType, FloatImageType > MovingDistanceMapImageFilterType
Definition: itkSimilarityMeasure.h:96
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
static const int SYMMETRIC_METRIC_BOTH_FIXED_AND_MOVING_TRANSFORM
Definition: itkSimilarityMeasure.h:104
GLfloat GLfloat p
Definition: glew.h:14169
Image< char, TFixedImage::ImageDimension > MidwayImageType
Definition: itkSimilarityMeasure.h:92
Superclass::FixedImageConstPointer FixedImageConstPointer
Definition: itkSimilarityMeasure.h:88
InterpolatorType::Pointer m_FixedImageInterpolator
Definition: itkSimilarityMeasure.h:339
TFixedImage::Pointer m_TransformedFixedImage
Definition: itkSimilarityMeasure.h:331
const ImageMaskSpatialObject< TMovingImage::ImageDimension > MovingMaskType
Definition: itkSimilarityMeasure.h:100
itk::UCLBaseTransform< double, TFixedImage::ImageDimension, TMovingImage::ImageDimension > UCLBaseTransformType
Definition: itkSimilarityMeasure.h:74
Superclass::MovingImageConstPointer MovingImageConstPointer
Definition: itkSimilarityMeasure.h:89
TFixedImage::Pointer m_TransformedMovingImage
Definition: itkSimilarityMeasure.h:326
MovingImagePixelType m_MovingUpperBound
Definition: itkSimilarityMeasure.h:355
Superclass::TransformJacobianType TransformJacobianType
Definition: itkSimilarityMeasure.h:77
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
FixedDistanceMapImageFilterType::Pointer m_FixedDistanceMap
Definition: itkSimilarityMeasure.h:379
LinearInterpolateImageFunction< FloatImageType, double > DistanceMapLinearInterpolatorType
Definition: itkSimilarityMeasure.h:97
Superclass::MeasureType MeasureType
Definition: itkSimilarityMeasure.h:80
ImageToImageMetricWithConstraint< TFixedImage, TMovingImage > Superclass
Definition: itkSimilarityMeasure.h:63
Superclass::DerivativeType DerivativeType
Definition: itkSimilarityMeasure.h:81
FixedImagePixelType m_FixedLowerBound
Definition: itkSimilarityMeasure.h:346
Superclass::OutputPointType OutputPointType
Definition: itkSimilarityMeasure.h:79
double m_WeightingDistanceThreshold
Definition: itkSimilarityMeasure.h:366
virtual void AggregateCostFunctionPairWithWeighting(FixedImagePixelType fixedValue, MovingImagePixelType movingValue, double weight)
Definition: itkSimilarityMeasure.h:310
bool m_IsResampleWholeImage
Definition: itkSimilarityMeasure.h:409
itk::EulerAffineTransform< double, TFixedImage::ImageDimension, TMovingImage::ImageDimension > AffineTransformType
Definition: itkSimilarityMeasure.h:98
itk::Point< double, 2 > OutputPointType
Definition: EulerAffine2DJacobianTest.cxx:35
GLsizei const GLcharARB ** string
Definition: glew.h:5194
Superclass::MovingImageType::PixelType MovingImagePixelType
Definition: itkSimilarityMeasure.h:87
Superclass::InterpolatorType InterpolatorType
Definition: itkSimilarityMeasure.h:91
MovingImageType::SizeType MovingImageSizeType
Definition: itkSimilarityMeasure.h:86
DistanceMapLinearInterpolatorType::Pointer m_MovingDistanceMapInterpolator
Definition: itkSimilarityMeasure.h:394
static const int SYMMETRIC_METRIC_MID_WAY
Definition: itkSimilarityMeasure.h:103