18#ifndef itkRegistrationParameterScalesEstimator_h
19#define itkRegistrationParameterScalesEstimator_h
30#include "ITKOptimizersv4Export.h"
47 FullDomainSampling = 0,
50 CentralRegionSampling,
51 VirtualDomainPointSetSampling
56extern ITKOptimizersv4_EXPORT std::ostream &
79template <
typename TMetric>
96 using typename Superclass::ScalesType;
99 using typename Superclass::ParametersType;
102 using typename Superclass::FloatType;
118 static constexpr SizeValueType VirtualDimension = TMetric::VirtualDimension;
134#if !defined(ITK_LEGACY_REMOVE)
137 static constexpr SamplingStrategyType FullDomainSampling = SamplingStrategyType::FullDomainSampling;
140 static constexpr SamplingStrategyType CentralRegionSampling = SamplingStrategyType::CentralRegionSampling;
142 SamplingStrategyType::VirtualDomainPointSetSampling;
162 itkSetMacro(TransformForward,
bool);
163 itkGetConstMacro(TransformForward,
bool);
164 itkBooleanMacro(TransformForward);
168#ifndef ITK_FUTURE_LEGACY_REMOVE
172 const auto *
const constArg = arg;
174 this->SetVirtualDomainPointSet(constArg);
243 template <
typename TTransform>
252 template <
typename TTargetPo
intType>
257 template <
typename TContinuousIndexType>
367 bool m_TransformForward{};
376#ifndef ITK_MANUAL_INSTANTIATION
377# include "itkRegistrationParameterScalesEstimator.hxx"
Control indentation during Print() invocation.
Light weight base class for most itk classes.
OptimizerParameterScalesEstimatorTemplate is the base class offering a empty method of estimating the...
TMetric::ParametersValueType FloatType
Class to hold and manage different parameter types used during optimization.
This class contains all the enum classes used by RegistrationParameterScalesEstimator class.
Implements a registration helper class for estimating scales of transform parameters and step sizes.
void SampleVirtualDomainRandomly()
typename TMetric::VirtualSpacingType VirtualSpacingType
void SampleVirtualDomainWithPointSet()
SizeValueType GetNumberOfLocalParameters()
void UpdateTransformParameters(const ParametersType &deltaParameters)
virtual void SetScalesSamplingStrategy()
typename MetricType::Pointer MetricPointer
typename TMetric::VirtualImageType VirtualImageType
void PrintSelf(std::ostream &os, Indent indent) const override
VirtualRegionType GetVirtualDomainCentralRegion()
const TransformBaseTemplate< typename TMetric::MeasureType > * GetTransform()
std::vector< VirtualPointType > SamplePointContainerType
typename TMetric::VirtualSizeType VirtualSizeType
void TransformPointToContinuousIndex(const VirtualPointType &point, TContinuousIndexType &mappedIndex)
typename MetricType::MovingTransformType MovingTransformType
bool CheckGeneralAffineTransform()
void ComputeSquaredJacobianNorms(const VirtualPointType &point, ParametersType &squareNorms)
bool IsDisplacementFieldTransform()
typename MovingTransformType::ConstPointer MovingTransformConstPointer
RegistrationParameterScalesEstimator()
typename TMetric::VirtualPointSetType VirtualPointSetType
void SampleVirtualDomainWithRegion(VirtualRegionType region)
typename TMetric::JacobianType JacobianType
FloatType EstimateMaximumStepSize() override
typename TMetric::VirtualIndexType VirtualIndexType
bool CheckGeneralAffineTransformTemplated()
typename MetricType::ConstPointer MetricConstPointer
typename TMetric::VirtualPointSetPointer VirtualPointSetPointer
virtual void SetStepScaleSamplingStrategy()
typename TMetric::VirtualRegionType VirtualRegionType
void SampleVirtualDomainWithCorners()
typename FixedTransformType::ConstPointer FixedTransformConstPointer
void SampleVirtualDomainWithCentralRegion()
bool IsBSplineTransform()
void EstimateLocalStepScales(const ParametersType &step, ScalesType &localStepScales) override=0
typename TMetric::VirtualPointType VirtualPointType
typename TMetric::VirtualImagePointer VirtualImagePointer
typename TMetric::VirtualImageConstPointer VirtualImageConstPointer
typename MetricType::FixedTransformType FixedTransformType
VirtualIndexType GetVirtualDomainCentralIndex()
~RegistrationParameterScalesEstimator() override=default
FloatType EstimateStepScale(const ParametersType &step) override=0
virtual void SampleVirtualDomain()
bool TransformHasLocalSupportForScalesEstimation()
SizeValueType GetDimension()
void TransformPoint(const VirtualPointType &point, TTargetPointType &mappedPoint)
void EstimateScales(ScalesType &scales) override=0
void SampleVirtualDomainFully()
Generate a unique, increasing time value.
SmartPointer< const Self > ConstPointer
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
*par Constraints *The filter image with at least two dimensions and a vector *length of at least The theory supports extension to scalar but *the implementation of the itk vector classes do not **The template parameter TRealType must be floating point(float or double) or *a user-defined "real" numerical type with arithmetic operations defined *sufficient to compute derivatives. **\par Performance *This filter will automatically multithread if run with *SetUsePrincipleComponents
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)
unsigned long SizeValueType
RegistrationParameterScalesEstimatorEnums::SamplingStrategy SamplingStrategyEnum