go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkImageToImageMetricWithFeatures.h
Go to the documentation of this file.
1 /*======================================================================
2 
3  This file is part of the elastix software.
4 
5  Copyright (c) University Medical Center Utrecht. All rights reserved.
6  See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
7  details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notices for more information.
12 
13 ======================================================================*/
14 #ifndef __itkImageToImageMetricWithFeatures_h
15 #define __itkImageToImageMetricWithFeatures_h
16 
18 #include "itkInterpolateImageFunction.h"
19 
20 namespace itk
21 {
22 
33 template< class TFixedImage, class TMovingImage,
34 class TFixedFeatureImage = TFixedImage, class TMovingFeatureImage = TMovingImage >
36  public AdvancedImageToImageMetric< TFixedImage, TMovingImage >
37 {
38 public:
39 
43  typedef SmartPointer< Self > Pointer;
44  typedef SmartPointer< const Self > ConstPointer;
45 
48 
65  typedef typename Superclass::RealType RealType;
84  typedef typename Superclass::InternalMaskPixelType InternalMaskPixelType;
85  typedef typename Superclass::InternalMovingImageMaskType InternalMovingImageMaskType;
86  typedef typename Superclass::MovingImageMaskInterpolatorType MovingImageMaskInterpolatorType;
91 
93  itkStaticConstMacro( FixedImageDimension, unsigned int,
94  FixedImageType::ImageDimension );
95 
97  itkStaticConstMacro( MovingImageDimension, unsigned int,
98  MovingImageType::ImageDimension );
99 
101  typedef TFixedFeatureImage FixedFeatureImageType;
102  typedef typename FixedFeatureImageType::Pointer FixedFeatureImagePointer;
103  typedef TMovingFeatureImage MovingFeatureImageType;
104  typedef typename MovingFeatureImageType::Pointer MovingFeatureImagePointer;
105  typedef std::vector< FixedFeatureImagePointer > FixedFeatureImageVectorType;
106  typedef std::vector< MovingFeatureImagePointer > MovingFeatureImageVectorType;
107 
109  typedef InterpolateImageFunction< FixedFeatureImageType, double > FixedFeatureInterpolatorType;
110  typedef InterpolateImageFunction< MovingFeatureImageType, double > MovingFeatureInterpolatorType;
111  typedef typename FixedFeatureInterpolatorType::Pointer FixedFeatureInterpolatorPointer;
112  typedef typename MovingFeatureInterpolatorType::Pointer MovingFeatureInterpolatorPointer;
113  typedef std::vector< FixedFeatureInterpolatorPointer > FixedFeatureInterpolatorVectorType;
114  typedef std::vector< MovingFeatureInterpolatorPointer > MovingFeatureInterpolatorVectorType;
115 
117  void SetNumberOfFixedFeatureImages( unsigned int arg );
118 
120  itkGetConstMacro( NumberOfFixedFeatureImages, unsigned int );
121 
123  void SetFixedFeatureImage( unsigned int i, FixedFeatureImageType * im );
124 
126  {
127  this->SetFixedFeatureImage( 0, im );
128  }
129 
130 
132  const FixedFeatureImageType * GetFixedFeatureImage( unsigned int i ) const;
133 
135  {
136  return this->GetFixedFeatureImage( 0 );
137  }
138 
139 
141  void SetFixedFeatureInterpolator( unsigned int i, FixedFeatureInterpolatorType * interpolator );
142 
144  {
145  this->SetFixedFeatureInterpolator( 0, interpolator );
146  }
147 
148 
150  const FixedFeatureInterpolatorType * GetFixedFeatureInterpolator( unsigned int i ) const;
151 
153  {
154  return this->GetFixedFeatureInterpolator( 0 );
155  }
156 
157 
159  void SetNumberOfMovingFeatureImages( unsigned int arg );
160 
162  itkGetConstMacro( NumberOfMovingFeatureImages, unsigned int );
163 
165  void SetMovingFeatureImage( unsigned int i, MovingFeatureImageType * im );
166 
168  {
169  this->SetMovingFeatureImage( 0, im );
170  }
171 
172 
174  const MovingFeatureImageType * GetMovingFeatureImage( unsigned int i ) const;
175 
177  {
178  return this->GetMovingFeatureImage( 0 );
179  }
180 
181 
183  void SetMovingFeatureInterpolator( unsigned int i, MovingFeatureInterpolatorType * interpolator );
184 
186  {
187  this->SetMovingFeatureInterpolator( 0, interpolator );
188  }
189 
190 
192  const MovingFeatureInterpolatorType * GetMovingFeatureInterpolator( unsigned int i ) const;
193 
195  {
196  return this->GetMovingFeatureInterpolator( 0 );
197  }
198 
199 
201  virtual void Initialize( void ) throw ( ExceptionObject );
202 
203 protected:
204 
206  virtual ~ImageToImageMetricWithFeatures() {}
207  void PrintSelf( std::ostream & os, Indent indent ) const;
208 
210  typedef typename BSplineInterpolatorType::Pointer BSplineInterpolatorPointer;
211  typedef std::vector< BSplineInterpolatorPointer > BSplineFeatureInterpolatorVectorType;
216 
224 
225  std::vector< bool > m_FeatureInterpolatorsIsBSpline;
228 
232  virtual void CheckForBSplineFeatureInterpolators( void );
233 
234 private:
235 
236  ImageToImageMetricWithFeatures( const Self & ); // purposely not implemented
237  void operator=( const Self & ); // purposely not implemented
238 
239 };
240 
241 } // end namespace itk
242 
243 #ifndef ITK_MANUAL_INSTANTIATION
244 #include "itkImageToImageMetricWithFeatures.hxx"
245 #endif
246 
247 #endif // end #ifndef __itkImageToImageMetricWithFeatures_h
Computes similarity between regions of two images.
Superclass::ImageSampleContainerType ImageSampleContainerType
Superclass::MovingImageLimiterType MovingImageLimiterType
Superclass::FixedImageLimiterOutputType FixedImageLimiterOutputType
void SetNumberOfMovingFeatureImages(unsigned int arg)
LimiterFunctionBase< RealType, FixedImageDimension > FixedImageLimiterType
Superclass::CoordinateRepresentationType CoordinateRepresentationType
Superclass::TransformParametersType TransformParametersType
Superclass::MovingImageType MovingImageType
Superclass::InternalMaskPixelType InternalMaskPixelType
std::vector< BSplineInterpolatorPointer > BSplineFeatureInterpolatorVectorType
Superclass::MovingImageMaskInterpolatorType MovingImageMaskInterpolatorType
Superclass::FixedImagePixelType FixedImagePixelType
void SetFixedFeatureInterpolator(FixedFeatureInterpolatorType *interpolator)
Superclass::FixedImageMaskPointer FixedImageMaskPointer
An extension of the ITK ImageToImageMetric. It is the intended base class for all elastix metrics...
Superclass::MovingImagePointType MovingImagePointType
Superclass::ImageSampleContainerPointer ImageSampleContainerPointer
Superclass::MovingImageMaskPointer MovingImageMaskPointer
InterpolateImageFunction< FixedFeatureImageType, double > FixedFeatureInterpolatorType
Superclass::GradientPixelType GradientPixelType
Superclass::TransformParametersType TransformParametersType
FixedImageLimiterType::OutputType FixedImageLimiterOutputType
MovingFeatureImageType::Pointer MovingFeatureImagePointer
Superclass::ImageSamplerPointer ImageSamplerPointer
Superclass::FixedImageRegionType FixedImageRegionType
Superclass::MovingImageMaskType MovingImageMaskType
void SetNumberOfFixedFeatureImages(unsigned int arg)
Superclass::MovingImagePixelType MovingImagePixelType
ImageSamplerType::OutputVectorContainerType ImageSampleContainerType
Superclass::MovingImageDerivativeType MovingImageDerivativeType
Superclass::MovingImageContinuousIndexType MovingImageContinuousIndexType
InterpolatorType::ContinuousIndexType MovingImageContinuousIndexType
Superclass::GradientImagePointer GradientImagePointer
TransformType::InputPointType FixedImagePointType
InterpolateImageFunction< MovingFeatureImageType, double > MovingFeatureInterpolatorType
void SetFixedFeatureImage(FixedFeatureImageType *im)
void SetFixedFeatureImage(unsigned int i, FixedFeatureImageType *im)
Superclass::InternalMovingImageMaskType InternalMovingImageMaskType
void SetMovingFeatureImage(MovingFeatureImageType *im)
BSplineInterpolateImageFunction< MovingImageType, CoordinateRepresentationType, double > BSplineInterpolatorType
ImageSamplerBase< FixedImageType > ImageSamplerType
std::vector< MovingFeatureInterpolatorPointer > MovingFeatureInterpolatorVectorType
Superclass::InterpolatorPointer InterpolatorPointer
std::vector< FixedFeatureImagePointer > FixedFeatureImageVectorType
Superclass::MovingImageRegionType MovingImageRegionType
const MovingFeatureImageType * GetMovingFeatureImage(void) const
std::vector< FixedFeatureInterpolatorPointer > FixedFeatureInterpolatorVectorType
TransformType::OutputPointType MovingImagePointType
Superclass::MovingImageMaskType MovingImageMaskType
LimiterFunctionBase< RealType, MovingImageDimension > MovingImageLimiterType
Superclass::GradientImageType GradientImageType
const MovingFeatureInterpolatorType * GetMovingFeatureInterpolator(void) const
Superclass::TransformPointer TransformPointer
AdvancedImageToImageMetric< TFixedImage, TMovingImage > Superclass
const FixedFeatureImageType * GetFixedFeatureImage(void) const
MovingFeatureInterpolatorType::Pointer MovingFeatureInterpolatorPointer
FixedFeatureInterpolatorVectorType m_FixedFeatureInterpolators
Superclass::GradientImageFilterType GradientImageFilterType
Superclass::FixedImageRegionType FixedImageRegionType
Superclass::GradientImageFilterType GradientImageFilterType
Superclass::TransformJacobianType TransformJacobianType
MovingImageType::RegionType MovingImageRegionType
Superclass::InterpolatorType InterpolatorType
void SetFixedFeatureInterpolator(unsigned int i, FixedFeatureInterpolatorType *interpolator)
Superclass::TransformJacobianType TransformJacobianType
Superclass::FixedImageMaskPointer FixedImageMaskPointer
BSplineFeatureInterpolatorVectorType m_MovingFeatureBSplineInterpolators
Superclass::InterpolatorPointer InterpolatorPointer
Superclass::MovingImagePixelType MovingImagePixelType
void SetMovingFeatureInterpolator(unsigned int i, MovingFeatureInterpolatorType *interpolator)
Superclass::FixedImageLimiterType FixedImageLimiterType
virtual void CheckForBSplineFeatureInterpolators(void)
Superclass::MovingImageMaskPointer MovingImageMaskPointer
FixedFeatureImageType::Pointer FixedFeatureImagePointer
Superclass::FixedImageConstPointer FixedImageConstPointer
MovingImageLimiterType::OutputType MovingImageLimiterOutputType
MovingFeatureInterpolatorVectorType m_MovingFeatureInterpolators
Superclass::MovingImageLimiterOutputType MovingImageLimiterOutputType
const FixedFeatureInterpolatorType * GetFixedFeatureInterpolator(void) const
FixedFeatureInterpolatorType::Pointer FixedFeatureInterpolatorPointer
void PrintSelf(std::ostream &os, Indent indent) const
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
ImageSamplerType::OutputVectorContainerPointer ImageSampleContainerPointer
Superclass::CoordinateRepresentationType CoordinateRepresentationType
Superclass::FixedImageMaskType FixedImageMaskType
Superclass::MovingImageConstPointer MovingImageConstPointer
BSplineInterpolatorType::Pointer BSplineInterpolatorPointer
void SetMovingFeatureInterpolator(MovingFeatureInterpolatorType *interpolator)
std::vector< MovingFeatureImagePointer > MovingFeatureImageVectorType
BSplineInterpolatorType::CovariantVectorType MovingImageDerivativeType
Superclass::FixedImageConstPointer FixedImageConstPointer
Superclass::MovingImageConstPointer MovingImageConstPointer
Superclass::BSplineInterpolatorType BSplineInterpolatorType
void SetMovingFeatureImage(unsigned int i, MovingFeatureImageType *im)
Superclass::GradientImageFilterPointer GradientImageFilterPointer
Superclass::GradientImageFilterPointer GradientImageFilterPointer
Superclass::GradientImagePointer GradientImagePointer


Generated on 11-03-2014 for elastix by doxygen 1.8.6 elastix logo