ITK  4.9.0
Insight Segmentation and Registration Toolkit
itkVariationalSymmetricDiffeomorphicRegistrationFilter.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 __itkVariationalSymmetricDiffeomorphicRegistrationFilter_h
19 #define __itkVariationalSymmetricDiffeomorphicRegistrationFilter_h
20 
22 
23 namespace itk {
24 
89 template< class TFixedImage, class TMovingImage, class TDisplacementField>
91  : public VariationalDiffeomorphicRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >
92 {
93 public:
97  TFixedImage, TMovingImage, TDisplacementField > Superclass;
100 
102  itkNewMacro(Self);
103 
105  itkTypeMacro(itkVariationalSymmetricDiffeomorphicRegistrationFilter, VariationalDiffeomorphicRegistrationFilter);
106 
108  itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
109 
111  typedef TFixedImage FixedImageType;
112  typedef typename FixedImageType::Pointer FixedImagePointer;
113  typedef typename FixedImageType::ConstPointer FixedImageConstPointer;
114 
116  typedef TMovingImage MovingImageType;
117  typedef typename MovingImageType::Pointer MovingImagePointer;
118  typedef typename MovingImageType::ConstPointer MovingImageConstPointer;
119 
121  typedef TDisplacementField DisplacementFieldType;
122  typedef typename DisplacementFieldType::Pointer DisplacementFieldPointer;
123 
127 
129  typedef typename Superclass::RegistrationFunctionType RegistrationFunctionType;
130 
132  typedef typename Superclass::RegularizerType RegularizerType;
133 
135  typedef typename Superclass::TimeStepType TimeStepType;
136 
138  itkGetObjectMacro( InverseDisplacementField, DisplacementFieldType );
139 
140 protected:
143 
145  virtual void PrintSelf(std::ostream& os, Indent indent) const;
146 
148  virtual void Initialize();
149 
151  virtual void InitializeBackwardIteration();
152 
155  virtual void ApplyUpdate( const TimeStepType& dt );
156 
159  virtual TimeStepType CalculateChange();
160 
163  virtual void CalcInverseDeformationFromVelocityField( const DisplacementFieldType * velocityField );
164 
167  itkGetObjectMacro( BackwardUpdateBuffer, UpdateBufferType );
168 
170  typedef typename UpdateBufferType::RegionType ThreadRegionType;
171 
173  virtual void ThreadedApplyUpdate( const TimeStepType &dt,
174  const ThreadRegionType &regionToProcess,
175  unsigned int threadId );
176 
177 private:
178  VariationalSymmetricDiffeomorphicRegistrationFilter( const Self& ); //purposely not implemented
179  void operator=(const Self&); //purposely not implemented
180 
183 
187  typename UpdateBufferType::Pointer m_BackwardUpdateBuffer;
188 
189 };
190 
191 }// end namespace itk
192 
193 #ifndef ITK_MANUAL_INSTANTIATION
194 # include "itkVariationalSymmetricDiffeomorphicRegistrationFilter.hxx"
195 #endif
196 
197 #endif
Symmetric diffeomorphic deformable registration of two images using static velocity fields...
Light weight base class for most itk classes.
Diffeomorphic deformable registration of two images using static velocity fields. ...
Computes a diffeomorphic displacement field as the Lie group exponential of a vector field...
VariationalDiffeomorphicRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > Superclass
Control indentation during Print() invocation.
Definition: itkIndent.h:49