OTB  5.0.0
Orfeo Toolbox
otbNCCRegistrationFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ORFEO Toolbox
4  Language: C++
5  Date: $Date$
6  Version: $Revision$
7 
8 
9  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
10  See OTBCopyright.txt for details.
11 
12 
13  This software is distributed WITHOUT ANY WARRANTY; without even
14  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  PURPOSE. See the above copyright notices for more information.
16 
17 =========================================================================*/
18 #ifndef __otbNCCRegistrationFilter_h
19 #define __otbNCCRegistrationFilter_h
20 
23 
24 namespace otb
25 {
26 
68 template<class TFixedImage, class TMovingImage, class TDisplacementField>
69 class ITK_EXPORT NCCRegistrationFilter :
70  public itk::PDEDeformableRegistrationFilter<TFixedImage, TMovingImage,
71  TDisplacementField>
72 {
73 public:
77  TFixedImage, TMovingImage, TDisplacementField> Superclass;
80 
82  itkNewMacro(Self);
83 
85  itkTypeMacro(NCCRegistrationFilter,
87 
89  typedef typename Superclass::TimeStepType TimeStepType;
90 
92  typedef typename Superclass::FixedImageType FixedImageType;
93  typedef typename Superclass::FixedImagePointer FixedImagePointer;
94 
96  typedef typename Superclass::MovingImageType MovingImageType;
97  typedef typename Superclass::MovingImagePointer MovingImagePointer;
98 
100  typedef typename Superclass::DisplacementFieldType
102  typedef typename Superclass::DisplacementFieldPointer
104 
106  typedef typename Superclass::FiniteDifferenceFunctionType
108 
112 
114 
121  virtual double GetMetric() const;
122 
127  virtual void SetNCCRadius(RadiusType radius);
128 
133  virtual RadiusType GetNCCRadius() const;
134 
135 protected:
138  void PrintSelf(std::ostream& os, itk::Indent indent) const;
139 
141  virtual void InitializeIteration();
142 
144  using Superclass::ApplyUpdate;
145  virtual void ApplyUpdate(TimeStepType dt);
146 
148  virtual void GenerateInputRequestedRegion();
149 
150 private:
151  NCCRegistrationFilter(const Self &); //purposely not implemented
152  void operator =(const Self&); //purposely not implemented
153 
154 };
155 
156 } // end namespace otb
157 
158 #ifndef OTB_MANUAL_INSTANTIATION
160 #endif
161 
162 #endif
itk::SmartPointer< Self > Pointer
Superclass::MovingImageType MovingImageType
NCCRegistrationFunctionType::RadiusType RadiusType
itk::SmartPointer< const Self > ConstPointer
Superclass::DisplacementFieldPointer DisplacementFieldPointer
FiniteDifferenceFunctionType::RadiusType RadiusType
Deformably register two images using the PDEs and NCC.
Superclass::MovingImagePointer MovingImagePointer
NCCRegistrationFunction< FixedImageType, MovingImageType, DisplacementFieldType > NCCRegistrationFunctionType
Superclass::TimeStepType TimeStepType
Superclass::FixedImagePointer FixedImagePointer
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > Superclass
TDisplacementField DisplacementFieldType
Superclass::DisplacementFieldType DisplacementFieldType
Superclass::FixedImageType FixedImageType
Superclass::FiniteDifferenceFunctionType FiniteDifferenceFunctionType