ITK  4.10.0
Insight Segmentation and Registration Toolkit
itkVariationalRegistrationFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __itkVariationalRegistrationFunction_h
19 #define __itkVariationalRegistrationFunction_h
20 
22 //#include "itkWarpImageFilter.h"
24 
25 namespace itk {
26 
49 template< class TFixedImage, class TMovingImage, class TDisplacementField>
51  public FiniteDifferenceFunction< TDisplacementField >
52 {
53 public:
59 
60  typedef typename Superclass::TimeStepType TimeStepType;
61 
64 
66  itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
67 
69  typedef TMovingImage MovingImageType;
70  typedef typename MovingImageType::ConstPointer MovingImagePointer;
71 
73  typedef TFixedImage FixedImageType;
74  typedef typename FixedImageType::ConstPointer FixedImagePointer;
75 
77  typedef TFixedImage WarpedImageType;
78  typedef typename WarpedImageType::ConstPointer WarpedImagePointer;
79 
81  typedef TDisplacementField DisplacementFieldType;
82  typedef typename DisplacementFieldType::ConstPointer DisplacementFieldTypePointer;
83 
85  typedef unsigned char MaskImagePixelType;
88 
89  // uncomment the following line to use the standard ITK warper (not recommended)
90  //typedef itk::WarpImageFilter< FixedImageType, WarpedImageType, DisplacementFieldType >
95 
96 
98  virtual void SetMovingImage( const MovingImageType * ptr )
99  { m_MovingImage = ptr; }
100 
102  virtual const MovingImageType * GetMovingImage(void) const
103  { return m_MovingImage; }
104 
106  virtual void SetFixedImage( const FixedImageType * ptr )
107  { m_FixedImage = ptr; }
108 
110  virtual const FixedImageType * GetFixedImage(void) const
111  { return m_FixedImage; }
112 
114  virtual void SetDisplacementField( DisplacementFieldType * ptr )
115  { m_DisplacementField = ptr; }
116 
118  virtual const DisplacementFieldType * GetDisplacementField(void) const
119  { return m_DisplacementField; }
120 
122  virtual void SetMaskImage( const MaskImageType * ptr )
123  { m_MaskImage = ptr; }
124 
126  virtual const MaskImageType * GetMaskImage(void) const
127  { return m_MaskImage; }
128 
131  { m_MovingImageWarper = ptr; }
132 
134  virtual const MovingImageWarperType * GetMovingImageWarper(void) const
135  { return m_MovingImageWarper; }
136 
138  virtual void SetTimeStep( TimeStepType timeStep )
139  { m_TimeStep = timeStep; }
140 
142  virtual const TimeStepType GetTimeStep(void) const
143  { return m_TimeStep; }
144 
147  virtual void SetMaskBackgroundThreshold( MaskImagePixelType threshold )
148  { m_MaskBackgroundThreshold = threshold; }
149 
152  virtual MaskImagePixelType GetMaskBackgroundThreshold(void) const
153  { return m_MaskBackgroundThreshold; }
154 
156  virtual void InitializeIteration();
157 
161  virtual TimeStepType ComputeGlobalTimeStep(void * itkNotUsed(GlobalData)) const
162  { return m_TimeStep; }
163 
166  virtual void *GetGlobalDataPointer() const;
167 
169  virtual void ReleaseGlobalDataPointer(void *GlobalData) const;
170 
171  //
172  // Metric accessor methods
176  virtual double GetMetric() const
177  { return m_Metric; }
178 
180  virtual double GetRMSChange() const
181  { return m_RMSChange; }
182 
183 protected:
186 
188  virtual void PrintSelf(std::ostream& os, Indent indent) const;
189 
192  virtual void WarpMovingImage(void);
193 
195  virtual const WarpedImagePointer GetWarpedImage(void) const;
196 
200  {
204  };
205 
206 private:
207  VariationalRegistrationFunction(const Self&); //purposely not implemented
208  void operator=(const Self&); //purposely not implemented
209 
211  MovingImagePointer m_MovingImage;
212 
214  FixedImagePointer m_FixedImage;
215 
217  DisplacementFieldTypePointer m_DisplacementField;
218 
220  MaskImagePointer m_MaskImage;
221 
223  MovingImageWarperPointer m_MovingImageWarper;
224 
226  TimeStepType m_TimeStep;
227 
229  MaskImagePixelType m_MaskBackgroundThreshold;
230 
234  mutable double m_Metric;
235  mutable double m_SumOfMetricValues;
237  mutable double m_RMSChange;
238  mutable double m_SumOfSquaredChange;
239 
242 };
243 
244 } // end namespace itk
245 
246 #ifndef ITK_MANUAL_INSTANTIATION
247 #include "itkVariationalRegistrationFunction.hxx"
248 #endif
249 
250 #endif
DisplacementFieldType::ConstPointer DisplacementFieldTypePointer
Critical section locking class that can be allocated on the stack.
Base class for force calculation in the variational registration framework.
itk::ContinuousBorderWarpImageFilter< FixedImageType, WarpedImageType, DisplacementFieldType > MovingImageWarperType
virtual const MaskImageType * GetMaskImage(void) const
virtual const MovingImageWarperType * GetMovingImageWarper(void) const
virtual const DisplacementFieldType * GetDisplacementField(void) const
FiniteDifferenceFunction< TDisplacementField > Superclass
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
Definition: itkArray.h:30
virtual void SetMaskImage(const MaskImageType *ptr)
virtual void SetMovingImageWarper(MovingImageWarperType *ptr)
unsigned long SizeValueType
Definition: itkIntTypes.h:143
virtual const FixedImageType * GetFixedImage(void) const
virtual const MovingImageType * GetMovingImage(void) const
virtual MaskImagePixelType GetMaskBackgroundThreshold(void) const
virtual const TimeStepType GetTimeStep(void) const
Image< MaskImagePixelType, ImageDimension > MaskImageType
virtual void SetDisplacementField(DisplacementFieldType *ptr)
virtual TimeStepType ComputeGlobalTimeStep(void *) const
Warps an image using an input deformation field with continuous boundary conditions.
Control indentation during Print() invocation.
Definition: itkIndent.h:49
virtual void SetMovingImage(const MovingImageType *ptr)
virtual void SetFixedImage(const FixedImageType *ptr)
Templated n-dimensional image class.
Definition: itkImage.h:75
virtual void SetMaskBackgroundThreshold(MaskImagePixelType threshold)