18 #ifndef __itkImageRegistrationMethodv4_h
19 #define __itkImageRegistrationMethodv4_h
88 template<
typename TFixedImage,
typename TMovingImage,
typename TOutputTransform>
103 itkStaticConstMacro( ImageDimension,
unsigned int, TFixedImage::ImageDimension );
126 typedef typename OutputTransformType::ScalarType
RealType;
168 this->SetFixedImage( 0, image );
172 return this->GetFixedImage( 0 );
174 virtual void SetFixedImage(
SizeValueType,
const FixedImageType * );
175 virtual const FixedImageType * GetFixedImage(
SizeValueType )
const;
181 this->SetMovingImage( 0, image );
185 return this->GetMovingImage( 0 );
187 virtual void SetMovingImage(
SizeValueType,
const MovingImageType * );
188 virtual const MovingImageType * GetMovingImage(
SizeValueType )
const;
192 itkSetObjectMacro(
Optimizer, OptimizerType );
193 itkGetModifiableObjectMacro(
Optimizer, OptimizerType );
197 itkSetObjectMacro( Metric, MetricType );
198 itkGetModifiableObjectMacro(Metric, MetricType );
202 itkSetMacro( MetricSamplingStrategy, MetricSamplingStrategyType );
203 itkGetConstMacro( MetricSamplingStrategy, MetricSamplingStrategyType );
207 void SetMetricSamplingPercentage(
const RealType );
210 itkSetMacro( MetricSamplingPercentagePerLevel, MetricSamplingPercentageArrayType );
211 itkGetConstMacro( MetricSamplingPercentagePerLevel, MetricSamplingPercentageArrayType );
215 itkSetObjectMacro( FixedInitialTransform, InitialTransformType );
216 itkGetModifiableObjectMacro(FixedInitialTransform, InitialTransformType );
220 itkSetObjectMacro( MovingInitialTransform, InitialTransformType );
221 itkGetModifiableObjectMacro(MovingInitialTransform, InitialTransformType );
225 void SetTransformParametersAdaptorsPerLevel( TransformParametersAdaptorsContainerType & );
226 const TransformParametersAdaptorsContainerType & GetTransformParametersAdaptorsPerLevel()
const;
249 for(
unsigned int level = 0; level < factors.
Size(); ++level )
252 shrinkFactors.
Fill( factors[level] );
253 this->SetShrinkFactorsPerDimension( level, shrinkFactors );
263 if( level >= this->m_ShrinkFactorsPerLevel.size() )
265 itkExceptionMacro(
"Requesting level greater than the number of levels." );
267 return this->m_ShrinkFactorsPerLevel[level];
276 if( level >= this->m_ShrinkFactorsPerLevel.size() )
278 this->m_ShrinkFactorsPerLevel.resize( level + 1 );
280 this->m_ShrinkFactorsPerLevel[level] = factors;
290 itkSetMacro( SmoothingSigmasPerLevel, SmoothingSigmasArrayType );
291 itkGetConstMacro( SmoothingSigmasPerLevel, SmoothingSigmasArrayType );
298 itkSetMacro( SmoothingSigmasAreSpecifiedInPhysicalUnits,
bool );
299 itkGetConstMacro( SmoothingSigmasAreSpecifiedInPhysicalUnits,
bool );
300 itkBooleanMacro( SmoothingSigmasAreSpecifiedInPhysicalUnits );
305 using Superclass::MakeOutput;
315 itkGetConstReferenceMacro( CurrentIteration,
SizeValueType );
318 itkGetConstReferenceMacro( CurrentMetricValue,
RealType );
321 itkGetConstReferenceMacro( CurrentConvergenceValue,
RealType );
324 itkGetConstReferenceMacro( IsConverged,
bool );
326 #ifdef ITKV3_COMPATIBILITY
342 void StartRegistration(
void) { this->Update(); }
348 virtual void PrintSelf( std::ostream & os,
Indent indent )
const;
351 virtual void GenerateData();
354 virtual void InitializeRegistrationAtEachLevel(
const SizeValueType );
357 virtual void SetMetricSamplePoints();
392 void operator=(
const Self & );
396 #ifndef ITK_MANUAL_INSTANTIATION
397 #include "itkImageRegistrationMethodv4.hxx"